22 #ifndef AUDIO_SOFTSYNTH_PCSPK_H 23 #define AUDIO_SOFTSYNTH_PCSPK_H 25 #include "audio/audiostream.h" 26 #include "audio/mixer.h" 27 #include "common/mutex.h" 28 #include "common/queue.h" 32 #define PCSPK_DEFAULT_VOLUME 20 34 class PCSpeakerStream;
54 void play(WaveForm wave,
int freq, int32 length, byte volume = PCSPK_DEFAULT_VOLUME);
76 void playQueue(WaveForm wave,
float freq, uint32 lengthus, byte volume = PCSPK_DEFAULT_VOLUME);
78 void stop(int32 delay = 0);
80 bool isPlaying()
const;
92 PCSpeaker::WaveForm waveForm;
97 Command(PCSpeaker::WaveForm waveForm,
float frequency, uint32 length, byte volume = PCSPK_DEFAULT_VOLUME);
108 void play(PCSpeaker::WaveForm wave,
int freq, int32 length, byte volume = PCSPK_DEFAULT_VOLUME);
129 void playQueue(PCSpeaker::WaveForm wave,
float freq, uint32 lengthus, byte volume = PCSPK_DEFAULT_VOLUME);
131 void stop(int32 delay = 0);
133 bool isPlaying()
const;
135 int readBuffer(int16 *buffer,
const int numSamples)
override;
140 int getRate()
const override {
return _rate; }
146 PCSpeaker::WaveForm _wave;
150 uint32 _remainingSamples;
151 uint32 _mixedSamples;
161 typedef int8 (*generatorFunc)(uint32, uint32);
162 static const generatorFunc generateWave[];
164 static int8 generateSquare(uint32 x, uint32 oscLength);
165 static int8 generateSine(uint32 x, uint32 oscLength);
166 static int8 generateSaw(uint32 x, uint32 oscLength);
167 static int8 generateTriangle(uint32 x, uint32 oscLength);
168 static int8 generateSilence(uint32 x, uint32 oscLength);
173 #endif // AUDIO_SOFTSYNTH_PCSPEAKER_H bool endOfData() const override
Definition: pcspk.h:138
void play(WaveForm wave, int freq, int32 length, byte volume=20)
void playQueue(WaveForm wave, float freq, uint32 lengthus, byte volume=20)
int getRate() const override
Definition: pcspk.h:140
Definition: audiostream.h:50
bool endOfStream() const override
Definition: pcspk.h:139
bool isStereo() const override
Definition: pcspk.h:137