- Seeks by 5 seconds back / forward - Note: Pressing these shortcuts quickly in succession while transcoding is active will throw an error since the previous request hasn't had time to finish before the next one. This bug also happens with the seek bar so might perhaps be best addressed in a separate pr / commit.
86 lines
4.4 KiB
Markdown
86 lines
4.4 KiB
Markdown
# LMS - Lightweight Music Server
|
|
|
|
[](https://github.com/epoupon/lms/releases)
|
|
|
|
_LMS_ is a self-hosted music streaming software: access your music collection from anywhere using a web interface!
|
|
|
|
A [demo instance](http://lms-demo.poupon.dev) is available. Note the administration settings are not available.
|
|
|
|
## Main features
|
|
* [Subsonic/OpenSubsonic API](SUBSONIC.md) support
|
|
* Multi-valued tags: `genre`, `mood`, `artists`, ...
|
|
* Artist relationships: `composer`, `conductor`, `lyricist`, `mixer`, `performer`, `producer`, `remixer`
|
|
* [Release types](https://musicbrainz.org/doc/Release_Group/Type): `album`, `single`, `EP`, `compilation`, `live`, ...
|
|
* [MusicBrainz Identifier](https://musicbrainz.org/doc/MusicBrainz_Identifier) support to handle duplicated artist and release names
|
|
* [ListenBrainz](https://listenbrainz.org) support for:
|
|
* Scrobbling and synchronizing listens
|
|
* Synchronizing 'love' feedbacks
|
|
* Recommendation engine
|
|
* Multi-library support
|
|
* ReplayGain support
|
|
* Audio transcoding for compatibility and reduced bandwidth
|
|
* User management, with several [authentication backends](INSTALL.md#authentication-backend)
|
|
* Playlists support
|
|
* Lyrics support
|
|
|
|
## 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, with endless filling of the play queue with tracks similar to what is there
|
|
* Searches in album, artist and track names (including sort names)
|
|
* Starred Albums/Artists/Tracks
|
|
* 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
|
|
* ...
|
|
|
|
__Note__: depending on your database size and/or your hardware, the tag-based recommendation engine may significantly slow down the user interface. You can disable it in the administration settings.
|
|
|
|
## About tags
|
|
_LMS_ primarily relies on tags to organize your music collection but also supports browsing by directory using the [Subsonic/OpenSubsonic API](SUBSONIC.md).
|
|
|
|
### Filtering
|
|
It is possible to apply global filters on your collection using `genre`, `mood`, `grouping`, `language`, and by music library. More tags, including custom ones, can be added in the database administration settings.
|
|
|
|
__Note__: You can use the `lms-metadata` tool to get an idea of the tags parsed by _LMS_.
|
|
|
|
### Multiple artists
|
|
_LMS_ works best when using the default [Picard](https://picard.musicbrainz.org/) settings, where the `artist` tag contains a single display-friendly value, and the `artists` tag holds the actual artist names. This ensures a cleaner, more organized representation of artist names, when multiple artists are involved.
|
|
|
|
### Multiple album artists
|
|
While LMS can manage multiple album artists using the `albumartist` tag, it works better when using the custom `albumartists` and `albumartistssort` tags, similar to how it handles regular artist tags.
|
|
|
|
__Note__: if you use Picard, add the following script to include these tags:
|
|
```
|
|
$setmulti(albumartists,%_albumartists%)
|
|
$setmulti(albumartistssort,%_albumartists_sort%)
|
|
```
|
|
|
|
## Playlist support
|
|
_LMS_ supports playlist files in `m3u` and `m3u8` formats. These playlists are synced during the scan process and are available as public shared playlists.
|
|
|
|
## Lyrics support
|
|
_LMS_ supports lyrics in `lrc` files, `txt` files, and embedded track metadata. Both synchronized and unsynchronized lyrics are supported.
|
|
|
|
## Keyboard shortcuts
|
|
* Play/pause: <kbd>Space</kbd>
|
|
* Previous track: <kbd>Ctrl</kbd> + <kbd>Left</kbd>
|
|
* Next track: <kbd>Ctrl</kbd> + <kbd>Right</kbd>
|
|
* Decrease volume: <kbd>Ctrl</kbd> + <kbd>Down</kbd>
|
|
* Increase volume: <kbd>Ctrl</kbd> + <kbd>Up</kbd>
|
|
* Seek back by 5 seconds: <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Left</kbd>
|
|
* Seek forward by 5 seconds: <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Right</kbd>
|
|
|
|
|
|
## Installation
|
|
See [INSTALL.md](INSTALL.md) file.
|
|
|
|
## Contributing
|
|
Any feedback is welcome:
|
|
* feel free to participate in [discussions](https://github.com/epoupon/lms/discussions) if you have questions,
|
|
* report any bug or request for new features in the [issue tracker](https://github.com/epoupon/lms/issues),
|
|
* submit your pull requests based on the [develop](../../tree/develop) branch.
|