MockbaTheBorg / MockbaModular

Mockba's plugin for VCV Rack
MIT License
15 stars 2 forks source link

pannah doesn't respond to polyphonic CV #11

Closed glocke01 closed 4 years ago

glocke01 commented 4 years ago

Sorry to be a bother!

I really want a polyphonic panner and don't like the way BogAudio's knobs switch to being CV attenuators. Pannah is the thing I need more than ready access to food. Please save me.

MockbaTheBorg commented 4 years ago

I will test it right now ... so the expected behavior is that it would pan based on different voltages over different channels? I think I designed it to be a single modulation signal, but I doubt anyone else is using like that, so changing it should be no issue. I will change it, then you can pull from the source and compile? I will not push another version for at least a week. If you can't build, I can probably compile it here on Ubuntu for Windows and send it over. It would be actually an interesting test to see if it would work.

MockbaTheBorg commented 4 years ago

BTW ... in the meantime ... if you want to do poly pan to create stereo spread, just take a look at the new modules I just released. There's one called Automatic Stereo Spreader (ASSprdr, no pun intented). Maybe that could be useful.

MockbaTheBorg commented 4 years ago

There you go, PolyPan: image

MockbaTheBorg commented 4 years ago

Here's the link for a Linux build I made here on "Ubuntu for Windows", if this works for you then I would ask you a favor: do a checkup on the free modules, suggest what you think would be good to have, then I can make builds for you with the changes without having to wait for the library update cycle.

Thanks!!!

https://mega.nz/#!kfpXURhL!OT3xAdwxbqvlNXKomSQ5gFZWpAtyn0Et5ypTkHud_TA

glocke01 commented 4 years ago

Do you mean suggestions for new modules or for changes to the existing ones?

Some module ideas I have that I believe would be relatively easy to implement are: simple comb filter that takes v/O and contains no nonlinearities, and a VCV implementation of Ringz with a similar parameter scheme http://doc.sccode.org/Classes/Ringz.html (SC is GPL3 http://doc.sccode.org/Other/Licensing.html). AFAIK, there are no modules that perform either task in the plugin manager. (Ringz is a bpf with insanely high Q but it doesn't self-oscillate, making it useful for pinging/whistling wind sounds, modal synthesis, or as a wobbly sine oscillator with built in envelope follower, etc.)

MockbaTheBorg commented 4 years ago

I was talking about the current modules, but I will definitely check those two.

On Wed, Feb 12, 2020, 1:14 PM glocke01 notifications@github.com wrote:

Do you mean suggestions for new modules or for changes to the existing ones?

Some module ideas I have that I believe would be relatively easy to implement are: simple comb filter that takes v/O and contains no nonlinearities, and a VCV implementation of Ringz with a similar parameter scheme http://doc.sccode.org/Classes/Ringz.html (SC is GPL3 http://doc.sccode.org/Other/Licensing.html). AFAIK, there are no modules that perform either task in the plugin manager.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/MockbaTheBorg/MockbaModular/issues/11?email_source=notifications&email_token=AD74NC2WHQEVFIVKJVI7WJ3RCQ4ATA5CNFSM4KT4QOQ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELRZ2TQ#issuecomment-585342286, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD74NC5NNIXN7Y2L7BZ2WDTRCQ4ATANCNFSM4KT4QOQQ .

glocke01 commented 4 years ago

Suggestions:

Overall, it seems you've used the "knob transforms into CV attenuator when there's a cord in the jack" scheme used by BogAudio. I do not prefer this b/c it means you need to offset and scale your CV inputs. I understand that this is an issue of personal preference, I suppose, but for the filtah in particular it is irksome. Anyway, since you've chosen this scheme, you might want to add a module that scales an input (I prefer to have controls for min/max rather than A*B+C type parameterization).

I hope this is the kind of feedback you were hoping for.

Thanks for making such awesome stuff!

MockbaTheBorg commented 4 years ago

Awesome! Yes, this is exactly what I was looking for. So: . Indeed exponential response if coming to Feidah, FeidahS, Mixah and others. I will put a right click menu option as we did to Pannah, this way I do not break other people's patches. . I have no idea how to write a DC blocker, I need to research on this. If you have seen any code example it would help. . Yeah, the difference between Countah and Dividah is subtle. Basically one counts forward and one counts backward (so it actually divided the clock). You are not seeing a difference because there was a bug on Countah that I just fixed. . You are correct about Selectah, it should replicate on the output the number of channels of the selected input. . Filtah is a special case, I will have to figure that one out. . Holdah: internal noise it is. . PSelectah is a "AND->OR Mux" or a "Priority Selector", meaning: whatever comes into the "High" input shows up into the output, whatever comes into the "Low" priority input will show up into the output only if its priority is raised, by the "raise" input. So, "Low" and "Raise" go into an AND gate, and the output of this AND gate goes on one side of an OR gate, the "High" input goes on the other side of the OR gate. . dualBuffer is indeed a >0 detector. The use case is just to turn any >0v signal into a 10v signal. Just like a regular digital buffer. To be honest I just made it because I was adding almost all of the boolean stuff.

Did you try the linux build on your computer? Did it work?

glocke01 commented 4 years ago

haven't had a chance to try the build you provided...

WRT a DC blocker, it's just a highpass filter with a very low cutoff. Not a big deal, just that some of the phase distortion oscillators have a non-zero mean when the shape is toward the end range. https://www.dsprelated.com/freebooks/filters/DC_Blocker.html

y = x - xm1 + 0.995 * ym1; xm1 = x; ym1 = y;

MockbaTheBorg commented 4 years ago

Yup ... I did some research on it last night. I have implemented most of the stuff already, just need to code in the DC Blocker, then the Filtah will be left ... which might require some extra work. Give the build a try when you have a chance, if it works then maybe I can start providing Linux builds made on my Windows laptop ... :)

MockbaTheBorg commented 4 years ago

I have been thinking of writing a "ReVoltah" module, which takes an arbitrary input voltage range and outputs an arbitrary output voltage range, for example: you have a signal that varies from -3v to +5v, and it converts it to vary from 0v to 1v for example. Keeping the shape. Wondering how I would go about it.

glocke01 commented 4 years ago

ReVoltah: https://github.com/NicolasNeubauer/noobhour_modules/tree/master/src The Normaliser module does something like this. See also ReScale from AS modules.

As far as how to implement, I can't tell if this is the question you're asking, but: You either track the min and max of the input signal or make assumptions about that range (e.g. ranges shown in ReScale). Given min A and max B in the input, desired min X and max Y for the output, multiply by f=(Y-X)/(B-A), then subtract (f*A+X).

Years ago in max/msp, I made a function like this that kept running track of min and max, and I found that adding a reset trigger input was musically useful.

MockbaTheBorg commented 4 years ago

I actually made it the simple way, you define the min/max you expect to see on your input, and then the min/max that it will translate to in the output. It is actually useful for dealing with a few things, it can reverse phases, it can invert trigger, it can scale and offset. Not sure why I didn't write something like this from the start. I have just pushed the source to GitHub.