Portable sequence standard (proposal)

I’ve opened a GitHub issue for the suggestion, at https://github.com/VCVRack/Rack/issues/1708

If it can’t become an official VCV standard then fair enough, but an unofficial standard supported by the vendors of popular sequencers will still help users.

5 Likes

Proper

1 Like

interesting! would it open the door to low HP and cpu sequencer that would be some kind of reciever for pasted content?

That would definitely be possible, and it’s an interesting idea. Use Foundry or Seq++ or other to make the sequences, then paste them into a smaller sequence “player” that would have a minimal UI. Many possibilities! :slight_smile:

1 Like

idea 1: 128 step container

  • 2HP
  • reset input
  • play input
  • gate out
  • seq out
  • a led to show if the container is full or not
  • paste sequence by right click

idea2: song sequencer a 8 or 16 step sequencer, where each value of step is actually a pasted sequence: you start by pasting up to 8 sequences in the container, and then your classic 8 knobs select one of the loaded sequence instead of a V value :slight_smile:

2 Likes

Interesting ideas! For idea 1, it would need a clock input also, but the compactness would definitely be pretty cool! We’d have to check with Antonio on how to make 2 HP modules though, since that’s quite narrow! :stuck_out_tongue: Idea 2 is definitely cool also. I have copy-pasted the ideas into my Impromptu notebook! I even have a non-imaginative name for these sequencers: Paste-Seq-128 and Paste-Seq-8x16 :smile:

1 Like

For what it’s worth, I just implemented Portable sequence copy/paste in BigButtonSeq2, so it’s 6 channels of 128-step sequences in a relatively small package. It will be available in the next update.

3 Likes

I added a list of modules that support portable sequence standard at the bottom of the spec document.

3 Likes

Two new Impromptu modules support this standard, and they aren’t even sequencers. They are ChordKey and FourView. Very pleased to see modules out there showing that anything with some pitches in it can make use of the format.

2 Likes

Indeed! With ChordKey it introduces an interesting dilema: when we do a Copy in ChordKey, should it

A) copy into a 4-step sequence (effectively apeggiating the chord), or

B) copy it as a true chord where all notes at at the same time point

Option A is needed so that the notes can go into conventional step sequences like PhraseSeqs etc, but option B is much more natural for timeline sequencers like Seq++ and Entrian sequencers. I think I might just offer two types of copy operations, to offer both A and B types outlined above. This problem does not happen when pasting into ChordKey, since it just takes the first four notes it sees, regardless of their start times. (@VCVRackIdeas)

Already suggested for your issue tracker to have both of them available for choosing.) It may destroy portable sequence standart but wouldn’t destroy a chord or can transform it to a sequence which is also pretty cool thing to have.

1 Like

There is now support for Portable Sequences in Darius - soon to be added to the library. It’s a rather unusual sequencer, so its implementation is unusual too: upon copying, it copies only one of all the possible random sequences it can generate.

image

I took a look how they were implemented in Squinky Labs’ and Impromptu’s modules, and since their code was strongly coupled to their way of doing thing, I wrote my own lightweight portable sequence code. It’s not battle-tested at all yet, and does not cover all the corner cases (favoring cleaning up bad input instead), but it’s short and simple to understand, so it might save time for someone who wishes to implement them.

6 Likes

Hi Aria, welcome to the Portable Sequence club :slight_smile: I never took the time to say this, but congrats for all you modules and the cool and original concepts you devlopped! :+1: :grinning:

2 Likes

Very nice. Thank you. Definitely see the value in your implementation code.

1 Like

My next device is a quantizer that doubles as a chord sequencer, and once again I plan to use portable sequences in a slightly off-label way. Thoughts on my planned implementation?

Right-click on a Scene slot: “Copy scene”/“Paste Scene”. It’s copied to a portable sequence of global length 1.0, every valid note of the scale a note of length 1.0 on the C4 (pitch = 0.0) octave. The fact it’s a portable sequence rather than an internal format is not made explicit by the UI, only the docs.

Click on the keyboard button (ignore the paste button, both buttons will be merged in a single button the final version): “Copy portable sequence” / “Paste portable sequence” (among other options, such as entering chords in lead sheet and roman numeral notation).

On exporting: Global length as long as the last non-empty scenes, so up to 16. Every scale/chord same as above: length 1.0, C4 octave.

On importing: Ignore the global length. Every event with the same start time is grouped, up to 16 groups are imported to scene slots, quantized to the chromatic scale and folded to a single octave.

2 Likes

That looks very sensible to me. Excellent slight-but-comfortable abuse of portable sequences. :slight_smile:

1 Like

Portable sequences have been implemented exactly as proposed above in QQQQ, coming soon to the library.

This indirectly gives compatible sequencers the ability to load chords in lead sheet notation!

4 Likes

Very cool! :slight_smile:

This is great. nice work!

Forgot to post here, but here’s a third module family of mine that implements Portable Sequences, and somehow, it implements them as you’d expect rather than being a weird take on the standard.

They are Modulus Salomonis Regis (8 nodes), Modulellus Salomonis Regis (4 nodes) and Modulissimus Salomonis Regis (16 nodes): self-patching, self-modifying sequencers, that are as deterministic or chaotic as you want them to be.

Implementation details:

  • Copy Sequence: each node has a length of 1.0
  • Paste Sequence: imports as many notes as possible to its nodes, in ascending start order, without quantizing them. The user is assumed to understand the implications of it and interested in exploiting this behavior, and there is a separate right-click option to quantize the status of the module to its internal scale if that behavior is desired.
1 Like