surge-synthesizer / stochas

The Stochas Sequencer
https://stochas.org
GNU General Public License v3.0
426 stars 36 forks source link

First Step of Sequence Playing Multiple Notes in Mono Mode #155

Open cholmberg opened 1 month ago

cholmberg commented 1 month ago

First off, I just want to say what a great sequencer this is and how much I enjoy using it!

I have encountered what I believe to be a bug where the first step of a sequence (consisting of two or more notes, each set to “Low” probability) are both playing at the same time when Stochas is in mono mode.

As best I can tell, this only occurs when the transport in my DAW (Bitwig, version 5.2.4) is set to loop mode.

To reproduce:

  1. Create a 1-bar loop segment in Bitwig (and turn on looping)
  2. Add Stochas to a track (with some polyphonic instrument after), ensuring Prob. Mode is set to “Mono” and Playback Speed is at “1”
  3. Enter two notes on step 1 in Stochas, e.g., C3 and E3
  4. Begin playback in Bitwig

In my experience, during the first play through, only one note will play. After x number of loops, however, both notes (C3 AND E3) will play simultaneously. As far as I can tell, this does not seem to happen consistently; that is, during some loops, both notes will play while only a single note plays in other loops through the sequence.

I hope I am explaining myself clearly, and if I am overlooking something stupid, please let me know.

Thanks!

rudeog commented 1 month ago

Hi, I think what you are seeing is something that is a side effect of the position variation feature. Stochas can play notes in the sequence either before or after the grid. In loop mode on your daw when it gets to the end of the loop, it jumps back to the beginning position. Stochas calculates ahead of time when the next midi note will be triggered, and if the position variation is on, (or groove or swing moving a note forward in time), it will set the note to play ahead of time. This means that it could get to the end of your loop and determine that it should play the next note (which is the first in your sequence) right before the end of the loop, and then when your daw jumps back to the beginning, Stochas will play that first note again because it has been "reset" by the jump backward for the loop. Hope this makes sense. It is ultimately fixable, but not easy to fix without extra code which would make things more complex. A few workarounds: 1. make your loop area longer so its less likely, or don't loop. 2) set your first note to be shifted slightly later in time We can leave this issue open, as it might be fixed at some point

cholmberg commented 1 month ago

Thank you for the informative response!

For what it's worth, extending the loop segment length in my DAW does not seem to resolve the issue (though I have not tried with any extremely long loops).

Apologies if this is obvious, but how would I adjust only my first note to play slightly later? And would I make this same adjustment for all notes in the first step, e.g., would I adjust the timing of both C3 and E3 from my example in my original post?

Ultimately, I have been enjoying this sequencer so much that I have altered my workflow to not use loop regions in my DAW, which as you note avoids this issue. Would of course be great news if this behavior were to be resolved in some future update, but for now, I just want to thank you again for such a fun sequencer!

rudeog commented 1 month ago

Yes, you would adjust the first note to play slightly later. You could do this by going into the groove/swing tab and making an adjustment by dragging on the first button on the left (which normally says 'off') and dragging it slightly to the right. this will affect all notes on position 1 to play slightly later. If you just wanted to adjust a single note, you could click on the shift button (bottom right of the grid) and then drag on the note dragging to the right

cholmberg commented 1 month ago

Thank you kindly for the instructions on how to adjust timing per step!

In case it is of any use to future readers: I found that setting groove to (positive) 4% on the first step was the lowest I could go and consistently prevent multiple notes from playing simultaneously when using a loop segment in my DAW (Bitwig).

Thanks again!