Midi Notation - score writing for Android mobile phones and tablets

This application allows music notation to be created on an android device. Load / view / edit / save midi files. Have you ever wanted to write down or listen to a musical idea eg on the bus or train but you don't have a piano with you?

Or have you ever been practising and wondered how a particular rhythm should sound? Or have you ever downloaded a midi file to your phone to help with learning a song and wanted to view the notes?

Like a standard sequencer, files can have multiple tracks, use midi instruments, change time signature (simple and compound time), key signatures and tempo.

Unfortunately I have not had time to perfect this app - it won't always work as expected. Some rhythms, chords and quantising may be a bit broken by some events like pitch bend... Having said that - it works enough for me to have found it useful so it stands to reason that other people might find it useful too. It is not quite Sibelius or Cakewalk or Cubase for the mobile phone - but it is a start!

Android Midi Notation / score writing - Display layout

The top left of the screen shows the position indicator Bar:Beat(tick) -- Highlighted-note-duration Highlighted-note-name (Highlighted-note-deltaTime ie time between highlighted note and the next note starting) -- (number of selected notes)

On the right of the screen is the Note Duration Indicator - this can be made smaller by pressing "Smaller" and made larger by pressing "Greater" and can be applied to the currently selected note (not rest) by pressing *.
To the right of that is the Insert Mode Indicator. 0 is normal and pressing left or right will just move to the next note. 1 allows notes to be inserted at the same time as the currently highlighted note ie a chord is created when pressing right. 2 moves the starting position of the currently highlighted note. Did I mention those bugs earlier? Less bugs will be encountered if you just create monophonic melodies on each track...

Under these indicators is the score itself.

Under the score is the Midi channel number - Track number - Track Name. All can be set from the Track Menu from the score menu. Under that is the General Midi Instrument Number - Instrument Name of the current track.

Under these are the controls.

Android Midi Notation / score writing - Controls

Smaller - Decrease the value of Note Duration Indicator

Up - Move pitch up 1 semitone - or 1 octave if SHIFT is applied. Applies to highlighted note and all selected notes.

Greater - Increase the value of Note Duration Indicator

Left - Scroll currently highlighted note to the left one note, or 1 bar if SHIFT is on. During playback, left cycles the currently viewed track.

* - Apply value of Note Duration Indicator to the currently highlighted note (not rest).

Right - Scroll currently highlighted note to the right one note, or 1 bar if SHIFT is on. During playback, right cycles the currently viewed track.

Dot - Add or remove a dot (adds half to the duration) to the currently highlighted note (not rest).

Down - Move pitch down 1 semitone - or 1 octave if SHIFT is applied. Applies to highlighted note and all selected notes.

Tie - Add or remove a tie to the currently highlighted note if musically correct.

Shift - Toggle SHIFT on and off.

Note / Rest - Toggle the highlighted note between a rest and a note.

Ins - Toggle Insert Mode Indicator between 0, 1 and 2.

The musical score can be scrolled left and right and moved up and down to make ledger lines easier to see by dragging with one finger.

Menu -> Lights - was used to sync my Christmas Tree to the scrolling score as it plays. Enter an IP address and port to connect. When playing byte value 16 represents a rest. Each time the pitch changes the byte values 17, 18, 20 or 24 will be sent sequentially. Let me know if you make anything fun with this.

I do not recommend overwriting midi files because not all data is parsed, and some is parsed incorrectly thus the saved file may be substantially different to the original file. I welcome any comments / feedback / feature requests / pestering to make it work properly...


Android Midi Notation requires Internet Permission to use Bugsense crash reporting and Google Analytics. This music writing application does not require internet permission for normal functionality and will work without it.

To install Android Midi Notation, either download directly via your phone's web browser or download it to a computer and use Bluetooth or a cable to transfer it to your phone. You may have to allow the installation of 3rd party apps.

Change Log

