You are browsing as a guest. Sign up (or log in) to start making projects!

6h 7m 27s logged

Spectralis devlog #2
—Hello again proggers—
New project, same yapping. This one’s Spectralis — the WinForms-to-Avalonia refugee that somehow ended up with a spin wheel, notepads, dead zones, and Spotify playlist sync bolted onto it. 917 commits deep and counting.
Cat or dog? RowBackground
print(f”I try to make stu{2f} which {actually_renders} {2day}”)
Okay let’s get into it~
—Yap—
This stretch was less “one big feature” and more “death by a thousand small horrors,” which honestly might just be what maintaining a music app is. Playlists, now playing, the visualizer pipeline, and a wheel of all things all got touched.
a spin wheel. in a music app. sure
—The Great Suffering—
1 — Playlists Looked Like a Log File
For way too long, the playlist view rendered like plain rows in a terminal instead of, y’know, an app. Turns out library explicitly set RowBackground and playlists just… didn’t. So it fell back to the theme’s default accent-tinted fill on every single row instead of the real styling. One missing property. That’s it. That’s the bug.
found staring at my own code for an hour
2 — Every Nav Click Rebuilt The World
ContentControl was tearing down and rebuilding the entire section view from scratch on every single navigation click. Fixed by caching views per viewmodel instead of nuking them each time. App feels like it’s not fighting itself anymore.
3 — Library Load Was Blocking the Window From Even Opening
Big libraries meant the window just… wouldn’t show up. Load was sitting on the UI thread like it owned the place. Moved off it. Window opens now regardless of how unhinged your library size is.
4 — Spectrum Bars Were Snapping
FFT window was running back-to-back instead of overlapping, so spectrum/spectrogram/loudness only actually updated every ~185ms even at 60fps render — bars were snapping to new values instead of moving. Bumped overlap to 75% and eased toward target instead of drawing raw values. Smooth now. Suspiciously smooth.
5 — Notepads and the Wheel Happened
Somewhere in here a full notepad feature got built — embed model, tag service, docked panel in now playing, pop-out window, save-to-track-tags — and then immediately got wired into a spin wheel with weighted entries, its own model, and a saved-wheels list. Neither of these were planned at the start of the week. Both exist now.
6 — Spotify Actually Behaves
Spotify stopped pausing forever, stopped lying about the queue, stopped refusing to shut up, and playlists now actually sync instead of just vibing. Also Discord presence shows Spotify tracks now instead of just going blank like it forgot what music was.
7 — Small Bugs, Deployed With Extreme Prejudice
Soundcloud playhead was showing the previous track’s end position on load, fixed. Word mode wasn’t saving timestamps so exports came out empty, fixed. Track-switch click (and the pop when another app grabs the audio device) got a quick fade instead. Dead zones stopped being OBS-only and now shift the app’s own layout too.
—FAQ (no one asked these but they are here)—
Q: What is Spectralis?
A: A local + Spotify + SoundCloud music player with a visualizer pipeline, OBS integration, and apparently a spin wheel now. Originally WinForms, migrated to Avalonia across 917 commits.
Q: Why does a music player need dead zones?
A: For OBS overlay layouts — panels and toasts need to know where not to render so they don’t cover your stream elements. It’s a layout constraint system wearing a spooky name.
Q: Was the RowBackground bug really just one missing line?
A: Yes. I’m still thinking about it.
Q: Is the wheel feature load-bearing or a bit?
A: Unclear. It has weighted spins, saved wheel lists, and its own viewmodel. Feels load-bearing now.
Q: What’s next?
A: Whatever the changelog for the version after 5.4.0 ends up needing. Probably something I haven’t broken yet.
—This is the end*—
*end for now, RowBackground permitting
ADIOS!!!😎😎😎😎

0
6

Comments 0

No comments yet. Be the first!