Skip to content
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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nodal routing for filter configuration #4355

Open
mkruselj opened this issue Apr 22, 2021 · 7 comments
Open

Nodal routing for filter configuration #4355

mkruselj opened this issue Apr 22, 2021 · 7 comments
Labels
Breaking Change In order to close this issue we need to make a breaking change (no backwards compatibility) DSP Issues and feature requests related to sound generation in the synth Feature Request New feature request UI Issues related to UI look&feel UX Issues related to user experience (UX) - mouse, touch, keyboard, MIDI inputs, etc.
Projects
Milestone

Comments

@mkruselj
Copy link
Collaborator

mkruselj commented Apr 22, 2021

The feature request is quite simple, but the work needed is probably not. 馃檪

Basically, rather than having fixed filter configurations, make it so that we can route the filters, waveshaper and ring modulator freely, and tap the feedback from any output point among those blocks, and return it to any input point among those blocks.

Additionally: consider updating the ring mod block (only ever used in Ring filter config) to be an effect we can insert anywhere in the chain. Could be a second waveshaper, an EQ, an additional comb filter, Treemonster, whatever we want. This is #6015.

Example from Massive X:

image

You can see FB blocks that are used to tap out the signal into the feedback bus, then return it to whichever block in the structure. Oscillators are also freely routable, but without a level mix to each of the filters, so I would eschew this from our implementation - still have the filter 1/2 mix parameters in the oscillator mixer instead. A, B and C are insert effects that can be added and routed however. Let's consider A is our waveshaper and B is ring modulator (that might just become more flexible eventually).

Lots of work, sure. Benefits? Huge!

@mkruselj mkruselj added Feature Request New feature request UI Issues related to UI look&feel DSP Issues and feature requests related to sound generation in the synth labels Apr 22, 2021
@mkruselj mkruselj added this to the After Surge XT 1.0 milestone Apr 22, 2021
@mkruselj mkruselj added the UX Issues related to user experience (UX) - mouse, touch, keyboard, MIDI inputs, etc. label May 20, 2021
@mkruselj
Copy link
Collaborator Author

mkruselj commented Sep 1, 2021

I'm having second thoughts about "then reproduce original filter routings (AND the weird and almost-buggy-if-not-unexpected filter balance behavior) and have them as default presets" part. The thing is just too buggy to replicate, it's probably better to have a hard switch between legacy mode and new mode that would be the default.

@baconpaul
Copy link
Collaborator

We will know when we code it
From a processing perspective, "Routing" as a 7th mode (or whatever) is rather appealing from a code perspective though.

@mkruselj
Copy link
Collaborator Author

mkruselj commented Dec 29, 2021

Mockup (WIP):

image

1 and 2 are (stereo) inputs to the filter config. F1 and F2 are obviously the two filters. Curvy thing is waveshaper (but can be any other voice insert FX we want to add), X thing is ring mod (but can be any other voice insert FX we want to add). FB is an explicit unit delay block. Everything going into the final (stereo) amplifier.

Dragging more than one wire from one port creates a copy of the signal. Sinking more than one wire into one port sums those signals.

Icons in curvy or X thing would change depending on which voice insert FX is loaded.

@mkruselj mkruselj added this to To do in Filters May 16, 2022
@mkruselj mkruselj added the Breaking Change In order to close this issue we need to make a breaking change (no backwards compatibility) label Aug 21, 2022
@mkruselj
Copy link
Collaborator Author

Newer mockup:

image

Inputs 1 and 2 are as mentioned before, inputs into the filter config from the mixer's ROUTE knobs. The other two inputs are direct connections from oscillators, ringmods, noise or audio input. I1/I2 are voice-level insert effects. Balance knob will only crossfade outputs of F1 and F2 blocks, no matter what they are hooked up to.

@mkruselj mkruselj removed the Design Required We need to design a solution to this issue label Nov 1, 2023
@TheGuyWhoo
Copy link

Hey, just wondering about the progress on this. Is it something that is still quite far off?

@baconpaul
Copy link
Collaborator

yes

@mkruselj
Copy link
Collaborator Author

@TheGuyWhoo Anything that is tagged as "Breaking Change" you can expect to be a more long term thing (think 1-2 years, and also not a part of Surge XT 1.x release cycle).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Breaking Change In order to close this issue we need to make a breaking change (no backwards compatibility) DSP Issues and feature requests related to sound generation in the synth Feature Request New feature request UI Issues related to UI look&feel UX Issues related to user experience (UX) - mouse, touch, keyboard, MIDI inputs, etc.
Projects
Filters
To do
Development

No branches or pull requests

3 participants