Midi Mappings not Preserved in Saved Selection



I changed the behavior of S++ so the selection is inserted near the current mouse cursor position. I think this is much more usable than the default behavior.
Let me know what you think…


That is a brilliant solution to establish an initial trial origin point - I love it!

There is still a potential issue, especially if you do not know the size of the selection. If you import (or paste) too close to existing modules, then you can still get comingling. It would be great if you could implement the Rack strategy of moving left or right from the trial origin until you find enough space for the entire selection.

But even without any additional changes, the functionality is fantastic, and eminently useable. Thanks!

Yes, I did recognize the potential issue… two ad-hoc ideas when it happens:

  • S++ supports undo, you can undo the insert and redo it on another place
  • After inserting a selection all new modules are selected as well - makes moving them toghether pretty easy

I thought I could be nice to display some semi-transparent preview of the selection, before actually inserting the modules, using the previews from the module browser. But this will be a bit of work and I’m not sure if it is worth it…

1 Like

Sounds very cool though! Will Dirt be coming back into the collection. Got a fair bit of mileage out of that module recently.

1 Like

Really? It is still included in the development builds as it has never been officially released to the VCV Library yet.


Perhaps a simpler preview that just shows color blocks of the appropriate widths? I’m less interested in the details of the selection than its overall size, so even one big block would do the job. (Or can a selection have non-contiguous modules? I can’t recall.)

1 Like

Ooh, I didn’t think about that - yes, a saved selection can be discontinuous. Importing or pasting preserves the spacing.

And I just tested - S++ also preserves the original spacing.

I suppose this only complicates things a little bit. The simple solution in my mind is to just compute the coordinates for the diagonal of the minimum rectangle that contains the selection. Simply disregard the fact there may be empty space within that rectangle. Then display the color block as you suggested.

1 Like

Ok, I implemented a preview of the selection which is attached to the mouse pointer. The rest works the same way…


works like a charm and preview is awesome. Thanks! Sanity saved :smiley:

Oh my! That preview is gorgeous! And I am glad you implemented the Esc key to abort the import.

It is kind of amazing the degree to which this change improves the user experience. Before I felt a twinge of trepidation every time I wanted to import a selection, which disrupts the flow of patching. Now I have absolute confidence, and importing seems like second nature.


It is unfortunate Rack selections don’t work like that out of the box. We shouldn’t have to resort to Strip++ for previews, or to preserve mappings.