Midi Voyager - Help (refers to app version 1.2.2)

contact: midivoyager@gmail.com

Midi Voyager - Help


File access / transfer

Sound-synthesis: Soundfonts

Bluetooth (Audio)

Midi file settings

Playback modes

Volume/Pan Control

Tempo & pitch

Color scheme

Playback controls

Instruments Mixer (tracks/channel)


Play Cursor Raster/Quantisation

Karaoke: Charsets

Chords in karaoke mode 'Lyrics in measures'



Chord analysis

Time -& Key signatures

Default directories (exported audio, midi files)

Export MIDI file with modifications

Black MIDI / Impossible Music

Midi Out

Midi In

MIDI file resources and legal notice

File access / transfertop

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 file archives import (zip)

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.

Supported Midi File Typestop

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)

Midi file settingstop

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!

Sound synthesis: Soundfontstop

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.

Own soundfonts

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!

Default drum kit

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!

Bluetooth (audio)top

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"

Playback modestop

There are 3 playback modes available. They can be choosen in the settings screen, category "playback":

Playing midi files in the background

This app is registered for background processing, ie. it won't be terminated if you press the home button.

Volume/ Pan controltop

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

Volume control:

The final volume of each note in a midi file is controlled by multiple parameters:

CHANNEL volumes

Dynamic volume control vs. static volume control:

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.

TRACK volumes

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.

DEFAULT volumes modes

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.

Tempo & pitchtop

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..."

Color scheme (note pitch)top

F# C#
G# D#
A# F

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!

Play controlstop

Play button

Rewind button

Forward button

Loop button

Open file button

Tempo/BPM + Transpose/Pitch button

All changes you made to pitch and tempo will be saved automatically for a loaded midi file (not in the MIDI file itself, it will never be modified) and will always be applied when this MIDI file is loaded again!

Instruments Mixer (tracks/channels)top

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

Depending on the type of MIDI file, all rows in the mixer either represent channels OR tracks. In case of Multi-track files (Type 1) that contain only one track with mixed channels the mixer offers channel control, otherwise for multi-track files it shows the actual tracks. Also, for multi-track files with more than one track, you will see an additional "Chan Vol / Tracks Vol." button at the bottom of the screen.

Channel vs Track:


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:

Edit a playlist

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)

Add the current loaded file to a playlist

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.


Play Cursor Raster/Quantisationtop

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)

Play Cursor Delay

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"

Karaoke: Charsetstop


The effective symbols/characters that will be drawn to the karaoke screen depend on two settings:

Multiple lyric lines

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.

Chords in karaoke mode 'Lyrics in measures'top

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:

But fortunately you have the possibility to edit the chord analysis result:
You can clear out unwanted chords, add new ones or change the names.
Those modifications will be saved for the midi file!

You can edit the chords in the "Edit song chords" screen:
Press the chord ("C7") button in the toolbar in the main screen (visible when in karaoke mode "lyrics in measures") and choose "edit chords" from the menu.
Note:The first time you choose to edit the chords, a snapshot of the chord analysis result will be taken which then can be edited. So the next time you load this file, your custom chords will be used instead of the analyzed chords, even though some notes in the file might have changed (Actually the chords will be analyzed each time the file is loaded, but the result will not be used unless you choose to "Restore original chords" (see next paragraph))
Note:You can undo all your modifications to the chords by choosing "Restore original chords" from the "3 dots" menu in the "Edit song chords" screen.
Note: If you set the same name for consecutive slots chord-slots (ie. there is no other chord in between), only the first chord will be visible when in the lyrics screen. So you should not do this because it has no effect. Tip: to quickly remove unwanted chords, first activate the multi-selection mode, then select the chords and press the "bin" button (If you just want to clear one chord, you don't need the multi-selection mode.)


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.

Chord analysistop

•Single chord/local analysis

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".

•Global 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: they could also be used to create two chords: C and Am...

For better analysis results of arpeggio chords it is important that the time signature is correct!
There are two methods that can be used for chord extraction (selectable in the settings screen).
   Method 1 generally delivers better results for simple structured, beat orientated music (pop/rock), with vertically stacked notes. This method will always be used when in Karaoke/lyrics mode 'Arranged in measures'
   Method 2 may be better if the notes of a chord are spread over a whole bar (arpeggio chords); might be better for classical works

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!

Time -& Key signaturestop

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!

Export MIDI file with modificationstop

You can save a loaded MIDI file as a new MIDI file that will contain the modifications made to pitch, tempo, channel volumes, instruments, key signatures. Also (for multi track midi files only!) you can change the channel of a track.


Black Midi / Impossible Musictop

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.



MIDI Output top

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 desktop computer/notebook.
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:

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):

CC target (setting in the mixer screen, CC = Control Changes)

Notes triggered from a mid keyboard will be played regardless of the "CC target" mode selected in the mixer screen. This mode only determines what should happen with incoming Control change (CC) and pitch bend events: should they be applied to the midi file channel or to the separate (virtual) "live" channel? Maybe you want to "pitch bend" or "sustain" the notes played be the midi file rather than notes triggered by yourself.

Device Connection

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

MIDI file resources and legal noticetop

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.