Life's unpredictable, much like this update log. Here's a look at every tweak, twirl, and tune Midiano has gone through over the past years.
Thoughts, feedback, or an idea for a great new feature? Create a GitHub issue or drop by Midiano's Discord server.

  • It's now possible to show rest notes up to 128ths.
  • Fixed the song title not showing when note direction is reversed.
  • Added an option to choose which MIDI channel the silent notes used for lighting up the keyboard keys is used to send the MIDI events.
  • Fixed simultaneous notes not properly sending MIDI events for highlighting keys
  • Added an option to force a delay between notes of the same pitch.
  • Fixed the app not loading on older Safari browsers.
  • I'm currently working on a larger update, which is why updates have been slow lately. Specifically, I'm building a new scored-mode where you play along a song that doesn't pause, receive a score and afterwards compare your performance alongside the notes. Have been planning such a mode for a long time and I'm really excited for it, since it will open possibilities to track your progress over time much better. I'm hoping to have something to show in the coming weeks.
  • I added two new sections to the Midiano.com website!
  • Settings: A page containing some FAQs and documentation of all current Midiano settings.
  • Songs: A place to view all default songs of Midiano in a table view. Sortable and searchable by artist, song name and difficulty. This should be much better searchable than from within the app itself. There's also an individual page for each artist. If you find that some of the difficulties do not properly reflect the song please let me know. Listing difficulties has certainly made it painfully obvious that the current default songs are in no way suited for complete beginners. This is something I'll try to remedy in the future by adding a couple of popular and easy beginner songs.
  • And some minor app updates:
  • Added an option under 'General'->'Playalong' to enable sending quiet notes just before a note has to be played. This can be used to make your keyboard light the keys that need to be played next (provided your keyboard has that functionality)
  • Added little info buttons with descriptions on each setting.
  • Restricted file types to MIDI, so it should be easier to load file from your machine now.
  • Fixed detune not working
  • Fixed metronome speed not adjusting to playback speed.
  • Input from external MIDI devices now uses note velocities.
  • Fixed background not rendering after using full sheet mode.
  • Fixed impulse response not properly updating when changing.
  • Fixed some more minor errors concerning the sheet rendering.
  • Added support for multiple time signatures within one song
  • Added the option for a metronome that doesn't stop when the song is paused but runs continuously. You can enable it under Audio -> Metronome -> Synch Metronome to Song.
  • Added options to restrict the input range of notes. Notes outside the range will not be required to play along. You can use this setting if your keyboard doesn't have the full 88 key range. Adjust it under Settings -> General -> Playlong
  • Fixed wide key signatures being cut off
  • Fixed muted tracks not working in playalong mode
  • Added hotkeys to adjust the transpose amount
  • Single measures that are wider than the screen are now scaled down to fit on screen
  • Selected MIDI devices are now saved and automatically selected when restarting the app. There's a setting to disable this under Settings -> General -> General
  • The app will now start with the last song. There's a setting to disable this under Settings -> General -> General
  • Fixed the particle X-distribution setting. Changing this was affecting all particle types instead of just the selected one.
  • Fixed the loop not resetting when delay was set to 0.
  • Added a setting to adjust note width und Settings -> Video -> Note appearance
  • Adjusted the zoom buttons so that they're better usable on small screens
  • Added a little popup to display info on new updates
  • Added a setting to shift the first measure of a song. This allows correctly rendering songs that contain an anacrusis. You can find it under Settings -> General -> Anacrusis beat amount
  • Added feature to rename uploaded songs in the song list
  • Added a setting to control the minimum measure width and the minimum width that's reserved for each glyph. With this you can control how dense the sheet music will be rendered. Settings -> General -> Sheet Music
  • Added a setting to control input volume. You can find it under Settings -> Audio -> General
  • If a song has ended and you press play it will now restart.
  • Cleaned up the mobile design for the pitch practice mode
  • Added a search feature to the songs and settings tabs.
  • Fixed MIDI output playing muted tracks.
  • Added setting to set the minimum note denomination. It was previously set a 1/32nd notes but you can now set it as low as 1/128th. For most songs 1/32nd will produce cleaner results though. You can find the setting under General -> Sheet Music -> Minimum note denomination
  • Fixed the mute track buttons and volume sliders going out of sync.
  • New Play Mode - Pitch Practice!
  • Train your absolute (or relative if you're older than ~6 years old. I'm afraid the ship has sailed) pitch! Choose any musical key and range on the piano and repeat the notes played.
  • This mode is still very basic and I have a lot of ideas to extend it but open to any suggestions, so please give it a try and let me know if you have ideas how to improve it!
  • You can find it (somewhat hidden) under Settings -> General. Will find a more prominent space for it when development has advanced a little further.
  • Added more granular export options. You can now export setting, particle presets and uploaded songs individually.
  • Percussion tracks are now hidden by default and sorted to the bottom of the track list. You can still re-enable them rendering.
  • Set the default input instrument to acoustic grand piano. I set this to nylon guitar by accident.
  • Switched from Bootstraps Glyphicons to Phosphor Icons. Thank you for this great icon set!
  • Cleaned up rendering of grand staff. Should no longer get distorted on high DPR screens
  • Fixed color picker buttons
  • Fixed buttons requiring focus to work on iOS
  • Fixed flare rendering on high DPR screens
  • Switched the two metronome sounds around.
  • Cleaned up some styles. Escpecially notifications.
  • Added optional metronome ticks before a loop starts
  • All setting sliders now have input fields
  • Fixed loop indexing. A loop that starts at 1 is now the first measure.
  • Fixed grand staff display when the first track is disabled
  • Fixed note-hover for sheet music when multiple rows are visible.
  • Metronome volume wasn't affected by the main volume slider. It is now. (It's still unaffected by the volume multiplier in the audio settings.
  • Fixed sheet scaling on high DPR screens
  • Fixed iOS devices not playing sounds.
  • Implemented HDPI versions for the progress bar, the piano and the sheet music so it's no longer blurry on devices with higher pixel ratios (retina screens, most phones etc).
  • Fixed unresponsive color picker buttons
  • Added touch events to the progress bar - You should be able to drag around it like on desktop now.
  • Fixed a bug that prevented the menu from being hidden
  • The volume multiplier now also affect input notes.
  • New website goes online! I've recently moved the Midiano app itself to app.midiano.com. This was a long overdue step to untangle the website and the app. Before, the code generating the static about page and the code of the app itself were within the same codebase. Now that the app has moved to app.midiano.com I'll have more freedom creating new pages under midiano.com without having to touch the app itself.
  • I wrote about it here
  • Added a flare visual on the piano keys. You can enable/disable it as well as adjust some settings under General -> On-Screen piano.
  • Fixed detection of MIDI devices if they're only available after the page has loaded.
  • Added sustain events to MIDI output! Sounds much nicer now.
  • Added an option to set the background color of the music sheet
  • Added an option to render the music sheet tracks as grand staff. Also fixed the spacing between staves and added an option to adjust the spacing.
  • All fetch events are now cached, so that you can use the three general MIDI soundfonts offline if you've used them before!
  • Added a transpose setting! You can find the setting under 'General' -> 'General' -> 'Transpose (+/- semitone)' Easily transpose a song up or down up to 12 semitones. Affects audio, the note bars and the sheet music. When sheet music is enabled it will take a while to update the key and regenerate the sheet but otherwise it should be instant.
  • Put the uploaded songs category at the top under Songs.
  • Adjusted the particle settings. Set a little more usable ranges for the noise resolutions and strengths and decreased the minimum particle speed below 1 enabling you to slow everything down.
  • New particle settings! Added options to affect particle movement & size with noise functions creating cool swirly effects.
  • Added option to play notes while scrolling / dragging through the song. This was a requested feature to help transcribing messy MIDI files.
  • The song name & artist were displayed wrong. That should be fixed now.
  • Added a setting to manually set the clef of a track. You can do that in the track settings
  • Added a setting to override the time signature. This is usually defined in the MIDI file. You can find this in the 'Sheet Music' settings. It doesn't affect the playback at all but changes the duration of measures.
  • Added a detune setting under Audio -> General -> Detune. The unit is in cents with a range from -100 to 100 which would detune one semitone down or up respectively.
  • Added a 5 band equalizer in the Audio tab!
  • Midiano has moved to app.midiano.com. You should be prompted if you want to import your current settings and MIDI files. Otherwise you can download them here and manually import them. Let me know if there are any issues. This step was necessary to decouple the app from the homepage and allows me to more easily add more content on here.
  • I have migrated the entire project to Typescript. This has no immediate effect on the app itself but will greatly improve future update speed and maintainability.
  • Added the option to output metronome through a MIDI out by playing a short instrument sound
  • Hit key effect for the piano is back
  • Added a grow effect for hit sheet music notes
  • Added setting to adjust scroll sensitivity
  • Ability to bind function keys to your MIDI keyboard! You can now control Midiano completely with your piano keyboard!
  • Import & Export your settings and uploaded MIDI files
  • Added option to control the color of the piano velvet
  • Migrated to Vexflow 4. Sheet music generation should work better now.
  • Auto clef detection for sheet music
  • Setting to turn off cross-voice formatting for the sheet generation. It produces cleaner formatting but may cause problems in complicated pieces (looking at you Liszt)
  • New Feature: Multi-row sheet music! You can now play songs and view sheet across the entire screen. You can find the setting under 'General' -> 'Sheet Music' -> 'Show Only Sheet'.
  • Adjusted the styling of the piano a little.
  • New Feature: Loops! You can now set a loop over a number of measures and midiano will repeatedly play those. Should help a lot when trying to learn a song bit by bit.
  • Added hotkeys to navigate/extend/decrease/enable a loop.
  • Track settings are now saved for each song individually! Also added a button to reset all track settings.
  • You can now directly link midi files into midiano. If you pass an URL paramenter 'songUrl' with the url to a midi file like https://midiano.com?songUrl= Midiano will automatically open the file. Check out this link to Für Elise. You'll have to make sure that the site serving the MIDI file supports CORS. I'll try to make a post about this soon explaining it in more detail.
  • New shiny piano rendering! Looks a lot less cartoony than previously.
  • Particles should now clear properly when you turn off the setting.
  • Added ids to all forms to improve accessibility.
  • Improved initial startup performance.
  • Increased the main volume & added a setting to increase the base volume. You can find it in the Audio Settings under 'General'.
  • Cleaned up the UI a little.
  • Added button to view all hot-key bindings.
  • Added hotkeys to jump to different parts of the song (0-9).
  • Added setting to disable all hotkeys.
  • Stroke thickness now scales with the note width.
  • Piano should no longer block scrolling across it.
  • Adjusted some of the particle presets.
  • Fixed some particle settings not properly updating.
  • Fixed the key binding not properly rendering.
  • Lots of small improvements concerning accesibility and performance.
  • Added social icons & links and created a subreddit & discord & twitter account!
  • Made Midiano installable! You can now install Midiano through your browser and use it offline. See if your browser supports progressive web apps here.
  • Fixed a memory leak that caused the particles to lag during garbage collection
  • Added lots of new songs
  • Added opengraph support
  • Various fixes & improvements
  • Fixed Sheet-display not properly resizing
  • Fixed notes outside the 0-88 range causing Sheet-generation to fail. They are now ignored.
  • Some performance improvements & fixed a memory leak with the sheet rendering
  • Improved the particle system: The turbulence setting now creates a much smoother effect. Also improved the shader performance and added a max texture size setting. Watch out when increasing this. Depending on your GPU it might crash your browser if set too high.
  • Some styling
  • Attempted to clean up the UI a little bit
  • Completely reworked the particle and piano-line system. They now work with shaders and should be much more performant. You can also save particle settings as presets now and combine different types of particles in a preset, allowing for much more creative freedom :)
  • Fixed some UI Bugs when resizing the window
  • Attempted to clean up the UI a little bit
  • Added convolver option with lots of Impulse responses for different reverb effects
  • Increased the default release times
  • Fixed some minor bugs
  • Added lots of settings for the line above the piano. Can now be animated as a squiggly glowing line
  • Added shrink and friction settings for particles
  • Added glow effect + settings for particles, notes and piano keys
  • Added settings for custom piano key colors
  • Fixed smoke particles rendering as rectangles.
  • Added IndexedDB support. Uploaded MIDI-files are now saved in your browser.
  • Added a much nicer Piano soundfont. It's 13MB large, so it's disabled by default. You can enable it under Settings -> Audio -> Use HQ Piano Soundfont
  • Added Smoke particles
  • Added more particle settings + improved performance. They now glow and have a little nicer movement.
  • Added setting to toggle rendering of measure lines
  • Made then piano keys a little longer by default
  • Some small styling changes
  • Added keyboard bindings - You can now play with your computer keyboard and don't require a MIDI device to active play-along mode for tracks
  • Added Note labels - Showing either key bindings or note names
  • Changed the piano hit key effect
  • Fixed scrolling issues in full screen
  • Some other minor bug fixes
  • Added dynamic sizing of sheet display when screen is too small
  • Fixed clef not displaying properly for some key signatures
  • Fixed input notes not displaying correctly on staffs
  • Fixed too narrow black notes not displaying on small screens.
  • Modified some default settings for better performance.
  • Added Sheet Music generation. Still has its faults. Especially when theres more than one voice in a staff. But it works fairly well with clean and simple MIDI files.
  • Fixed long notes disappearing too early
  • Restyled the landing page
  • Added some more example songs.
  • Added a sandwich menu for smaller screens.
  • Clicking/Tapping the main window will now play/pause the song.
  • Added some more example songs.
  • Added info-button on loaded songs - displays some information about the MIDI-file.
  • Fixed sustain control messages so that it only affects notes on the respective channel.
  • Fixed the note number not displaying correctly in the debug info on hover.
  • Fixed names of black keys
  • Added setting to switch between ♭/# for black keys
  • Added setting for black input key color
  • Added seperate settings for top/bottom particles + settings for particle stroke and whether they're drawn in front of or behind the notes.
  • Piano-zoom is automatically set when loading a new song (there's a setting to turn that off)
  • Some more UI Improvements for smaller screen sizes
  • Added a landing page with some info
  • Fixed detection and rendering of beat/measure lines
  • Tracks are now split by instrument. So if the MIDI File just has one track but multiple instruments, it will display a track for each instrument.
  • Some fixes for touch-based devices
  • Added swatches of the default colors to the color pickers
  • Lots of other, smaller fixes or changes.