|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
-
-
- #ifndef synth_sine_h_
- #define synth_sine_h_
-
- #include "Arduino.h"
- #include "AudioStream.h"
- #include "arm_math.h"
-
-
-
-
-
- class AudioSynthWaveformSine : public AudioStream
- {
- public:
- AudioSynthWaveformSine() : AudioStream(0, NULL), magnitude(16384) {}
- void frequency(float freq) {
- if (freq < 0.0) freq = 0.0;
- else if (freq > AUDIO_SAMPLE_RATE_EXACT/2) freq = AUDIO_SAMPLE_RATE_EXACT/2;
- phase_increment = freq * (4294967296.0 / AUDIO_SAMPLE_RATE_EXACT);
- }
- void phase(float angle) {
- if (angle < 0.0) angle = 0.0;
- else if (angle > 360.0) {
- angle = angle - 360.0;
- if (angle >= 360.0) return;
- }
- phase_accumulator = angle * (4294967296.0 / 360.0);
- }
- void amplitude(float n) {
- if (n < 0) n = 0;
- else if (n > 1.0) n = 1.0;
- magnitude = n * 65536.0;
- }
- virtual void update(void);
- private:
- uint32_t phase_accumulator;
- uint32_t phase_increment;
- int32_t magnitude;
- };
-
-
- class AudioSynthWaveformSineHires : public AudioStream
- {
- public:
- AudioSynthWaveformSineHires() : AudioStream(0, NULL), magnitude(16384) {}
- void frequency(float freq) {
- if (freq < 0.0) freq = 0.0;
- else if (freq > AUDIO_SAMPLE_RATE_EXACT/2) freq = AUDIO_SAMPLE_RATE_EXACT/2;
- phase_increment = freq * (4294967296.0 / AUDIO_SAMPLE_RATE_EXACT);
- }
- void phase(float angle) {
- if (angle < 0.0) angle = 0.0;
- else if (angle > 360.0) {
- angle = angle - 360.0;
- if (angle >= 360.0) return;
- }
- phase_accumulator = angle * (4294967296.0 / 360.0);
- }
- void amplitude(float n) {
- if (n < 0) n = 0;
- else if (n > 1.0) n = 1.0;
- magnitude = n * 65536.0;
- }
- virtual void update(void);
- private:
- uint32_t phase_accumulator;
- uint32_t phase_increment;
- int32_t magnitude;
- };
-
-
- class AudioSynthWaveformSineModulated : public AudioStream
- {
- public:
- AudioSynthWaveformSineModulated() : AudioStream(1, inputQueueArray), magnitude(16384) {}
-
-
-
- void frequency(float freq) {
- if (freq < 0.0) freq = 0.0;
- else if (freq > AUDIO_SAMPLE_RATE_EXACT/4) freq = AUDIO_SAMPLE_RATE_EXACT/4;
- phase_increment = freq * (4294967296.0 / AUDIO_SAMPLE_RATE_EXACT);
- }
- void phase(float angle) {
- if (angle < 0.0) angle = 0.0;
- else if (angle > 360.0) {
- angle = angle - 360.0;
- if (angle >= 360.0) return;
- }
- phase_accumulator = angle * (4294967296.0 / 360.0);
- }
- void amplitude(float n) {
- if (n < 0) n = 0;
- else if (n > 1.0) n = 1.0;
- magnitude = n * 65536.0;
- }
- virtual void update(void);
- private:
- uint32_t phase_accumulator;
- uint32_t phase_increment;
- audio_block_t *inputQueueArray[1];
- int32_t magnitude;
- };
-
-
- #endif
|