-
Notifications
You must be signed in to change notification settings - Fork 404
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Latching scene B plays a voice on Scene A #6963
Comments
Simpler repro: If I latch scene A, the voice counter reads 2. Turning latch off again it does down to 1, and indeed it still makes sound. Each time I turn latch on/off, another extra voice lingers. Switching off dual doesn't end them, but switching to scene B and turning latch on/off there does. If I latch scene B, the behavior is the same, except it doesn't stack extra voices. Each time you latch on it goes to 2, then back to 1. Switching off dual does stop them from sounding. |
tagging into 1.3 i bet the latch-end-voice-reaper isn't properly scene aware |
An afternoon of casually building Surge from different commits I think I've found it. It appears at #6606, and only happens with the added MIDI channel-to-Scene option not engaged. I guess something about the scene channel mask code is a bit borky... |
My guess is this state surge/src/common/SurgeSynthesizer.cpp Line 4023 in 3c4c9fc
|
I tried looking at it, but I'm in a bit over my head as you might expect. 😅 I messed around with XCode breakpoints a little, and I think you're right PlayB stays true in some cases where it shouldn't, but discerning why is where I'm lost. Wish I could be of more help. 🙃 |
We have confirmed the diff that breaks it and the line that’s wrong. That’s 90% of the fix. I’m sure this one will now be easy to do the last 10%. Awesome bug hunting! |
Oh also do you know about git bisect? |
No! Lemme guess, it helps find a breaking commit? I should read up on that probably. :) |
Right. The problem is entirely with the ch23 turn off thing. That basically breaks latch. It breaks latch for an annoying reason though. surge/src/common/SurgeSynthesizer.cpp Line 4094 in 8d791a1
there's the code which plays in latch mode. As you can see it uses 'channel 1' to mean scene A and 'channel 2' to mean scene b. So it turns out this is also broken in 1.2.3 in MPE mode, where latch does the exact same thing. The answer here is to add an argument to playNote for 'ignore scene' which ands onto the channel mask then pass it form that latch initiation point. |
Ahh great and i can grab it in a regtest now. Will have this soon. |
In MPE or ignore-23-to-scene mode, turning one scene on to latch would mistakenly trigger voices in the non latched scene. Fix that but adding an intended scene optional argument to playNote and calling it from the right place. Also add a regtest. Closes surge-synthesizer#6963
yup got it. |
In MPE or ignore-23-to-scene mode, turning one scene on to latch would mistakenly trigger voices in the non latched scene. Fix that but adding an intended scene optional argument to playNote and calling it from the right place. Also add a regtest. Closes #6963
Scene A has a sine osc and is monophonic
Scene B has an audio in osc from Scene A
Latching scene B should be silent, but here, it latches both scenes for some reason.
The text was updated successfully, but these errors were encountered: