How bariswha/chorus-for-soundcloud works
Chorus is a Chromium extension for shared SoundCloud listening, social features, and personal listening tools. A user opens its panel on SoundCloud; the content script coordinates UI actions, Jam state and playback synchronization, while the page script controls the SoundCloud player through a private message bridge. The service worker owns identity, social and Jam messaging, relays, lyrics requests, and stats operations. README documents additional queue permissions, reactions, presence, chat, sleep timer and localization; unsampled UI and service-worker internals limit the exact links shown for those capabilities.
Main entry points: sw.js Service worker · content.js Content sync engine · ui.js Chorus panel · bridge.js Page bridge
Components 20
SoundCloud interaction
- Chorus panel
extension/ui.js - Content sync engine
extension/content.js - Page bridge
extension/bridge.js - Player integration
extension/page.js
Jam coordination
- Service worker
extension/sw.js - Jam state and controls
extension/sw.js - Playback sync
extension/content.js - Shared queue
extension/sw.js
Friends and chat
- Friends and presence
extension/sw.js - Encrypted messaging
extension/sw.js
Personal listening
- Listening stats
extension/stats.js - Stats and recap UI
extension/ui.js - Lyrics lookup
extension/lyrics.js
Security and transport
- Network validation
extension/clean.js - Crypto and MQTT
extension/net.js - English and Turkish
extension/i18n.js
Other components
- Listener
- SoundCloud tab
- MQTT relays
- LRCLIB
Connections 20
- Listener → Chorus panel: opens
README.md - Chorus panel → Content sync engine: sends actions
- Content sync engine → Service worker: sends requests
- Content sync engine → Page bridge: uses port
extension/content.js - Page bridge → Player integration: forwards messages
extension/bridge.js - Player integration → SoundCloud tab: controls player
extension/page.js - Content sync engine → Playback sync: synchronizes
extension/content.js - Service worker → Jam state and controls: dispatches Jam events
extension/sw.js - Jam state and controls → Shared queue: manages queue
extension/sw.js - Service worker → Friends and presence: manages friends
README.md - Service worker → Encrypted messaging: routes messages
README.md - Service worker → Crypto and MQTT: uses
extension/sw.js - Crypto and MQTT → MQTT relays: publishes encrypted traffic
README.md - Service worker → Network validation: validates network data
extension/sw.js - Content sync engine → Listening stats: records listening
- Service worker → Listening stats: reads summaries
extension/sw.js - Chorus panel → Stats and recap UI: requests summaries
extension/ui.js - Service worker → Lyrics lookup: requests lyrics
extension/sw.js - Lyrics lookup → LRCLIB: fetches lyrics
extension/lyrics.js - Chorus panel → English and Turkish: uses strings