Skip to content

v0.8.0 — Two silences, and a place for everything

Choose a tag to compare

@TerraByte-Dev TerraByte-Dev released this 30 Aug 03:39
· 7 commits to main since this release

⚠️ This release has a MIDI bug. Install v0.8.1.

If MIDI stopped working after you installed 0.8.0, that is this bug and it is not your setup.

This release changed how the chosen MIDI port is stored — from a port number to a port
name — and did not convert the old value. If you had ever picked a port by hand, the saved
number was read as a device name, matched nothing, and Keys opened no input at all:
could not open any MIDI input, with every port listed and silent. A saved 0 survived by
accident, so this hit exactly the people who had already gone looking for a working port.

You can fix it right now, without updating — confirmed working in the field:

Settings → MIDI input → "Listen to everything"

That clears the bad setting on the build you already have, and it sticks. Then update to
v0.8.1, which fixes the cause and two worse defects found while chasing it.


Two things in this release were not features. They were failures with no signal attached
to them — the app looked fine, reported fine, and made no sound. Both are fixed, and both
now say what is wrong.

Your keyboard works, whichever one it is

Keys opened exactly one MIDI input: the first one, or the one you last picked. A single-port
piano never made that wrong, so it stood for months. A controller that exposes two inputs
— an Alesis V49 shows up as both V49 and MIDIIN2 (V49) — had a one-in-two chance of having
its keys on the port nobody opened. When it lost, the app listed both ports, reported no
error, lit no keys and made no sound.

Keys now listens to every MIDI input at once. There is nothing to pick and nothing to get
wrong. A device that mirrors its keys onto both ports still sounds each note once, and a port
another application is holding no longer takes the rest down with it.

Settings → MIDI input shows a message counter per port. Press a key: the port whose
counter moves is your keyboard. Pinning one input still works and is now remembered by name,
because Windows hands out port numbers in plug order — a saved number quietly came to mean a
different device the moment anything else was plugged in.

The audio device that could never open

Any output endpoint whose name is longer than 31 characters could not be opened, ever. The
name was being truncated on its way to the driver, the open failed, and every layer above
reported success — started: true, a confident 3.00 ms, and silence. Five of the seven
endpoints on the development machine were over the limit; Bluetooth headphones essentially
always are.

Now: the full name reaches the driver, a refused device falls back to the system default and
says so, and the Audio output panel shows -- instead of inventing a latency for a stream
that was never opened.

Where things live

The tabs were reorganised around when you reach for something rather than how it is built.

  • Play — Instruments, Effects, the metronome, the Loop station, Scale highlighter.
  • Practice — Now, Timing, Exercises, Songs.
  • Tools — Touch response, Pedal, Chords & scales, Backing tracks.
  • Layers — splits and layers.

The metronome moved to Play because you look at it while you use it. Touch response and Pedal
left Play for Tools because you set them up once and stop thinking about them. Songs moved to
Practice, because Play is the tab you are in when you want a tone, not when you want
something to play along to.

Profiles replace the Presets panel and live inside Instruments. A profile is a sound, its
zones, and the two effect units together — saved, renamed and loaded from one place. The 62
presets that ship with Keys still cannot touch a reverb you tuned; only a profile you saved
yourself carries the units, and only that restores them.

Sheet music is a mode of the roll, not a panel of its own. Every song row has a Roll
button and a Sheet button: two doors into the same full-screen player, same clock, and you
can switch between them once you are in there.

Mix amounts — zone volume, pan, the reverb and chorus sends — are dials now. Anything measured
in its own units (BPM, Hz, milliseconds, a split point) is still a slider, because a dial would
be lying about the scale.

Removed

  • The Sound panel in Play — it was a second copy of the volume already in the top bar.
  • Events in Settings — queue depth belongs in a debugger, not in a piano.
  • Pick up where you left off.
  • The standalone Sheet music panel, replaced by the roll's sheet mode. Playing a score back
    through the synth went with it; the roll makes no sound of its own, on purpose, which is why
    a play-along still works with the audio engine down.