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

38 lines
1.5 KiB
C++

// Demo's how to mix sounds together, these can be wavs' or wavs and musical scores
// or any items that can be played through the DacAudio object.
// Here we demo some wavs, the main one plays and then if you type in a "1" into the
// serial monitor then it will mix in another sound, enter a "2" and another
// different wav will be mixed in
// See www.xtronical.com for write ups on sound and the hardare required
#include "SoundData.h";
#include "XT_DAC_Audio.h";
#define TIME_BETWEEN_MIXES 4000 // mix every 4 secs
XT_DAC_Audio_Class DacAudio(25,0); // Set up DacAudio object, DAC on pn 25, using timer 0 for interrupts
XT_Wav_Class Cantina(CantinaWav); // Create three WAV objects, passing in the WAV data
XT_Wav_Class Blaster(BlasterWav);
XT_Wav_Class ForceWithYou(ForceWav);
uint32_t LastTime;
void setup() {
Cantina.RepeatForever=true; // Play the main background musci constantly
DacAudio.Play(&Cantina); // Set it to play
LastTime=millis(); // Record initial time, samples will play every TIME_BETWEEN_MIXES
}
void loop() {
DacAudio.FillBuffer();
if(millis()>LastTime+TIME_BETWEEN_MIXES) // Is it time to mix in a new sample?
{
LastTime=millis(); // Yes, record this new time ready for next time
if(random(2)==1)
DacAudio.Play(&ForceWithYou,true); // the true means mix this sound with any currently playing and output together
else
DacAudio.Play(&Blaster,true);
}
}