Skip to content

Ramblurr/vinyl

Repository files navigation

vinyl

A small headless audio player for clojure powered by vlc

Vinyl is nice bit of clojure suger on top of the vlcj, the java native language bindings for libvlc (version 3.x) with a focus on being the audio engine for an audio player. It was developed to support the fairybox project.

The feature list includes:

  • playback of any audio format vlc supports
  • playback of media files, or folders, or playlist files with recursive scanning
  • modern playback queue management features ("append", "add next with priority", move x to y, etc)
  • expected playback and mixer controls: play, pause, volume↑↓, repeat, shuffle etc

From a software architecture standpoint the goals are:

  • headless, bring your own controls and user interface (see fairybox)
  • strict command query responsibility segregation (cqrs)
  • an event-first architecture
  • proper management of native resources to avoid jvm crashes

Explicitly out of scope are:

  • becoming a generic "wrapper" around vlcj
  • video

Limitations:

  • libvlc 3.x does not support gapless playback (might change with 4.x)
  • libvlc 4.x has nice support for replaygain and EBU R128, but it's not exposed yet via vlcj

License: European Union Public License 1.2

Copyright © 2025 Casey Link [email protected] Distributed under the EUPL-1.2.

About

A small headless audio player for clojure powered by vlc

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages