Learn Piano Online

No registration required!

Launch Midiano Screenshot of Midiano showing a keyboard, falling notes and generated sheet music.

About

Midiano is an interactive Piano-learning app that runs on any device with a modern browser.
Open any MIDI-File and Midiano shows you the notes as falling bars over a piano as well as the corresponding sheet music.

Connect a MIDI-Keyboard to get instant feedback if you hit the correct notes. You can also use the keyboard as output device to play the MIDI-Files on your keyboard.

Midiano runs entirely client-side in your browser. That means you can install it and even use it offline.

It runs on any browser (and device) that supports the WebAudioAPI (Full support apart from Internet Explorer). To connect a MIDI-Keyboard the browser also needs to support the WebMIDIAPI (All browsers except Safari and Firefox for Android).

Features

Upload any MIDI file
Learn any song with any file or choose one of the many default songs

MIDI Support
Connect your MIDI keyboard and get instant feedback!

Sheet Generation
Midiano automatically creates sheet music from your MIDI files!

Play at your own Speed
Quickly adjust the speed of any song to learn at your own pace

All devices supported!
Works on any device with a modern browser on Desktop, iOS and Android.)

Intuitive Controls
Pause, Skip Forward or Backward, Adjust the Speed - quickly navigate through songs

Highly customizable
Customize colors, effects, instruments and much more

Play-along-mode
Midiano waits for you to hit the correct notes

Loop function
Effectively learn difficult parts of any song!

3 Soundfonts
Choose between 3 full MIDI soundfonts and 1 HQ piano soundfont!

Use Offline
Midiano is a Progressive Web App and can be installed and used offline!

Fingering labels
Automatically generate fingerings or set them yourself on any song!

A tool for all levels of players

Whether you are a complete beginner or already a seasoned piano player:
You can customize and use Midiano in many different ways to learn and improve your skills in a fun and engaging way.

  • Practice your sight reading with the scrolling sheet mode
  • Use Loop-Mode to quickly practice difficult parts of a song
  • Adjust the speed to play at your own pace
  • Train your pitch detection skills in Pitch Practice Mode
undefined

Connect any MIDI keyboard

Take full advantage of Midianos features like playalong-mode or playing MIDI-files on your keyboard.

You can also bind your piano keys to functions to control Midiano with your piano. Save time practicing instead of reaching for your computer all the time.

Playalong-Mode

The song waits until you hit the correct notes. Practice each hand seperately or both at the same time.

Supports keyboards with light-up functionality to show you which notes need to be played next.


undefined
undefined

Loop-Mode

Loop over any number of measures to quickly practice difficult parts of any song! Bind your piano keys to control the looping range so you never have to leave you piano while practicing!

  • Auto-restarting loops
  • Adjustable metronome count-in feature
  • Use your piano keys to move and expand the current looping range!

View Songs

Automatic Sheet generation

Generate sheet music for any MIDI file and customize it to your needs.

  • Infinite Sheet scroll
  • Full screen Sheet mode
  • Dynamic cursor & note highlighting
  • Hover over any note or chord to view the note names

Take your sight reading skills to the next level with Midiano's highly customizable sheet mode.

Open Midiano

undefined
undefined

Over 100 free songs!

Play and learn any of the many included songs. Can't find the song you're looking for? Simply upload any MIDI file to start learning any song you want!

View Songs

Create beautiful piano visualizations

Besides learning new songs you can also use Midiano to create beautiful visualizations of any MIDI file. Or use it to spice up your live performances!

Create stunning visuals with the GPU-accelerated particle engine. Stack multiple particle systems to create elaborate custom effects!

Smoothly render thousands of particles in real-time thanks to highly performant custom shaders.

undefined

FAQs

View all settings

Latest Updates

01.11.2026

