rove

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

installation

regardless of the platform, you'll need:

and, optionally:

  • libsamplerate (needed if you want to be able to change the playback speed of loops)

linux

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

os x

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.

tutorials

configuration

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!

usage

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.

media

  • rove performance: “something wrong with your feet”

  • screenshot: rove loading a session, with its audio output connected to jack.