Sodor Piano Studio
A browser-based 88-key piano synthesizer with a realistic sampled grand piano, multiple sound presets, and playback of MusicXML and MuseScore scores. The Sodor Grand preset plays real recorded grand-piano samples; the other presets are generated in real time using the Web Audio API.
Features
- Full 88-key piano keyboard (A0 to C8)
- 6 sound presets: Sodor Grand, Electric Whistle, Tidmouth Synth, Vicarstown Organ, Steam Whistle, Station Bell
- Sodor Grand uses 30 recorded notes × 3 velocity layers from the Salamander Grand Piano library, with velocity touch, dampers that fall when a key is released (the top strings have none, as on a real grand), sympathetic resonance and a light room reverb
- Score import and automated playback: MusicXML (
.musicxml,.xml), compressed MusicXML (.mxl) and MuseScore 2, 3 and 4 files (.mscz,.mscx) - Repeats (nested ones included), first/second endings, and the road map (D.C., D.S., al Fine, al Coda, section breaks) are played as MuseScore plays them; tempo changes apply to every staff
- Scores are performed with their dynamics and hairpins (crescendo, decrescendo), accents, staccato and tenuto marks, and sustain pedal; notes are scheduled on the audio clock, so chords sound together and the tempo never drifts
- A scrolling view above the keyboard follows the score as it plays: either a simple grand staff (notes placed by time, also showing the notes played by hand) or the full score, engraved with OpenSheetMusicDisplay (loaded on demand; MuseScore files are converted to MusicXML for it). It can be hidden for small screens
- A score can be opened from a link:
index.html?score=/path/to/piece.msczloads it, ready to play (files on the same site only) - Volume, tempo (0.25× to 2×) and sustain pedal controls; a key struck near its front sounds louder than one grazed at the top
- Touch and mouse input support
The source code is kept in the repository https://github.com/fbastin/SodorPiano, which this page mirrors directly.