Skip to content

Stellody v0.2.0

Choose a tag to compare

@oernster oernster released this 30 Aug 08:38
· 81 commits to main since this release

Release notes

Since the last release.

The track's own waveform, with the playhead crossing it

The bar along the bottom of the window no longer fills up. It draws the
track's own amplitude, mirrored about the middle, with the part already played
in the accent colour and the rest dimmed; a line marks where playback has
reached. A bar says how far into a track playback has got. A waveform says
that as well as what is coming: where the quiet passage sits, where the piece
opens out, whether the thing about to arrive is a drum or a breath.

The shape covers a whole file rather than one track, because a cue sheet album
is one file holding many tracks and measuring it once serves all of them. Each
track then takes the part of that measurement belonging to it. A track too
short to fill a single bucket still gets a shape rather than nothing, coarse
though that shape is.

Measuring means decoding the file, which is far too slow to do while the
interface waits, so it happens on a thread of its own and the answer is kept.
A file already measured draws the moment the track starts; one that is not
draws a flat line until its shape arrives. Skipping quickly through an album
decodes nothing it passes over; an answer that arrives after the listener has
moved on is dropped rather than drawn over the track now playing.

What is kept lives in Stellody's own directory, named by a digest of the
file's path rather than by the path itself, since a music folder's names are
arbitrary where a filesystem's are not. Each record is checked against the
file's size and modification time, so a file replaced under the same name is
measured again rather than drawn from a record that no longer describes it.
Peaks are held to four places, which is finer than any display can show and
keeps a whole file's record to a few kilobytes.

Nothing about this reaches the music folder. The measurement is Stellody's own
state, written where Stellody's own state lives, which the read-only guard
proves rather than promises.

Where a track has reached, plus a way to move within it

The bar shows how far into the track playback has got, with the time either
side of it. Clicking anywhere along it moves there, rather than nudging
forward a page at a time as a slider otherwise would: clicking three quarters
of the way along a track means three quarters of the way along. It is
reachable from the keyboard like everything else.

The figure it shows is corrected. The audio engine reports what it has
DECODED, which runs a buffer ahead of what is leaving the speakers, so a
display fed from it raw would sit ahead of the music and a track would appear
to finish before it had. The engine now states how far ahead it is running and
the transport subtracts it. Seeking is corrected the same way in reverse, so
asking for a point lands on that point rather than a buffer short of it.