OP-1's Endless Sequencer in VCV Rack

I’ve been working for a couple days on trying to recreate the functionality of the OP-1’s Endless Sequencer mode shown here.

Here’s a simplified version of the patch with free modules to demonstrate the issues I am running into. My two remaining issues both have to do with the MIDI>CV sending the last pressed key as V/OCT.

  1. When routing to transposing, I would like to automatically reset the V/OCT to zero so that the pattern doesn’t transpose immediately no matter what key was last pressed. I just can’t figure out how to override the V/OCT coming out of MIDI>CV without actually pressing a key on the keyboard.

  2. The first note of the pattern I want to record is not always registered. It seems to work fine if I play the first note, press the reset button, then play the patch, so I think this is also being caused by getting a V/OCT from MIDI>CV too early, but I am not sure. I have tried shift registers and signal delays but haven’t found a solution yet.

If you are interested, I’d really appreciate any advice or help you could give. Thanks!

4 Likes

I always appreciate when others try to make the most of the Fundamental modules. I also enjoy the challenge.

1 - The simplest solution is to pass the V/Oct through another sample and hold, setting the value to 0 while in record mode, and using the keyboard V/Oct during playback. The transpose voltage will then be 0V upon start of playback until the next key is pressed.

2 - I believe your Big Button clock input is 1 sample ahead of your incrementing sequence length input, so the first note is getting lost.

I’ve taken the liberty to reconstruct the patch making a number of changes:

  1. Your sequence length increment is 10V/128, which is incorrect -It stops recording after 64 steps because the 65th trigger fails to increment the length, and the sequencer resets to record over the previous values. It is a 128 step sequencer, but 0V is the 1st step, and 10V is the 128th step, so there are only 127 increments. So the correct increment voltage is 10V/127.

  2. No need for an 8 bit shift register accumulator that you then need to perform digital to analog conversion before passing to the Big Button. Much easier to simply use sample and hold to accumulate the total voltage directly, incrementing by 10/127 each time. You just need to have a mechanism to reset the S&H to -10/127 to begin a new recording. If you are willing to go beyond the Fundamental modules, then the docB ACC accumlator module can handle everything with a single 2hp module.

  1. I generally don’t like to use the Fundamental 1->4 and 4->1 switches for CV because they are designed for audio processing - they fade in changes to eliminate audio pops. It probably doesn’t make a difference in this patch, but it is easy to use the FADE module as a 1->2 or 2->1 switch, which is all you need.

  2. I use the FLIP/FLOP gates of the GATES module to manage the Record/Play state. A single module controls the state for the whole patch, so it can never get out of sync. The resting/reset state has FLIP high at 10V, so that can be used directly to activate the FILL input while in record mode.

  3. If you are going to use a quantizer to keep the transposition in the same key, then you should probably use it during recording as well so you know what you will get when you play.

  4. The Bogaudio Stack module transposes 1 semitone for each 0.1V. But the keyboard uses 1/12 for each semitone. So I substituted a MIX module to simply add the transpose voltage to the sequencer output.

  5. I automatically enter transpose mode when in play mode (always starting with 0 transposition), and leave transpose when in record mode. So I can eliminate one button.

  6. I automatically reset to the first step every time I toggle between Play and Record. I also reset the clock so that it always starts with a full beat.

  7. I added two VCA modules to use a graphical meters to show if you are in record or play mode, and to show qualitatively how many steps have been recorded.

Endless-Sequencer-w-Transpose MOD.vcv (5.3 KB)

6 Likes

Holy shit, Dave! What an excellent christmas present! I can’t wait to dig into these suggestions and learn more from them. I really really appreciate the time you took to help me with this. This forum is my favorite part of the internet. God bless us, every one!

4 Likes

I was playing around with the sequencer and stumbled on a cool 17 step sequence. I do not normally create grooves like this, but it managed to grab my interest. I was bummed to discover that the sequence does not get saved with the patch :woozy_face: But at least I got a recording.

Update - I just realized it is just the accumulator that fails to save its state. The actual sequence is still in the Big Button sequencer. To play my 17 step sequence, disconnect the cable from the Big Button LEN input, and set the LEN knob to 17 steps. Then press the left LOGIC button to start and stop the sequence. Just remember to reconnect the accumulator’s S&H 1 output to the Big Button LEN input if you want to record your own sequence.

7 Likes

This is great ! Looking forward to jam and dissect this patch. I wonder what other (rare) sequencers can be recreated in VCV…

I just got the accumulator working. It’s perfect for this use. I knew while I was patching it that the Octoflop was probably not the most efficient way to count but I couldn’t figure out another module to do it and I enjoying trying to remember enough about binary to patch it all up correctly (or almost correctly :slight_smile: ).

Thanks again for all the time you put into helping with this. I have a new respect for MIX and FADE. The logic you were able to handle with just those and PROCESS was really impressive.

1 Like

Here is an updated version of the patch I have been using. The only function I still can’t quite figure out is a simple way to add rests to the sequence. Other than that, this thing is prefect. It requires more modules than the version above, but they are all free other than Host, which I strongly recommend buying if you haven’t already.

Enjoy! And let me know if you think of a clever way to add rests.

2 Likes

Simplest way may be to use the highest sequencer note as a rest. Use VCV Compare to compare the sequenced note to that highest note pass the A>B result to a logic gate and the outgoing trigger - pass the trigger on only if the result of AND logic is true.

Or use lowest note to compare if it suits you better, either way works.

May need some Sample and Hold in there, but should work.

I like the new patch.

The way the Big Button sequencer works, it is actually quite simple to add a rest. While recording, you simply need to introduce a trigger that increments the sequence accumulator and clocks the Big Button, but blocks the FILL input. So the sequence length and sequencer step are incremented, but no gate or V/Oct is stored for the new step.

This can be done with the addition of three modules:

  1. route the MIDI gate to a MIX before it goes to the rest of the patch.
  2. route the FILL cable to a FADE “switch” input one and send the OUT 1 to the FILL input.
  3. add another LOGIC sending the OR gate to the new MIX and to the FADE X FADE input.

Now while recording, press the new button to introduce a rest. The button increments the accumulator and triggers the sequencer clock, but it also switches the FADE so that FILL is off and the gate and V/Oct are not recorded.

I’m a bit puzzled with how you have the MODE button automatically clearing the sequence whenever you return to record mode - the RESET button now serves no purpose. You might as well eliminate the RESET button and the new EDGE module, and have the GATES FLIP gate directly reset the accumulator and clear the sequencer, etc.

Thanks for another perfect solution! I didn’t even think to block the FILL input. I used the modules you recommended and they worked perfectly. I also realized I could use the rising trigger on GATES to replace the EDGE module with a fundamental module.

For my use, the reset button is to clear a sequence mid recording if an error was made while entering. If I ever leave playback, I want to reset, but I also wanted a way to clear and retry a sequence before playing it back.

I can’t thank you enough for the help with this. I am still learning how modular works by playing around with it and this helped me so much.