add visual scope

This commit is contained in:
2026-06-13 19:31:46 -05:00
parent dbc1db37e1
commit e9fff9691b
8 changed files with 80 additions and 37 deletions

View File

@@ -28,18 +28,22 @@ void Synth::process(float* out, size_t nFrames) {
handleNoteEvent(noteEvent);
}
// size_t lowestVoice = 0;
// float lowestFreq = 100000.0f;
// for(size_t i = 0; i < voices_.size(); i++) {
// if(!voices_[i].isActive()) continue;
// float currentFreq = voices_[i].frequency();
// if(currentFreq < lowestFreq) {
// lowestVoice = i;
// lowestFreq = currentFreq;
// }
// }
size_t lowestVoice = 0;
float lowestFreq = 100000.0f;
for(size_t i = 0; i < voices_.size(); i++) {
if(!voices_[i].isActive()) continue;
float currentFreq = voices_[i].frequency();
if(currentFreq < lowestFreq) {
lowestVoice = i;
lowestFreq = currentFreq;
}
}
scope_->spinlock(true);
float sampleOut = 0.0f;
bool triggered = false;
bool once = false;
for(size_t i = 0; i < nFrames; i++) {
float mix = 0.0f;
@@ -47,7 +51,7 @@ void Synth::process(float* out, size_t nFrames) {
bool temp = false;
//if(!voices_[j].isActive()) continue;
mix += voices_[j].process(temp);
// if(j == lowestVoice) triggered = temp;
if(j == lowestVoice) triggered = temp;
}
mix = tanh(mix/4.0f); // prevent clipping
@@ -55,14 +59,15 @@ void Synth::process(float* out, size_t nFrames) {
out[2*i] = sampleOut;
out[2*i+1] = sampleOut;
// if(scope_) scope_->push(sampleOut);
// if(triggered && !once) {
// scope_->setTrigger(i);
// once = true;
// }
if(scope_) scope_->push(sampleOut);
if(triggered && !once) {
scope_->setTrigger(i);
once = true;
}
}
scope_->spinlock(false);
}