MIDI
Ultimately, the entire purpose of this application.
MIDIpad outputs on four virtual MIDI devices that're open the whole time the app is running:
- MIDIpad Chords - the strummed instrument, playing the strings or the Arp. MPE by default, or Single channel; the channel layout is below.
- MIDIpad Drums - the drums, with the notes of the drum library you pick, on one channel or one per drum - see Drums below.
- MIDIpad Bass - the bass that follows Chords - see Bass below.
- MIDIpad Progression - the chords you play as block chords on the beat - see Progression below.
It sends notes and expression only, with no audio, clock or transport. There's also one input, MIDIpad Sync, which takes a MIDI clock and its Start, Continue and Stop - see Following your DAW's clock. It also takes notes on channel 1, and three hollow dots above a wedge on the chord wheel mark the chord they make. It expects block chords, like the ones MIDIpad Progression sends, so anything else may mark the wrong chord. Notes on other channels are ignored.
Channels
Instrument → Output, or Channels in Settings → App Settings, picks one of two configurations for Chords, Drums, Bass and Progression at once: MPE, the default, or Single channel. Changing it releases everything that's sounding first.
Chords
| Mode | Channel | Carries |
|---|---|---|
| MPE | 1 | Master channel (zone-wide messages) |
| 2 - 16 | Each note on a channel of its own | |
| Single channel | 1 | Everything |
The Arp plays on the same channels as the strings.
There are two 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 note as an independent voice with its own expression.
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, fifteen member channels) followed by pitch-bend sensitivity (RPN 0): ±48 semitones on member channels, ±2 on the master. Single channel announces nothing.
If your synth connected after the port opened and it's misreading bends, set Instrument → Output to another mode and back to MPE, and MIDIpad sends the configuration again.
Per-note messages
Under MPE, each note'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 |
Under Single channel, channel 1 carries every string's Note On and Note Off with velocity, one Channel Pressure that follows the loudest string's Energy, and one CC74 that follows the brightest string's Timbre.
Velocity, pressure and CC74 are fitted into the Velocity range in the instrument controls and the Pressure and Slide ranges in Settings → App Settings. Out of the box, velocity runs from 1 to 127, pressure from 0 to 127, and CC74 from 64 to 127.
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 sustain pedal
These go out on channel 1:
| Message | When |
|---|---|
| CC11 (Expression) | Tilt Sideways, when it's on: 0 up to the Tilt engage angle, rising to 127 at the Tilt range angle. Under Bipolar, 64 with the pad level, rising to 127 one way and falling to 0 the other |
| CC1 (mod wheel) | Tilt Toward, when it's on, the same way |
| CC64 | The sustain pedal, when it's on: 127 down and 0 up |
Drums
The notes come from the Keymap. With the default, General MIDI:
| Drum | Note | GM instrument |
|---|---|---|
| Kick | 36 | Bass Drum 1 |
| Snare | 38 | Acoustic Snare |
| Closed hi-hat | 42 | Closed Hi-Hat |
| Pedal hi-hat | 44 | Pedal Hi-Hat |
| Open hi-hat | 46 | Open Hi-Hat |
| Left crash | 49 | Crash Cymbal 1 |
| Right crash | 57 | Crash Cymbal 2 |
| China | 52 | Chinese Cymbal |
| Ride | 51, bell 53, edge 59 | Ride Cymbal 1, Ride Bell, Ride Cymbal 2 |
| Toms, high to low | 48, 47, 43, 41 | Hi-Mid Tom, Low-Mid Tom, High Floor Tom, Low Floor Tom |
MPE - the default - gives each drum its own channel behind a master, and announces an eleven-member zone when the port opens (and whenever the setting returns to MPE):
| Channel | Carries |
|---|---|
| 1 | Master channel (zone-wide messages) |
| 2 | Kick |
| 3 | Snare |
| 4 | Hi-hat, closed and pedal |
| 5 | Open hi-hat |
| 6 | Left crash |
| 7 | Right crash and china |
| 8 | Ride |
| 9 | Rack tom 1 |
| 10 | Rack tom 2 |
| 11 | Floor tom 1 |
| 12 | Floor tom 2 |
Single channel puts everything on channel 1, notes and velocity only.
Drums doesn't use channel 10, so set a drum track to listen on all channels.
Drums sends notes and velocity in every mode. With its tilt CCs on, it also sends CC11 and CC1 on channel 1, the same way as Chords, except with the EZdrummer 3, Addictive Drums 2 and Steven Slate Drums 5 keymaps.
Bass
Under MPE, MIDIpad Bass announces an MPE lower zone when it opens, the same way as Chords, with one member channel.
| Channel | Carries |
|---|---|
| 1 | Master channel |
| 2 | The bass |
Under Single channel, everything is on channel 1.
Each note carries channel pressure and CC74 from the strings, like a Chords string, fitted by the Pressure and Slide ranges. The Bass sends the Chords tilt CCs on its master channel when its Tilt CCs setting is on.
Progression
While the Progression is on, MIDIpad Progression sends each chord's notes together on a beat, and they end together at the next chord change. Velocity follows the Chords Velocity range.
| Mode | Channel | Carries |
|---|---|---|
| MPE | 1 | Master channel |
| 2 - 16 | Each note on a channel of its own | |
| Single channel | 1 | Everything |
Under MPE, it announces an MPE lower zone with fifteen member channels, the same way as Chords, before the first chord it sends. Each note carries channel pressure and CC74 from the string playing that note, or the nearest string when none does, fitted by the Pressure and Slide ranges, and pitch bend is reset to centre before each Note On. Under Single channel, one channel pressure follows the loudest note and one CC74 the brightest.
It sends no sustain pedal. With its Tilt CCs setting on, it also sends the Chords tilt CCs on channel 1.
Following your DAW's clock
The MIDIpad Sync port accepts a standard MIDI clock, with Start, Continue, Stop and Song Position Pointer. While a clock is arriving and your DAW is playing, Chords, Arp, Bass and Drums follow its tempo and position, and the Tempo field shows the clock's tempo, with a green dot to show it's following. When your DAW stops, the ringing strings and the Arp stop too. 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, on every port. 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. The Drums port sends channel pressure 0 on all sixteen channels at the same times, so a drum instrument can't hold on to an old pressure value.
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.