stoermelder / vcvrack-packone

Modules for VCV Rack
GNU General Public License v3.0
176 stars 40 forks source link

TRANSIT - problem with binding on SEQ 3 step triggers #395

Closed zomoipotoi closed 1 month ago

zomoipotoi commented 1 month ago

Hi, I'm using VCV 2.5.2 and TRANSIT and T+ version 2.04 beta4 I'm binding TRANSIT to SEQ 3. Everything is working except the step triggers that most of the times arent saved (or recalled when I change the snapshot in TRANSIT) and sometimes act very strange.

Here's the steps to reproduce the main problem:

Here's the description of the very strange behavior (I write it hoping it could help the debugging)

Hope someone can help here because TRANSIT is really fantastic and is what I dreamed during the (many) years I used software like this: it's a change in my (lazy) way to use music softwares! Many thanks for that... I will use it also if I cannot use triggers (I will find a workaround).

All the best Dario

Petervos2018 commented 1 month ago

Maybe it has to do with the fact that you can not morph between on or off, it's either on or off nothing in between. I tested it with 8 face and it works, but indeed the gates do not work with TRANSIT. Also tested it with Groovebox and you get this flickering between states :

transitBox

zomoipotoi commented 1 month ago

I don't agree with your sentence "you can not morph between on or off". For example you can consider 0 as everything different from 1 and 1 only the value one. In this case the morphing from zero to one will keep zero until the end of the morping phase when the value will become one. Or you can consider 0 everithing less than 0.5 and 1 everything above 0.5. In this case the morphing from zero to one will keep zero for the first half of the morphing time and one for the last half (in case of a linear morphinc curve of course). An so on... I don't know the technical (development related) problems related to this issue but, from a logical point of view it should be feasible.

stoermelder commented 1 month ago

The problem here is (as most times with buttons in Rack): The state of the button does say nothing about the internal state of the module (in this case, an active gate for the step). The state of the button is "pressed" or "not pressed". It is "pressed" when pressing it with you mouse button, and the module switches internally the state of the gate then (see here https://github.com/VCVRack/Fundamental/blob/b453f192d22b1c951d71e8a73f28a37cd96a7b6c/src/SEQ3.cpp#L232). In other words, a press on a button triggers an internal state change, but this state is not tied to the button.

TRANSIT can only look at parameters, and the parameter for a button does say nothing about the internal state of the gate. The logic of the SEQ3 module is responsible for this. This is also why 8FACE works, because it loads the whole "state of a module" (a preset), which contains information about the state of all gates. Unfortunately I can nothing do about this. TRANSIT is a simply not suited for buttons.

zomoipotoi commented 1 month ago

Many thanks for the explanation, now it's clear! Do you think is it possible to mix 8FACE and TRANSIT to achieve complete control on SEQ 3 (CVs and triggers)? Please answer only if you have a ready answer... otherwise I will try it by myself! Many thanks for your fantastic work!!!

stoermelder commented 1 month ago

I haven't tried it but I think it should work using 8FACE and TRANSIT the same time on the same module. I would try switching the slots with the C4 mode on both modules the same time.

zomoipotoi commented 1 month ago

Ok, I will try asap, thanks!

zomoipotoi commented 1 month ago

Just another info after some other test. "Mutes" works as expected with Transit. Maybe Mutes buttons works differently from SEQ 3 triggers?

stoermelder commented 1 month ago

Yes, that is right. Unfortunately you can't check this yourself in Rack v2, in Rack v1 you could look at the parameter tooltips for the button behavior: Some modules handle toggle buttons as described before, some modules handle the button "correctly", meaning the value of the parameter is tied to the state of the button. It depends how the developer implemented it. Some modules work, some won't.

zomoipotoi commented 1 month ago

Many thanks for your answer. This clarify better the situation and let me choose the right modules to use. For example all SIM modules seems to work as I expect (SIM Spike for example works fine with Transit). I will use "correct" modules in my next patches! Thanks again for your invaluable works!!!

stoermelder commented 1 month ago

This is the best way to go: choose modules which work the way you want and like 😄