MarcBoule / ImpromptuModular

Virtual Eurorack Modules for VCV Rack
Other
93 stars 10 forks source link

(WIP) PhraseSeq16/32: Add option to slide and change CV/note during tied steps #55

Closed Simon-L closed 1 year ago

Simon-L commented 1 year ago

I propose to add a feature to change note and slide during tied steps. The current behaviour doesn't allow that at all. Changing note of tied steps triggers the blinking warning. Enabling a tie "propagate" the CV to succesive tied steps.

With a monophonic synth, this PR is the equivalent of holding a key down and pressing another key, the oscillator jumps or slides to the other note without retriggering the envelope. This is very common! Slide is generally called "Portamento" on such synthesizers. This PR also allows that.

The change is applied to both PhraseSeq 16 & 32.

This is marked as WIP until I have checked it doesn't have other implication. I took the liberty of setting both options as on by default and I also think that it could be only one option for both as they are related.

I made these small changes while working on a TB 303 clone module whose patterns very frequently have slides and ties.

Menu items: Example: The yellow trace is the gate and the red trace is CV, there are three tied steps and the third one has slide enabled.

MarcBoule commented 1 year ago

Hi, I'll need a bit of time to check this out, but after a very quick look at your PR message, it's important that the new option be turned off when loading a patch that does not contain those json status fields, such that the behavior is unaltered when people re-load previous patches. If the option is on by default when instantiating a new module in a patch, this is possibly ok (I'll have to review this), but users opening old patches should not see any change in behavior.

Simon-L commented 1 year ago

Thanks for your reply and recommendation. I have added a commit to set the options off when the json field is missing.

I'm actually not so sure about on by default, it was for my own convenience. I would be interested to receive comments from users.

MarcBoule commented 1 year ago

"a feature to change note and slide during tied steps"

Before you spend more time on this, I want to make sure I understand the use case properly, since at first glance I think you can already do what you want. If you want to change notes and have slides all the while having a continuous gate, you can already do this by simply not using tied steps and setting the gates of all consecutive steps to full gates (the last one can be the normal gate type).

Simon-L commented 1 year ago

Ha thank you, I didn't realise that. Indeed, it works using advanced gate types except for the difference you explained where tied steps come after the starting gate.

I guess this makes this PR as it is even less interesting for review. I still think this option adds some flexibility even in the "basic" mode of PhraseSeq although I'm unsure how it should be presented. PhraseSeq (and the several other excellent sequencer modules that you made!) have a lot of potential when paired with MIDI controllers, and the advanced gate mode is tedious and complex, to control with MIDI, if at all possible.

I have intuitively expected to have pitch changes during a note and the blinking led warning was often frustrating to me. Don't take my word for it though, this is biased by my own aesthetic judgement! :slightly_smiling_face:

MarcBoule commented 1 year ago

I guess it can perhaps be boiled down to semantics, since the original motivation for tied notes was more in line with having a single identical note last more than one contiguous step, along with the convenience of changing that note automatically for all tied steps when the head step is changed, but I can understand it from your point of view also. But I think in light of all this, I will perfer to keep the module as is, but thank you so much for taking the time to do the pull request and thinking this through, and I'm sorry it didn't get used. Cheers, Marc

Simon-L commented 1 year ago

You are welcome, I definitely understand! Thanks for detailing the motivation