Code Monkey home page Code Monkey logo

lms's Introduction

LMS - Lightweight Music Server

Last Release Build Language grade: C/C++

LMS is a self-hosted music streaming software: access your music collection from anywhere using a web interface!

A demo instance is available. Note the administration panel is not available.

Main features

  • Low memory requirements: the demo instance runs on a Raspberry Pi Zero W
  • Recommendation engine
  • Audio transcode for maximum interoperability and low bandwith requirements
  • Multi-value tags: artists, genres, composers, lyricists, moods, ...
  • MusicBrainz Identifier support to handle duplicated artist and release names
  • ListenBrainz support for scrobbling and synchronizing listens
  • Compilation support
  • Disc subtitles support
  • ReplayGain support
  • Persistent play queue across sessions
  • Systemd integration
  • User management, with several authentication backends, see Deployment
  • Subsonic API, with the following additional features:
    • Playlists
    • Bookmarks

Music discovery

LMS provides several ways to help you find the music you like:

  • Tag-based filters (ex: Rock, Metal and Aggressive, Electronic and Relaxed, ...)
  • Recommendations for similar artists and albums
  • Radio mode, based on what is in the current playqueue
  • Searches in album, artist and track names (including sort names)
  • Starred Albums/Artists/Tracks
  • Various tags to help you filter your music: mood, albummood, albumgenre, albumgrouping, ...
  • Random/Starred/Most played/Recently played/Recently added for Artist/Albums/Tracks, allowing you to search for things like:
    • Recently added Electronic artists
    • Random Metal and Aggressive albums
    • Most played Relaxed tracks
    • Starred Jazz albums
    • ...

The recommendation engine uses two different sources:

  1. Tags that are present in the audio files
  2. Acoustic similarities of the audio files, using a trained Self-Organizing Map

Notes on the self-organizing map:

  • training the map requires significant computation time on large collections (ex: half an hour for 40k tracks using a Core i5)
  • audio acoustic data is pulled from AcousticBrainz. Therefore your audio files must contain the recording MusicBrainz Identifier.
  • to enable the audio similarity source, you have to enable it first in the administration panel.

Subsonic API

The API version implemented is 1.16.0 and has been tested on Android using Subsonic Player, Ultrasonic and DSub.

Since LMS uses metadata tags to organize music, a compatibility mode is used to navigate through the collection when using the directory browsing commands.

The Subsonic API is enabled by default.

Note: since LMS may store hashed and salted passwords or may forward authentication requests to external services, it cannot handle the token authentication method. You may need to check your client to make sure to use the password authentication method.

About tags

LMS relies exclusively on tags to organize your music collection.

Filtering

You can specify the tags you want to be used to filter your collection. By default, GENRE, ALBUMGROUPING, MOOD and ALBUMMOOD tags are used. In the administration panel, you can set whatever tags you want, even custom tags.

Multiple album artists

LMS requires the ALBUMARTISTS and ALBUMARTISTSSORT tags to properly handle multiple album artists on the same album. As they are a custom tags, you may need to setup your favorite tagger to add them.

Note: if you use Picard, add the following script to include these tags:

$setmulti(albumartists,%_albumartists%)
$setmulti(albumartistssort,%_albumartists_sort%)

Keyboard shortcuts

  • Play/pause: Space
  • Previous track: Ctrl + Left
  • Next track: Ctrl + Right

Security considerations

Wt (the web framework used) has some built-in security measures, but LMS also has some too:

  • to mitigate brute force login attempts, LMS uses an internal login throttler based on the client IP address. The Client-IP or X-Forwarded-For headers are used to determined the real IP adress, so make sure to properly configure your reverse proxy to filter or even erase the values (see example in INSTALL.md).
  • all passwords are stored hashed and salted using bcrypt
  • all the resources relative to the music collection (tracks, covers, etc.) are private to a session

Installation

See INSTALL.md file.

Contributing

Any feedback is welcome:

  • feel free to participate in discussions if you have questions,
  • report any bug or request for new features in the issue tracker,
  • submit your pull requests based on the develop branch.

lms's People

Contributors

anthonytex avatar bramton avatar cacko avatar epoupon avatar kmod-midori avatar misterhat avatar tapiab avatar tazio avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.