Android Midi Notation v0.65 - released 05.10.2016
  • Added an Action Bar with menu button
  • Added options to change the note size and text size
  • Includes option to IP address : Port and send data as the pitch changes on the current track during playback. I added this feature to sync my Christmas Tree to the scrolling score.

Android Midi Notation v0.62 - released 20.11.2011
  • When a midi file is loaded, it will go to the start of bar 1 of track 1 instead of trying to remain on the current track which may not exist in this file.
  • Improved quantising so that a track won't stay ahead or behind of the time it would have been if notes hadn't been quantised
  • When pressing pitch up or pitch down buttons, the pitch will no longer go out of range.
  • Improved accuracy of saving rhythms
  • Made a brighter and more welcoming icon

Android Midi Notation v0.6 - released 09.11.2011
  • Saving a file now saves all the changes - not just the last played version
  • The tracks menu now has check boxes for whether a track is played or muted. Long press on a track to toggle whether its played or muted. If the track is ticked, it is played. The button under Add New Track toggles between Mute all tracks and Unmute all tracks. It might help composition to hear how something sounds with some tracks removed or it can be useful when playing along to a song to remove the part you are playing
  • Entire tracks can be transposed. Tranposing will not happen if any of the notes in the track would go out of range - there are only 127 pitches - but thats like 10 octaves which is plenty!
  • Fixed a bug caused when having multiple tracks, viewing track 1 then removing track 1, it would then try to display a non existent track...
  • Attempting to open a midi file that isn't type 1 will result in an error message instead of a force close.
  • Improved the accuracy of saving some rhythms. If there were 2 quavers at the same time as a crotchet, the 2nd quaver wouldn't start until the end of the crotchet as opposed to at the end of the 1st quaver.
  • Time signatures, key signatures and tempos can now be added, edited and deleted using the meta events menu (any ideas for a better name than meta events?). Long press a time signature, key signature or tempo to delete it - the very first one cannot be deleted. When a time signature is changed or deleted, the rhythms are recalculated so there are the right number of beats in a bar - or it least it would be if it parsed rhythms accurately - but the thought it there...

Android Midi Notation v0.54 - released 02.11.2011
  • When loading files, the Ticks Per Crotchet is passed to the drawing methods so it doesn't assume 120 is being used and not draw correctly when another value is used
  • Wait until loading a file is complete before trying to draw it to avoid Null Pointer Exceptions
  • Stopped rests counting as low notes when deciding whether to use treble or bass clef
  • Tracks can now be copied.
  • Tracks can be removed. If all tracks are removed, a new track is automatically added.
  • A warning is displayed if you attempt to play a midi file while the SD card is unavailable

Android Midi Notation v0.53 - released 30.10.2011
  • Loading and saving of midi files is now performed in a separate thread and a progress dialog is displayed.
  • Removed a bug which sometimes causes an IllegalStateException when stopping playback.
  • New tracks can be added
  • The name, channel, instrument and clef (treble clef, bass clef, alto clef and tenor clef) can be altered for each track
  • Added Google Analytics as I am curious about how often this app is being used and I feel that there are better ways than counting the crash reports! This requires the ACCESS_NETWORK_STATE permission as it may choose to wait until wifi is available before uploading.

Android Midi Notation v0.5 - released 23.10.2011
  • Midi files can be loaded. Not all midi events are parsed correctly which may lead to interesting timing errors - but its a start! These bugs will be addressed in future releases.
  • Midi files can be saved.
  • Extra rests are now added when you get near the end of a track so it won't scroll past the ened of the track and have a null pointer exception!
  • The music notation can be moved up and down the screen by dragging with one finger up and down to make ledger lines easier to see.

Android Midi Notation v0.4 - released 09.10.2011
  • Slightly improved User Interface - it might all fit on the screen on some devices...
  • The score can be scrolled by dragging one finger left or right.
  • Added BugSense crash reporting.

Android Midi Notation v0.3 - released 23.01.2011
  • First release
  • Create a score and play it
  • Some menus without any functionality