MIDI
Ultimately, the entire purpose of this application.
MIDIpad outputs on two virtual MIDI devices that're open the whole time the app is running:
- MIDIpad Chords - the strummed instrument. MPE by default, with three other configurations; the channel layout is below.
- MIDIpad Drums - the drums. Four General MIDI percussion notes, on one channel or one per drum with expression - see Drums below.
It sends notes and expression only, with no audio, clock or transport. There's also one input, MIDIpad in, which takes a MIDI clock, its Start and Stop, and the automation CCs listed in App settings - see Following your DAW's clock.
Chords
Chords channels, on the MIDI tab of the Chords panel, picks one of four configurations.
| Mode | Channel | Carries |
|---|---|---|
| MPE | 1 | Master channel (zone-wide messages) |
| 2 - 7 | The six strings, lowest to highest - one channel per string | |
| Multi-channel | 1 - 6 | The six strings, lowest to highest, each movable to any channel from 1 to 16 |
| Poly aftertouch | 1 | Everything |
| Single channel | 1 | Everything |
There are three ways to use it in your DAW:
- As one instrument: treat all the channels as one instrument.
- With MPE: enable MPE on the receiving track or synth to get each string as an independent voice with its own expression.
- One track per string: six tracks, each filtered to one channel, one instrument per string, with per-string expression and no MPE support needed. Multi-channel is the mode built for this, and its String channels boxes let you move any string to any channel; strings on the same channel are combined.
MPE details
Under MPE, when the port opens (and whenever the setting returns to MPE), MIDIpad announces a standard MPE lower zone (MPE Configuration Message: RPN 6 on channel 1, seven member channels) followed by pitch-bend sensitivity (RPN 0): ±48 semitones on member channels, ±2 on the master. The other three modes announce nothing.
If your synth connected after the port opened and it's misreading bends, re-select the input or re-open the project, and it'll read the configuration again.
Per-note messages
Under MPE and Multi-channel, each string's channel carries:
| Message | Meaning |
|---|---|
| Note On / Note Off | The pluck and its release, with velocity from how fast you moved |
| Channel Pressure | The string's live Energy - its level as it decays, and whatever a shake adds to it. Sent just before each Note On, so each new note starts at the right level |
| CC74 | The string's Timbre as an absolute value. It starts at 64 and goes up from there |
| Pitch Bend | Reset to centre before every Note On. MIDIpad does not bend pitch |
On the two single-channel modes, channel 1 carries:
| Message | Poly aftertouch | Single channel |
|---|---|---|
| Note On / Note Off | Every string's, with velocity | Every string's, with velocity |
| Poly Key Pressure | Each note's Energy, keyed to the note | - |
| Channel Pressure | - | The loudest string's Energy |
| CC74 | The brightest string's Timbre | The brightest string's Timbre |
| Pitch Bend | - | - |
CC74 is an absolute value and doesn't start at 0. A patch that treats CC74 as an additive timbre offset will sound permanently half-open. Map it as a position, which is what an MPE synth expects anyway.
Tilt and keyswitches
These go out on channel 1, and under Multi-channel on every channel a string is using:
| Message | When |
|---|---|
| Control Change, CC 1 by default | Tilt, when it's on: 0 with the pad flat, up to 127 at the Tilt engage angle |
| Note On / Note Off, or a Control Change | A keyswitch zone, once as the control moves into it |
Drums
| Drum | Note | GM instrument |
|---|---|---|
| Kick | 36 | Bass Drum 1 |
| Snare | 38 | Acoustic Snare |
| Hi-hat | 42 | Closed Hi-Hat |
| Open hi-hat | 46 | Open Hi-Hat |
The face buttons and the right stick both play the kick's note, the d-pad and the backbeat both play the snare's, and the hi-hat always uses either the closed or the open note.
Drums channels, on the MIDI tab of the Drums panel, sets how they're sent, with the same options as Chords except Poly aftertouch. MPE - the default - gives each drum its own channel behind a master, announces a three-member zone when the port opens (and whenever the setting returns to MPE), and sends how far you're pushing the control that plays it alongside the notes:
| Channel | Carries |
|---|---|
| 1 | Master channel (zone-wide messages) |
| 2 | Kick, with its slide and pressure |
| 3 | Snare, with its slide and pressure |
| 4 | Hi-hat and open hi-hat, with the hi-hat's pressure and slide |
| Control | Drum | Sends |
|---|---|---|
| Left stick | Hi-hat | Pressure |
| Left trigger | Hi-hat | Slide (CC74) - how open |
| Right stick | Kick | Slide and pressure, both |
| Right trigger | Snare | Slide and pressure, both |
Each value is how far the control is pushed or pulled, from 0 to 127, and is sent for as long as you hold it. Drums with one control send the same value as both slide and pressure.
Multi-channel is the same one-drum-per-channel layout without the master and with nothing announced: the kick on 1, the snare on 2, the hi-hats on 3, each with its slide and pressure. One track per channel, no MPE needed anywhere.
Single channel puts everything on channel 1, notes and velocity only.
On a Sony pad the touchpad is a crossfader on CC 16 unless you change it, channel 1 in every mode: 0 at the left edge to 127 at the right, absolute. Clicking the left, middle or right third sets it to 0, 64 or 127 until you lift your finger. See The crossfader.
Also on channel 1 in every mode, when they're on:
| Message | What it is |
|---|---|
| CC 20 · 21 · 22 · 23 | The Density, Rate, Velocity and Drive signals |
| CC 1 | Tilt: 0 with the pad flat, up to 127 at the Tilt engage angle |
All of these CC numbers, and the four notes, can be changed. See Drum notes and channels.
Following your DAW's clock
The MIDIpad in port accepts a standard MIDI clock. While one is arriving, Drums follows it, and the Tempo field in the header shows the clock's tempo, with a green dot to show it's following. See Tempo and time signature.
Panic
On quit, and whenever the output settings change, MIDIpad releases everything it has sounding and follows it with All Notes Off on every channel it touched. Instrument → All Notes Off (⌘.) does the same on demand, across both ports. It also sends sustain off (CC64 at 0) on all sixteen channels of the Chords port when the port opens and on every panic, so a held sustain in a clip can't hang the strings.
Multiplayer
Once upon a time, "multiplayer" meant "sitting down with your mates and playing a game together" rather than "collaborative business software where your colleagues can spy on you", so this is my attempt to fight back.
Demo vs licensed
Kind of like the CDs you used to get on the front of videogame magazines.