arduino2/libraries/XT_DAC_Audio/SequenceSpeakNums/SequenceSpeakNums.ino
2020-11-06 13:17:55 +01:00

74 lines
2.8 KiB
C++

// Demo's how to play multiple sounds one after the other, those sounds can be WAVs
// or Music Score's or a mixture, here we demo wavs, showing that you can add the same wav
// more than once and also clear out the sequence and create a different sequence
// Compile and upload the code, open the serial monitor and type in any number. The number will
// be spoke back to you a digit at a time and also displayed on the serial monitor.
// See www.xtronical.com for write ups on sound and the hardare required
#include "SoundData.h";
#include "XT_DAC_Audio.h";
XT_DAC_Audio_Class DacAudio(25,0); // Create the main player class object. Use GPIO 25, one of the 2 DAC pins and timer 0
// All the number sounds, my voice - Sorry!
XT_Wav_Class Zero(ZeroWav);
XT_Wav_Class One(OneWav);
XT_Wav_Class Two(TwoWav);
XT_Wav_Class Three(ThreeWav);
XT_Wav_Class Four(FourWav);
XT_Wav_Class Five(FiveWav);
XT_Wav_Class Six(SixWav);
XT_Wav_Class Seven(SevenWav);
XT_Wav_Class Eight(EightWav);
XT_Wav_Class Nine(NineWav);
XT_Sequence_Class Sequence; // The sequence object, you add your sounds above to this object (see setup below)
void setup() {
Serial.begin(115200);
}
void loop() {
DacAudio.FillBuffer(); // This needs only be in your main loop once, suggest here at the top.
// Get a number entered from the user on the serial port
if(Serial.available())
PlayNumber(Serial.readString().c_str());
}
void PlayNumber(char const *Number)
{
int NumChars=strlen(Number); // could lose this line of put strlen in loop below, but bad form to do so
Sequence.RemoveAllPlayItems(); // Clear out any previous playlist
for(int i=0;i<NumChars;i++)
AddNumberToSequence(Number[i]); // For each number add in the sound for that number to the sequence
DacAudio.Play(&Sequence); // Play the sequence, will not wait here to complete, works independently of your code
Serial.println(Number); // Confirm number entered to the user over the serial
}
void AddNumberToSequence(char TheNumber)
{
// Adds in the wav for the single 0-9 number passed in as a char
switch(TheNumber)
{
case '0' : Sequence.AddPlayItem(&Zero);break;
case '1' : Sequence.AddPlayItem(&One);break;
case '2' : Sequence.AddPlayItem(&Two);break;
case '3' : Sequence.AddPlayItem(&Three);break;
case '4' : Sequence.AddPlayItem(&Four);break;
case '5' : Sequence.AddPlayItem(&Five);break;
case '6' : Sequence.AddPlayItem(&Six);break;
case '7' : Sequence.AddPlayItem(&Seven);break;
case '8' : Sequence.AddPlayItem(&Eight);break;
case '9' : Sequence.AddPlayItem(&Nine);break;
}
}