How gort-trindade/sonar-music-player works
Sonar is an Electron desktop player for browsing and listening to local music. The user chooses a player layout in the launcher, then uses the renderer to organize a library, select tracks, and play them with audio customization; lyrics and cover-driven visuals enrich playback. Electron’s main process creates windows and handles file metadata and FLAC decoding, with a preload bridge exposing selected capabilities to renderer code. The README also documents themes, layouts, and Last.fm scrobbling. Those features are represented from documentation and the tree; their detailed wiring is not established by the sampled excerpts.
Main entry points: index.js Player renderer · main.js Electron main · preload.js Preload bridge · launcher.js Layout launcher
Components 16
Electron app
- Layout launcher
renderer/js/launcher.js - Electron main
main.js - Preload bridge
preload.js
Library and playback
- Player renderer
renderer/js/index.js - Library organization
renderer/js/index.js - Track metadata
main.js - Playback and effects
renderer/js/index.js - FLAC decoder
flac-worker.js - PCM audio cache
main.js
Playback presentation
- Synchronized lyrics
renderer/js/index.js - Covers and visualizer
renderer/js/index.js - Layouts and themes
renderer/js/index.js
External integration
- Last.fm scrobbling
renderer/js/index.js
Other components
- Listener
- Local music files
- Last.fm service
Connections 19
- Listener → Layout launcher: chooses layout
- Layout launcher → Preload bridge: launches player
- Preload bridge → Electron main: sends IPC
- Electron main → Player renderer: loads window
- Listener → Player renderer: controls playback
- Player renderer → Preload bridge: requests file services
- Preload bridge → Electron main: forwards requests
- Electron main → Local music files: reads files
- Electron main → Track metadata: parses tags
- Electron main → FLAC decoder: dispatches decode
- FLAC decoder → Electron main: returns PCM
- Electron main → PCM audio cache: reads and writes
- Player renderer → Library organization: organizes library
- Player renderer → Playback and effects: plays and processes
- Player renderer → Synchronized lyrics: renders lyrics
- Player renderer → Covers and visualizer: renders visuals
- Player renderer → Layouts and themes: applies appearance
- Player renderer → Last.fm scrobbling: scrobbles tracks
- Last.fm scrobbling → Last.fm service: sends scrobbles