# HG changeset patch # User Masataka Kohagura # Date 1405446632 -32400 # Node ID fac44ad2867d332b53a92e5ef1472e85365492ca # Parent 8130b38b53914dd68c9f52598e93f46477281786 make a sound diff -r 8130b38b5391 -r fac44ad2867d example/synthesizer/main.cc --- a/example/synthesizer/main.cc Wed Jul 16 01:28:20 2014 +0900 +++ b/example/synthesizer/main.cc Wed Jul 16 02:50:32 2014 +0900 @@ -48,7 +48,7 @@ au->userdata= NULL; HTaskPtr osc = manager->create_task(OSC_TASK); - osc->set_inData(0,(memaddr)&au->self,sizeof(memaddr)); + osc->set_inData(0,au,sizeof(AudioDataPtr)); osc->spawn(); } diff -r 8130b38b5391 -r fac44ad2867d example/synthesizer/ppe/OSC.cc --- a/example/synthesizer/ppe/OSC.cc Wed Jul 16 01:28:20 2014 +0900 +++ b/example/synthesizer/ppe/OSC.cc Wed Jul 16 02:50:32 2014 +0900 @@ -12,7 +12,6 @@ int gvolume = 3000; double gFrequency = 440; -char *gwaveform_name; SDL_AudioSpec Desired; SDL_AudioSpec Obtained; @@ -33,18 +32,20 @@ } -void callback(void *unused,Uint8 *stream,int len){ +void callback(void *userdata,Uint8 *stream,int len){ + + char *waveform_name = (char*)userdata; static unsigned int step = 0; Uint16 *frames = (Uint16 *) stream; int framesize = len / 2; - if(strcmp(gwaveform_name, "tri")){ + if(strcmp(waveform_name, "tri")){ for (int i = 0; i < framesize ; i++, step++){ frames[i] = tri(step * gFrequency / Obtained.freq) * gvolume ; } - }else if(strcmp(gwaveform_name, "sqr")){ + }else if(strcmp(waveform_name, "sqr")){ for (int i = 0; i < framesize ; i++, step++){ frames[i] = square(step * gFrequency / Obtained.freq) * gvolume ; @@ -59,15 +60,17 @@ AudioData *i_data = (AudioDataPtr)s->get_input(0); gvolume = i_data->volume; - gwaveform_name = i_data->waveform_name; + const char* waveform_name = "tri"; gFrequency = i_data->Frequency; - Desired.freq= i_data->freq; /* Sampling rate: 44100Hz */ - Desired.format= i_data->format; /* 16-bit signed audio */ - Desired.channels= i_data->channels; /* Mono */ - Desired.samples= i_data->samples; /* Buffer size: 8K = 0.37 sec. */ - Desired.callback= callback; - Desired.userdata= i_data->userdata; + i_data->userdata = (void*)waveform_name; + + Desired.freq = i_data->freq; /* Sampling rate: 44100Hz */ + Desired.format = i_data->format; /* 16-bit signed audio */ + Desired.channels = i_data->channels; /* Mono */ + Desired.samples = i_data->samples; /* Buffer size: 8K = 0.37 sec. */ + Desired.callback = callback; + Desired.userdata = i_data->userdata; SDL_OpenAudio(&Desired, &Obtained); SDL_PauseAudio(0);