mytchel / mmusic-go

Music file and stream manager/controller written in go that uses gstreamer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

#mmusic

Music managment daemon written in go, it uses gstreamer. So you will need to get some bindings first.

Try mmusic -h for some options.

To set what songs mmusic plays add filenames of playlist files (explaned further down) as arguments and/or to stdin. And no, mmusic does not fork to the background if you want that do it with your shell.

When run it will create and populate the following directory (you can change the path with the -t option). If this already exists mmusic will give a warning and exit.

$tmp                        # defaults to /tmp/mmusic-$USER_ID

    in                      # fifo that listens that you can control
                              mmusic with.

    playlist                # files that are in the lineup, these are
                              added by looking through the playlist
                              files given at startup.

    upcoming                # add file paths (or uri's) and they
                              will be played next.

    playing                 # contains the uri currently playing.

    ispaused                # if this file exists, playback has been
                              paused. No creating it does not pause
                              playback... yet.

    israndom                # same as above but for randomness.

The in fifo will listen for the following commands.

exit                # exits

next                # goes to next song.

random              # sets mode to random

normal              # sets mode to normal

pause               # pauses playback

resume              # resumes playback

Once the current stream ends or you write next to in mmusic will reads the upcoming file to find if there is anything it should play, if upcoming is empty depending on mode selects a random song or the next alphanumericaly in it's library.

In playlist files you can list uri's or paths (absolute or relative) to directories or files. When mmusic scans the playlist lines that are directories will be searched and any music files (and subdirs) will be added to the library.

If mmusic comes accross a line that begins with a '!' all files that begin with the remainder of the line will be ignored. This is so you can for example add "/media/music" then add "!/media/music/Katy Perry" to exclude Katy Perry, not that I have anything against Katy Perry.

In terms of playlist managment mmusic doesn't really do anything. When you run it, give playlist files either as arguments or piped to stdin (with -stdin option) and it will populate $tmp/playlist with the files it found in subdirectories of paths given.

Sending SIGTERM to mmusic has the same effect as writing exit to the fifo.

Works with any sort of files gstreamer can play (so yes, can play network streams).

#mmterm

Note: Not fully functional yet.

A termbox-go controller for mmusic. From it you can choose playlists, manage their contents, select songs to play, add to upcoming (start and end), toggle random, pause, and view what is playing.

In otherwords, an interface that makes everything easier to see as well as adding better playlist controls.

It stores it's playlists in $XDG_CONFIG/mmterm/

About

Music file and stream manager/controller written in go that uses gstreamer


Languages

Language:Go 100.0%