From: Abrolag <ab...@us...> - 2010-08-17 17:44:19
|
On Tue, 17 Aug 2010 21:53:58 +1000 cal <ca...@gr...> wrote: > There's a little piece in ADnote::ComputeVoiceOscillatorRingModulation() that > puzzles me - > > // if I use VoiceOut[] as modullator > for(int k = 0; k < unison_size[nvoice]; k++) { > REALTYPE *tw = tmpwave_unison[k]; > for(i = 0; i < SOUND_BUFFER_SIZE; i++) { > amp = INTERPOLATE_AMPLITUDE(FMoldamplitude[nvoice], > FMnewamplitude[nvoice], > i, > SOUND_BUFFER_SIZE); > int FMVoice = NoteVoicePar[nvoice].FMVoice; > for(i = 0; i < SOUND_BUFFER_SIZE; i++) > tw[i] *= > (1.0 - amp) + amp * NoteVoicePar[FMVoice].VoiceOut[i]; > } > } > > As I read it, the second for(i = 0; i < SOUND_BUFFER_SIZE; i++) loop means > that the first for(i = 0 ...) loop will never run beyond the i = 0 case. So > far I can't figure out for sure just what the intended/correct behaviour might > be. Any suggestions? > Definitely looks wonky. Also goes back to Zyn 2.2.1. I wonder if it's simply a wrong bracket position and the two loops were intended to be separate. This link gives a clue as to what Paul might have been thinking of at the time he wrote it. http://www.codeguru.com/cpp/cpp/cpp_mfc/portability/article.php/c4051 -- Will J Godfrey http://www.musically.me.uk Say you have a poem and I have a tune. Exchange them and we can both have a poem, a tune, and a song. |