commit 66d1f761732d75722d7a9bd48645d06c7edbfcb3
parent 9c54fb7fc21697d3e2dc3728956911cc68de2c1d
Author: fundamental <mark.d.mccurry@gmail.com>
Date: Sun, 1 Oct 2017 15:35:34 -0400
Fix ADnote Test Failure
Ensures FMSmp is only updated once on init
Diffstat:
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/Synth/ADnote.cpp b/src/Synth/ADnote.cpp
@@ -77,9 +77,8 @@ ADnote::ADnote(ADnoteParameters *pars_, SynthParams &spars,
else
NoteGlobalPar.Punch.Enabled = 0;
- for(int nvoice = 0; nvoice < NUM_VOICES; ++nvoice) {
+ for(int nvoice = 0; nvoice < NUM_VOICES; ++nvoice)
setupVoice(nvoice);
- }
max_unison = 1;
for(int nvoice = 0; nvoice < NUM_VOICES; ++nvoice)
@@ -414,7 +413,7 @@ void ADnote::setupVoiceDetune(int nvoice)
pars.VoicePar[nvoice].PFMDetune);
}
-void ADnote::setupVoiceMod(int nvoice)
+void ADnote::setupVoiceMod(int nvoice, bool first_run)
{
auto ¶m = pars.VoicePar[nvoice];
auto &voice = NoteVoicePar[nvoice];
@@ -444,7 +443,8 @@ void ADnote::setupVoiceMod(int nvoice)
voice.FMFreqFixed = param.PFMFixedFreq;
//Triggers when a user enables modulation on a running voice
- if(voice.FMEnabled != NONE && voice.FMSmp == NULL) {
+ if(!first_run && voice.FMEnabled != NONE && voice.FMSmp == NULL && voice.FMVoice < 0) {
+ param.FMSmp->newrandseed(prng());
voice.FMSmp = memory.valloc<float>(synth.oscilsize + OSCIL_SMP_EXTRA_SAMPLES);
memset(voice.FMSmp, 0, sizeof(float)*(synth.oscilsize + OSCIL_SMP_EXTRA_SAMPLES));
int vc = nvoice;
@@ -1609,7 +1609,7 @@ int ADnote::noteout(float *outl, float *outr)
|| (NoteVoicePar[nvoice].DelayTicks > 0))
continue;
setupVoiceDetune(nvoice);
- setupVoiceMod(nvoice);
+ setupVoiceMod(nvoice, false);
}
computecurrentparameters();
diff --git a/src/Synth/ADnote.h b/src/Synth/ADnote.h
@@ -56,7 +56,7 @@ class ADnote:public SynthNote
void setupVoice(int nvoice);
int setupVoiceUnison(int nvoice);
void setupVoiceDetune(int nvoice);
- void setupVoiceMod(int nvoice);
+ void setupVoiceMod(int nvoice, bool first_run = true);
/**Changes the frequency of an oscillator.
* @param nvoice voice to run computations on