It's been a while! I've finally taken the plunge and started working with AI in this project. I've been putting it off for a while now. This is by far my biggest 'hand-coded' project and there's definitely a little feeling of sadness, knowing how much quicker and easier something like this can be built. But on the bright side, it allows me to build and create more in less time which is fantastic. I started by implementing almost all user requests and bug reports that have piled up over the last year:

  • Chord labels! Midiano now detects chords within each track and can label them right on the falling notes. Includes power chords, shell voicings and voicings without the third. There's two label styles for now. You can find them under Settings -> Video -> Chords.
  • Highlight incoming notes! The piano can now show which keys are coming up next, either all notes within a time window or only the next notes of each track. There's two styles for now, let me know if you have any feedback or additional ideas!
  • Track defaults! There's now a 'Track defaults' button in the tracks menu where you can set defaults for 16 tracks plus percussion. You can still customise tracks for each individual song but if you don't, these defaults will be picked for new songs.
  • Added quick buttons to the tracks menu to more quickly hide and mute tracks.
  • Added a Key override setting under Settings -> General. It sets the key used for the sheet music key signature and for naming chords. This is for cases where MIDI files are missing the key definition or have the wrong key.
  • Added setting to set the 'seconds shown on screen' by measures (Settings -> Video -> General). There are also new (unbound) hotkeys to quickly set the viewable area to 2 and 4 measures or to increase/decrease by one measure.
  • The timeline can now show the position in measures and beats (e.g. 12.3), with clicking and dragging snapping to measure starts. Settings -> General -> General -> Timeline in measures
  • Added a setting to show measure numbers in the sheet music: at the start of each row or for every measure.
  • Added a setting to highlight the lane of every key you're holding down across the whole note area, in your note color. Settings -> General -> General -> Highlight input key lanes
  • Added a 'Restart song on end' setting under Settings -> General -> General.
  • Revised the update flow and created seperated caches. New updates should no longer force you to redownload all soundfonts or songs.
  • Fixed the sheet music showing a wrong key signature when transposing (e.g. C major +1 showed G major instead of Dâ™­ major).
  • Fixed note names and key binding labels being covered by the highlight of pressed keys.
  • Fixed the key flare sometimes being covered by highlights of other tracks or of your own notes.
  • Fixed missing barlines at the end of each row when 'Scrolling sheet' and 'Show only sheet music' were both enabled.
  • Fixed progressbar and some labels being misplaced on high DPI displays.
17.08.2025
  • Added function keys to skip a forward/backward by measures or beat.
  • Added settings to control measure and beat line color and thickness. You can find them under Settings -> Video -> Measure & Beat lines.
12.08.2025
  • Color Coded notes! You can now color notes depending on ther pitch or their assigned finger. You'll find the settings under Settings -> General. I already added a couple of Color palettes if you have suggestions for additional ones, let me know!
  • Fixed some settings not applying to the pdf-export. Hidden tracks are now also hidden on the pdf and track colors and background will be applied as well. I also moved the button to its own category under settings -> General -> PDF Export
07.08.2025
  • Added fingering labels and automatic fingering generation! You can also set them by hand note for note. Check out the new setting under Settings -> General -> Fingering. The algorithm to determine the fingerings automatically isn't quite there yet though. It works for simple songs but completely breaks down on complex pieces. I will keep tinkering with this - any feedback is appreciated!
  • Introduced a new caching system: You can now individually select which soundfonts or songs you wish to download for offline use. Additionally, the update system has been revised to prevent users from unknowingly running outdated versions. You can access these features under Settings -> General -> Cache Manager.
  • iOS Support!.... Well, kinda. I got Midiano running with a working MIDI connection using this app. The app is a basic browser wrapper with the WebMIDI functionality added on top. Obviously it's kind of an old and not actively maintained app, so you might experience other bugs. But from my personal tests it worked just fine apart from a purely cosmetical bug (The MIDI connections will appear multiple times, if you're running the app for longer).
  • Added a couple of beginner songs. I transcribed these myself!
  • You can now export the falling note view of any song as PDF and print them out! Really interested in whether this is useful and it's being used, so let me know!
  • You can now open entire directories and it will automatically upload all MIDI files in that directory. Be aware though that if you open a folder with a million MIDI files, it will probably (likely) crash your browser.
  • Added a velocity strength setting to control how much a note's velocity affects its volume.
  • Added a pitch notation setting that allows the use of Do Re Mi... instead of C D E...
  • Replaced the piano line shader with a new version that looks a lot more fiery.
  • Added volume control hotkeys.
  • Added an option to clear individual hotkey bindings.
  • Added speed and volume controls to the mobile view, accessible via the main menu.
  • Moved all note label settings to a separate category under Settings -> General -> Note Labels.
  • Moved piano line settings to Settings -> Video.
  • Corrected the convolution effect to mix the wet signal with the original input instead of outputting only the wet signal.
  • Fixed severe performance issues in Firefox when using the piano line or particles by replacing the previous combination of 2D Canvases and WebGL contexts with three dedicated WebGL contexts. Although this increases memory usage, it seems to work fine across browsers. Please report if you're experiencing any issues.
  • Fixed three.js crashing when changing a particle z-layer.
  • Fixed piano line and particles creating visual fragments when overlapping.
  • Normalized the mouse wheel sensitivity across devices. This was really off on iOS devices.
  • Soundfonts are now loaded via JSON files instead of JavaScript files. This might have caused some overeager firewalls to block loading them.
  • And of course yet another redesign :)
18.05.2024
  • 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. This can be used to create pauses between ntoes in case your MIDI output device requires time for the release of a note.
  • Renamed the 'Playalong' settings category to 'MIDI' and added the force delay option to it.
  • 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.

View more Updates