mlrv is a sampling instrument for grid-based music contollers like the monome, livid ohm/block, novation launchpad, and akai apc/mpd. the software allows a sound file or live recording to be mapped across each row and assigned a triggering behavior. within this simple set of constraints and a complete MIDI + OSC remote control system, the performer of electronic music can be freed from the laptop, and at the very least appear to be doing something interesting. mlrv is an refactoring of brian crabtree's original mlr, extended by trent gill (galapagoose) and michael felix (%) of /parallelogram/

sampling instrument?

consider the following performance, entitled "too many" by galapagoose. he's using mlrv 2.0 with a monome 128 and an akai mpd. this is live music, without a laptop to be seen.

tutorial video

here's the official mlrv2 tutorial video! please visit the video's vimeo page for a linkable table-of-contents.

download it here!

below is a reverse-chronological list of all mlrv releases up to this date. find a bug? something doesn't work? please collect and report all issues in the mlrv google code bug tracker. if you need help or have questions about functionality, we suggest you first search the monome.org forums before leaving a new discussion topic, as this will help to prevent comment sprawl.

version date release notes
DOWNLOAD MLRV 2.4 Mar 14 2013 final edits, even better than before! please enjoy.
  • added 'classic' mode for the pattern recorders
  • added 'clear' and 'retrigger' shift-buttons for pattern recorders (appear over the 'setup' button in mapping mode)
  • fixed clicks on 1st retrigger of pattern recorders (and +MPATTERN)
  • general fixes to pattern recorder behaviour
  • corrected timing of slice-mode recordings
  • fixed problem when switching between quant and unquant patter modes
  • unquant patterns still suck, but i don't know why. can you fix them?
