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
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);
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);
Definition: audiostream.h:50
void play(WaveForm wave, int freq, int32 length, byte volume=20)
void playQueue(WaveForm wave, float freq, uint32 lengthus, byte volume=20)
void playQueue(PCSpeaker::WaveForm wave, float freq, uint32 lengthus, byte volume=20)
bool endOfStream() const override
Definition: pcspk.h:139
int readBuffer(int16 *buffer, const int numSamples) override
int getRate() const override
Definition: pcspk.h:140
bool endOfData() const override
Definition: pcspk.h:138
bool isStereo() const override
Definition: pcspk.h:137
void play(PCSpeaker::WaveForm wave, int freq, int32 length, byte volume=20)