Documentation
¶
Overview ¶
Command mixmusic is a desktop music player that brings Spotify and YouTube Music together in one customizable interface.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package builtin holds the add-ons MixMusic ships with, laid out as the add-ons folder of the user: themes/<id>/theme.json and its files.
|
Package builtin holds the add-ons MixMusic ships with, laid out as the add-ons folder of the user: themes/<id>/theme.json and its files. |
|
internal
|
|
|
addons
Package addons manages themes and plugins: those MixMusic ships with, those the user installs from the community registry, and those they put in the add-ons folder themselves.
|
Package addons manages themes and plugins: those MixMusic ships with, those the user installs from the community registry, and those they put in the add-ons folder themselves. |
|
app
Package app wires MixMusic together: the services its windows call, the player, and its place on the desktop: windows, the tray, media keys and notifications.
|
Package app wires MixMusic together: the services its windows call, the player, and its place on the desktop: windows, the tray, media keys and notifications. |
|
artwork
Package artwork picks the color of a piece of artwork, which themes use as the accent of what plays.
|
Package artwork picks the color of a piece of artwork, which themes use as the accent of what plays. |
|
audio
Package audio is MixMusic's own audio engine: it plays the Opus audio of YouTube's WebM files on two decks, so that one track can fade into the next, through the preamp, equalizer, levelling and analyser of the web player MixMusic had, whose Web Audio nodes it reproduces.
|
Package audio is MixMusic's own audio engine: it plays the Opus audio of YouTube's WebM files on two decks, so that one track can fade into the next, through the preamp, equalizer, levelling and analyser of the web player MixMusic had, whose Web Audio nodes it reproduces. |
|
audio/output
Package output plays the native engine's audio on the system's default output device, as float32 stereo at 48 kHz, which the system converts to the device's own format, following the default device when the user changes it: through WASAPI on Windows, an Audio Queue on macOS, and PulseAudio, which PipeWire serves as well, or else ALSA on Linux.
|
Package output plays the native engine's audio on the system's default output device, as float32 stereo at 48 kHz, which the system converts to the device's own format, following the default device when the user changes it: through WASAPI on Windows, an Audio Queue on macOS, and PulseAudio, which PipeWire serves as well, or else ALSA on Linux. |
|
diag
Package diag keeps what helps tell what went wrong: a log file of what MixMusic reports, without the secrets it may hold, and the report Go writes when MixMusic crashes, which the next start offers to send.
|
Package diag keeps what helps tell what went wrong: a log file of what MixMusic reports, without the secrets it may hold, and the report Go writes when MixMusic crashes, which the next start offers to send. |
|
discord
Package discord shows what MixMusic plays on the user's Discord profile, as Rich Presence.
|
Package discord shows what MixMusic plays on the user's Discord profile, as Rich Presence. |
|
lastfm
Package lastfm scrobbles what MixMusic plays to Last.fm.
|
Package lastfm scrobbles what MixMusic plays to Last.fm. |
|
library
Package library keeps what the user collects in MixMusic itself, across services: liked tracks, playlists that mix tracks of every service, the history of what they played and their recent searches.
|
Package library keeps what the user collects in MixMusic itself, across services: liked tracks, playlists that mix tracks of every service, the history of what they played and their recent searches. |
|
lyrics
Package lyrics finds the lyrics of tracks on LRCLIB, an open database of lyrics synchronized to the music, and reads the LRC format they come in.
|
Package lyrics finds the lyrics of tracks on LRCLIB, an open database of lyrics synchronized to the music, and reads the LRC format they come in. |
|
match
Package match finds a Spotify track's recording on YouTube Music, so that Spotify tracks play through MixMusic's own player, with its equalizer, crossfade and visualizer, and without Spotify Premium.
|
Package match finds a Spotify track's recording on YouTube Music, so that Spotify tracks play through MixMusic's own player, with its equalizer, crossfade and visualizer, and without Spotify Premium. |
|
media
Package media defines the catalog that every music source shares: tracks, albums, artists and playlists, whichever service they come from.
|
Package media defines the catalog that every music source shares: tracks, albums, artists and playlists, whichever service they come from. |
|
native
Package native draws MixMusic's native interface, a beta beside the web one: windows MyGo draws itself with its ui package, without a webview.
|
Package native draws MixMusic's native interface, a beta beside the web one: windows MyGo draws itself with its ui package, without a webview. |
|
nowplaying
Package nowplaying shows what MixMusic's own audio engine plays in the system's media controls, and passes on what they ask: macOS's Now Playing, which Control Center, the media keys and headphones reach, an MPRIS player on Linux, which desktops show and pass their media keys to, and Windows' media flyout, which the volume keys and Quick Settings show.
|
Package nowplaying shows what MixMusic's own audio engine plays in the system's media controls, and passes on what they ask: macOS's Now Playing, which Control Center, the media keys and headphones reach, an MPRIS player on Linux, which desktops show and pass their media keys to, and Windows' media flyout, which the volume keys and Quick Settings show. |
|
opus
Package opus decodes Opus audio (RFC 6716 and RFC 8251): a pure Go port of the decoder of libopus 1.6.1, float build, under the BSD license of LICENSE.libopus.
|
Package opus decodes Opus audio (RFC 6716 and RFC 8251): a pure Go port of the decoder of libopus 1.6.1, float build, under the BSD license of LICENSE.libopus. |
|
opus/celt
Package celt is the CELT decoder of Opus (RFC 6716, section 4.3), the codec of music and of the high band of hybrid frames: a port of libopus 1.6.1's float build, under the BSD license of LICENSE.libopus in internal/opus.
|
Package celt is the CELT decoder of Opus (RFC 6716, section 4.3), the codec of music and of the high band of hybrid frames: a port of libopus 1.6.1's float build, under the BSD license of LICENSE.libopus in internal/opus. |
|
opus/opustest
Package opustest checks decoders against the Opus test vectors of RFC 8251: their files, and the quality metric of libopus's opus_compare, which decides whether a decoder conforms.
|
Package opustest checks decoders against the Opus test vectors of RFC 8251: their files, and the quality metric of libopus's opus_compare, which decides whether a decoder conforms. |
|
opus/rangedec
Package rangedec is the range decoder of Opus (RFC 6716, section 4.1), which SILK and CELT read their symbols with: a port of entdec.c and entcode.c of libopus.
|
Package rangedec is the range decoder of Opus (RFC 6716, section 4.1), which SILK and CELT read their symbols with: a port of entdec.c and entcode.c of libopus. |
|
opus/silk
Package silk is the SILK decoder of Opus (RFC 6716, section 4.2): a port of the SILK decoder of libopus 1.6.1 as its default float build compiles it (no deep PLC, OSCE, DRED or QEXT), under the BSD license of LICENSE.libopus in internal/opus.
|
Package silk is the SILK decoder of Opus (RFC 6716, section 4.2): a port of the SILK decoder of libopus 1.6.1 as its default float build compiles it (no deep PLC, OSCE, DRED or QEXT), under the BSD license of LICENSE.libopus in internal/opus. |
|
player
Package player plays MixMusic's queue: one queue of tracks of every service, played by MixMusic's own audio engine, or on a Spotify device, a Spotify Connect device or MixMusic itself, as each track needs.
|
Package player plays MixMusic's queue: one queue of tracks of every service, played by MixMusic's own audio engine, or on a Spotify device, a Spotify Connect device or MixMusic itself, as each track needs. |
|
plugins
Package plugins runs MixMusic's plugins: each in a JavaScript runtime of its own (sobek, an ECMAScript engine in Go), on a goroutine of its own, with the API of docs/plugins.md.
|
Package plugins runs MixMusic's plugins: each in a JavaScript runtime of its own (sobek, an ECMAScript engine in Go), on a goroutine of its own, with the API of docs/plugins.md. |
|
proc
Package proc starts helper programs, such as yt-dlp, without showing a console window for them on Windows.
|
Package proc starts helper programs, such as yt-dlp, without showing a console window for them on Windows. |
|
settings
Package settings defines the user's preferences and their defaults.
|
Package settings defines the user's preferences and their defaults. |
|
spotify
Package spotify reads the Spotify catalog and the user's library through the Spotify Web API, and plays tracks on Spotify Connect devices.
|
Package spotify reads the Spotify catalog and the user's library through the Spotify Web API, and plays tracks on Spotify Connect devices. |
|
store
Package store keeps values in JSON files.
|
Package store keeps values in JSON files. |
|
stream
Package stream finds the audio streams of YouTube videos with yt-dlp, and serves them to the player's audio element through a local scheme, with range requests, so it can seek.
|
Package stream finds the audio streams of YouTube videos with yt-dlp, and serves them to the player's audio element through a local scheme, with range requests, so it can seek. |
|
taskbar
Package taskbar puts the player's buttons on the thumbnail of a window's taskbar button, which Windows shows while the pointer rests on the button: previous, play or pause, and next, as music players have them there.
|
Package taskbar puts the player's buttons on the thumbnail of a window's taskbar button, which Windows shows while the pointer rests on the button: previous, play or pause, and next, as music players have them there. |
|
tools
Package tools finds and installs the programs MixMusic runs: yt-dlp, which finds the audio streams of YouTube, and a JavaScript runtime, which yt-dlp needs to solve the challenges YouTube sends.
|
Package tools finds and installs the programs MixMusic runs: yt-dlp, which finds the audio streams of YouTube, and a JavaScript runtime, which yt-dlp needs to solve the challenges YouTube sends. |
|
webm
Package webm reads the audio of WebM and Matroska files, such as the Opus audio YouTube serves (itags 249, 250 and 251): the packets of their first audio track, with their times, and seeking by their Cues.
|
Package webm reads the audio of WebM and Matroska files, such as the Opus audio YouTube serves (itags 249, 250 and 251): the packets of their first audio track, with their times, and seeking by their Cues. |
|
youtube
Package youtube reads YouTube Music's catalog through InnerTube, the API the YouTube Music website itself uses: search, the home feed, albums, artists, playlists and radios.
|
Package youtube reads YouTube Music's catalog through InnerTube, the API the YouTube Music website itself uses: search, the home feed, albums, artists, playlists and radios. |
|
tools
|
|
|
genicon
command
Command genicon draws the MixMusic icons: the app icon and the tray icon.
|
Command genicon draws the MixMusic icons: the app icon and the tray icon. |
|
registry
command
Command registry builds the indexes of the community's themes and plugins that MixMusic's marketplace reads, and checks every add-on on the way: community/registry-2.json, of community/themes and community/plugins, for MixMusic's own interface, and community/registry.json, of community/web, for the web interface of the versions before it, which keep reading it there.
|
Command registry builds the indexes of the community's themes and plugins that MixMusic's marketplace reads, and checks every add-on on the way: community/registry-2.json, of community/themes and community/plugins, for MixMusic's own interface, and community/registry.json, of community/web, for the web interface of the versions before it, which keep reading it there. |
Click to show internal directories.
Click to hide internal directories.




















