#include "wave_write.hpp" #include "function_templates.hpp" #define BPM 100 typedef WaveWrite >, DoAmp< GenModSin<110, 4*60, BPM> > > SIMPLE_TYPE; typedef WaveWrite,8*BPM, 60,16> , DelaySignal, 4*60,BPM>,12*60,BPM> ,2> >, DoAmp< SumSignals< Vibrato, 9*BPM, 60,16> , DelaySignal, 4*60,BPM>,12*60,BPM> ,2> > > VIBE_TYPE; typedef WaveWrite , GenModSin<110, 60, 60>, 2 > >, DoAmp , GenModSin<165, 60, 60>, 2 > > > FANCY_TYPE; typedef WaveWrite , GenModSin<110, 4*60, BPM>, 2 > >, DoAmp , GenModSin<130, 3*60, BPM>, 2 > > > SPOOKY_TYPE; typedef SumSignals< SumSignals,2*60,BPM>, 1*60,BPM>, DelaySignal< Gaussian< GenSin<143>,4*60,BPM>, 3*60,BPM> ,2 >, SumSignals,8*60,BPM>, 5*60,BPM>, DelaySignal< Gaussian< GenSin<220>,8*60,BPM>, 7*60,BPM> ,2 >, 2>, SumSignals,4*60,BPM>, 9*60,BPM>, DelaySignal< Gaussian< GenSin<110>,2*60,BPM>, 11*60,BPM> ,2>,2 > PSYCHO_CHORD; typedef DoAmpFifths,4*60,BPM>, 2*60,BPM>, DelaySignal< Gaussian< GenSin<165>,4*60,BPM>, 2*60,BPM> ,3> > PHRASE_NOTE1; typedef DoAmpEven,4*60,BPM>, 6*60,BPM>, DelaySignal< Gaussian< GenSin<220>,4*60,BPM>, 6*60,BPM> ,2> > PHRASE_NOTE2; typedef DoAmp,6*60,BPM>, 18*60,BPM>, DelaySignal< Gaussian< GenSin<55>,6*60,BPM>, 18*60,BPM> ,2> > PHRASE_NOTE3; typedef DoAmpGentle,6*60,BPM>, 18*60,BPM>, DelaySignal< Gaussian< GenSin<110>,6*60,BPM>, 18*60,BPM> ,4> > PHRASE_NOTE3_RIGHT; typedef WaveWrite, PHRASE_NOTE3,1>, SumSignals< SumSignals , PHRASE_NOTE3_RIGHT, 1> > FINAL_TYPE; typedef WaveWrite >, DoAmp< Vibrato > > GRATING_TYPE; int main(int argc, char **argv) { FANCY_TYPE * myWriter = new FANCY_TYPE(44100, 24*60.0/BPM); GRATING_TYPE * grateWriter = new GRATING_TYPE(44100, 24*60/BPM); FINAL_TYPE * finWriter = new FINAL_TYPE(44100, 36*60.0/BPM); SPOOKY_TYPE * spookyWriter = new SPOOKY_TYPE(44100, 24*60.0/BPM); SIMPLE_TYPE * testWriter = new SIMPLE_TYPE(44100, 24*60.0/BPM); VIBE_TYPE * vibeWriter = new VIBE_TYPE(44100, 24*60.0/BPM); grateWriter->doWrite("grating.wav"); vibeWriter->doWrite("vibrating.wav"); //return 0; myWriter->doWrite("summed_then_amped.wav"); spookyWriter->doWrite("spooky.wav"); testWriter->doWrite("basic_test.wav"); finWriter->doWrite("two_note_test.wav"); }