Skip to content

Releases: systemfreund/supersonic.el

v0.7.4

Choose a tag to compare

@systemfreund systemfreund released this 19 Oct 07:01
625aa94

What's Changed

  • Released on MELPA and MELPA Stable

Full Changelog: v0.7.3...v0.7.4

v0.7.3

Choose a tag to compare

@systemfreund systemfreund released this 12 Oct 09:44
92b332e

What's Changed

  • Auto-fit the column widths of all list buffers by @systemfreund in #99
  • Add artist art display to artist list buffer by @systemfreund in #100
  • Address issues raised by MELPA review

Full Changelog: v0.7.2...v0.7.3

v0.7.2

Choose a tag to compare

@systemfreund systemfreund released this 11 Oct 11:25

What's Changed

  • Update package description to reflect Music Assistant support by @systemfreund in #97

Full Changelog: v0.7.1...v0.7.2

v0.7.1

Choose a tag to compare

@systemfreund systemfreund released this 11 Oct 10:57
eb0e188

What's Changed

Full Changelog: v0.7.0...v0.7.1

v0.7.0: chore: bump version to 0.7.0

Choose a tag to compare

@systemfreund systemfreund released this 10 Oct 15:31

Music Assistant support

supersonic.el now works with Music Assistant as well as Subsonic servers. Browse your Music Assistant library in Emacs: artists, albums, album lists, search, podcasts and cover art. The music plays on any player Music Assistant knows about, such as speakers, Chromecasts, AirPlay and Sonos devices, or its web player in your browser.

Getting started

  1. Create a long-lived token in Music Assistant's web UI (under your profile), and add it to your authinfo with the server's URL as the machine:

    machine http://192.168.1.10:8095 password TOKEN
    

    You can keep it in KeePassXC instead, just like Subsonic credentials.

  2. Load the Music Assistant player backend, which loads the provider too:

    (use-package supersonic
      :custom
      (supersonic-provider 'music-assistant)
      (supersonic-music-assistant-url "http://192.168.1.10:8095")
      (supersonic-playback-backend 'music-assistant)
      :config
      (require 'supersonic-music-assistant-player))
  3. Pick a player

    M-x supersonic-music-assistant-select-player
    supersonic.el lists the server's players by name and offers to save your choice.

  4. Play music. Your usual playback commands, queue, now-playing buffer and MPRIS work the same as before.

Switching between Subsonic and Music Assistant

With both loaded, M-x supersonic-provider-switch (P in the transient) switches the provider. If the current playback backend can't play for the new provider, the backend switches too: either to the only one that can, or to the one you last used with that provider. It only asks you when neither settles it.

Good to know

  • Requires Music Assistant server schema 28 or later.
  • The queue follows changes made from other Music Assistant clients, since supersonic.el polls the player every supersonic-music-assistant-poll-interval seconds.
  • Recently played albums are built from Music Assistant's track history.
  • Music Assistant keeps its own play history, so nothing is scrobbled (unless you have configured scrobbling within Music Assistant).
  • mpv, the jukebox and UPnP don't work with Music Assistant, because it doesn't hand out stream URLs. They remain available for Subsonic, which behaves exactly as before.

v0.6.0

Choose a tag to compare

@systemfreund systemfreund released this 08 Oct 10:04
ad5b286

Play to your TV, AV receiver or network speaker (UPnP/DLNA)

supersonic.el can now send your music to UPnP/DLNA renderers on your local network, such as AV receivers, network speakers and smart TVs. You still browse and queue in Emacs, and the sound comes out of the device.

Getting started

  1. Pick a renderer

    M-x supersonic-upnp-select-renderer
    supersonic.el searches your network for a few seconds and lists the devices it finds by name.

  2. Switch playback to it

    M-x supersonic-playback-switch-backend RET upnp

  3. Play music. Your usual playback commands and queue work the same as before.

To make UPnP your default backend, load it at startup:

(use-package supersonic
  :custom
  (supersonic-playback-backend 'upnp)
  :config
  (require 'supersonic-upnp))

Good to know

• Gapless where possible: if the renderer supports it, the next track is handed over early so the device can move on by itself. Other renderers are detected automatically and supersonic.el advances the queue instead.
• Emacs keeps the queue: most renderers hold only one track at a time, so the queue only moves forward while Emacs is running.
• Device can't play FLAC/Opus? Have the server transcode:

(setq supersonic-upnp-stream-format '(:format "mp3" :max-bit-rate 320))

Transcoded streams often can't be seeked.

• The renderer must reach your server itself: a localhost address, a VPN-only address or a reverse proxy with its own login won't work. supersonic.el warns you if the stream URL points at localhost.

See the UPnP/DLNA playback section of the README for all details.

v0.5.3

Choose a tag to compare

@systemfreund systemfreund released this 07 Oct 18:19

What's Changed

  • Introduce library provider facade for pluggable music sources by @systemfreund in #49

Fixes

  • fix: jukebox next/prev to be no-ops at playlist boundaries by @systemfreund in #51
  • fix: time out unanswered requests and stop jukebox polls overlapping by @systemfreund in #71
  • fix: only build the waveform seekbar when something shows it by @systemfreund in #72
  • perf: reference the cover art file from the overlay SVG by @systemfreund in #73
  • fix: keep no undo history in the now-playing buffer by @systemfreund in #75

Full Changelog: v0.5.2...v0.5.3

v0.5.2

Choose a tag to compare

@systemfreund systemfreund released this 27 Sep 11:36

What's Changed

  • fix: don't replay the stopped track when enqueuing on the jukebox by @systemfreund in #40
  • fix: refresh queue views when the queue changes, not only the track by @systemfreund in #41
  • fix: kill the url-retrieve buffer itself, not aio's clone of it by @systemfreund in #43
  • Get the package MELPA-submission-clean by @systemfreund in #35

Full Changelog: v0.5.1...v0.5.2

v0.5.1

Choose a tag to compare

@systemfreund systemfreund released this 12 Sep 23:52

What's new?

Sensible defaults for the now-playing buffer

Cover art, the clickable waveform seekbar, and the title/artist overlay
on the art itself are now on by default -- supersonic-enable-art,
supersonic-enable-waveform, supersonic-now-playing-waveform-in-overlay
and supersonic-now-playing-animation-functions no longer need four
separate opt-ins to get the fully decked-out look:

;; This used to be required; now it's the default.
(setopt supersonic-enable-art t
        supersonic-enable-waveform t)

More customizable now-playing layout

  • The informational rows (Title/Artist/Album/Duration/Format/Size) are
    now composable via supersonic-now-playing-render-functions --
    reorder them, drop the ones you don't want, or add your own.
  • The track/artist label's font is customizable on its own face.
  • The waveform and label lanes (both in the plain layout and inside the
    art overlay) were swapped to a cleaner default arrangement.
  • New supersonic-now-playing-force-redisplay for setups where updates
    lag behind on a visible-but-unselected frame.

Fix: stuck field cycling

The now-playing buffer's field-cycling animation timer could get stuck
running at a stale interval if supersonic-now-playing-animation-frame-interval
was changed while a track was already playing -- the label/art overlay
would then switch fields unpredictably, and less and less often the
longer playback went on. The timer now notices and restarts itself at
the current interval.

Full Changelog: v0.5.0...v0.5.1

v0.5.0

Choose a tag to compare

@systemfreund systemfreund released this 12 Sep 20:37

What's new?

image

Customize supersonic-now-playing buffer

;; Enable the clickable waveform:
(setopt supersonic-enable-waveform t)

Subsonic Jukebox support.

(setopt supersonic-playback-backend 'jukebox)