<commit_before># Groove Basin

Music player server with a web-based user interface inspired by Amarok 1.4.

Run it on a server (such as a 
[Raspberry Pi](http://www.raspberrypi.org/)) connected to some speakers
in your home or office. Guests can control the music player by connecting
with a laptop, tablet, or smart phone. Further, you can stream your music
library remotely.

Groove Basin works with your personal music library; not an external music
service. Groove Basin will never support DRM content.

Live discussion in #libgroove on Freenode.

## Features

* Fast, responsive UI. It feels like a desktop app, not a web app.

* Dynamic playlist mode which automatically queues random songs, favoring
  songs that have not been queued recently.

* Drag and drop upload. Drag and drop playlist editing. Rich keyboard
  shortcuts.

* Lazy multi-core
  [EBU R128 loudness scanning](http://tech.ebu.ch/loudness) (tags compatible
  with [ReplayGain](http://wiki.hydrogenaudio.org/index.php?title=ReplayGain_1.0_specification))
  and automatic switching between track and album mode.
  ["Loudness Zen"](http://www.youtube.com/watch?v=iuEtQqC-Sqo)

* Streaming support. You can listen to your music library - or share it with
  your friends - even when you are not physically near your home speakers.

* MPD protocol support. This means you already have a selection of
  [clients](http://mpd.wikia.com/wiki/Clients) which integrate with Groove Basin.
  For example [MPDroid](https://play.google.com/store/apps/details?id=com.namelessdev.mpdroid).

* [Last.fm](http://www.last.fm/) scrobbling.

* File system monitoring. Add songs anywhere inside your music directory and
  they instantly appear in your library in real time.

* Supports GrooveBasin Protocol on the same port as MPD Protocol - use the
  `protocolupgrade` command to upgrade.

## Install

1. Install [Node.js](http://nodejs.org) v0.10.x.
2. Install [libgroove](https://github.com/andrewrk/libgroove).
3. Clone the source.
4. `npm run build`
5. `npm start`

## Screenshots

![Search + drag/drop support](http://superjoesoftware.com/temp/groove-basin-0.0.4.png)
![Multi-select and context menu](http://superjoesoftware.com/temp/groove-basin-0.0.4-lib-menu.png)
![Keyboard shortcuts](http://superjoesoftware.com/temp/groove-basin-0.0.4-shortcuts.png)
![Last.fm Scrobbling](http://superjoesoftware.com/temp/groove-basin-0.0.4-lastfm.png)

## Configuration

When Groove Basin starts it will look for `config.js` in the current directory.
If not found it creates one for you with default values.

## Developing

```
$ npm run dev
```

This will install dependencies, build generated files, and then start the
sever. It is up to you to restart it when you modify assets or server files.

## Release Notes<commit_msg>add roadmap to README<commit_after># Groove Basin

Music player server with a web-based user interface inspired by Amarok 1.4.

Run it on a server (such as a 
[Raspberry Pi](http://www.raspberrypi.org/)) connected to some speakers
in your home or office. Guests can control the music player by connecting
with a laptop, tablet, or smart phone. Further, you can stream your music
library remotely.

Groove Basin works with your personal music library; not an external music
service. Groove Basin will never support DRM content.

Live discussion in #libgroove on Freenode.

## Features

* Fast, responsive UI. It feels like a desktop app, not a web app.

* Dynamic playlist mode which automatically queues random songs, favoring
  songs that have not been queued recently.

* Drag and drop upload. Drag and drop playlist editing. Rich keyboard
  shortcuts.

* Lazy multi-core
  [EBU R128 loudness scanning](http://tech.ebu.ch/loudness) (tags compatible
  with [ReplayGain](http://wiki.hydrogenaudio.org/index.php?title=ReplayGain_1.0_specification))
  and automatic switching between track and album mode.
  ["Loudness Zen"](http://www.youtube.com/watch?v=iuEtQqC-Sqo)

* Streaming support. You can listen to your music library - or share it with
  your friends - even when you are not physically near your home speakers.

* MPD protocol support. This means you already have a selection of
  [clients](http://mpd.wikia.com/wiki/Clients) which integrate with Groove Basin.
  For example [MPDroid](https://play.google.com/store/apps/details?id=com.namelessdev.mpdroid).

* [Last.fm](http://www.last.fm/) scrobbling.

* File system monitoring. Add songs anywhere inside your music directory and
  they instantly appear in your library in real time.

* Supports GrooveBasin Protocol on the same port as MPD Protocol - use the
  `protocolupgrade` command to upgrade.

## Install

1. Install [Node.js](http://nodejs.org) v0.10.x.
2. Install [libgroove](https://github.com/andrewrk/libgroove).
3. Clone the source.
4. `npm run build`
5. `npm start`

## Screenshots

![Search + drag/drop support](http://superjoesoftware.com/temp/groove-basin-0.0.4.png)
![Multi-select and context menu](http://superjoesoftware.com/temp/groove-basin-0.0.4-lib-menu.png)
![Keyboard shortcuts](http://superjoesoftware.com/temp/groove-basin-0.0.4-shortcuts.png)
![Last.fm Scrobbling](http://superjoesoftware.com/temp/groove-basin-0.0.4-lastfm.png)

## Configuration

When Groove Basin starts it will look for `config.js` in the current directory.
If not found it creates one for you with default values.

## Developing

```
$ npm run dev
```

This will install dependencies, build generated files, and then start the
sever. It is up to you to restart it when you modify assets or server files.

### Roadmap

 1. Tag Editing
 2. Music library organization
 3. Accoustid Integration
 4. Playlists
 5. User accounts / permissions rehaul
 6. Event history / chat

## Release Notes
{'fraction_non_alphanumeric': 0.0984437838783004, 'fraction_numerical': 0.010491344640671446, 'mean_word_length': 4.185856754306437, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2384388', 'n_tokens_mistral': 1810, 'n_tokens_neox': 1740, 'n_words': 658}