#include "wave_write.hpp" #include "function_templates.hpp" #define BPM 100 typedef WaveWrite >, DoAmp< GenModSin<110, 1, 10> > > SIMPLE_TYPE; typedef WaveWrite , GenModSin<110, 1, 10>, 2 > >, DoAmp , GenModSin<165, 1, 10>, 2 > > > FANCY_TYPE; typedef WaveWrite , GenModSin<110, 1, 10>, 2 > >, DoAmp , GenModSin<130, 1, 10>, 2 > > > SPOOKY_TYPE; typedef SumSignals< SumSignals,60,BPM>, 0*60,BPM>, DelaySignal,60,BPM>, 1*60*60,BPM> ,1>, SumSignals,60,BPM>, 2*60,BPM>, DelaySignal,60,BPM>, 3*60,BPM> ,1>, 1> PART_PHRASE; typedef SumSignals< SumSignals< SumSignals,60,2*BPM>, 0*60,BPM>, DelaySignal,60,2*BPM>, 1*60,BPM> ,1>, SumSignals,60,2*BPM>, 2*60,BPM>, DelaySignal,60,2*BPM>, 3*60,BPM> ,1>, 1> , SumSignals,60,2*BPM>, 4*60,BPM>, DelaySignal,60,2*BPM>, 5*60,BPM> ,1>, 2> PHRASE1; typedef DelaySignal< SumSignals< SumSignals< SumSignals,60,2*BPM>, 0*60,BPM>, DelaySignal,60,2*BPM>, 1*60,BPM> ,1>, SumSignals,60,2*BPM>, 2*60,BPM>, DelaySignal,60,2*BPM>, 3*60,BPM> ,1>, 1> , SumSignals,60,2*BPM>, 4*60,BPM>, DelaySignal,2*60,2*BPM>, 5*60,BPM> ,1>, 2>,6*60,BPM> PHRASE2; typedef DelaySignal< SumSignals< SumSignals,60,2*BPM>, 0*60,BPM>, DelaySignal,60,2*BPM>, 1*60,BPM> ,1>, SumSignals,60,2*BPM>, 2*60,BPM>, DelaySignal,60,2*BPM>, 3*60,BPM> ,1>, 2>,18*60,BPM> PHRASE3; typedef SumSignals, PHRASE3, 1> ,1>, 1> LEFT_PHRASE; typedef DelaySignal RIGHT_PHRASE; typedef WaveWrite, DoAmpEven > EVEN_TYPE; typedef WaveWrite, DoAmp > POWER_TYPE; typedef WaveWrite, DoAmpGentle > GENTLE_TYPE; typedef WaveWrite, DoAmpFifths > FIFTHS_TYPE; int main(int argc, char **argv) { EVEN_TYPE * myWriter = new EVEN_TYPE(44100, 24.0*60.0/BPM); POWER_TYPE * powWriter = new POWER_TYPE(44100, 24.0*60.0/BPM); GENTLE_TYPE * gentWriter = new GENTLE_TYPE(44100, 24.0*60.0/BPM); FIFTHS_TYPE * fifthsWriter = new FIFTHS_TYPE(44100, 24.0*60.0/BPM); myWriter->doWrite("even_melody.wav"); powWriter->doWrite("power_melody.wav"); gentWriter->doWrite("gentle_melody.wav"); fifthsWriter->doWrite("fifths_melody.wav"); }