mixmusic star on github

mixmusic

Spotify and YouTube Music in one free, open‑source desktop player.

Version 0.4.0 · MIT · macOS, Windows, Linux · other systems

One search across both services, one queue that mixes them, one library that keeps them, in a player whose whole look you can change. Source on GitHub.

MixMusic's home page in the default Mix theme: the giant word home, flat cyan, amber, magenta and lime tiles for jump back in, add spotify, liked songs and your mixes, a recently played shelf, and the up next queue playing Let It Happen by Tame Impala.
Now playing: MixMusic 0.1.0 on Windows, in the default Mix theme.

queue

up nextshufflerepeatradio

The Rumours album page by Fleetwood Mac with play and shuffle, its track list, and the up next queue beside it.
An album page, with what plays next always in view.

Tracks of both services, in one queue that keeps going.

  • Queue from anywherePlay next or add to the queue from any track, album or playlist, then drag to reorder.
  • Shuffle, repeat, crossfadeAnd a radio of what you played that carries on when the queue runs out.
  • Spotify, with or without PremiumSpotify tracks play on a Spotify Connect device, or from their recording on YouTube Music in MixMusic's own player.

library

likedmixeshistorystats

Liked songs and mixes that hold tracks of any service, with your history and stats beside them.

The library page with liked, mixes and history pivots, and liked songs from Random Access Memories, Rumours, Currents and In Rainbows.
Liked songs, your mixes and history in one place.
A mix called late night drive, 9 tracks and 46 minutes, with tracks by Tame Impala, Daft Punk, Radiohead and Lorde.
A mix you named, ordered your way.
The stats page for this week: 60 tracks for 4 hours 16 minutes, all from YouTube Music, and a day by day chart of cyan bars for the minutes listened from Tuesday to today, 47 minutes today.
Your week in minutes, day by day, with a table view too.

Import a Spotify or YouTube Music playlist into a mix and keep adding to it from either service. Search inside a playlist, a mix or your liked songs, and sort them by title, artist or length. The screenshots show a demo library.

explore

newchartsmoods & genresrelated

Somewhere to find what you have not heard yet.

  • New albums and singlesWhat came out lately, and the songs trending now.
  • The chartsThe top videos and artists of your country.
  • Moods and genresChill, focus, workout and dozens more, each a tile that opens its playlists.
  • RelatedUnder now playing: songs, playlists and artists like what you hear.

Explore comes from YouTube Music, so it needs no account.

The explore page on moods and genres: the pivots new, charts and moods and genres, and flat cyan, magenta, lime and amber tiles for chill, commute, energize, feel good, focus, gaming, party, romance, sad, sleep and workout.
Moods and genres, each tile a door to its playlists.
The foot of the now playing page for Let It Happen by Tame Impala: a shelf of similar artists, MGMT, Foster The People, Midnight Juggernauts, Men I Trust and The Strokes, and a shelf of Tame Impala albums from Deadbeat to InnerSpeaker.
Related, at the foot of now playing: artists like this one, and the rest of its albums.

accounts

youtube musicspotifylast.fmdiscord

Settings, accounts: the youtube music group with its sign in to youtube music button and a note that MixMusic never sees your password, and the last.fm group with three steps and fields for the API key and the shared secret.
Settings › Accounts, where you sign in to YouTube Music and connect Last.fm.

Sign in, and your own music comes along.

  • YouTube MusicYour home feed, and your liked songs, playlists, albums and artists. You sign in on Google's own page, so MixMusic never sees your password.
  • SpotifyYour library there, once you sign in with an app of your own from Spotify's developer dashboard.
  • Last.fmEvery track you hear joins your profile, and plays made offline go out once you are back. It takes an API account of your own from Last.fm.
  • DiscordYour profile shows what plays, with its artwork and the time left, under an application you make in Discord's developer portal.

Like a song, save an album or a playlist, or follow an artist, and it reaches YouTube Music or Spotify too.

lyrics

syncedequalizerlevellingcrossfade

Lyrics that follow the song, and a sound you tune.

Synced lyrics from LRCLIB and YouTube Music light up line by line on the now playing page, or beside whatever page you are on. To read them whole, show them as plain text.

The now playing page for Instant Crush by Daft Punk and Julian Casablancas: the album sleeve with a visualizer, the current lyric lines, and the lyrics panel on the right.
Now playing, with the lyrics panel open.
  • 10-band equalizerwith presets and a preamp
  • volume levellingquiet and loud tracks meet in the middle
  • crossfadebetween tracks, as long as you like
  • offline cachewhat you played, kept for next time

