Inspiration Music apps today are either functional but visually flat, or pretty but bloated. We grew up with the era of winamp-style visualizers and kept asking: why does nobody do both anymore — a player that sounds great, respects your library, and makes listening feel like an event? Sollin V2 is our answer.
What it does Sollin V2 is a cross-platform music player (desktop + mobile) that brings multiple music sources into one library. You get cross-platform search and playback, local music, playlists, listening stats, desktop lyrics, downloads and cloud sync — plus a full-screen "FX mode" where your album art turns into an interactive GPU particle scene, lyrics render in 3D with karaoke-style highlighting, and everything pulses to the beat of the track.
How we built it Electron + Vue 3 + Pinia + TypeScript on desktop; Flutter on mobile. A Web Audio graph with 10-band EQ, convolution reverb, spatial audio, pitch shifting and loudness normalization. A real-time beat detector plus an offline song analysis pipeline that maps the strongest beats of each track, so the visuals hit on time instead of just wiggling. Three.js for FX mode: GPU particles driven by audio bands, a 3D lyric stage with per-line/per-word progress, and theme colors extracted from the album art. A lightweight backend for accounts and sync. Challenges we ran into Making visuals feel musical is far harder than making them move. Our first version had particles jittering randomly until we rebuilt the pipeline around per-band energy and beat grids. Porting a legacy vanilla-JS 3D visual system into a typed Vue codebase without losing its feel — most of the work was reading, not writing. Keeping the main bundle small while shipping Three.js: the FX scene is lazy-loaded and only spins up when you enter FX mode. Accomplishments that we're proud of FX mode: album-art particles, 3D lyrics and beat-synced motion feel like one scene, not three bolted-together effects. The player is daily-driver stable — playlists, stats, desktop lyrics and sync all survive restarts. One codebase, two platforms, and a design language that survived the port. What we learned Audio-reactive visuals are 10% rendering and 90% analysis — the data you feed the GPU matters more than the shader. "Just port it" is never just a port. Behavior lives in the details: easing curves, frame budgets, and where state resets. Performance is a feature. Frame gating and lazy loading keep the player smooth on weak machines. What's next for music-player Beat-map caching and prefetch, so FX handoff between tracks is instant More particle presets and a shareable preset format FX mode parity on mobile, and 3D lyric translation layers
Built With
- develop
Log in or sign up for Devpost to join the conversation.