Download mlrV (latest version via GitHub)
Temporary Update
27.11.9:mlrv.27.11.9.zip
Submit bug reports / Requests (Lighthouse issue tracking)
Documentation is now maintained on this wiki page to make it easier for users of mlrV to contribute to, update and improve it. Helping out in this way will lighten the burden on those who are working on the patch itself.
The latest version of mlrV can be downloaded at GitHub. Development of mlrV can move quite quickly and the documentation may lag behind in some areas. If you find that this document does not reflect the functionality of the latest version, please help others out by updating it to reflect the differences.
Max/MSP (or Max/MSP runtime) 5.0.6 or higher.
V is for Visual
V is for 5.. MaxMSP 5
mlrV attempts to expand traditional mlr sets into an increasingly raucous affair. by incorporating a sample slicer, multiple different play modes and highly responsive delay, mlrV can be used not only on stage with its big fullscreen (and easy to read) interface, but also in the production and preparation stage.
whilst the GUI redesign was informed by copious use of Ableton Live, the overall purpose was actually to decrease the need to use Live to set up mlr sets.
In mlrV, a Sample is an audio file. A sample can be assigned to a Channel. A corresponds to one of the horizontal strips in the GUI (pictured below), and to one row of your monome controller.
A Channel always belongs to a Group. One Group can have several Channels assigned to it. A Group is really a 'Group of channels'.
Channels that belong to the same Group mutually silence one another when they start to play. This arrangement gets called a 'choke group' or 'mute group' in other softwares.
A preset is a collection of many channel→sample assignments, channels settings, and a tempo. A Set contains many presets. Typically, you would prepare for a performance by loading a previously prepared Set into mlrV.
Audio files need to be loaded into mlrV before they can be played back. In order to load samples into mlrV, drag them from your operating system's native file browser and drop them into the top-right box labeled 'Drop'. A list is displayed in this box showing all files that are currently loaded into RAM. The number next to 'Loaded' indicates how many files are loaded in total. In case you have too many loaded files to display them all in the box at once, the 'up' and 'down' allows allow you to scroll to see more.
A Channel is the 'player' of a sample. A channels settings determine how its sample will be played.
The following controls are available for each channel.
Press this button to select the whole sample in the waveform loop selector.
Click the file name to enter the dropdown menu to select a loaded sample for this row.
This setting determines how many sections the sample should be treated as being made up of. Changing the number of steps changes the relationship between the buttons on your monome, and the position within the sample that they will map to.
The default number of slices is 16. Most of the time, values of 8 or 16 will be suitable. If you're using samples in alternative time signatures you might need to adjust this control.
NB. If mlrV tries to display a led that's on a column that your monome controller doesn't have, then the column number will 'wrap' and display on one of the available columns instead. For example, if mlrV wants to turn on a light at column 9, column 1 will light up on your 8*8 monome. This means that when playing loops set to 16 steps, on an 8*8 controller, the last eight steps of the loop will light up the same buttons as the first eight steps do.
Shifts the speed and pitch up or down by a factor of 2.
Play the sample backwards.
Shows current play speed where 1 is original speed. Click and drag to unlock sample from tempo and force loop to play at a particular speed.
The sample can be pitch adjusted by a semitone amount. 0 is no shift.
4 play modes are available for samples:
Select which group (1-4) the audio should be sent to. Only one sample from any group can play at once. Samples can therefore cancel each other when set to the same group.
The waveform behind each channel displays the currently loaded sample. The white / light grey grid is used to show the slice points of the loop (divided by number of slices). A red play marker will display the currently playing slice. Click and drag on the waveform to set new loop points for the sample (use shift click to adjust the nearest loop point).
Alternatively loop mode can be used by selecting it in the ‘mlr’ tab of the options section. In loop mode dragging vertically will adjust the total length of the loop. Dragging horizontally will move the loop selection left or right. This mode is particularly suited for live manipulation. Slice mode is intended more for preparation and production uses.
A set contains many presets. A preset contains many row→sample assigments, channels settings, and a tempo. The preset area is located above the tempo section.
Preset number shows which preset is currently selected. Arrows allow navigation forward and backward through saved presets. Preset name shows the name of the currently selected preset.
Old mlr2 presets will not work in mlrV.
next tempo: a predefined tempo can be set for any preset. Click the number box titled next tempo and type the tempo of current preset. You will need to press store again to save this number. Pressing set will change mlrV’s tempo to the next tempo instantly.
Alternatively you can control next tempo on the monome itself. Double click the second to last button (preset button) in your monome’s control row, the light should turn on. mlrV will now update to your next tempo on the first button press. If you have armed the next tempo and then want to disarm, simply tap it again
In order to save your set for the next time you open mlrV you need to write your presets to a file. After your presets have been stored, you should push save. You will be asked to designate where to save your set and give it a filename. After doing so 2 files will be created: One will be the file you created, the second will be the file you created with a ‘_flist’ suffix
When you wish to reload your set press load, then select the file you saved (not the file with ‘_flist’ on the end). If you have modified your set you may wish to overwrite your old set with the new one; press resave and the old file will be overwritten with your updated set.
At the bottom of the interface is a row of five columns. The first four correspond to the four groups that mlrV's samples must be assigned between. Each group column consists of 2 volume faders:
The source of this delay send is the group signal _after_ it has been adjusted by the gray slider. In other words, for a fixed blue slider position, the level of signal sent to the delay effect will vary as the gray slider is adjusted.
In this manner delay can be added only to the parts one desires. The mute button at the bottom of each group control can be activated to silence that group. If your monome has tilt functionality you can hold button 6 (the preset button), press the group and tilt forward or backward to change volume.
The delay fader operates as per the group faders. The 'delay' box below the fader indicates whether the delay sends are turned on and sending audio. The delay destination can be routed as any other channel by setting the dropdown menu in the volume slider. The button assigned to delay send on your monome can be act as a toggle or a momentary switch (see top-row functions).
All audio channels have control over their routing destination. Click master to open a dropdown menu of all available routing destinations. These destinations are master plus any stereo pair output of your selected soundcard–your soundcard will be queried and auto-fill the available options. All groups default to master sending their audio via the master fader and inserts. These options allow individual channels to be output on individual hardware outputs. Alternatively, it allows individual channels to be output via soundflower or rewire
The volume fader functions as per group faders. Thru can be switched in to play the audio from the soundcard / microphone to the selected output. The top left number displays the audio loop length in beats.
Loop turns on continuous loop recording. This is useful if you record a button press pattern and then record continuous audio into the buffer.
Overdub adds the currently inputting audio to the current resample track.
Input Source is a drop down to select your input (eg. microphone / input jack).
Channel number allows selection of the input channel that you desire.
Each feedback repeat passes through this filter, removing more treble on each pass. The filter slope can be controlled by clicking on the dark middle section and dragging left / right. To add resonance to the filter, click the edge of the dark section and drag towards the centre. NOTE: be careful with resonance as it can result in very loud feedback and distortion
The left vertical slider controls the speed at which feedback increases as you hold the feedback button.
The middle horizontal slider controls the range of feedback available (from 0 - 100%) control this by clicking and dragging across the range you wish to use. The dark green line shows you what the current feedback level is.
The right vertical slider controls the speed at which feedback decreases as you release the feedback button.
When using tilt mode: y-axis rotation of your monome maps to the amount of delay feedback in the following way:
sync: Click the number of semiquavers (16th notes) desired for delay time. You can apply a modifier to the synched delay time by dragging the % value number box by up to 33.3%.
time: Click the 'sync' button and it will display ‘time’. Drag the number of milliseconds to the delay from 1ms to 800ms.
The large number sets the current tempo. Tap the number boxes above to adjust the tempo by preset amounts. If your monome has tilt functionality hold 6 (preset button) and tilt side to side to change tempo.
Button presses can be locked to the beat to allow tightly locked loops. Quantize requires that a button is pressed slightly before it is intended to be triggered. If you prefer to play with rubato or swing it is recommended that you set this setting to ‘none’
When mlrV jumps backwards and forwards within a sample it's playing back, audible clicks can occur due to the nature of digital audio. While these clicks can be quite musical, they're often unwanted. mlrV's microfade system can apply a tiny crossfade between the two sections of audio whenever a new button is pressed, smoothing the transition and avoiding clicks. Mircofade values are measured in milliseconds. A value between 1 and 2 is typically enough to remove most clicks. Higher settings may be necessary if the audio sample has lots of bass energy. Alternatively if you hear clicking but the bass of the sample is not important, you could try processing the sound with a high pass filter to remove unnecessary bass content before re-importing it into mlrV.
High microfade durations should be avoided if not required, because the percussive impact of sounds can suffer if an important transient sounds while a fade is being performed.
The top row of your monome is used for actions other than triggering samples in channels. In the bottom right part of the mlrV GUI, there's a tab labeled 'top-row'. In this panel, you can assign the behaviors you would like to be triggered by the top row of buttons on your controller. This section describes the available behaviours.
from http://post.monome.org/comments.php?DiscussionID=4156
the '#[ctrl]press' function is what allows you to pipe the button into an insert. basically it sends a message to a receive object where the '#' is replaced by the number of the button. in order to see how it works exactly, the easiest way is just to look at the framework.maxpat and watch how the button input is handled.
A 'stop' button for the numbered group. When a channel belonging to the group is playing, the button will light up. Pressing a lit button will silence the playing channel.
mlrV includes several independent pattern units. A pattern unit allows the recording and subsequent playback of a sequence of button presses.
Each pattern unit is controlled by a single button with several states. Press the button once to arm the recorder, recording begins at the following button press for a predefined number of beats (duration in beats can be set in the options panel). Once recording has finished, tap the button again to stop. To overdub new button presses, hold the recorder button down whilst playing new notes for the sequence. Release the button when you've finished overdubbing new button presses.
Tap the assigned button to toggle the delay sends. Alternatively, hold the assigned button down for momentary delay sends (the sends will be deactiavted when you release the button after holding it)..
Hold button 6 and tap 5 (back) or 7 (forward) to step through presets.
Press and hold button to increase to maximum feedback setting. Release button to fall back to preset level.
X-axis rotation controls the delay filter frequency. Y-axis rotation controls the delay feedback value.
Hold the assigned button while tapping a group's stop button to increase that group's volume.
Hold the assigned button while tapping a group's stop button to decrease that group's volume.
X-axis rotation shifts tempo up and down in small increments. Y-axis rotation controls group volumes in the following way:
Loads the previous preset.
Loads the next preset.
This function adds 8 to the column number of any channel button press, while held. For example, with this modifier is active, pressing the first column of a channel will be treated as if you'd pressed the ninth column (whether or not your controller actually has that many columns). This can be useful for emulating a 16*8 button matrix on an 8*8 monome.
Inside this tab are five areas:
Controls MaxMSP’s internal dsp settings. Select your soundcard with the dropdown menu in the top left. Overdrive should be turned on to avoid dropped presses. Interrupt should be turned on to allow pattern recorders to function correctly. Audio vector sizes can be chosen to taste; larger sizes mean higher latency, smaller sizes mean higher CPU load. The CPU meter shows how much mlrV is taxing your computer's processor.
The recorder will stream the output of ‘master’ to your HD as an .aiff or .wav file (OS dependent). Click save and choose the desired location. Click start and begin your performance. When finished press stop to finish writing audio.
The GUI section controls visual interface (and some performance) controls.
'imm changes'
'inner-loop': When on, pressing two buttons from the same sample row simultaneously will result in looped playback between the corresponding locations in the sample. If you don't plan on using this this feature, you may want to turn 'inner-loop' off to prevent accidentally activating looping during periods of rapid button pressing.
'mouse mode' controls the response of drawing with the mouse on the waveform within a channel.
'No. of groups' adds 2 additional group busses.
This section presents options related to mlrV's pattern recorders. The dials represent the length of the patterns that will be recorded in beats.
'Record Group Stops' allows group stops to be recorded in addition to sample row presses. This can be especially useful for 'slice mode'.
Click /mlr to set the prefix in monomeserial. License displays licensing information. Click fullscreen to enter fullscreen mode. Fullscreen mode currently only displays at 1024×768. You can also enter Fullscreen mode by pressing F11.
Selecting from the boxes in this diagram adapts mlrV's interface to your monome. The boxes represent common monome shapes.
If you have monomeserial open when you load mlrV it will update automatically. Otherwise you can press the monome you have connected.
NB: on windows auto-selection will not occur - just click the correct box for your system. IMPORTANT: this is required before presets will function properly.
If you press the 256 or vertical128 ‘+8rows’ will display. Press this button to pop out an additional 8 rows
Clocksource chooses between internal and rewire timing engine. Send midi sync will enable another program to slave to mlrV–choose your midiout channel and turn on.
Options are available to customise the tilt response.
This section allows expansion of mlrV functionality.
Included in the base package is a framework which demonstrates the available hooks. Also included is a simple example filter with resonance. Please see _framework.maxpat in /inserts for more information
Midi Insert by dovemouse: Adds midi control to mlrV, instructions are here: http://post.monome.org/comments.php?DiscussionID=3717
mlr was originally written by Brian Crabtree www.monome.org.
mlrV was fundamentally based on mlr2 and it is not a complete rewrite substantial amounts of code were borrowed from Brian’s work, as well as large amounts of inspiration. mail: tehn@monome.org
mlrV has been refactored by Trent Gill over the course of 2008 after desiring a more detailed visual display to accommodate easier live performance. mlrV was exclusively written in MaxMSP 5 to take full advantage of the improvements to timing and graphical user interface.
mlrV is still a work in progress and there is some very specific functionality that is still missing or incorrectly functioning. These issues should be ironed out over a short period of time though this is dependent upon external workloads. mail: galapagoose@gmail.com
Throughout the process discourse and consultation has flowed across the interwebs with particular artistic guidance and help flowing from %. inspiration for such an intuitive delay interface would not have been possible without these contributions. see: http://rhombus.mytrellis.com/
mlrV is an open project and further collaborations and skill-sharing is encouraged. if you'd like to get involved drop an email to galapagoose@gmail.com or post in the monome forum.
Want to help out but don't have programming skills? donate via paypal to: trent.gill@gmail.com
mouse edit - adds midi map for controlling volume, tempo etc from an external controller. Use the midi insert instead.