# HG changeset patch # User Masataka Kohagura # Date 1407258545 -32400 # Node ID f31415b52f51ae6d163eff35bef4ab89573561fb # Parent 472528b62bbf4a58a8954d340063244f2216f398 implement saw diff -r 472528b62bbf -r f31415b52f51 example/synthesizer/main.cc --- a/example/synthesizer/main.cc Sun Jul 27 23:40:37 2014 +0900 +++ b/example/synthesizer/main.cc Wed Aug 06 02:09:05 2014 +0900 @@ -15,6 +15,7 @@ #include #include #include +#include /* * PS3でCPU数が2以上の時に、あまりが計算されてない @@ -39,6 +40,7 @@ au->waveform_name = waveform_name; printf("Freq:%f\n",frequency); + printf("wav:%s\n",waveform_name); au->sampling_rate= 44100; /* Sampling rate: 44100Hz */ au->format= AUDIO_S16LSB; /* 16-bit signed audio */ au->channels= 1; /* Mono */ diff -r 472528b62bbf -r f31415b52f51 example/synthesizer/ppe/OSC.cc --- a/example/synthesizer/ppe/OSC.cc Sun Jul 27 23:40:37 2014 +0900 +++ b/example/synthesizer/ppe/OSC.cc Wed Aug 06 02:09:05 2014 +0900 @@ -29,6 +29,11 @@ } } +double saw(double t){ + double decimal_part = t - abs(t); + return decimal_part; +} + void callback(void *userdata,Uint8 *stream,int len){ @@ -41,18 +46,21 @@ Uint16 *frames = (Uint16 *) stream; int framesize = len / 2; - if(strcmp(waveform_name, "tri")){ - + if(strcmp(waveform_name, "tri") == 0){ for (int i = 0; i < framesize ; i++, step++){ frames[i] = tri(step * frequency / Obtained.freq) * volume ; } - }else if(strcmp(waveform_name, "sqr")){ - + }else if(strcmp(waveform_name, "sqr") == 0){ for (int i = 0; i < framesize ; i++, step++){ frames[i] = square(step * frequency / Obtained.freq) * volume ; } + }else if(strcmp(waveform_name, "saw") == 0){ + for (int i = 0; i < framesize ; i++, step++){ + frames[i] = saw(step * frequency / Obtained.freq) * volume ; + } + } } @@ -61,10 +69,6 @@ { AudioData *i_data = (AudioDataPtr)s->get_input(0); - const char* waveform_name = "tri"; - - i_data->userdata = (void*)waveform_name; - Desired.freq = i_data->sampling_rate; /* Sampling rate: 44100Hz */ Desired.format = i_data->format; /* 16-bit signed audio */ Desired.channels = i_data->channels; /* Mono */