Removed debug messages in the hot path
This commit is contained in:
parent
6d53619d71
commit
eb0b84a7a6
3 changed files with 10 additions and 33 deletions
|
|
@ -88,31 +88,31 @@ int process(jack_nframes_t numFrames, void* arg [[maybe_unused]])
|
||||||
|
|
||||||
switch (midi::status(event.buffer[0])) {
|
switch (midi::status(event.buffer[0])) {
|
||||||
case midi::noteOff:
|
case midi::noteOff:
|
||||||
DBG("[MIDI] Note " << +event.buffer[1] << " OFF at time " << event.time);
|
// DBG("[MIDI] Note " << +event.buffer[1] << " OFF at time " << event.time);
|
||||||
synth->noteOff(event.time, midi::channel(event.buffer[0]) + 1, event.buffer[1], event.buffer[2]);
|
synth->noteOff(event.time, midi::channel(event.buffer[0]) + 1, event.buffer[1], event.buffer[2]);
|
||||||
break;
|
break;
|
||||||
case midi::noteOn:
|
case midi::noteOn:
|
||||||
DBG("[MIDI] Note " << +event.buffer[1] << " ON at time " << event.time);
|
// DBG("[MIDI] Note " << +event.buffer[1] << " ON at time " << event.time);
|
||||||
synth->noteOn(event.time, midi::channel(event.buffer[0]) + 1, event.buffer[1], event.buffer[2]);
|
synth->noteOn(event.time, midi::channel(event.buffer[0]) + 1, event.buffer[1], event.buffer[2]);
|
||||||
break;
|
break;
|
||||||
case midi::polyphonicPressure:
|
case midi::polyphonicPressure:
|
||||||
DBG("[MIDI] Polyphonic pressure on at time " << event.time);
|
// DBG("[MIDI] Polyphonic pressure on at time " << event.time);
|
||||||
break;
|
break;
|
||||||
case midi::controlChange:
|
case midi::controlChange:
|
||||||
DBG("[MIDI] CC " << +event.buffer[1] << " at time " << event.time);
|
// DBG("[MIDI] CC " << +event.buffer[1] << " at time " << event.time);
|
||||||
synth->cc(event.time, midi::channel(event.buffer[0]) + 1, event.buffer[1], event.buffer[2]);
|
synth->cc(event.time, midi::channel(event.buffer[0]) + 1, event.buffer[1], event.buffer[2]);
|
||||||
break;
|
break;
|
||||||
case midi::programChange:
|
case midi::programChange:
|
||||||
DBG("[MIDI] Program change at time " << event.time);
|
// DBG("[MIDI] Program change at time " << event.time);
|
||||||
break;
|
break;
|
||||||
case midi::channelPressure:
|
case midi::channelPressure:
|
||||||
DBG("[MIDI] Channel pressure at time " << event.time);
|
// DBG("[MIDI] Channel pressure at time " << event.time);
|
||||||
break;
|
break;
|
||||||
case midi::pitchBend:
|
case midi::pitchBend:
|
||||||
DBG("[MIDI] Pitch bend at time " << event.time);
|
// DBG("[MIDI] Pitch bend at time " << event.time);
|
||||||
break;
|
break;
|
||||||
case midi::systemMessage:
|
case midi::systemMessage:
|
||||||
DBG("[MIDI] System message at time " << event.time);
|
// DBG("[MIDI] System message at time " << event.time);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -130,7 +130,7 @@ int sampleBlockChanged(jack_nframes_t nframes, void* arg [[maybe_unused]])
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
auto synth = reinterpret_cast<sfz::Synth*>(arg);
|
auto synth = reinterpret_cast<sfz::Synth*>(arg);
|
||||||
DBG("Sample per block changed to " << nframes);
|
// DBG("Sample per block changed to " << nframes);
|
||||||
synth->setSamplesPerBlock(nframes);
|
synth->setSamplesPerBlock(nframes);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -141,7 +141,7 @@ int sampleRateChanged(jack_nframes_t nframes, void* arg [[maybe_unused]])
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
auto synth = reinterpret_cast<sfz::Synth*>(arg);
|
auto synth = reinterpret_cast<sfz::Synth*>(arg);
|
||||||
DBG("Sample rate changed to " << nframes);
|
// DBG("Sample rate changed to " << nframes);
|
||||||
synth->setSampleRate(nframes);
|
synth->setSampleRate(nframes);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -287,7 +287,6 @@ sfz::Voice* sfz::Synth::findFreeVoice() noexcept
|
||||||
return freeVoice->get();
|
return freeVoice->get();
|
||||||
|
|
||||||
// Find voices that can be stolen
|
// Find voices that can be stolen
|
||||||
DBG("No free voice, trying to steal");
|
|
||||||
voiceViewArray.clear();
|
voiceViewArray.clear();
|
||||||
for (auto& voice : voices)
|
for (auto& voice : voices)
|
||||||
if (voice->canBeStolen())
|
if (voice->canBeStolen())
|
||||||
|
|
@ -295,15 +294,12 @@ sfz::Voice* sfz::Synth::findFreeVoice() noexcept
|
||||||
absl::c_sort(voices, [](const auto& lhs, const auto& rhs) { return lhs->getSourcePosition() > rhs->getSourcePosition(); });
|
absl::c_sort(voices, [](const auto& lhs, const auto& rhs) { return lhs->getSourcePosition() > rhs->getSourcePosition(); });
|
||||||
|
|
||||||
for (auto* voice : voiceViewArray) {
|
for (auto* voice : voiceViewArray) {
|
||||||
DBG("Average voice power: " << voice->getMeanSquaredAverage());
|
|
||||||
if (voice->getMeanSquaredAverage() < config::voiceStealingThreshold) {
|
if (voice->getMeanSquaredAverage() < config::voiceStealingThreshold) {
|
||||||
DBG("Stealing voice...");
|
|
||||||
voice->reset();
|
voice->reset();
|
||||||
return voice;
|
return voice;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DBG("Voices are overloaded, can't start a new note");
|
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -372,7 +368,6 @@ void sfz::Synth::noteOn(int delay, int channel, int noteNumber, uint8_t velocity
|
||||||
{
|
{
|
||||||
ASSERT(noteNumber < 128);
|
ASSERT(noteNumber < 128);
|
||||||
ASSERT(noteNumber >= 0);
|
ASSERT(noteNumber >= 0);
|
||||||
// DBG("Received note " << noteNumber << "/" << +velocity << " ON at time " << delay);
|
|
||||||
|
|
||||||
midiState.noteOn(noteNumber, velocity);
|
midiState.noteOn(noteNumber, velocity);
|
||||||
|
|
||||||
|
|
@ -402,7 +397,6 @@ void sfz::Synth::noteOff(int delay, int channel, int noteNumber, uint8_t velocit
|
||||||
{
|
{
|
||||||
ASSERT(noteNumber < 128);
|
ASSERT(noteNumber < 128);
|
||||||
ASSERT(noteNumber >= 0);
|
ASSERT(noteNumber >= 0);
|
||||||
// DBG("Received note " << noteNumber << "/" << +velocity << " OFF at time " << delay);
|
|
||||||
|
|
||||||
AtomicGuard callbackGuard { inCallback };
|
AtomicGuard callbackGuard { inCallback };
|
||||||
if (!canEnterCallback)
|
if (!canEnterCallback)
|
||||||
|
|
|
||||||
|
|
@ -50,21 +50,15 @@ void sfz::Voice::startVoice(Region* region, int delay, int channel, int number,
|
||||||
if (delay < 0)
|
if (delay < 0)
|
||||||
delay = 0;
|
delay = 0;
|
||||||
|
|
||||||
// DBG("Starting voice with " << region->sample);
|
|
||||||
|
|
||||||
if (!region->isGenerator()) {
|
if (!region->isGenerator()) {
|
||||||
currentPromise = resources.filePool.getFilePromise(region->sample);
|
currentPromise = resources.filePool.getFilePromise(region->sample);
|
||||||
if (currentPromise == nullptr) {
|
if (currentPromise == nullptr) {
|
||||||
DBG("[Voice] Could not fetch the file promise for sample " << region->sample);
|
|
||||||
reset();
|
reset();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
speedRatio = static_cast<float>(currentPromise->sampleRate / this->sampleRate);
|
speedRatio = static_cast<float>(currentPromise->sampleRate / this->sampleRate);
|
||||||
DBG("[Voice] Sample rate for " << region->sample << " is " << currentPromise->sampleRate);
|
|
||||||
DBG("[Voice] Speed ratio set to " << speedRatio);
|
|
||||||
}
|
}
|
||||||
pitchRatio = region->getBasePitchVariation(number, value);
|
pitchRatio = region->getBasePitchVariation(number, value);
|
||||||
DBG("[Voice] Pitch ratio set to " << pitchRatio);
|
|
||||||
|
|
||||||
baseVolumedB = region->getBaseVolumedB(number);
|
baseVolumedB = region->getBaseVolumedB(number);
|
||||||
|
|
||||||
|
|
@ -72,7 +66,6 @@ void sfz::Voice::startVoice(Region* region, int delay, int channel, int number,
|
||||||
if (region->volumeCC)
|
if (region->volumeCC)
|
||||||
volumedB += normalizeCC(midiState.cc[region->volumeCC->first]) * region->volumeCC->second;
|
volumedB += normalizeCC(midiState.cc[region->volumeCC->first]) * region->volumeCC->second;
|
||||||
volumeEnvelope.reset(db2mag(volumedB));
|
volumeEnvelope.reset(db2mag(volumedB));
|
||||||
// DBG("Base volume: " << baseVolumedB << " dB - with modifier: " << volumedB << " dB");
|
|
||||||
|
|
||||||
baseGain = region->getBaseGain();
|
baseGain = region->getBaseGain();
|
||||||
baseGain *= region->getCrossfadeGain(midiState.cc);
|
baseGain *= region->getCrossfadeGain(midiState.cc);
|
||||||
|
|
@ -83,31 +76,26 @@ void sfz::Voice::startVoice(Region* region, int delay, int channel, int number,
|
||||||
if (region->amplitudeCC)
|
if (region->amplitudeCC)
|
||||||
gain *= normalizeCC(midiState.cc[region->amplitudeCC->first]) * normalizePercents(region->amplitudeCC->second);
|
gain *= normalizeCC(midiState.cc[region->amplitudeCC->first]) * normalizePercents(region->amplitudeCC->second);
|
||||||
amplitudeEnvelope.reset(gain);
|
amplitudeEnvelope.reset(gain);
|
||||||
// DBG("Base gain: " << baseGain << " - with modifier: " << gain);
|
|
||||||
|
|
||||||
basePan = normalizeNegativePercents(region->pan);
|
basePan = normalizeNegativePercents(region->pan);
|
||||||
auto pan { basePan };
|
auto pan { basePan };
|
||||||
if (region->panCC)
|
if (region->panCC)
|
||||||
pan += normalizeCC(midiState.cc[region->panCC->first]) * normalizeNegativePercents(region->panCC->second);
|
pan += normalizeCC(midiState.cc[region->panCC->first]) * normalizeNegativePercents(region->panCC->second);
|
||||||
panEnvelope.reset(pan);
|
panEnvelope.reset(pan);
|
||||||
// DBG("Base pan: " << basePan << " - with modifier: " << pan);
|
|
||||||
|
|
||||||
basePosition = normalizeNegativePercents(region->position);
|
basePosition = normalizeNegativePercents(region->position);
|
||||||
auto position { basePosition };
|
auto position { basePosition };
|
||||||
if (region->positionCC)
|
if (region->positionCC)
|
||||||
position += normalizeCC(midiState.cc[region->positionCC->first]) * normalizeNegativePercents(region->positionCC->second);
|
position += normalizeCC(midiState.cc[region->positionCC->first]) * normalizeNegativePercents(region->positionCC->second);
|
||||||
positionEnvelope.reset(position);
|
positionEnvelope.reset(position);
|
||||||
// DBG("Base position: " << basePosition << " - with modifier: " << position);
|
|
||||||
|
|
||||||
baseWidth = normalizeNegativePercents(region->width);
|
baseWidth = normalizeNegativePercents(region->width);
|
||||||
auto width { baseWidth };
|
auto width { baseWidth };
|
||||||
if (region->widthCC)
|
if (region->widthCC)
|
||||||
width += normalizeCC(midiState.cc[region->widthCC->first]) * normalizeNegativePercents(region->widthCC->second);
|
width += normalizeCC(midiState.cc[region->widthCC->first]) * normalizeNegativePercents(region->widthCC->second);
|
||||||
widthEnvelope.reset(width);
|
widthEnvelope.reset(width);
|
||||||
// DBG("Base width: " << baseWidth << " - with modifier: " << width);
|
|
||||||
|
|
||||||
sourcePosition = region->getOffset();
|
sourcePosition = region->getOffset();
|
||||||
DBG("Offset: " << sourcePosition);
|
|
||||||
initialDelay = delay + static_cast<uint32_t>(region->getDelay() * sampleRate);
|
initialDelay = delay + static_cast<uint32_t>(region->getDelay() * sampleRate);
|
||||||
baseFrequency = midiNoteFrequency(number) * pitchRatio;
|
baseFrequency = midiNoteFrequency(number) * pitchRatio;
|
||||||
prepareEGEnvelope(initialDelay, value);
|
prepareEGEnvelope(initialDelay, value);
|
||||||
|
|
@ -430,7 +418,6 @@ void sfz::Voice::fillWithData(AudioSpan<float> buffer) noexcept
|
||||||
floatPositionOffset = rightCoeffs.back();
|
floatPositionOffset = rightCoeffs.back();
|
||||||
|
|
||||||
if (state != State::release && !region->shouldLoop() && sourcePosition == sampleEnd) {
|
if (state != State::release && !region->shouldLoop() && sourcePosition == sampleEnd) {
|
||||||
DBG("Releasing " << region->sample);
|
|
||||||
auto last = std::distance(indices.begin(), absl::c_find(indices, sampleEnd));
|
auto last = std::distance(indices.begin(), absl::c_find(indices, sampleEnd));
|
||||||
release(last);
|
release(last);
|
||||||
buffer.subspan(last).fill(0.0f);
|
buffer.subspan(last).fill(0.0f);
|
||||||
|
|
@ -459,7 +446,6 @@ void sfz::Voice::fillWithGenerator(AudioSpan<float> buffer) noexcept
|
||||||
bool sfz::Voice::checkOffGroup(int delay, uint32_t group) noexcept
|
bool sfz::Voice::checkOffGroup(int delay, uint32_t group) noexcept
|
||||||
{
|
{
|
||||||
if (region != nullptr && triggerType == TriggerType::NoteOn && region->offBy && *region->offBy == group) {
|
if (region != nullptr && triggerType == TriggerType::NoteOn && region->offBy && *region->offBy == group) {
|
||||||
DBG("Off group of sample " << region->sample);
|
|
||||||
release(delay);
|
release(delay);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -490,9 +476,6 @@ sfz::Voice::TriggerType sfz::Voice::getTriggerType() const noexcept
|
||||||
void sfz::Voice::reset() noexcept
|
void sfz::Voice::reset() noexcept
|
||||||
{
|
{
|
||||||
state = State::idle;
|
state = State::idle;
|
||||||
if (region != nullptr) {
|
|
||||||
DBG("Reset voice with sample " << region->sample);
|
|
||||||
}
|
|
||||||
region = nullptr;
|
region = nullptr;
|
||||||
currentPromise.reset();
|
currentPromise.reset();
|
||||||
sourcePosition = 0;
|
sourcePosition = 0;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue