music performance software for monomes
created by: william light
prefix: /rove
rove is a sample-cutter in the spirit of (and blatantly imitating) mlr. it is written in c and designed primarily to run on the linux platform. however, it has been compiled and run successfully on mac os x.
download
discussion
regardless of the platform, you'll need:
and, optionally:
if you haven't yet setup your system for the monome, be sure to read the linux guide. make sure to build and install a recent git checkout of libmonome.
use your system's package manager to install jack, libsndfile, and libsamplerate. you'll need to install the main packages and the ”-dev” (development) packages for them.
next, build and install rove:
$ cd ~/git/rove/ $ ./configure $ make $ sudo make install
once you've downloaded and installed libmonome, grab jack from http://jackosx.com and libsndfile from http://mega-nerd.com/libsndfile. read the readme and install files that come with those projects. libsamplerate can be downloaded from http://www.mega-nerd.com/SRC/.
next, build and install rove:
$ cd ~/git/rove/ $ ./configure $ make $ sudo make install
if you're familiar with maintaining software on os x, please get in touch with rove's author, so that proper packages can be distributed.
currently, rove has no gui. all configuration is done with simple .ini-style text files. a session file looks like this:
[session] # comments start with a pound symbol and span a line! bpm = 87.68 # beats per minute quantize = .25 # fraction of a quarter note to quantize to groups = 2 # number of groups pattern1 = 8 # pattern 1 length (in beats) pattern2 = 8 # pattern 2 length columns = 12 # columns to span [file] path = drums.wav # path to the loop relative to the session file rows = 2 # number of rows to span across group = 1 # group to which the file is assigned columns = 14 # columns to span (overrides session columns) speed = 0.5 # playback speed [file] # loops are mapped on the monome from top to bottom path = piano.wav # in order of where they appear in the session file group = 2 [file] path = piano.wav # "path" and "group" are required parameters group = 2 # but "reverse" and "rows" are optional reverse # and are assumed to be "false" and "1" respectively
the row spanning lets you spread a loop across several rows for added precision.
after you've created your sample file, run rove:
$ rove sessionfile.rv
you can also create an additional global configuration file. this looks similar to the session file, but expects different sections and variables. here is an example configuration file, with the variables set to their defaults. all variables here are optional.
[monome] columns = 8 [osc] prefix = /rove host-port = 8080 listen-port = 8000
save your global configuration file as .rove.conf in your home directory and rove will load it at startup!
rove's top row layout:
+-----------+ - - - - - +-----------+-----------+-----------+-----------+
left | group | many of | pattern 1 | pattern 2 | prev | next | right
side | mute | those | rec / tog | rec / tog | session | session | side
+-----------+ - - - - - +-----------+-----------+-----------+-----------+
rove is designed to mimic mlr. the top row is the control row, with the first buttons turning off their respective group. the number of group mute buttons depends on the number of groups specified in your session config file. activate a group by pressing a button associated with one of the loops, which means anything below the first row, starting with the second row.
the two buttons after the group controls are pattern recorders. these act a bit differently. pressing the button without anything recorded waits until you cut somewhere in a loop to start recording, then it will record a pattern as long as you specified in your session file (the value of pattern1 and pattern2). you can press it again any time before the end of the specified length to play the pattern you created. or, if the pattern length in your session file is 0, it will record until you press the record button again.
pressing that button again turns the pattern off, resuming normal playback immediately. turning off recorded patterns deletes them, so that you can record again by pressing the pattern button and playing another sequence.
the two buttons after the pattern recorders are session controls. rove can load more than one session. pressing these buttons moves forward and backward through the loaded sessions. this is good for seamless set changes, so that you can advance from song to song without having to stop and restart rove.
you can load multiple sessions on the command line:
$ rove session1.rv session2.rv
you can also place multiple sessions in a single session file:
$ rove big_setlist.rv
a sample multi-session configuration file:
[session] bpm = 120 quantize = .5 groups = 2 pattern1 = 4 pattern2 = 4 [file] path = perc.wav group = 1 [file] path = perc.wav group = 2 reverse [session] bpm = 90 quantize = .5 groups = 2 pattern1 = 0 pattern2 = 8 [file] path = drums1.wav group = 1 [file] path = drums2.wav group = 1 [file] path = chords.wav group = 2
when performing with multiple sessions, bpm is determined by the currently loaded session. you can leave a group playing from one session, advance to the next session, and the old session's group will still play at the old bpm. once you press the group mute button for that old session, then that sample ends and is cleared, making the group available for the current session, at the current session's bpm.