MIDI Recording, Playback and Editing

The biggest single change in Ardour 3.0 over previous versions of the program is its ability to function as a fully-featured MIDI sequencer. Over the last several years, a variety of developers have worked hard to create a model for handling MIDI that is as integrated with Ardour's existing audio handling facilities and uses the same general workflow as much as possible.

ardour with MIDI tracks and data

The screenshot shows 2 MIDI tracks in Ardour. The upper one contains one of Bach's lovely inventions, the lower one is a short percussive-mode rhythmic loop. Between them is some CC/automation data for CC #35 (Breath control).

Key features of Ardour 3.0 MIDI handling

  • All editing is done in-place, in-window. There is no separate piano roll window or pane. Edit notes right where you see them.
  • All MIDI I/O is done via JACK for sample accurate timing and maximal efficiency when communicating with external software synthesizers
  • Every MIDI track has its own JACK MIDI port for input; it may have an arbitrary combination of audio and MIDI outputs, depending on the signal processing in the track; the full flexibility of JACK connectivity is present for MIDI just as it is for audio.
  • Full automation for MIDI tracks, integrated with the handling of all MIDI CC data for each track
  • Controllers (CC data) can be set to discrete or continuous modes (the latter will interpolate between control points and send additional data)
  • Normal or Percussive mode for note data editing
  • The "scroomer" (a combination scroll/zoom tool) for altering the zoom level and range of visible MIDI data

Notable Differences

  • As mentioned above, all editing is done in-place
  • Fader (volume) control currently operates on transmitted MIDI data, not by sending CC #7
  • All note/data editing is per-region. There are no cross-region operations at this time
  • By default, copying a MIDI region creates a "deep link" or "cloned copy" - both regions share the same data source, and edits to the contents of one will affect the other. To break this link, right click on the region and select "Fork" from the context menu, after which the selected region(s) will have their own copies of only the data that they visually display on screen. You will not be able to trim the region back its "original" length after a Fork operation, and the operation cannot be undone.

Editing Summary

There is a separate document available that summarizes MIDI editing operations. Suffice it to say that you can select and navigate between notes, and then move notes and/or change any of their properties: start time, end time, duration, pitch, velocity or channel. All of these operations can be carried out with the keyboard as well as the mouse.

Quantize Dialog

Every MIDI editor loves a good quantize dialog, and Ardour 3.0 aims to be a best-of-breed:

quantize dialog

Accessed via the "q" key, the dialog includes:

  • Options for grid, legato amd groove quantize
  • Snap note start, or end
  • Snap to current grid, or many beat subdivisions
  • Quantize threshold (how far away from a chosen position a note must be in order to be quantized)
  • Strength (how close to move a note to its new position, as a percentage of the nominal distance)
  • Swing

Step Entry Dialog

Sometimes you'll want to edit MIDI data directly from a connected MIDI device like a music keyboard or pad controller. Sometimes you'll want to use the mouse. Sometimes you'll want the fine-grain control, precision and speed of entry that comes from using a custom note entry dialog. Ardour 3.0 attempts to provide a best of breed example of this common tool, as shown below:

step entry dialog

The dialog (quite closely modelled on Logic's) contains:

  • Chord entry switch (successive notes are stacked in a chord until it is released
  • Note length selectors
  • Triplet toggle
  • Normal, single, double and triple dotted note selectors
  • Sustain button
  • Buttons to:
    • Insert a rest of the current selected note duration
    • Insert a rest of the current grid step size
    • Move back to the last inserted note
    • Move forward to the next beat, or bar
    • Move forward to the edit point
  • Dynamics controls from pianississimo to fortississimo
  • Channel selector
  • Explicit numerical velocity selector, for more precise control than the dynamics selectors
  • Octave selector
  • Buttons to add bank or program change events
  • a full 10 octave virtual keyboard

More or less all actions in the step entry dialog can be driven directly from the keyboard, so you do not need to keep moving back and forth from keyboard to mouse to do complex data insertion.

The step entry dialog is accessed via a right click context menu on the rec-enable button (its there because step entry is related to recording MIDI data. You cannot simultaneously step edit and record MIDI via the track's MIDI port.

A closing thought

One thing to stress here: this is the first release of Ardour with MIDI sequencing facilities. We don't expect that in a single step we will get to the same level as applications that have been providing this functionality for years, although we have tried to learn from them and take the best features from a variety of sources. We have tried to concentrate on what appears to be the most important MIDI editing functionality, and we plan to improve and extend on that in future releases. People were very critical of ProTools' initial MIDI editing functionality, and we hope we have at least done better than that!

I do not quite understand the “right” way of using MIDI in Ardour3. So far I have not found a way to plug a LV2/DSSI synth plugin into an Ardour MIDI-channel

At the moment I would do the following:

  • connect the hardware MIDI-interface via JACK to an Ardour MIDI track, to record midi data from a keyboard or so.

  • connect the Ardour MIDI track to some synth (hardware or software) via JACK

  • optionally route the audio output of the synth through (hardware or software) effect processors

  • connect the this resulting audio signal to a bus in Ardour

  • plug into this bus any kinds of effect plugins, sends, inserts I need/want

  • connect this bus to Ardours Master (or some other bus)

Is this the way it is meant to be done?

Thank you for this great application. Ardour just rocks!

Johmue, MIDI in Ardour is deliberately as much like audio in Ardour as is reasonable - routing is flexible, so there’s no single “right” way of doing things. Your way (using JACK apps for synthesis) is definitely a valid way to do things. You can also add an LV2 synth plugin to a MIDI track.

hi, thanks for the implementation, exist a pencil tool?like seq 24?how edit various midi messages whitout step entry or keyboard?

it’s posible merge an split the midi chanels in 1 or more midi tracks when start a new or old project?

sorry for my poor english.

@bocho999: yes there’s a pencil tool for drawing notes. Note sure what mean by your splitting question.

thank’s for the answer, I see captions where it seems that the midi tracks can group several channels simultaneously, which is interesting, my question if it is possible to divide or to group the midi channels freely when a project already has several grouped or separated channels.

@bocho: there is currently no command to split a MIDI track by channel.

I notice that if you import a midi file with more than one channel it ends up in one track. I decided that the best way to edit multiple channels in one track is to select “None” button which selects no midi channels, causing notes to be drawn in outline, and then to select a specific channel, causing the notes in that channel to turn green. Of course if you select multiple channels all the channel notes turn green which makes editing confusing, but useful to play only selected channels. Editing operations seem to work on all channels, e.g. shift-click selects all notes between 2 notes on all channels. Well, this could be useful for some cases (like transposing everything), but not useful if you only want to work on a single channel. I would think it would be best to have the editing functions only work on the selected channels which gives complete flexibility.

@Edward: this sort of thing needs to be in the mantis tracker, not here on the forum. Good points all around.

Ok will do.