Only init per-voice modulations which are of the region
This commit is contained in:
parent
0507dab7c4
commit
4703b939ab
3 changed files with 4 additions and 4 deletions
|
|
@ -141,7 +141,7 @@ void sfz::Voice::startVoice(Region* region, int delay, int number, float value,
|
||||||
bendSmoother.reset(centsFactor(region->getBendInCents(resources.midiState.getPitchBend())));
|
bendSmoother.reset(centsFactor(region->getBendInCents(resources.midiState.getPitchBend())));
|
||||||
egEnvelope.reset(region->amplitudeEG, *region, resources.midiState, delay, value, sampleRate);
|
egEnvelope.reset(region->amplitudeEG, *region, resources.midiState, delay, value, sampleRate);
|
||||||
|
|
||||||
resources.modMatrix.initVoice(id);
|
resources.modMatrix.initVoice(id, region->getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
int sfz::Voice::getCurrentSampleQuality() const noexcept
|
int sfz::Voice::getCurrentSampleQuality() const noexcept
|
||||||
|
|
|
||||||
|
|
@ -202,13 +202,13 @@ void ModMatrix::init()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModMatrix::initVoice(NumericId<Voice> voiceId)
|
void ModMatrix::initVoice(NumericId<Voice> voiceId, NumericId<Region> regionId)
|
||||||
{
|
{
|
||||||
Impl& impl = *impl_;
|
Impl& impl = *impl_;
|
||||||
|
|
||||||
for (Impl::Source &source : impl.sources_) {
|
for (Impl::Source &source : impl.sources_) {
|
||||||
const int flags = source.key.flags();
|
const int flags = source.key.flags();
|
||||||
if (flags & kModIsPerVoice)
|
if ((flags & kModIsPerVoice) && source.key.region() == regionId)
|
||||||
source.gen->init(source.key, voiceId);
|
source.gen->init(source.key, voiceId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,7 @@ public:
|
||||||
* @brief Reinitialize modulation source for a given voice.
|
* @brief Reinitialize modulation source for a given voice.
|
||||||
* This must be called first after a voice enters active state.
|
* This must be called first after a voice enters active state.
|
||||||
*/
|
*/
|
||||||
void initVoice(NumericId<Voice> voiceId);
|
void initVoice(NumericId<Voice> voiceId, NumericId<Region> regionId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Start modulation processing for the entire cycle.
|
* @brief Start modulation processing for the entire cycle.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue