JACK Synthesizer Manager Proposal

2008-01-26

Audun Halland and I have been thinking about a set of related problems in the realm of Linux audio. The first result is the following proposal, meant to gather feedback from the community via the LAD and LAU mailing lists.

JSM, the JACK Synthesizer Manager

We propose a programm that acts as a proxy between sequencing software and both software and hardware sythesizers. Among the goals are unified patch selection and making projects more portable.

If we get the impression that the JSM is something that both developers and users will find handy and use, then development might start real soon.

In this text, we avoid going into technical details to foster free thought and discussion.

Use Cases

Patch selection

Goal: Choose patches from all available hardware and software synthesizers.

Giorgio uses a single means to select a patch among all patches of all of his software and hardware synthesizers. He uses meta-data to find the right patch. The right connections are made automatically.

Computer as syntheszier

Goal: Use the computer as a compound synthesizer in a live performance.

Hiromi has her keyboard connected to her laptop live on stage. She uses several soft-synths via keyboard-split and layering. A few selected parameters are bound to the wheels of the keyboard. After each song, she switches from one setup to the next with least effort.

Collaboration

Goal: Exchange projects without having to change settings back and forth.

Alice and Bob take turns on working on a project. They use different hardware but don’t have to manually change connections and choose patches on each turn because of an abstraction layer.

MIDI Interface Ports

The problem with MIDI interface ports is that the hardware on the other side and its setup might change. Or be entirely different if people exchange projects. An abstraction layer can make this more comfortable to handle.

The JSM takes care of the mapping between software ports and MIDI interface ports. It can work on a per MIDI channel level.

Patches and Instrument Definitions

Patches and controllers are chosen by name; the user doesn’t have to deal with cryptic numbers. For kit-programms, name mappings are given (e.g. bass drum on C1).

Patch selection happens by a single means, offering all available patches (JACK apps, plugins, hardware). Making the required MIDI and audio connections is automated as far as possible.

Categorization

Categories help to find the right patch among many. When exchanging projects, they help to replace unavailable patches with similar ones.

Virtual/Compound Synthesizers

From the outside, the computer can be dealt with like a single compound synthesizer. Different synthesizers can be triggered from ranges on a single keyboard (key splits). Synthesizers can be layered. The whole setup can be switched with programm changes.

JACK to ALSA Bridge

JSM could be the de facto JACK MIDI to ALSA MIDI bridge. No Jack “SYSTEM” midi ports, the jack world only sees the devices offered by JSM.


Audun Halland and Thorsten Wilms


Ardour MIDI Editing 4

2007-08-04

So there’s the question how rectangular selection shall work: selecting notes that are touched by the rectangle vs only selecting notes that are fully within the rectangle. MusE and Nautilus use the first approach. Several other sequencers and file managers likely, too. Inkscape and likely other 2d graphics tools use the later approach. I find that I can’t remember details like this for many applications I used.
Here’s an example pattern in MusE:

Notes in MusE

Selection widths in pixels for the first 3 chords. Minimum and maximum to select the one chord and no other note:

  Touch Cover
Minimum 0, 0 , 0 48, 16, 48
Maximum 48, 16, 48 64, 94, 78
Range 48, 16, 48 16, 78, 30

I think the numbers clearly support that cover-select has a strong advantage over touch-select if it’s about selecting short notes, but makes selecting longer notes next to short notes harder . If a note extends beyond the canvas, it can only be selected via covering with the additinal rule that in such a case, covering the visible extents of a note is enough.


Ardour MIDI Editing 3

2007-05-29

Previously:
Ardour MIDI Editing 1
Ardour MIDI Editing 2

Underlay

MIDI Editor A
Another MIDI region as underlay. Making use of colour perspective: blue steps into the background. For the same reason my notes are orangish, to come to the front (and be warm, inviting). The short grooves mark grid steps and are meant to look distinct from notes in a row.

Smart dragging

MIDI Editor B
Dragging from empty space does rubber band selection. If the selection rectangle doesn’t fully enclose any note, the starting row is filled with a note (indicated by an outline while dragging). In the very odd case of someone wanting a note that completely overlaps another note on the same row, it can still be done by creating a shorter note and then extending it, or creating the note on another row and moving it.

Rubber banding selecting all touched (not necessarily encased) notes could be had with a modifier key.

MIDI Editor C
The encased note is selected. I will likely have to create more plain graphics, but for now I’m having a bit of fun showing what could be done ;)

MIDI Editor D
Initially I thought of showing the 3 target areas on mouse-over plus highlighting the active one. But sectioned highlighting does both jobs.

MIDI Editor E
2 variations on indicating whether a note is exactly on a grid position or not (bottom note is not).