No description
Find a file
2012-07-12 01:06:30 -04:00
public use soundmanager2 instead of jplayer for streaming 2012-06-27 15:23:43 -04:00
src stream button has a paused state 2012-06-27 15:51:38 -04:00
.gitignore use .npmignore to only deploy generated files 2012-07-12 00:58:13 -04:00
.npmignore use .npmignore to only deploy generated files 2012-07-12 00:58:13 -04:00
Cakefile suppressing 'Nothing to be done' which was filling 80% of the server console 2012-06-25 23:04:10 -07:00
LICENSE License under MIT 2012-01-24 23:27:32 -08:00
package.json version bump to 0.1.0 2012-07-12 01:06:30 -04:00
README.md use .npmignore to only deploy generated files 2012-07-12 00:58:13 -04:00
TODO confirmation dialog for deleting + change order of delete button 2012-06-25 23:35:41 -04:00

Groove Basin

No-nonsense music client and server for your home or office.

Run it on a server connected to your main speakers. Guests can connect with their laptops, tablets, and phones, and play and share music.

Depends on mpd version 0.17+ for the backend. Some might call this project an mpd client. (Note, version 0.17 is only available from source as of writing this; see below instructions regarding mpd installation.)

Live demo: groovebasin.com

Features

  • Lightning-fast, responsive UI. You can hardly tell that the music server is on another computer.

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

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

  • 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.

  • Last.fm scrobbling.

Get Started

Make sure you have Node and npm installed and mpd version 0.17+ (see below) running, then:

$ npm install groovebasin
$ npm start groovebasin

At this point, Groove Basin will issue warnings telling you what to do next.

Screenshots

Search + drag/drop support Multi-select and context menu Keyboard shortcuts Last.fm Scrobbling

Mpd

Groove Basin depends on mpd version 0.17+.

To compile from source, start here

$ git clone git://git.musicpd.org/master/mpd.git

and follow mpd's instructions from there.

Configuration

  • default_permissions - Recommended to remove admin so that anonymous users can't do nefarious things.

  • password - Recommended to add a password for yourself to give yourself admin permissions.

    • read - allows reading the library, current playlist, and playback status.

    • add - allows adding songs, loading playlists, and uploading songs.

    • control - allows controlling playback state and manipulating playlists.

    • admin - allows updating the db, killing mpd, deleting songs from the library, and updating song tags.

  • audio_output - Uncomment the "httpd" one and configure the port to enable streaming. Recommended "vorbis" encoder for better browser support.

  • sticker_file - Groove Basin will not run without one set.

  • gapless_mp3_playback - "yes" recommended. <3 gapless playback.

  • volume_normalization - "yes" recommended. Replaygain scanners are not implemented for all the formats that can be played back. Volume normalization works on all formats.

  • max_command_list_size - "16384" recommended. You do not want mpd crashing when you try to remove a ton of songs from the playlist at once.

  • auto_update - "yes" recommended. Required for uploaded songs to show up in your library.

Configuring Groove Basin

See http://npmjs.org/doc/config.html#Per-Package-Config-Settings

See the "config" section of package.json for configuration options and defaults.

Example:

$ npm config set groovebasin:mpd_conf ~/.mpd/mpd.conf
$ npm config set groovebasin:port 80
$ npm -g --groovebasin:port 80 start groovebasin

Developing

Install dependencies and run mpd as described in the Get Started section. Then, from a clean clone of the source repository:

$ npm run-script dev --groovebasin:development_mode true

Release Notes

0.0.6

  • Josh Wolfe:
    • fixing not queuing before random when pressing enter in the search box
    • fixing streaming hotkey not updating button ui
    • stopping and starting streaming in sync with mpd.status.state.
    • fixing weird bug with Stream button checked state
    • warning when bind_to_address is not also configured for localhost
    • fixing derpy log reference
    • fixing negative trackNumber scrobbling
    • directory urls download .zip files. #9
    • document dependency on mpd version 0.17
  • Andrew Kelley:
    • fix regression: not queuing before random songs client side
    • uploaded songs are queued in the correct place
    • support restarting mpd without restarting daemon
    • ability to reconnect without refreshing
    • log.info instead of console.info for track uploaded msg
    • avoid the use of 'static' keyword
  • David Banham:
    • Make jPlayer aware of which stream format is set
    • Removed extra constructor. Changed tabs to 2spaces

0.0.5

  • Note: Requires you to pull from latest mpd git code and recompile.
  • Andrew Kelley:
    • disable volume slider when mpd reports volume as -1. fixes #8
    • on last.fm callback, do minimal work then refresh. fixes #7
    • warnings output the actual mpd.conf path instead of "mpd conf". see #5
    • resize things after rendering things. fixes #6
    • put uploaded files in an intelligent place, and fix #2
    • ability to retain server state file even when structure changes
    • downgrade user permissions ASAP
    • label playlist items upon status update
    • use blank user_id to avoid error message
    • use jplayer for streaming
  • Josh Wolfe:
    • do not show ugly "user_n" text after usernames in chat.

0.0.4

  • Andrew Kelley:
    • update keyboard shortcuts dialog
    • fix enter not queuing library songs in firefox
    • ability to authenticate with last.fm, last.fm scrobbling
    • last.fm scrobbling works
    • fix issues with empty playlist. fixes #4
    • fix bug with dynamic mode when playlist is clear
  • Josh Wolfe:
    • easter eggs
    • daemon uses a state file

0.0.3

  • Andrew Kelley:
    • ability to select artists, albums, tracks in library
    • prevents sticker race conditions from crashing the server (#3)
    • escape clears the selection cursor too
    • ability to shift+click select in library
    • right-click queuing in library works
    • do not show download menu option since it is not supported yet
    • show selection on expanded elements
    • download button works for single tracks in right click library menu
    • library up/down to change selection
    • nextLibPos/prevLibPos respects whether tree items are expanded or collapse
    • library window scrolls down when you press up/down to move selection
    • double click artists and albums in library to queue
    • left/right expands/collapses library tree when lib has selection
    • handle enter in playlist and library
    • ability to drag artists, albums, tracks to playlist
  • Josh Wolfe:
    • implement chat room
    • users can set their name in the chat room
    • users can change their name multiple times
    • storing username persistently. disambiguating conflicting usernames.
    • loading recent chat history on connect
    • normalizing usernames and sanitizing username display
    • canot send blank chats
    • supporting /nick renames in chat box
    • hotkey to focus chat box

0.0.2

  • Andrew Kelley:
    • learn mpd host and port in mpd conf
    • render unknown albums and unknown artists the same in the playlist (blank)
    • auto-scroll playlist window and library window appropriately
    • fix server crash when no top-level files exist
    • fix some songs error message when uploading
    • edit file uploader spinny gif to fit the theme
    • move chat stuff to another tab
  • Josh Wolfe:
    • tracking who is online