keyboard

paletteshortcutstraymini player

The command palette open over the home page, listing commands such as reload add-ons, go home, library, liked songs, marketplace, now playing, search and settings with their shortcuts.
The command palette reaches everything else.

Fast for hands on the keyboard, quiet in the background.

CtrlK
command palette
Space
play or pause
Ctrl→
next track
CtrlF
search
CtrlJ
show the queue
CtrlM
mini player

Every key is yours to change in Settings › Shortcuts, plugins' commands too.

The tray, media keys, desktop notifications, a mini player, start at login and mixmusic:// links do the everyday work while the window stays closed. MixMusic looks for a new version once a day, checks its signature, and installs it when you agree, or by itself if you choose.

themes

built incommunitymake one

The whole look is a theme. Six ship with the app, and the community makes more.

Follow the computer: choose a theme for its light mode and one for its dark mode, and MixMusic switches with it.

make one

A theme is a folder with a theme.json: eighteen colors, the fonts, a corner radius, and an optional stylesheet with options people can toggle. It reaches the interface only through public --mm-* variables and documented hooks, so it keeps working as the app changes.

Read the theme guide

"id": "aurora",
"name": "Aurora",
"scheme": "dark",
"colors": {
  "bg": "#070a16",
  "text": "#eef2ff",
  "accent": "#4ee6c0",
  "tile-1": "#4ee6c0",
  "tile-2": "#7b5cff",
  …
},
"radius": "18px",
"styles": "theme.css"

plugins

registrythe apishare yours

Plugins add pages, commands, track actions and widgets through a typed API.

A plugin is an ES module and a manifest. It gets the player, the queue, UI slots, commands, settings and storage, with types in the SDK. Plugins run with the app's privileges, so MixMusic asks before it enables one from the community.

Read the plugin guide

// api is the SDK's MixMusicAPI:
// import("mixmusic-sdk").MixMusicAPI
export default function activate(api) {
  api.commands.register({
    id: "shout",
    title: "Shout what plays",
    shortcut: "Mod+Shift+S",
    run: () => {
      const { track } =
        api.player.state();
      api.ui.toast(track
        ? `Now: ${track.title}`
        : "Nothing plays");
    },
  });
}

in the registry

  • Sleep TimerFades the music out and pauses it after a while, or at the end of the track.
    playbackstorage
  • SpectrumA radial spectrum of what plays, drawn in the accent colour on the now playing page.
    playback
  • Neon NightsElectric magenta and violet tiles on deep indigo, with an optional neon edge on what is live.
    theme
  • Paper MintA quiet light theme: graphite ink, mint and coral tiles, rounded corners.
    theme

open source

contributingissueschangelog

MIT licensed, and built in the open.

MixMusic is one small Go program built on MyGo. Its interface is a web page in the system's own webview, so there is no bundled browser to download or keep in memory: the Windows installer is 4.8 MB.

Fixes, features, themes, plugins and reports of what does not work are all welcome.

download

Free for macOS, Windows and Linux. Version 0.4.0, release notes.

what it needs

  • YouTube Musicyt-dlp, which MixMusic installs for you from Settings › Playback, and a JavaScript runtime on your PATH: Deno, Node.js, Bun or QuickJS.
  • SpotifyAn app of your own from the Spotify developer dashboard, whose Client ID you paste in Settings › Accounts. The guide walks through it.
  • First launchThe macOS app is not notarized yet: open it once from System Settings › Privacy & Security › Open Anyway. The Windows installer is not signed yet: if SmartScreen warns, choose More info › Run anyway.
  • LinuxGTK 3, WebKitGTK 4.1 and the GStreamer plugins for Opus and AAC. On Debian and Ubuntu:
    sudo apt install libwebkit2gtk-4.1-0 gstreamer1.0-plugins-good gstreamer1.0-libav

Verify every download against SHA256SUMS in the release. All versions are on the releases page.

one player.
both services.
yours to shape.

MixMusic is free software under the MIT license, made by MixMusic contributors. The screenshots show MixMusic on Windows with a demo library.

Spotify is a trademark of Spotify AB, and YouTube Music a trademark of Google LLC. MixMusic is not affiliated with, endorsed by or sponsored by either.

mixmusic next: one search
other systems download