(online version of this document)
Instruments Mixer (tracks/channel)
Play Cursor Raster/Quantisation
Chords in karaoke mode 'Lyrics in measures'
Creating and editing perspectives
Default directories (exported audio, midi files)
Export MIDI file with modifications
MIDI file resources and legal notice
Midi files of type 0 (single track), type 1 (multi track) 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)
You can play midi files from the device's storage (internal storage or sd card) or from a Cloud Storage.
Either you copy whole folders of midi files from you computer onto the device, preferably into a folder in
the root directory (e.g. "Midis", or "Music") or you download single midi file from web sites.
If you copy files from your computer to the mobile device, you might need to unplug the usb cable first before those
files are visible and selectable in the app's midi file browser!
Sometimes even after unplugging the usb cable it may take a while until the Android OS has recognized the new files.
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 "Midi_Voyager" folder (in the device's root directory).
Note: The .mfs file are meant to be opened by Midi Voyager only, you should not try to open or modify them manually!
You could easily transfer the midi file settings (.mfs) you made to *all* midi files to another Midi Voyager installation on another device (which contains the same midi files) by copying the .mfs files into the "Midi_Voyager" folder on the other device.
"Auto import of .mfs files":
This option (can be activated in settings screen → Misc) allows a more convenient way of transferring midi file settings (tempo, volumes,...) between devices:
If this option is activated, the app will look for an applicable '.mfs' file in the 'Downloads' folder and move it into the "Midi_Voyager" folder (in the device's root directory), where normally all .mfs files are created by the app.
So the procedure of sharing a .mfs file within the app could proceed as follows:
This app uses 'soundfonts' (sf2 or sfz format) which provide the sounds for MIDI playback. Recommended are
sf2 soundfonts with a GM (General MIDI) Sound Set. The included sf2 soundfont "8Rock11e" has a size of only 3 MB
(compressed), therefore its quality is not too good.
Anyway you will probably want to load your own soundfonts. See below for some example soundfont sites. One popular free
soundfont is "Chorium (Revision A)" (27 MB) by openwrld.
The default soundfont (3 MB) will always exist in the folder 'Soundfonts' in the internal storage as 'fallback' soundfont.
You can add other soundfonts to this folder or load one from any other folder (If your device supports external
sd cards, you should put new soundfonts there).
The 'SF2...' button in the settings screen allows you to browse and select a soundfont.
+ Sf2: Option to load a soundfont*** _completely_ into memory (RAM) (= all samples of all presets!): *** Sfz soundfonts are always loaded completely (see release notes of previous version) ___________________________________________________________
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!
The PRO version of Midi Voyager allows an advanced soundfont configuration:
Soundfont priority:If a preset (number) exists in multiple soundfonts, the sound of the preset of the earlier soundfont in the list will be used. For example, if you load two soundfonts which both contain sounds for all 128 preset slots, and you do not specify any bank/preset filters, then only the sounds of the first soundfont in the list would be used. Or, if the first soundfont contains only one sound for "grand piano" (slot #0), then always the sound of this soundfont will be used when a program change for program 0 occurs.
Typical scenarios:
Note: In the instruments mixer screen, when you click on the "P" button (presets), you
will see the
list with the presets that will actually be used (the "combined/merged" presets list, as configured by you,
reflecting the order of the soundfonts, deactivated presets, and reassigned preset/program numbers)
Normally you should'nt have to care about the audio buffer settings that can be changed in "playback" settings
screen.
However there are two reasons why you might want to change it:
There are 4 playback modes available. Three of them can be adjusted in the settings screen, category "playback":
If you want the app playing midi files for a longer time, but without viewing the notes, eg. having another app in
foreground,
it is highly recommended that you first exit the app (using the back button) and then choose 'Exit - Keep
playing'.
If you would just press the 'home screen' button to hide the app (without exiting it) then it is most likely
that it will be killed sooner or later
by the Android Operating System to get more memory for other apps (which are in foreground)!
When you choose 'Exit - Keep playing' then the Midi Voyager icon appears in the notification bar.
From Android 4.0 and higher you can use some playback controls (pause, next, exit) additionally to the
notification icon.
These can be accessed by pulling down the notification bar to the screen bottom.
This playback mode is invoked by pressing long on a folder in the midi files browser screen (instead of
selecting a single midi file via short finger tap)
It will first play all files in the selected folder (if there are any) and then all files in all sub folders.
So it would be possible to simply play all midi files that exist on the sd card*** by selecting the root folder of
the storage medium/the sd card.
However it may take quite long*** to find the midi files, because every folder and sub folder would get searched
through! So you should better select a folder from which you know it contains only MIDI files or sub folders with
MIDI files only.
If you press long on a file in the midi file browser, a menu will open showing the option "Enqueue file". If you
choose this, the selected file will not be
played back immediately, but rather added to the end of a list of already enqueued files
(one could call it a "temporary playlist"). When the current playing file is finished (or you press the "forward"
button) the first file in the
list will be played back and removed from the list.
If no file is playing at the time you enqueue a new file, and you press the
play button, then the current loaded file will start playing, and not the first file you enqueued.
Therefore, if you want to start with the first enqueued file, select it by pressing long on the "forward" button
(see next tip:)
By pressing long on the "forward" button a list of the remaining enqueued
files will show up. If you then select
a file e.g. at the third position in the list, all files *before* the selected file will be removed!
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..."
C | G |
D | A |
E | B |
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!
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 volumes, pan, program for each track/channel as well as solo and mute tracks/channels.
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:
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.
Note:
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:
Note: Even though the font you have loaded might contain the symbols you would expect to
see, it depends on the selected charset/encoding which symbols are actually used.
If you don't know the actual encoding of the text in the midi file (perhaps a rare one), then - especially for
certain languages (Khmer,...) - it is pure coincidence whether the intended symbols are chosen from the font.
Note: If you select a custom font, it will be used for the 'classic' karaoke mode only,
but not for the 'lyrics in measures' mode
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. There are also special functional markers, such as "jump" markers and "program change" markers.
Create 'Jump' markers:
While with normal markers you have to manually press a marker button to jump to a position, 'Jump' markers
allow to automatically jump to various positions during playback.
To actually create a 'Jump' marker first create a normal marker, and then convert it into a jumper
(press long on marker button and select 'Convert into...').
Each Jump marker as has a selectable target marker to which the playback position will jump to when
the position of the jumper is reached during playback.
Note: the jumper playback mode has to be activated, otherwise the jump "commands" have no effect: To activate the mode, toggle the button with the white triangle and the turquoise arrow in the markers toolbar. You can activate this mode before playback has started or during playback as well!
You can setup complex loops (cyclic), e.g.:
mark1..........mark2..........jumper1(to mark3)............mark3...........jumper2(to
mark2)..........
When the playback reaches jumper1, the playback position jumps to mark3, then it plays until jumper2, jumps
to mark2, then when jumper1 is reached, it jumps again to mark3 and so on.
Tip: You can also use jump markers for practising only specific parts of a midi file, one part after
the other while skipping the ranges in between:
(start of song)............[....A....].......................[....C....]...........(end of
song)
To practise only the parts A, and C of a song and skip the range in between, you would first create 4
normal markers (m1 - m4):
(start of song).....m1[....A....]m2...........m3[....C....]m4..........(end
of song)
Then you need to convert the markers m2 and m4 to Jump markers: for m2 select m3 as target marker and for
m4 select m1 as target marker.
Create 'Program change' markers:
This allows to insert/trigger a program change at a specific position. The change consists of the bank/program (instrument/preset) and the midi channel (1-16))
To actually create a 'program change' marker first create a normal marker, and then set a program change
on it:
Press long on a marker button and select 'Set program change...'.
This opens a new screen where you can select:
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/local 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...
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!
By default, this app includes over 40 Chord types. However you can add your own chord
types or change the existing types, ie. rename a type or redefine its construction:
Open the settings screen, → "Chord Analysis" →
"Manage chord types" → Press the '+' button at the screen bottom → Enter a name.
In the new screen, specify the intervals. When finished, press the "Apply" button.
Open the settings screen, → "Chord Analysis" → "Manage chord types" → Press the 'thrash can' button at the screen bottom
Open the settings screen, → "Chord Analysis" → "Manage chord types" → Choose the chord type → Press the 'pencil' button at the screen bottom.
Here you can change the name or its construction in intervals:
Intervals are not specified in semitones here, rather they refer to the step/number in a diatonic scale,
resp. to the number often used in chords symbols eg. C7. You may refer to this article: wikipedia: Interval_music
I.e.: The "7" does not mean 7 semitones, but rather the "minor seventh", which represents 10 semitones, eg. the "7"
in "C m7" are the pitches (in semitones): 0,3,7,10.
Furthermore you can lower an interval by a flat (b) or increase it by a sharp (#). You can set this via the
pencil button right of each interval number.
When finished, press the "Apply" button.
Optional interval: To identify the type of a given chord not all its notes are always necessary: Often the "5" ("perfect fifth") is left out in a chord. Optional intervals are indicated by brackets, eg. [5]. You can set this via the pencil button on the right of each interval number.
Multiple definitions of the same type: Because there is the option to specify which intervals can be optional there is sometimes the need for specifying the same chord type more than once: In some chord types either the one or the other interval may be optional, but not both at the same time, because then it would be too few notes left.
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!
The PRO app version allows to create new perspectives as well as edit the existing predefined note perspectives.
Open the main menu (3 dots menu) → "Extras" → "Create notes perspective".
Note: this edit mode is only available in when the device is in portrait mode!
Choose the perspective you want to modify. You can use the "eye" button to switch between the different perspectives.
The name of the current perspective and its X Y Z values are always displayed on the bottom of the note canvas.
Use the X Y Z sliders to modify the view for your needs.
For some rotation values there may be drawing artefacts (strange beams), especially
for negative Y rotation values.
Tap on the "pencil" button on the right → "create copy". This adds a copy of the current perspective.
Tap on the "pencil" button on the right → "delete".
Note: you cannot delete the first perspective, but you can modify it.
Various default folder locations can be set in the settings screen, section "Misc". For audio and midi export,
these are initially set not to a static directory, but to use the same directory as the directory of the source midi
file.
Tip: when you press long on the yellow "Last" folder in the midi file open screen, the
"Default Midi" directory will be opened instead of the directory of the current midi file.
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.
Furthermore:
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.
Communication with external hardware is sometimes a bit awkward, so it could happen (in
rare cases) that the app 'freezes' and you would need to reboot your device.
So be prepared and warned that if you use this feature, you should at least ensure that you have saved any
work you might have opened in another app.
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 in the mixer screen):
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 PC/notebook.
Meta events will not be sent!
Activating MIDI OUT: First, the "Enable USB Midi" box and the "Show MIDI OUT activation button" box need to be ticked (in the settings screen, section "USB"). Second, in the main screen you need to activate the actual MIDI OUT playback mode by pressing the button with the "MIDI 5 PIN" icon (just before the play button). Pressing it again returns to normal playback mode (see notes below!).
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, especially with the "perspective" ones ! It is also generally
recommended to hide the piano keys to reduce cpu time for key animations!
You might lower the "visualisation refresh rate" in the "USB" settings screen. Or if that still does not help,
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.
Anyway you should test whether your hardware spec (CPU power) is sufficient before purchasing the PRO version
(if the "MIDI OUT" feature would be the main reason for a purchase):
*** As MIDI OUT is a PRO feature, you should check in the free app version whether it works correctly with your hardware: When you activate Midi Out playback in the free app version, the note pitches (except drum notes) will be modified just before they are sent. All other channel events remain unchanged!
For both MIDI Input and MIDI Output you'll need an USB A port / microUSB port with 'USB OTG' cable.
For MIDI OUT 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---> USB OTG cable---->usb midi interface---->hardware synthesizer
My USB MIDI device connection worked fine for a while with the app, but now the app
doesn't recognize the MIDI device any more!
This might be the case if the USB device has not been detached/released properly (which normally should not
happen).
Solution: =>Reboot your phone/tablet
My USB MIDI device can't be detected !
(1.) With some mobile devices it simply won't work;-(. Yes, some midi devices can be detected by a mobile device 'A' but not by mobile device 'B'. Maybe a matter of luck.
(2.) » Assuming (1.) is not the case: This app uses a device filter that will either detect an USB MIDI device
by its reported subclass (this will
work for most USB
MIDI devices) or by specific vendor ids (Roland, Korg,...).
If your device can't be detected you could try to examine it by using the app USB Device Info (on Google
Play)
The goal is to determine your vendor's device id and add it to this app's usb device filter, if it meets
the conditions in Step 2 and 3
Seek all "Endpoint" information: An USB MIDI compatible device has one or more Endpoints.
Then check these conditions of an Endpoint section:
If the above conditions are met:
The app ships with only a few copyright free MIDI files (the composer's death was more than 70 years ago).
Further this app provides some MIDI file online search tools using external web sites that host these MIDI files
for free download.
These web site references are not statically included in this app: They will be downloaded each time the
online search is started (but only once per app launch).
So theses sources may vary from day to day (although this is not very likely to happen) or disappear, eg. if the web
site owner removes the content.
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.
This app does not collect, store or process any personal data.