File access / transfer
Midi file settings
Tempo & pitch
Instruments Mixer (tracks/channel)
Play Cursor Raster/Quantisation
Chords in karaoke mode 'Lyrics in measures'
Time -& Key signatures
Default directories (exported audio, midi files)
Export MIDI file with modifications
Black MIDI / Impossible Music
MIDI file resources and legal notice
Summary: You can access internal files (from this app's "Documents" folder), as well as external files from iCloud Drive or of another app's Documents folder.
There are several ways how to transfer files to app's "Documents" folder (or subfolders of it):
Midi Voyager allows you to import zip archives of midi files:
They will be extracted to an (app-internal) folder of your choice and the imported zip file will be deleted.
This allows you to import a large amount of midi files way faster as if you would download them uncompressed from iCloud or transfer them uncompressed using iTunes.
The app will not check which files are contained in the archive, so make sure only mid /kar files are contained!
Note: Any zip file that you select using the app-integrated file browser ("Internal" button) will be extracted as described above, so instead of using iCloud (the preferred way) to import midi file archieves you can also use iTunes to directly put a zip file to MIDI Voyager's Documents.
Midi files of type 0 (single track), type 1 (multitrack) and type 2 are supported, and several Roland GS and Yamaha XG NRPN events. If a midi file was created to be played using the XG standard, it should contain a SYSEX message "XG System on", then the app will handle certain XG specifics (e.g fallback on bank 128 for drumkits if no one is available on bank 127)
Midi files must have the file extension .mid or .kar (.zip files will be recognized and extracted, see previous chapter)
All changes that can be done to various parameters of a loaded midi file (pitch, tempo, instruments, volumes,...) will be saved automatically for a loaded
midi file and will always be applied when this MIDI file is loaded again!
Note that the MIDI file itself will never be modified, instead a separate (tiny) file is generated for each midi file (having the same name as the midi file but with file extension ".mfs"). This file will stored in the "_MidiFileSettings" folder (under "Documents" for this app in iTunes on your Mac/PC).
Backup/transfer midi file settings:
You could easily transfer all settings you made to midi files to another Midi Voyager installation on another device (which contains the same midi files) by copying the .mfs files into the "_MidiFileSettings" folder on the other device.
Note: The .mfs file are meant to be opened by Midi Voyager only, you should not try to open or modify them manually!
This app uses 'soundfonts' (sf2 format) which provide the sounds for MIDI playback. Recommended are soundfonts with a GM (General MIDI) Sound Set. The included soundfont "8Rock11e" has a size of only 3 MB (compressed). Respecting its size the quality is quite acceptable.
You can use your own soundfonts (sf2) instead of the one included in the app. Add one or more (or a folder of soundfonts) to "Documents" folder via iTunes on select an external soundfont from iCloud Drive or another app's Documents folder).
The 'Soundfont SF2...' button in the soundfont settings screen allows you select a soundfont from the Documents folder.
You can always return to the default soundfont (8Rock11e): Select it from the list that shows up when you press 'Select soundfont SF2...' button (It is *not* stored in Documents!). If a custom soundfont fails to load it will be used automatically.
There are many free soundfonts available on the internet - just search for 'soundfont collection'!
One popular free soundfont is "Chorium (Revision A)" (27 MB) by openwrld)
If you want to create your own soundfonts or edit existing ones, you could use a 3rd party software like "Viena Soundfont Editor" (Windows).
This app can also load soundfonts compressed with 'WavPack' , 'flac' and 'Opus' !
If you add your own soundfont, ensure that its file extension is either 'sf2' or 'sf2pack', otherwise it won't be accpected by the app!
If a soundfont contains multiple drumkit presets (on bank 128) then you can choose the drumkit preset to be used for every MIDI file:
Press the "pencil" button and select "Select the default drumkit". This way you don't have to select the desired preset in the instruments mixer screen (via the [P] button), which would need to be done for every MIDI file. However you can still override the "default drumkit" setting for an individual MIDI file by selecting another than the default drumkit in the instruments mixer screen!
This app supports audio playback via bluetooth LE.
The default behaviour is that the app will automatically try to connect to compatible bluetooth speakers.
You can deactivate connecting to bluetooth devices via settings -> playback -> "Playback via device speaker only"
There are 3 playback modes available. They can be choosen in the settings screen, category "playback":
This app is registered for background processing, ie. it won't be terminated if you press the home button.
The sliders in the mixer screen can control both volume and pan: The mode can be toggled by a tap on 'Volume' resp. 'Pan' at the screen bottom
The final volume of each note in a midi file is controlled by multiple parameters:
You can choose for each file whether to use "static" volumes or "dynamic" volumes for volume control (in the instruments mixer screen).
The control mode "dynamic" will maintain the relative changes in volume levels (as instructed by the midi file, e.g. for "fade in/out" purposes), ie. each volume-change will be realized with 1-100% of its original value.
In the "static" mode however, all MIDI volume controller changes will be overridden with the volume level set by the volume slider in the instruments mixer screen (absolute values: 0-127).
"Static" volume mode will generally result in louder volumes or will at least make louder volumes possible.
The "dynamic" mode can't make volumes louder than the original volume level (first one in the file), as you can set it to 100% only, ie. a volume change with value "20" will never 'sound' louder than "20" (=100%). You would need to reduce the volumes of the other instruments to make it relatively louder.
You can use the "static" volume mode to make "muted" tracks audible: Karaoke files sometimes contain a muted track (the voice melody track, often on channel 4, with "Volume 0" commands), which is not audible in most midi players. To make it audible, manually adjust the volume slider (in 'CHANNEL Vol.' mode!) of the affected track.
As in most MIDI files the volume change events occur only at the start of the file, there will be not much difference between the dynamic and static volume mode.
In Midi Voyager there is an additional volume control "layer" that applies for tracks instead of channels. It is available for multi track files ("Type 1") only!
It has nothing to with MIDI, ie. it is not controlled by MIDI volume commands, but by the mixer of the internal synthesizer:
This has one advantage over channel volume control: It allows to control the volumes of instruments/tracks independently although they "share" the same midi channel, which is
not possible with channel volume control, and not with most midi players.
This also means that you can for example "mute" one track while leaving another track (which uses the same midi channel) un-muted.
Note that the final volume level outcome is from the channel volume level combined with the track volume level.
In "TRACKS Vol." mode as well as in "dynamic" "Channel Vol." mode the volume sliders will initially be set to maximum (100%), which simply means all file volumes will not be changed at all.
To indicate that the volume of a track/channel has been changed manually (especially in *static* channel vol. mode ) the volume sliders will show a gray margin if they have *not* been modified. If you reset all volumes via the 3 dots menu then the sliders will show gray margins again.
The pitch and the tempo (percental speed or static bpm) of the whole midi file can be changed. This only affects playback. The midi file itself will not be modified. Per default, all changes to pitch and tempo will be saved automatically for each midi file. You can deactivate this behaviour in the settings - "Misc" section under "Auto save manual changes to pitch..."
These colors are not chosen arbitrary or at random: The color spectrum follows the circle of fifths: C - G - D - A - E... This helps to identify notes, chords and tonal areas at a glance!
The instruments mixer screen can be launched from the main screen, either the directly via the button next to the
play control buttons (on devices with large screens) or from the 3-dots menu.
You can control the
Channel vs Track:
Midi files of "Type 0" contain only one track, which can contain midi events for all 16 channels. For files of Type 0 "virtual" tracks are created in this app, one for each channel found in the set of all midi events (max. 16 "tracks").
Midi files of "Type 1" can contain much more than 16 tracks (1024 in this app). Normally all events in a
track have the same midi channel.
If there are events with multiple different channels in one track, these channels numbers are displayed under each
other with an orange colored background
(only the first 3 different channels are displayed due to the limited space available in one track row).
Generally program changes can only be applied per channel, not per track. However if you select an instrument for a track that contains note events with multiple midi channels, then this instrument will be used for all note events in this track. This can have the side effect that this instrument will also be used for notes of other tracks if they use the same channel(s) as from this track.
Note: If a track contains a program change for channel X, but none of the note events in this track belong to channel X, then you might get unexpected results: Ie. the displayed instrument of a track (which has its origin from the first program change event found in this track) would not apply for any note event in this track. This might be considered as an error that the creator of the midi file made. However you partially correct this error by choosing another program than the original one: Then program changes with the correct channel(s) will be sent.
Playlist are accessible via the "Playlists" button in the "open file" screen (on devices with large screen also via the "3 dots" menu), which opens the "Playlists" screen.
Note: Maybe you prefer to enqueue files rather than creating playlists: In that case see "Enqueue files" above
Playlists can be created in two ways:
First select a playlist and press the pencil button on the bottom of the screen (alternatively press long on a playlist). Then you have the following options:
The playlists are stored in the app subfolder "Playlists" and can be copied between devices (Of course the referenced files must exist at exact the same location on both devices/file systems)
To add the current MIDI file to a playlist, use the "3 dots" menu and choose the "+/- title" entry. If the title is
already contained in the selected playlist,
it will be removed.
In order to get accurate loop /marker starts and endings, ie. starting exactly at the beginning of a midi note event,
a play pos raster can be activated. The default raster value is 1/8.
So if you set the play cursor manually by a short finger tap on the screen, the possible cursor positions are all
multiples of 1/8.
The raster/quantisation value can be selected from a menu that opens when you press long on the screen (but not inside a looping area)
A value in milliseconds you can specify to compensate the mismatch of the displayed play cursor position and music
notes being heard. For most devices a value between 30 ms and 60 will be fine.
However, some devices require a negative value, some a positive - just try it out which one works best for you.
TIP: Start with bigger numbers e.g. -150 or + 150 ms to see whether your "optimal" value is poitive or negative, then you can "fine tune"
The effective symbols/characters that will be drawn to the karaoke screen depend on two settings:
If a multi-track kar/midi file contains lyrics on multiple tracks, you can choose the track of which the lyrics should be displayed: A button next to the other lyric buttons (only visible if there are lyrics on multiple tracks!) shows the number of the of track (eg. '#2') of which the lyrics are currently displayed. By default the lyrics of all tracks are shown.
If you choose the karaoke mode 'Lyrics in measures', the chords of the midi file will be analyzed and displayed below the lyrics. The result of the analysis is most likely not optimal, e.g:
Note: This app supports looping the whole file as well as creating various loops for smaller ranges in the file, eg. with a length of 1/2 bar. This section is about those 'smaller' loops. If you simply want to repeat/loop the whole file, don't try to create a loop for it! Instead, activate the "Replay/loop current file" mode, e.g. by pressing long on the loop button, or by ticking the check box in the looping panel (see chapter above Play controls: "Loop button")
For each midi file you can create markers (displayed as red flags) to set the play cursor to a specific position by pressing on a marker button.
If you position the playback cursor then those notes will be analysed that are 'touched'/highlighted by it (if piano
is shown: the notes that are shown on it).
The result is shown on the left bottom of the notes canvas/score.
You have to activate this option in the settings screen, category "Chord Analysis".
You can analyse all chords/tonal areas in the whole file:
Menu "Extras" → "Analyse chords"
Analysis is performed in two steps:
•Step 1: Chord extraction: While it is quite easy to create chords from notes that are vertically
stacked, ie. notes are starting at approx. the same tick position, it
is not that trivial when searching for chords played arpeggio (maybe "tonal area" or "harmonic range" is a better
term), if the notes of a C7 "chord" are spread over a range of one, two or 4 quarters:
When does the one chord end, when starts the next one ? E.g. take the notes from which you can create the chord A6:
could also be used to create two chords: C and Am...
Which tracks will be used resp. ignored for analysis?
•Step 2: Chord analysis of the chords/tonal areas:
For each chord that is analysed the current key signature is taken into account, as the enharmonic spelling (Eg. Gb
vs F#) depends on it.
Furthermore the setting in the piano settings screen 'Note naming culture' will be used!
These signatures will be displayed if activated in settings screen under "Visualisation"
Many MIDI files don't provide a time signature. In this case it is assumed to be "4/4", but the background color will be red instead of turquoise to indicate that it does not actually exist in the MIDI file.
Many MIDI files either don't provide a key signature (then none will be displayed) or the wrong key signature, most likely "C Major", because the author/creator of the MIDI file used a program that inserted 'C Major' by default and the author forgot to change it or the author didn't care about the correct key...
You can correct the key signature via the "Extras" menu. This is especially relevant for chord analysis, as the root note names of the chords may depend on the key signature. Eg. If the actual key signature is F# Minor but the one contained in the MIDI file is "C Major" then a chord might be shown as Gb Minor, although (harmonically) "F# Minor" would be the correct one!
You can save a loaded MIDI file as a new MIDI file that will contain the modifications made to pitch, tempo,
volumes, instruments, key signatures. Also (for multi track midi files only!) you can change the channel of a
Normally a midi file is loaded into memory completely (1), then all note visuals are created (2), then it is ready
for playback (3).
However for large midi files (having from 100.000 up to several millions of notes) this would result in a waiting
time of one minute and more until playback can start, mainly because of step (2).
So this app provides a special visualisation algorithm which enables an early playback, only a few seconds after
step (1) is finished. This visualisation mode will be applied
if the midi file exceeds a certain size, e.g. 1 MB. This "critical" size can be configured
via the settings screen → visualisation → "Streaming mode" button.
You can activate MIDI OUT in this app, so that all midi channel events of a playing midi file will be sent via
the usb port of your mobile
device to a connected sound module/hardware synthesizer, or to a MIDI interface box connected via usb with your
Meta events will not be sent!
Activating MIDI OUT:
1. Open the "playback" settings → "Playback using" → select "MIDI OUT"
2. Then select the target device / midi endpoint to connect with: If you don't have connected an external device with your phone/tablet then at least the entry "Network Session" should appear. Using "Network Session" to transfer midi data via a local network/WLAN to a device on which a receiver program is running. Note that transfering midi data via network usually has a bad timing.
By default program changes and control changes will not be send, but there are options to activate this in the 'Midi out' settings
Currently there are some limitations for the MIDI OUT playback mode:
On some devices you will hear no sound through your device speakers while an USB MIDI/AUDIO interface is connected! (but sound should always work through headphones) So you might need to unplug the USB cable to re-activate internal audio playback, simply deactivating the MIDI OUT playback mode via the "MIDI 5 PIN" button in the main screen will not be sufficient in that case!
MIDI OUT requires additional CPU resources, so depending on your device's CPU, MIDI output might become unstable with one of the 'live visualisation' view modes! It is also generally recommended to hide the piano keys to reduce cpu time for keys animations! You should switch to the static "file list" view mode during MIDI out playback in order to avoid any CPU time being used for live visualisation/animations.
Select your connected midi device in the "Playback" settings screen ("MIDI In Device"). When a device is connected, the Mixer screen shows an additional toolbar on the bottom where you can select a preset etc.
You can connect an MIDI controller/keyboard via USB for two purposes:
The selected "Live instrument" mode will be saved for each midi file! If the 'custom preset' mode is used and another soundfont is loaded which contains less presets than the number/index of the stored preset, preset no. 0 will be used.
If you just want to remote control the midi file, make sure the "Target" in the tracks screen is set to "File" in order to apply Continuous Control Changes like Volume Control to the midi file channels .
If you want to control all tracks/channels, make sure that you chose "AUTO" (see 1.) as "Live instrument", otherwise all events will be applied to only one (fixed) channel. It will be automatically chosen when you select "File" as "CC target", however you can change it manually afterwards.
For both purposes, apart from note on/off events the following events will be recognized and applied to either the LIVE "stream" or the midi FILE "stream" (depending on the "CC target" mode (Control Changes) in the mixer screen):
Most midi (master/controller) keyboards have an USB jack, so for MIDI Input you just need an 'Lightning to USB' adapter to connect to your iPhone/iPad.
For MIDI Output you'll need an Apple Lightning cable connected to a 'Lightning to USB' adapter.
You'll most likely need an additional cable/interface (search for "usb midi interface" products, these have an USB input and two MIDI 5 PIN connections (IN + OUT)). So the connection chain for MIDI OUT could look like this:
mobile device → Lightning cable → 'Lightning to USB' adapter → usb midi interface (cable) → hardware synthesizer
Or like this:
mobile device → Lightning cable → 'Lightning to USB' adapter → usb midi interface (cable) → MIDI I/O box → desktop PC/MAC---> software synthesizer
The app ships with only a few copyright free MIDI files (the composer's death was more than 70 years ago).
If you want to play MIDI files in a public event and there is still a copyright on the original composition, you may need the right for public performance of a musical work first.