Seq++ has a lot of keyboard commands for editing

Recently people were talking about sequencers that can use the computer keyboard for editing. The good news / bad news with our Seq++ had always been that the mouse editing is fairly weak, whereas the keyboard editing is very powerful. Which gets to the feature we never really talked about much, the ability for the user to remap the keyboard to bind any function to any key. So, below is the standard mapping that comes with the sequencer. The intention here is to show what it would look like to change this, and of course to show all the different editing operations that are available from the keyboard.

{
    "bindings": [
    {"key": "f1", "action": "help"},
    {"key": "n", "action": "change.track.length"},
    {"key": "l", "action": "loop"},

    {"key": "insert", "action": "insert.default", "comment": "**** all the note insert"},
    {"key": "numpad0", "action": "insert.default"},
    {"key": "enter", "action": "insert.default"},

    {"key": "w", "action": "insert.whole.advance"},
    {"key": "h", "action": "insert.half.advance"},
    {"key": "q", "action": "insert.quarter.advance"},
    {"key": "e", "action": "insert.eighth.advance"},
    {"key": "x", "action": "insert.sixteenth.advance"},

    {"key": "w+shift", "action": "insert.whole"},
    {"key": "h+shift", "action": "insert.half"},
    {"key": "q+shift", "action": "insert.quarter"},
    {"key": "e+shift", "action": "insert.eighth"},
    {"key": "x+shift", "action": "insert.sixteenth"},

    {"key": "*", "action": "grab.default.note"},
    {"key": "shift+8", "action": "grab.default.note"},
    {"key": "delete", "action": "delete.note"},
    {"key": "backspace", "action": "delete.note"},
    {"key": "numpad_decimal", "action": "delete.note"},

    {"key": "left", "action": "move.left.normal", "comment": "**** all the cursor movement"},
    {"key": "4", "action": "move.left.normal"},
    {"key": "numpad4", "action": "move.left.normal"},

    {"key": "home", "action": "move.left.all"},
    {"key": "home+ctrl", "action": "move.left.measure"},
    {"key": "end", "action": "move.right.all"},
    {"key": "end+ctrl", "action": "move.right.measure"},


    {"key": "right", "action": "move.right.normal"},
    {"key": "6", "action": "move.right.normal"},
    {"key": "numpad6", "action": "move.right.normal"},

    {"key": "up", "action": "move.up.normal"},
    {"key": "5", "action": "move.up.normal"},
    {"key": "numpad8", "action": "move.up.normal"},


    {"key": "down", "action": "move.down.normal"},
    {"key": "r", "action": "move.down.normal"},
    {"key": "numpad2", "action": "move.down.normal"},

    {"key": "pageup", "action": "move.up.octave"},
    {"key": "pagedown", "action": "move.down.octave"},

    {"key": "tab", "action":"select.next", "comment": "**** all next/prev note selection"},
    {"key": "tab+shift", "action":"select.next.extend"},
    {"key": "tab+ctrl", "action":"select.previous"},
    {"key": "tab+ctrl+shift", "action":"select.previous.extend"},
    {"key": "a+ctrl", "action": "select.all"},

    {"key": "numpad_add", "action": "value.increment.normal", "comment": "edit commands"},
    {"key": "=+shift", "action": "value.increment.normal"},
    {"key": "numpad_subtract", "action": "value.decrement.normal"},
    {"key": "-", "action": "value.decrement.normal"},
    {"key": "[", "action": "value.decrement.large"},
    {"key": "]", "action": "value.increment.large"},
    {"key": ",", "action": "value.decrement.small"},
    {"key": ".", "action": "value.increment.small"},

    {"key": "x+ctrl", "action": "cut"},
    {"key": "c+ctrl", "action": "copy"},
    {"key": "v+ctrl", "action": "paste"},

    {"key": "s", "action":"edit.start.time"},
    {"key": "d", "action":"edit.duration"},
    {"key": "p", "action":"edit.pitch"}
    ],
    "ignore_case": ["up", "down", "left", "right"]
}
6 Likes

(Astute JSON folks will notice that we made a dummy tag called “comment”. We ignore it on parsing, but this lets us make legal JSON that has comments in it).

2 Likes

so…have people been taking advantage of this keyboard-focused approach? (I’m a bit skeptical yes, but this is meant to be constructive feedback)

from my perspective it work for a whole software, but since the module need the mouse over …

however thanks for the implementations (from you and other developers) lets give a chance, maybe it’s a thing to get used to

Good Q. It seems my sequencers are not very popular. I go by what I see in published videos, I see Seq++ used sometimes, but not that often. Can’t tell you if it’s due to the keyboard vs. mouse issues. I’ve always assumed it’s more to do with a preference for algorithmic stuff over entering “bars and beats” as a friend calls it. But who knows?

Yeah, it is an awkward fit with the modular world. Or course that applies to a a few modules out there. btw, you don’t need the mouse over the module, you just need the module to have keyboard focus, so you need to click on it. It’s true that when Seq++ uses keys that VCV also uses, then the mouse needs to be over the module, but I think the stock keyboard mapping provides alternative keys that don’t fight with rack.

Still it’s a good point. Seq++ (and some other modules) is kind of like having an application inside of a module, which is weird and unnatural.

I guess I only make one very weak claim for Seq++. If you want to enter a bar or more of deterministic music (your own or someone else’s, and you don’t want to do it in a conventional DAW like Cubase, and you don’t want to pay money, then Seq++ is (in my opinion) the easiest was to meet those (admittedly esoteric) goals.

2 Likes

Speaking for myself, I haven’t tried your sequencer because I tend to use a new tool at its full potential / all its features - but there seems to be a relatively steep learning curve for Seq++. The mental process is something like “If I need to invest many hours just to make something with it, I’ll just another one I already know”.

Another reason for my non-use could be that currently I’m not working on a specific music destination/project. If I had one, and Seq++ turned out to be appropriate for it, I may start using it.

NOTE: I’m unlikely to be a typical user. Notwithstanding my feedback above I invite anyone to explore how powerful Seq++ is.

1 Like

Totally makes sense to me. Thanks for the comments.