-
Notifications
You must be signed in to change notification settings - Fork 4
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
Add continuous filter keyboard follow in OB-Xd #902
Comments
Additional motivation for this change: Apparently this has been discussed previously in a thread on the KVR forum: https://www.kvraudio.com/forum/viewtopic.php?t=387568 One of the posts on the topic of future improvements from a couple of years ago " ... Change the Keytrack button to a knob (the host automatable parameter is continuous from 0...1 and OB-Xd DOES respond to that) ..." I also sent an email to the current maintainers of the OB-Xd code, DiscoDSP, and got the following response: "Thank you for reaching out and sharing your thoughts on OB-Xd. We truly appreciate our community's input, especially from enthusiasts like yourself. I'm pleased to inform you that variable filter keyboard tracking is on our radar. In fact, we are already in the planning stages to introduce this feature in an upcoming update. We understand the benefits it brings and agree that it would enhance the user experience, even if it requires a skin rework. [...]" So it seems to be in the pipeline, although I suspect it will take quite a while for any changes to the OB-Xd GUI (or indeed any OB-Xd changes) make it to make it into the DISTRHO-port version that is used in Zynthian given that the contained OB-Xd version has seen few updates over the years. |
On LV2, all control ports are float values. It depends on the engine to convert the control port float value to the internal type/value. |
Yes, I have checked that the change works as expected. It turns out that the OB-Xd engine interprets the value as a continuous float value, it's only the OB-Xd GUI (and Zynthian .ttl file) that limit the parameter to OFF and ON only. But you can verify it yourself too. The best way I think is to set the filter to self oscillate: First turn the oscillator 1 and 2 mix controls down so they don't interfere with the filter. Setting the OB-Xd filter to oscillate is a bit awkward: Set Ctrl#3:SelfOscPush to 1.0, and set Filter#2:FourPole to OFF (the filter only oscillates in 12 dB mode). Multimode should be 0 and BandPassBlend 0 as well. Also turn the FilterEnvAmount down to 0 so the envelope doesn't sweep the filter. If you set FilterKeyFollow to 1.0, you should now be able to play the self oscillating filter from the keyboard - you might have to adjust the filter frequency so that it's in a reasonable range. If you set FilterKeyFollow to 0.0, the pitch will be the same across the whole keyboard. And if you now try setting intermediate values, you should be able to verify that the scale can be varied. For instance, if you set FilterKeyFollow to 0.5, then you have to play two octaves across the keyboard to get the filter pitch to change by one octave. If you set it to 0.25, then you need to play 4 octaves to get one octave from the filter, etc. |
I'm curious as to why this was blocked. Did you not consider it a useful change, or were you worried that there might be unforeseen issues due to the change? |
@jofemodo I'm still curious as to why this was blocked. It's fine if you don't want this feature, I'm just curious as to why, as I think it is one of the most common issues people have with OB-Xd. |
For a long time I've been bugged by the fact that in OB-Xd, the filter keyboard tracking (or as it's called in the code, filter keyboard follow) is either 0 or 1. While this certainly follows the way an OB-Xa works, there are numerous other improvements in the OB-Xd, so why keep this rather ridiculous limitation?
However, looking at the source code, the underlying parameter is a float, and can accept continuous values, so it would seem that simply changing the data type from bool to float in any UI used should accomplish this. For the OB-Xd UIs this of course means replacing a button with a knob in the generated UIs.
However, it seems that the actual data type is not enforced when setting, saving or loading LV2 parameters.. Thus, making a simple change in Obxd.ttl would accomplish this in the Zynthian UI while still being backwards compatible with already existing patches.
My suggestion is thus to remove some lines from Obxd.ttl converting the filter keyboard follow parameter from a 0 or 1 boolean to a continuous 0.0 .. 1.0 float. I've tried this and it works in the Zynthian GUI and when saving and loading LV2 patch files, and the parameter response in the synth engine is as expected. The OB-Xd GUI unsurprisingly shows all non-1 values as a non-depressed button, i.e. 0.
The text was updated successfully, but these errors were encountered: