Skip to content

Releases

v1.0.17

Choose a tag to compare

@PabloCSScobar PabloCSScobar released this 05 Nov 13:20

What's new in 1.0.17

Important. The "Buy LEDsplay PRO" button works again. It used to open an error page; now it opens the checkout. If you tried to buy and got stuck, please try again.

Change the key. The new Key panel in practice shifts a song up or down by semitones. The sheet music, falling notes, LED strip, hit scoring and playback all follow, and the panel suggests the easiest key.

Rearrange a song. In the same panel, switch a song between major and minor, play it as blues with swing, or give the left hand an arpeggio, Alberti or oom-pah pattern. The notes that changed are highlighted.

Listening. When you stop listening to a song, the listen menu offers Continue, which picks it up from the same spot.

Updates. Settings now shows what's in an update before you install it, and the app tells you what changed once it's done.

All changes

New

  • playback: continue listening from where it stopped
  • practice: a visible way back to the original in the key panel
  • practice: change a song between major and minor
  • practice: highlight the notes the arrangement changed
  • practice: left-hand accompaniment patterns
  • practice: play a song as blues with swing
  • practice: suggest the easiest key
  • practice: transpose a score by semitones with key-aware spelling and octave folding
  • practice: transpose songs in practice, playback, falling notes and song metadata
  • practice: transpose the song from the transport bar
  • update: release notes for the app's what's new
  • update: show what's new after an update and before installing one

Fixes

  • license: buy button opens the product checkout instead of a 404
  • practice: four-column key grid in the transpose panel
  • practice: keep the falling-notes transport while the notes reload
  • practice: key and loop buttons side by side above landscape falling notes
  • practice: key panel fits a phone screen
  • practice: respell a mode change past seven flats or sharps
  • practice: transposed score spelled by the backend; es-moll has six flats
  • practice: write transposed scores with the key's own spelling
  • update: scroll a long what's new list inside the sheet

v1.0.16

Choose a tag to compare

@PabloCSScobar PabloCSScobar released this 29 Oct 22:25

What's new in 1.0.16

Connection. The app now connects to LEDsplay at whatever address you open it: the Pi's IP address or a hostname other than ledsplay.local. Before, the page opened there, but the app showed "Not connected" and nothing responded.

Practice. The pedal on the LED strip is off by default. To have the lights between keys glow when the score uses the pedal, turn on "Pedal on the LED strip" in the practice settings, under "Pedal and volume".

All changes

New

  • practice: pedal on the LED strip is off by default

Fixes

  • socket: connect from the page's own address, by IP or any hostname

v1.0.15

Choose a tag to compare

@PabloCSScobar PabloCSScobar released this 29 Oct 18:45

What's new in 1.0.15

Song library. Two new song sources: the LEDsplay library of public-domain pieces, with a composer filter, a featured toggle and a paged list, and a local collection that reads its own folder and takes uploads. You can upload whole folders; subfolders become categories.

MIDI songs. A MIDI file now gets sheet music and falling notes in Learn and Listen. LEDsplay turns its notes into a two-staff piano score. Scores that mark note dynamics play with those velocities.

Practice. Learn and Listen ask whether to start from the current measure or from the beginning, instead of showing a separate bar. Seeking while listening keeps playing from the measure you picked. A new setting turns the strip background off during a song.

Sound. Listening can play on the phone, tablet or computer you use the app on. You pick where to listen right under the Listen button, and a volume slider sits next to that choice. The device status shows whether the piano gets sound from the Pi.

LED strip power. In Settings you choose the power supply of the strip, and LEDsplay keeps the strip current within its budget. Raising the limit asks for confirmation. The power choice and the service restart now sit in a separate danger zone.

Effects. A released key fades into the background colour instead of going dark first. Lighting extra LEDs next to each key no longer dims and shifts the background.

Wi-Fi. The Pi reliably returns from the setup hotspot to your home Wi-Fi.

Other. The app starts in English unless you picked a language before. On a computer, settings open as a side panel. The SD card image no longer contains network details left over from the build machine.

All changes

New

  • library: LEDsplay public-domain library with a composer filter, featured toggle and paged list
  • library: local collection that scans its folder and accepts uploads, folder uploads with subfolders as categories
  • midi: MIDI songs learn and play from a two-staff MusicXML score made from their notes
  • practice: sheet music and falling notes for MIDI songs
  • parser: note velocities from <note dynamics> in scores that mark them
  • practice: ask 'from measure X or from the start' in Learn and Listen instead of a separate bar
  • practice: seeking during listening keeps playing from the picked measure
  • practice: setting to turn off the strip background during a song
  • sound: play listening on this device, chosen right under the Listen button
  • sound: listening volume set from the app, slider next to the sound output choice
  • sound: report whether the piano gets sound from the Pi in the device status
  • settings: choose the strip power supply; the strip current stays within its budget
  • settings: danger zone for the strip power and the service restart, confirmation when raising the limit
  • led: released keys fade into the background instead of black
  • ui: settings open as a side panel on a computer
  • ui: English is the default language

Fixes

  • led: key LED spread no longer dims and shifts the background
  • wifi: reliably return from hotspot to home Wi-Fi
  • wifi: unescape the SSID read back when removing duplicate profiles
  • library: 'no internet' only when the device cannot reach the library server; library_unavailable for a missing or broken catalog
  • learning: one request per replay, shared sound controls in learning settings
  • learning: play again works in intervals; exercises follow the shared listening volume
  • practice: learn menu keeps its measure number when listening starts
  • settings: MIDI port selects confirm instead of offering a restart
  • sound: play a song to a listening device when no piano MIDI output is connected
  • local collection folder follows the user owning the app
  • image: scrub the build Wi-Fi and machine state from SD images

v1.0.14

Choose a tag to compare

@PabloCSScobar PabloCSScobar released this 21 Oct 14:50

What's new in 1.0.14

Effects. The options of each animation are now behind a sliders button, and one animation brightness slider sits above the list.

About. The About page shows a support email as the main contact, with GitHub issues as the second option.

Updates. After a successful update the app reloads by itself, so the new version of the interface is shown right away.

Fixes. Trial sessions start again when the device first gets the correct time from the internet. If you never changed the right-hand colour, the old red default becomes orange after the update.

Installing with the script. The install script now takes about 5 minutes on a Pi Zero 2W instead of about 50. Every Python package comes as a ready-made build, with exact versions pinned, and two unused libraries were removed. The bundled demo songs are now part of the release, so a script install has them too.

All changes

New

  • about: support email as the main contact, GitHub issues as the second option
  • effects: animation options behind a sliders button, one animation brightness above the list
  • updates: reload the app after a successful update so the new frontend loads
  • release: the bundled demo songs ship in the release package
  • deps: the full dependency set is pinned (constraints.txt) for the script install
  • deps: music21 and numpy removed (unused), requests required explicitly

Fixes

  • license: trial sessions start again when the clock first syncs
  • practice: the old red right-hand default becomes orange after the update

v1.0.13

Choose a tag to compare

@PabloCSScobar PabloCSScobar released this 18 Oct 21:15

What's new in 1.0.13

This release includes everything from 1.0.12 (which was not offered as an update) plus the effects changes below.

New look. The whole app was redesigned: practice hub, song library, practice screen, effects, games and settings. A first-run welcome screen and a device status indicator in the header were added.

Practice mode that follows the score. Repeats, voltas and D.C./D.S./Coda/Fine play the way MuseScore plays them. Grace notes, trills, mordents, turns, arpeggios, fermatas, dynamics and the sustain pedal from the score are now part of practice and playback, with their own LED patterns. A new Chords setting (strict, normal or no time limit) controls how quickly the keys of a chord must go down. "Continue practice" resumes from the bar where you stopped.

Falling notes. A smoother clock and a faster renderer, ornaments, articulations and a pedal strip.

Effects. Saved gradients are now one shared list for keys, background and animations, with a few new presets out of the box. Your own gradients are kept. Animations have their own brightness slider; it starts at your current background brightness, so animations look the same after the update.

Free play. Octave zoom with a mini-map, a settings sheet and a drum kit view.

Games. Reaction Game, LED Keeper, Piano Battle and Tremolo were redesigned. LED Keeper pause now really freezes the game, and the Reaction Game shows its results on the page.

Fixes. The 14-day trial was over right after the first connection to WiFi when the system image was older than two weeks. The trial now counts from the first time the device gets the correct time from the internet. If your trial ended this way after installing the 1.0.10 or 1.0.11 image, it starts again after this update. Also many fixes to the sheet music cursor, playback of measure ranges and the WiFi setup.

Updates. The settings page no longer says "no updates" when the check failed (for example without internet), and it stops offering an update that is already installed. From the next update on, a failed update and the automatic return to the previous version are reported right away. Learning progress, statistics and the trial state are kept when updating from 1.0.11 (the old updater did not copy them).

All changes

New

  • effects: own brightness slider for animations, independent of the background brightness
  • api: accept ornaments, pedal_led and velocity_led; add practice capabilities
  • api: device status and LED strip test endpoints
  • effects: Lighting | Animations switch at the top of the Effects page, remembered, with a dot on what drives the strip now
  • effects: all key and background lighting options on the Effects page with a live key preview; drop the LED settings page
  • effects: tune the selected animation in place, idle options inline, preview/icon view toggle; drop the duplicate animation settings page
  • falling-notes: now/next and loop cards in the tablet side panel, readable hand colours
  • falling-notes: ornaments, articulations, pedal strip and played-note look
  • falling-notes: smooth clock, fast renderer and new practice UI
  • falling-notes: song-notes v2 contract and playback timing fields
  • falling-notes: types for the richer song-notes data
  • free-piano: drop hidden Studio/looper, pinch only over the notes, keep the sequencer
  • free-play: octave zoom with mini-map, settings sheet, drum kit view
  • led-keeper: redesign level picker and game screen, fix result screen
  • license: report trial sessions left in license status
  • parser: dynamics written as text in
  • parser: play repeats, voltas and D.C./D.S./Coda/Fine like MuseScore's RepeatList
  • parser: read volta endings, segno/coda/fine markers and D.C./D.S. jumps
  • piano-battle: redesign, correct key ranges and pause
  • playback: arpeggio rolls the chord note by note
  • playback: articulation gate and accents
  • playback: fermatas and text tempo changes
  • playback: grace notes sound to measure, like MuseScore
  • playback: listen from a given measure to the end (start_at_measure)
  • playback: note velocity from score dynamics and hairpins
  • playback: ornaments, volume and pedal on the LEDs in listening
  • playback: sustain pedal from score
  • playback: trills, mordents and turns play as ornament events
  • practice: Chords setting - strict, normal or no time limit for the keys of a chord
  • practice: LED patterns for hits, ornaments, arpeggio and pedal
  • practice: chord timing (tight / normal / off) comes with the start like the other fidelity fields
  • practice: drop the fullscreen button from the transport bar
  • practice: fidelity settings, hand colours, progress and pedal logic, start parameters, PL/EN texts
  • practice: follow the score pedal when the app plays the other hand
  • practice: heading for the pedal and volume settings card
  • practice: learn or listen from the measure picked on the transport bar
  • practice: live transport and loop/pickup fixes
  • practice: ornament and grace steps, practice_progress and pass summary events
  • practice: ornament and pedal settings, played-note HUD, pass summary card
  • practice: pedal pill asks to release the pedal when the score does not want it
  • practice: score transport bar and practice-mode fixes
  • practice: single-hand waiting state and wrong-note feedback
  • practice: "Continue practice" resumes from the bar where you stopped
  • reaction-game: redesign setup and game screens
  • sheet-music: cursor stands on the grace note of the step
  • songs: expose velocity, playback timing, ornaments, pedal and tempo in song-notes
  • songs: song notes carry the map from the time of the sound to the time on the score
  • tremolo: redesign page, fix speed slider and range wording
  • ui: animated LED strip previews on game tiles, recorded from the real game code
  • ui: device status chip and sheet in header (stage 2)
  • ui: effects hub redesign (stage 6)
  • ui: redesign stage 1 - visual foundation
  • ui: games and more screens redesign (stage 8)
  • ui: games as illustrated tiles instead of a plain list
  • ui: license screen and first-run welcome (stage 7)
  • ui: new practice hub (stage 3)
  • ui: practice session redesign (stage 5)
  • ui: song library redesign (stage 4)
  • wifi: handoff instructions when LEDsplay switches networks, redesign WiFi page

Fixes

  • effects: one gradient library shared by keys, background and animations; every list refreshes after a change

  • updater: keep learning progress, stats and trial when updating from 1.0.11

  • updater: install requirements into the new venv on every update

  • updater: install only the versioned tarball with a verified checksum, report update status to the app, refuse a second concurrent update

  • updates: drop stale update offers, show failed checks and failed/rolled-back updates

  • effects: autoplay visible previews and speed up longer cycles

  • effects: record Tetris as a full-cycle timelapse instead of speeding up a 12 s clip

  • falling-notes: practiced hand wins on keys shared by both hands

  • falling-notes: use settings hand colours and keep transport popover above canvas buttons

  • free-piano: remember zoom, scroll position and visualization across refresh; keep the view centred when zooming

  • free-play: drum kit drawn in portrait after Piano -> Kit in landscape

  • games: pause/stop use the game's own ID, Reaction Game results on the page instead of a dialog

  • i18n: plain hyphen instead of em dash in all visible texts

  • i18n: plain hyphen instead of em dash in pedal and optional ornament texts

  • led-keeper: pause freezes the game time

  • leds: the same key struck again goes dark for 80 ms first

  • license: trial counts 14 days from the first NTP sync, not from the image clock

  • license: trial of a customer who installed the 1.0.10 or 1.0.11 image starts again

  • optimize practice views and LED settings

  • parser: a repeat walk over its limit falls back to the plain measure order

  • parser: display timeline in score position, independent of tempo

  • parser: do not play cue notes

  • parser: grace notes written one after another get their own times

  • parser: match each of a direction on its own for D.C./D.S./Fine

  • parser: measure lengths and numbering follow OSMD

  • parser: public measure number follows the MusicXML number like the sheet music

  • parser: read volta numbers written with a trailing dot ("1.")

  • parser: repeat_list compiles with Cython again

  • parser: take pitch from only and apply attributes in document order

  • playback: close ties at repeat jumps

  • playback: honor measure ranges and preserve position on stop

  • playback: play a leading grace note before the first beat

  • playback: range window ends before the first measure played by a D.C./D.S. jump

  • playback: report current measure on the expanded timeline

  • playback: sound a tied note that starts before the chosen measure

  • playback: treat staff 3+ as left hand

  • point in-app purchase link to /checkout instead of bare domain

  • practice: HUD and key hints show the key of the ornament sub-step, not the main note

  • practice: accept slowly rolled chords

  • practice: build chords in time order so a grace note does not split them

  • practice: cursor of a grace note step stands on the note it leads into

  • practice: do not replay voltas after a D.C./D.S. jump in a measure range

  • practice: fit the session screen on phones with the transport bar

  • practice: grace note line names the main note during the grace step

  • practice: highlight the chosen measure numbers without shifting them for a pickup

  • practice: keep chord notes after a mistake and while the student holds the pedal

  • practice: light shared keys in the practiced hand colour

  • practice: persist zoom and synchronize playback and navigation

  • practice: release accompaniment notes after their written length

  • practice: staff 3+ falls back to left hand

  • practice: the keys of a chord must go down within 250 ms again; a rolled chord of the score stays free

  • sheet-music-page...

Read more

v1.0.12

v1.0.12 Pre-release
Pre-release

Choose a tag to compare

@PabloCSScobar PabloCSScobar released this 18 Oct 15:06

What's new in 1.0.12

New look. The whole app was redesigned: practice hub, song library, practice screen, effects, games and settings. A first-run welcome screen and a device status indicator in the header were added.

Practice mode that follows the score. Repeats, voltas and D.C./D.S./Coda/Fine play the way MuseScore plays them. Grace notes, trills, mordents, turns, arpeggios, fermatas, dynamics and the sustain pedal from the score are now part of practice and playback, with their own LED patterns. A new Chords setting (strict, normal or no time limit) controls how quickly the keys of a chord must go down. "Continue practice" resumes from the bar where you stopped.

Falling notes. A smoother clock and a faster renderer, ornaments, articulations and a pedal strip.

Free play. Octave zoom with a mini-map, a settings sheet and a drum kit view.

Games. Reaction Game, LED Keeper, Piano Battle and Tremolo were redesigned. LED Keeper pause now really freezes the game, and the Reaction Game shows its results on the page.

Fixes. The 14-day trial was over right after the first connection to WiFi when the system image was older than two weeks. The trial now counts from the first time the device gets the correct time from the internet. If your trial ended this way after installing the 1.0.10 or 1.0.11 image, it starts again after this update. Also many fixes to the sheet music cursor, playback of measure ranges and the WiFi setup.

Updates. The settings page no longer says "no updates" when the check failed (for example without internet), and it stops offering an update that is already installed. From the next update on, a failed update and the automatic return to the previous version are reported right away. Learning progress, statistics and the trial state are kept when updating from 1.0.11 (the old updater did not copy them).

All changes

New

  • api: accept ornaments, pedal_led and velocity_led; add practice capabilities
  • api: device status and LED strip test endpoints
  • effects: Lighting | Animations switch at the top of the Effects page, remembered, with a dot on what drives the strip now
  • effects: all key and background lighting options on the Effects page with a live key preview; drop the LED settings page
  • effects: tune the selected animation in place, idle options inline, preview/icon view toggle; drop the duplicate animation settings page
  • falling-notes: now/next and loop cards in the tablet side panel, readable hand colours
  • falling-notes: ornaments, articulations, pedal strip and played-note look
  • falling-notes: smooth clock, fast renderer and new practice UI
  • falling-notes: song-notes v2 contract and playback timing fields
  • falling-notes: types for the richer song-notes data
  • free-piano: drop hidden Studio/looper, pinch only over the notes, keep the sequencer
  • free-play: octave zoom with mini-map, settings sheet, drum kit view
  • led-keeper: redesign level picker and game screen, fix result screen
  • license: report trial sessions left in license status
  • parser: dynamics written as text in
  • parser: play repeats, voltas and D.C./D.S./Coda/Fine like MuseScore's RepeatList
  • parser: read volta endings, segno/coda/fine markers and D.C./D.S. jumps
  • piano-battle: redesign, correct key ranges and pause
  • playback: arpeggio rolls the chord note by note
  • playback: articulation gate and accents
  • playback: fermatas and text tempo changes
  • playback: grace notes sound to measure, like MuseScore
  • playback: listen from a given measure to the end (start_at_measure)
  • playback: note velocity from score dynamics and hairpins
  • playback: ornaments, volume and pedal on the LEDs in listening
  • playback: sustain pedal from score
  • playback: trills, mordents and turns play as ornament events
  • practice: Chords setting - strict, normal or no time limit for the keys of a chord
  • practice: LED patterns for hits, ornaments, arpeggio and pedal
  • practice: chord timing (tight / normal / off) comes with the start like the other fidelity fields
  • practice: drop the fullscreen button from the transport bar
  • practice: fidelity settings, hand colours, progress and pedal logic, start parameters, PL/EN texts
  • practice: follow the score pedal when the app plays the other hand
  • practice: heading for the pedal and volume settings card
  • practice: learn or listen from the measure picked on the transport bar
  • practice: live transport and loop/pickup fixes
  • practice: ornament and grace steps, practice_progress and pass summary events
  • practice: ornament and pedal settings, played-note HUD, pass summary card
  • practice: pedal pill asks to release the pedal when the score does not want it
  • practice: score transport bar and practice-mode fixes
  • practice: single-hand waiting state and wrong-note feedback
  • practice: "Continue practice" resumes from the bar where you stopped
  • reaction-game: redesign setup and game screens
  • sheet-music: cursor stands on the grace note of the step
  • songs: expose velocity, playback timing, ornaments, pedal and tempo in song-notes
  • songs: song notes carry the map from the time of the sound to the time on the score
  • tremolo: redesign page, fix speed slider and range wording
  • ui: animated LED strip previews on game tiles, recorded from the real game code
  • ui: device status chip and sheet in header (stage 2)
  • ui: effects hub redesign (stage 6)
  • ui: redesign stage 1 - visual foundation
  • ui: games and more screens redesign (stage 8)
  • ui: games as illustrated tiles instead of a plain list
  • ui: license screen and first-run welcome (stage 7)
  • ui: new practice hub (stage 3)
  • ui: practice session redesign (stage 5)
  • ui: song library redesign (stage 4)
  • wifi: handoff instructions when LEDsplay switches networks, redesign WiFi page

Fixes

  • updater: keep learning progress, stats and trial when updating from 1.0.11

  • updater: install requirements into the new venv on every update

  • updater: install only the versioned tarball with a verified checksum, report update status to the app, refuse a second concurrent update

  • updates: drop stale update offers, show failed checks and failed/rolled-back updates

  • effects: autoplay visible previews and speed up longer cycles

  • effects: record Tetris as a full-cycle timelapse instead of speeding up a 12 s clip

  • falling-notes: practiced hand wins on keys shared by both hands

  • falling-notes: use settings hand colours and keep transport popover above canvas buttons

  • free-piano: remember zoom, scroll position and visualization across refresh; keep the view centred when zooming

  • free-play: drum kit drawn in portrait after Piano -> Kit in landscape

  • games: pause/stop use the game's own ID, Reaction Game results on the page instead of a dialog

  • i18n: plain hyphen instead of em dash in all visible texts

  • i18n: plain hyphen instead of em dash in pedal and optional ornament texts

  • led-keeper: pause freezes the game time

  • leds: the same key struck again goes dark for 80 ms first

  • license: trial counts 14 days from the first NTP sync, not from the image clock

  • license: trial of a customer who installed the 1.0.10 or 1.0.11 image starts again

  • optimize practice views and LED settings

  • parser: a repeat walk over its limit falls back to the plain measure order

  • parser: display timeline in score position, independent of tempo

  • parser: do not play cue notes

  • parser: grace notes written one after another get their own times

  • parser: match each of a direction on its own for D.C./D.S./Fine

  • parser: measure lengths and numbering follow OSMD

  • parser: public measure number follows the MusicXML number like the sheet music

  • parser: read volta numbers written with a trailing dot ("1.")

  • parser: repeat_list compiles with Cython again

  • parser: take pitch from only and apply attributes in document order

  • playback: close ties at repeat jumps

  • playback: honor measure ranges and preserve position on stop

  • playback: play a leading grace note before the first beat

  • playback: range window ends before the first measure played by a D.C./D.S. jump

  • playback: report current measure on the expanded timeline

  • playback: sound a tied note that starts before the chosen measure

  • playback: treat staff 3+ as left hand

  • point in-app purchase link to /checkout instead of bare domain

  • practice: HUD and key hints show the key of the ornament sub-step, not the main note

  • practice: accept slowly rolled chords

  • practice: build chords in time order so a grace note does not split them

  • practice: cursor of a grace note step stands on the note it leads into

  • practice: do not replay voltas after a D.C./D.S. jump in a measure range

  • practice: fit the session screen on phones with the transport bar

  • practice: grace note line names the main note during the grace step

  • practice: highlight the chosen measure numbers without shifting them for a pickup

  • practice: keep chord notes after a mistake and while the student holds the pedal

  • practice: light shared keys in the practiced hand colour

  • practice: persist zoom and synchronize playback and navigation

  • practice: release accompaniment notes after their written length

  • practice: staff 3+ falls back to left hand

  • practice: the keys of a chord must go down within 250 ms again; a rolled chord of the score stays free

  • sheet-music-page: no resize listener per OSMD instance, release OSMD on destroy

  • sheet-music: debounce zoom re-render with a CSS scale preview

  • sheet-music: keep cursor colour and alpha after re-render

  • sheet-music: keep the cursor on the sounding note during playback

  • sheet-music: practice cursor no longer one step behind when the backend rounds the time to whole ms

  • sheet-music: remove cursor step limits and avoid double redraw on rewind

  • sheet-music: reuse one OSMD instance when the song changes

  • sheet-music: state the measure number settings explicitly

  • sheet-music: use MusicXML measure numbers instead of OSMD p...

Read more

v1.0.11

Choose a tag to compare

@PabloCSScobar PabloCSScobar released this 04 Aug 14:09

Release v1.0.11

v1.0.10

Choose a tag to compare

@PabloCSScobar PabloCSScobar released this 16 May 14:42

Release v1.0.10

v1.0.9

Choose a tag to compare

@PabloCSScobar PabloCSScobar released this 08 May 21:31

Release v1.0.9

v1.0.8

Choose a tag to compare

@PabloCSScobar PabloCSScobar released this 08 May 21:09

Release v1.0.8