DOWNLOAD MLRV 2.3 Feb 23 2013 exciting almost final version! over 100 tweaks and updates!
  • added automation recording to pattern recorders
  • added switch for automation recording into pattern recorders to setup pane
  • removed [print ispattern] from plx.maxpat
  • added +vinyl speed manipulation per group (backend support)
  • added 'return to 1.' when vinyl manipulation is disarmed in plx
  • changed +vinyl to a 2-deck selector~ switch inside plx (both are streamed)
  • added +vinyl to tabber
  • added serato vinyl option for +vinyl tab
  • insert tested and working
  • currently playing-back recorded automation will be ignored when mapping
  • added new section in SETUP for preset settings
  • added option to turn off mixer recall per preset
  • removed /mappings folder
  • rearranged +SAMPLE tab for greater readability
  • changed meter colours to enhance readability and added red overload LEDs
  • fixed case in +SAMPLE where quantize setting needed to be reselected before recording would begin
  • added backend functionality for arm+thresh based sampler
  • fixed issue where pattern recorder 'presses' wouldn't cause group light to illuminate
  • cleaned up output.maxpat code
  • fixed issue where group stops playing back in a pattern would be fed as input to a 2nd recorder
  • removed 'group stop' recordings from pttrn.maxpat. superseded by automation recording
  • removed 'record group stops' from setup pane. replaced with 'record automation'
  • updated remote midi recorder to have variable midi ports (for runtime + windows users)
  • updated pattern recorders to only flash on presses (not releases)
  • removed LED response from automation in pattern recorders due to too much 'off' time
  • fixed colour mapping for group 6 assigned channels. interface colours now update correctly
  • when changing interface colours, rows update correctly without having to reselect group
  • added hints (tooltips) to every parameter in the SETUP pane to elaborate on the commands
  • fixed issue where no LEDs were lighting in pattern recorders
  • added an REM index list where particular params can be ignored by the patterns (ie. the record buttons)
  • selecting a new device now automatically displays the appropriate number of sample rows
  • selecting APC20 now correctly initializes the hardware (no need to select APC40 first)
  • added 2-track audio recorder to save the internal master directly to 24bit WAV/AIFF file
  • rearranged +sample tab to accommodate arm+threshold mode
  • added warning stating +sampler is inactive in rewire mode
  • fixed bug where serato vinyl would make playback reverse when playing b-side of record
  • updated [plx] stereo/mono switch with [selector~] to fix buzzing on right channel w mono samples
  • many bug fixes in [psamp~] poly~based sample player - now functions as expected
  • [grid] now addresses [psamp~] through a midinote message allowing theoretical 1024 max voices
  • added RAM calculator to [grid] and displayed in [setup] w limit arbitrarily set to 1500MB
  • cells can now be dynamically modified whilst playing back
  • fixed cell mute groups and mono/poly handling
  • reworked +MAPPING tab and [paramap.maxpat] for more logical ordering / cleaned up junk messages
  • added SerialOSC support w/ rotation option and auto-select of parameters based on /sys/size
  • fixed issue where 1ms would be cut off attacks of samples
  • Files now referred by full paths (allows multiple files w same name). This breaks the legacy file loader
  • added unquantised mode for pattern recorders (press to arm, press buttons, press again to set length)
  • added var-bright vu meters for group stop buttons. Removed due to being slightly confusing — code is still in output.maxpat under VU meters
  • presses from pattern recorders now display at low-brightness(4) on var-bright devices
  • +GRID tab added for mlr2.51+ style additional device EXPERIMENTAL
  • added var-bright atk/rel feedback button in +DELAY tab (4-15)
  • fixed "udpsend: bad argument" error in remote OSC device section
  • added [pattrmarker] to main patch to allow full remote access to pattr hierarchy
  • added visual feedback (green fadeout) to all mapped params to indicate when being controlled
  • altered mode for some params to force toggle behaviour (eg. reverse / mute etc)
  • rebuilt serialosc.maxpat to denecessitate zeroconf objects, per serialosc 1.2a
  • added var-bright led for delay feedback amount (w/ envelope)
  • pattern recorders now record presses and releases (for loop vs. slice mode)
  • added var-bright indication of full but deactivated pattern recorder
  • +ARC tab added
  • reconfigured save method for [setup] page for compatibility w/ serialosc device recall
  • serialosc device attached on save now auto-attaches if detected on next file load
  • fixed bug where dropping files on a row would stop auto-loading the sample if a bogus filetype was dropped on any other channel beforehand (if a compatible yet unparseable file is loaded it will still break this functionality)
  • added error message to max window when an incompatible filetype is attempted to be loaded
  • fixed "REWIRE" button to work properly after a preset is loaded
  • reconfigured aux-channel, replacing the 'send' command with a 'mute' - now send~ is accessed directly by tabs. note: will cause old /mixer/aux/sendtog mapping to be deleted on first new mapping
  • added 'input' command to replicate 'send' functionality from old aux-channel
  • added var-bright fading pulse for delay input when deactivated
  • added var-bright fade-out for reverb press (based on decay time)
  • refined serialosc.maxpat to speedup connection process
  • serialosc.maxpat now auto-connects to a newly attached monome if it matches the device at last save
  • fixed loading of mlrv2.2 (and prior) presets by adding backwards compatibility for saving by filename (rather than filepath)
  • repaired auto-device selection when connecting to a monome / arduinome device (default 8x8 for variable size devices)
  • setlist no longer auto-loads the first preset in your set, instead is blank until you add files to the list
  • when clocksource is set to rewire, master tempo is greyed out and does not respond to clicks
  • preset list now updates to reflect custom setlist when it is set to "ON"
  • added option for second MIDI INPUT for MIDI REMOTE section in setup pane
  • all MIDI ports are now addressed by name to avoid recalled settings loading the wrong device if the attached devices differed. note: old preset files won't load the MIDI ports correctly from a file, but will update when the set is resaved
  • added OSC grid-input functions. OSC REMOTE messages prefixed with /mlrv/key will now emulate grid presses. (address is /mlrv/key/<index>, where <index> is a number from 0 to 255, layout is 8horizontal*16vertical, then another 8X*16Y (two vertically tall rectangles, left then right), determine index by: (rownumber(0-15) * 8) + (column index), second rectangle is: (rownumber(0-15) * 8) + (column index) + 120, eg. row 2, column 10 = 2*8 + 10 + 120 = /mlrv/key/146 <state> - note: this functionality will emulate the 'top-row' of the monome as well, so the top 16 buttons are sent as 'mapping' commands
  • OSC grid-feedback is communicated to with identical messages to the input /mlrv/key messages (0 = off, 1 = on)
  • OSC feedback of VU levels via /mlrv/vu/<channel> <value>, where <channel> is 1 - 6, return or master, and <value> is 0. to 1.
  • general GUI updates for Max6 compatibility
  • removed superfluous "<new preset>> that was generated at end of preset list
  • updated tabs section to have a dropdown for each slot for dynamic loading / unloading. note: MAPPING tab is still auto loaded into the first slot to make certain standard mappings are not lost
  • updated +REVERB tab GUI, added gain control + added midi mapping
  • fixed bug where 4/6 group switch would not engage 6groups (also fixed group-send slider initial value set for 5/6)
  • added serialosc-zeroconf option (saved in your preset > best to overwrite the default preset.json with this info)
  • +ARC2 tab functional and GUI created
  • +ARC4 tab created mapped to the 3rd and 4th encoders on the arc4 (ie. run both arc2&4 tab for an arc4)
  • +AUXGRID updated and GUI finished (fixed tilt + led issues)
  • +MAPPING now acts exclusively for both buttons and addresses - creates one-to-one connection between address and connection, no longer has 'hanging-light' issue where old connection would still respond visually
  • corrected shortcuts for MAPPING tab. note: old keyboard mappings from previous loaded sets will be discarded
  • serialosc now correctly recalls current /rotation setting + refreshes 'device' setting
  • serialosc handles multiple devices + auto-clears umenus on load
  • +MANAGER tab added for extended preset management functions
  • TABs now load default settings on initialisation + recall previous with the saved file
  • groups 5+6 now correctly load saved mappings
  • added loading screen for presets
  • rewire clocksync fixed for Max6
  • added REMOTE ECHO to pass on recorded MIDI to a designated output
  • fixed bug where 'STORE NEW' wouldn't work correctly after a PURGE
  • added +MPATTERN tab for dynamic length audio / event pattern recording
  • fixed row-count issue where wouldn't respond to any number other than 7
  • fixed issue where the alt(option)-m shortcut for mapping would overwrite the last added mapping
DOWNLOAD MLRV 2.2 Mar 9 2011 more bugfixes!
  • fixed issue where user would need to select their .json preset file twice before successful loading
  • fixed windows pattr issue
  • added 'auto store & save' option in setup pane where hitting 'store' also auto-triggers 'save' to write edits directly to disk
  • bugfix in cell mode player system
  • added 16F mode button to setup pane (temporary)
  • fixed bug in cell mode which wasn't starting the xgroove player
  • removed gain + filter control from psamp~ and confirmed xgroove player
  • psamp~ player is functioning
  • launchpad groups 5+6 now light with identical colours to groups 1+2 respectively
  • deleting an entry from the mapping table now clears the pattr entry (renames it to placeholder 'empty slot)
  • mapping ranges are now correctly saved and recalled
  • un-slaved rows now correctly revert to tempo-lock when a new sample is loaded
  • sampler now works without having to change the bpm setting
  • last n-columns can now be looped by pressing a button and then the first slice in the row (the lights DON'T run backwards)
  • livid controllers are no longer diagonally modulated from the standard layout
  • envelope range for delay feedback no longer sets the lower limit to 0 when entering/exiting mapping mode
  • group 5 is fixed in 6group mode (if problems persist, try reselecting the quantize setting)
  • pattern recorders locked to quantize click for accurate re-engagement of press buffers
  • fixed tap tempo to now work with all devices
DOWNLOAD MLRV 2.1 Feb 18 2011 hella bugfixes in this one. please enjoy.
  • APC mapping is now initialised properly and doesn't have conflicting button presses.
  • Launchpad mapping no longer has stray LED feedback and loss of connectivity
  • mlrv will auto-detect and attach to MIDI devices corresponding to APC and Launchpad
  • AUX.maxpat has been renamed return.maxpat and now loads properly on windows machines
  • computer-keyboard mapping is now possible through the MAPPING tab
  • groups 5+6 now function properly and display in mixer section
  • OSC settings now properly recall hostname
  • setup pane has correct background colour
  • 'INTERRUPT' is now auto selected as it is required to run the program properly
  • 'OVERDRIVE' is now auto selected as the software will run more smoothly with it armed
  • interface colours are now hidden and a dropdown is in it's place
  • if the user wants to create a custom colour map the colour palette's are loaded by clicking 'custom' in the dropdown
  • group colours are auto-selected in launchpad mode to match the group colours to LED colours
  • mapping range now correctly saved (and recalled) with savefile
  • mapping trigger for 'next tempo-GO' added
  • led feedback for send.arm is fixed
  • group stops are now recorded with pattern recorders when the option is selected in the setup pane
  • preset.json is no longer overwritten on application close and will not be editable
  • users can create default mappings by loading a new set and setting up their interface + setup pane and then saving the set as 'preset.json'
  • tempo-lock is now re-instantiated when a file is reselected / octave setting reset
  • inner-loops are functioning correctly in all modes now
  • LED feedback is now wrapped for devices with less than the number of steps as the row has selected
  • octave increment & decrement arrows now function as expected.
  • default row-steps is now auto-selected to the appropriate length when the device is selected
  • inner-loops are now preserved in immediate-changes mode when any parameter is adjusted (including start+end points!!)
  • loadtime has been substantially lowered and download has been shrunk
  • preset names can now include spaces
  • new benefactors and supporters added
DOWNLOAD MLRV 2.0 Jan 2 2011 initial release of mlrv 2.0 — apc & launchpad support is currently experimental. monome accelerometer control and ROW/CELL mode (aka 64F) are also not yet supported, groups 5 & 6 don't appear to work either, we'll get to this in an upcoming release. please be patient as we work out the bugs.

a /parallelogram/ joint


have a question? say hello@parallelogram.cc