Start engine sound
This commit is contained in:
parent
d0db60c02a
commit
e6c5283bf4
6 changed files with 128 additions and 3 deletions
82
audio.h
Normal file
82
audio.h
Normal file
|
@ -0,0 +1,82 @@
|
|||
/**
|
||||
audio: this file implements the audio system.
|
||||
*/
|
||||
|
||||
#ifndef _LCR_AUDIO
|
||||
#define _LCR_AUDIO
|
||||
|
||||
#define LCR_SOUND_NONE 0
|
||||
#define LCR_SOUND_CLICK 1
|
||||
#define LCR_SOUND_CRASH 2
|
||||
#define LCR_SOUND_ACCELERATOR 3
|
||||
|
||||
#define LCR_AUDIO_MIN_RPM 128
|
||||
#define LCR_AUDIO_MAX_RPM 2048
|
||||
|
||||
struct
|
||||
{
|
||||
uint32_t frame;
|
||||
uint8_t soundPlayed;
|
||||
uint16_t soundPlayedSample;
|
||||
uint32_t noise;
|
||||
|
||||
|
||||
int engineIntensity;
|
||||
int engineOsc;
|
||||
|
||||
|
||||
|
||||
|
||||
} LCR_audio;
|
||||
|
||||
void LCR_audioInit(void)
|
||||
{
|
||||
LCR_LOG0("initializing audio");
|
||||
LCR_audio.frame = 0;
|
||||
LCR_audio.soundPlayed = LCR_SOUND_NONE;
|
||||
LCR_audio.soundPlayedSample = 0;
|
||||
LCR_audio.noise = 0;
|
||||
|
||||
LCR_audio.engineOsc = 0;
|
||||
LCR_audio.engineIntensity = 0;
|
||||
|
||||
}
|
||||
|
||||
void LCR_audioSetEngineIntensity(uint8_t value)
|
||||
{
|
||||
LCR_audio.engineIntensity = value;
|
||||
}
|
||||
|
||||
void LCR_audioPlaySound(uint8_t sound)
|
||||
{
|
||||
LCR_audio.soundPlayed = sound;
|
||||
LCR_audio.soundPlayedSample = 0;
|
||||
}
|
||||
|
||||
uint8_t _LCR_audioNoise(void)
|
||||
{
|
||||
LCR_audio.noise = LCR_audio.noise * 32310901 + 37;
|
||||
return LCR_audio.noise >> 16;
|
||||
}
|
||||
|
||||
uint8_t LCR_audioGetNextSample(void)
|
||||
{
|
||||
unsigned char result = 128;
|
||||
|
||||
if (LCR_audio.engineIntensity > 5)
|
||||
{
|
||||
LCR_audio.engineOsc +=
|
||||
((_LCR_audioNoise() % 256) <
|
||||
(30 + LCR_audio.engineIntensity));
|
||||
|
||||
result += LCR_audio.engineOsc;
|
||||
}
|
||||
|
||||
LCR_audio.frame++;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif // guard
|
Loading…
Add table
Add a link
Reference in a new issue