MIDIKeys is a MIDI piano keyboard control surface for the iPhone and iPod Touch.
MIDIKeys doesn't produce any sound on its own, it is for playing hardware or software VST-style MIDI synthesizers via MIDI hardware interfaces connected to the iPhone dock connector or virtual MIDI instruments like IK Multimedia SampleTank® for iOS or ThumbJam running in the background on your iPhone.
The entire range may be transposed up or down up to one octave in semitone increments using the "Transpose (semitones)" slider on the settings page or shifted a full octave (up to the two octave limit) by touching the 8va -/+ buttons on the main screen.
Both fixed or variable note MIDI Note On event velocity based on touch position within the key are available as options on the settings page.
While playing, you may also optionally send real-time volume, expression, modulation, or wind controller MIDI messages by tilting the iPhone to the right or left.
Touch anywhere on the background image at the top of the screen to cycle through the available skins. Settings are saved for the next time the app is run.
(Touch the MIDI connector icon at the top center of the main screen)
Set the transmit channel using the MIDI Channel slider. Any channel from 1-16 may be selected. Channel 1 is the default.
Choose between "Omni" sending MIDI data to all CoreMIDI apps or "Virtual Port" sending to a named CoreMIDI virtual output port. When the "Virtual Port option is selected, MIDIKeys will show up as an input option labeled "MIDIKeys" in apps that support virtual ports like Sonosaurus ThumbJam and MIDIBridge. "Omni" mode is selected by default.
If you want to transpose the pitches being sent out, you may set a transpose value up to +/- one octave in semitone increments on the Transpose (semitones) slider. No transpose is the default.
Note-on events may be sent with either a fixed or variable velocity based on where you touch on the key. Set the maximum velocity using the Velocity slider. Any value from 0-127 may be selected. Default value is 100.
Select between fixed or variable velocity mapped to the touch position using the selector. When the velocity is mapped to touch, the minimum velocity is approximately 20% of the value set on the Velocity slider and the max is 100% of the value. Touching lower or higher on the key (area below the black keys only for the white keys) results in lower or higher velocity values sent in the MIDI Note On event for the key.
MIDIKeys can send Volume, Expression, Modulation, or Breath Control message by tilting the device to the right or left.
Select a controller on the Tilt Controller selector. Default is no controller messages.
When a controller is enabled, tilting the device to the right or left will send the selected controller messages to the external device. Values increase as the device is tilted farther to the right.
You may set the tilt sensitivity using the Tilt Sensitivity slider. The range is from 1 to 4, with higher values being more sensitive. Default value is 1.5.
If you ever have "stuck" notes, you may touch the "Shhh" icon on the main screen to send a MIDI "All Notes Off" message and stop the sounds.
All settings are saved when exiting MIDIKeys and restored the next time it is run.
Q: I have an iPad and the sound stops when I put four fingers on the screen.
A: Since you may want to play chords with more than 3 or 4 fingers, you'll need to turn off "Multitasking Gestures" in your iPad's Settings, under General/Multitasking Gestures.
Q: I'm running a CoreMIDI-compliant virtual synth app on my device, but I don't hear any sound when using your MIDI control surfaces.
A: Please check that "Background Audio" is enabled on the virtual synth app you are running.
Also check that the virtual synth app has an active patch on the same MIDI channel(s) you are sending from the control surface app.
Here's the settings changes you need to make for SampleTank, enable "Background Audio"
Here's a simple single instrument SampleTank patch for a flute sound
(full version of SampleTank plus Woodwind expansion pack), on MIDI channel 1
Here's the settings changes you need to make for ThumbJam:
In the Prefs/Options panel, enable "Background Audio"
Starting with ThumbJam version 2.2, CoreMIDI is enabled by default
This video shows how to change the MIDI and audio settings in SampleTank and ThumbJam
(iPad version, iPhone is similar)
Reflects version 2.1 of ThumbJam, please follow instructions above for changes for version 2.2
Battery Saving Tips
Synthesizer apps running in the background often continue to consume power even after you are done playing.
Be sure to "Force Quit" the synthesizer app when you are done playing to ensure that you don't run down your battery.
Follow these steps to force an app to close:
On my iPad, I create user patches from the built-in patches that have the realtime tilt controls all disabled.
In ThumbJam into the Edit/Controls for the patch, set the Volume selector to "Fixed" and the Pan, Vibrato, Tremolo, and Pitch Bend to "None"
Then save the setup as a new user patch.
If the sound level is too low through the speaker on your device, go into the Sound/(Volume/iPod) page and turn the "App Vol Boost" up to where the sound is louder but doesn't distort.
Q: Which other MIDI synthesizer apps can be played using your control surface apps?
A: The iOS Musician website is maintaining a comprehensive list of apps that support virtual MIDI ports.
Q: What are the MIDI note number ranges?
A: The lowest note on the keyboard is referenced to Middle C, which is MIDI note 60. This value may be tranposed up or down two octaves in one semitone increments using the Transpose (semitones) slider on the settings page.
Q: What are the available MIDI realtime CC controller numbers?
A: Volume (7), Expression (11), Modulation (1), and Breath Controller (2). Only one realtime controller may be enabled at a time.
I am very interested in any suggestions for features or improvements to MIDIKeys for future updates, please drop me an email anytime with your ideas!