Repository navigation
Face
The player's own face: what the panel shows while the fabric plays. It is a consumer of the fabric, not a plugin: it reads the playback and delivery projections and draws Now Playing on the board's 240 by 320 panel, in the evo family's themes, in three styles, at all four rotations. The same code draws to a PNG on the host, which is where these renders come from.

Title, artist and album; the source and the stream's format (codec, rate, bits) in the corner; the time played and the duration; previous, play/pause and next; the volume with its level; the album's picture; and a bar for Now Playing, the library and settings. Three styles:
- Disc. The art sits in a vinyl ring and the progress is the arc around it; the strip below the text is the volume.
- Card. The art is a rounded square. In portrait the title, artist and album sit on its foot, the picture showing through a scrim under them; in landscape the text is beside it. The strip is the progress and the volume has its own row.
- Faders. The disc's art without its ring. In portrait the progress is a fader down the left and the volume a fader down the right, each filling from its foot, with the times above and below the one and the speaker and the level above and below the other; the text keeps to the middle and the transport has nothing near it that a thumb could brush on the way — the reason for the style, from the first owner's notes. In landscape there is no side to spare, so it is the disc's art with the card's strip.
In landscape the bar becomes a rail on the left. Rotations 0, 90, 180 and 270 share one layout engine; a theme and a style look the same at any of them.

The five themes are evo-ui's, token for token: each colour is taken from the shell's style sheet, converted to sRGB once and quantised to the panel's RGB565, so the face and the shell share a palette by construction.



Evo Default, Night Sky, Sunrise, Air and Liquid, left to right.
Text is Inter (SIL Open Font License), rasterised when the firmware is built into a four-bit glyph atlas at the sizes the face uses, so the board renders no fonts at run time. Every shape is drawn as anti-aliased rows blended against what is under it; the panel is 240 by 320 and the smooth edges in the renders are what the board shows. A full frame costs tens of milliseconds over the panel's SPI, so the face repaints the whole screen only when the scene changes (track, status, format, style, theme) and otherwise only what moved: the second's worth of progress, or the volume slider. The first frame is painted before the card is read, "Reading the card…" on the strip, and the backlight comes on with it: about five seconds after power or a restart, the music a second behind.
Behind the navigation are two list pages in the same frame: a header with a back chevron, rows, and at the foot a bar with the track in hand and its play/pause. Library lists the sources — Card and Network — and their folders as each source does, folders first, with the track in hand in the accent and a track above the board's rate ceiling greyed. Settings lists the player's facts, and the rows marked › are settings a tap changes; see Configuration. Both scroll by a drag.
On the board, playing from the card, taking touch: the transport, a drag on the volume or the fader, a lift on the ring or a drag on the strip or the fader to seek, the library and the settings. The album's cover.jpg (or folder.jpg, albumart.jpg, front.jpg) is decoded on a worker thread and shown in the disc or on the card; a folder without one shows the note. The renders on this page are made with evo-esp32-host --gallery DIR, one frame for every rotation, style and theme, each with a made-up cover.
evo-esp32 is designed, built and maintained by one developer in his own time. If it has earned a place on your bench:
Provided as-is under the Business Source License 1.1; sponsorship is a thank-you, not a purchase: it buys no priority, no features and no support agreement. evo™ and evoframework™ are trademarks of Just a Nerd.