MMM4Live Documentation (v0.1b1)

Non-Disclosure Agreement (NDA): This is a beta-testing project. By downloading and using the MMM4Live software and its documentation, you agree to not distribute or communicate about it to anyone but those directly involved with this project.

Documentation

Setup MMM4Live in an Ableton Live session

  1. Download the latest release. Unzip the .amxd file.

  2. Open a new Ableton session or download the Template Starter.

  3. Navigate to the Device view of the Master track.

4. Drag and drop the .amxd file into an empty slot of the Device chair

Master track’s device chain

Dragging & dropping MMM.amxd file

5. A device instance for MMM4Live should appear

MMM4Live device’s appearance

MMM4Live Interface

The MMM4Live Ableton device interfaces the MMM model, an algorithm capable of generating multi-track MIDI patterns. The model requires some constraints to be satisfied to work properly.

MMM’s model constraints:

  • The MMM model only works on MIDI tracks.

  • It always generates MIDI patterns on a selected track conditioned on all other existing tracks belonging to the same scene in Ableton.

  • The minimum number of bars is 4. There is no maximum bar length for a given scene. However, the longer the bar length of your scene, the more time it takes for the MMM model to generate the MIDI patterns.

  • The model also requires time selection on all existing clips within a given scene to be of the same number of bars.

  • The model displays the following error message whenever clips of the same scene are not of the same bar length:

Error message on bar length mismatch

Primary Controls

  • Generate: Instructs the MMM model to generate a new pattern of MIDI notes for the selected track(s). If one of the MIDI tracks has no clips for that scene, MMM4Live will automatically create a new clip and then generate the MIDI pattern for it.

  • Instrument type selector: the type selector helps the system determine which instrument to generate for. The selected instrument does not need to be related to the instrument device loaded in your MIDI track. The choice of instrument does not impact the choice of device.
    This parameter is to inform the MMM model for the kind of MIDI patterns to generate. The model will compose that generated patterns in the composition style of that instrument. The generated patterns could then be interpreted independently in the Ableton session by instrument devices of your own choosing. There are two options: “instruments”and “drum:”

    If you select the “drum” type, a drum pattern or pattern expected to be played by a drum instrument will be generated.If the “instrument” type is selected. Then, you must also select a value from a list of MIDI GM Standard instruments. The user can select no instrument (the “any” value), a specific instrument (e.g. “Slap Bass 1”) or an instrument group (e.g. “Bass”). A total of 8 instrument groups is available. Depending on the user’s choice, the three following scenarios are possible:

    • If no instrument is selected or the value “any” is selected, the MMM model will randomly chose one instrument to generate MIDI patterns for.

    • If a specific instrument is selected, the model will generate MIDI patterns composed for that instrument.

    • If an instrument group is selected, the model generates the MIDI pattern based on an instrument randomly chosen from that instrument group. For example, if we choose the “piano” group, the sequence might be generated for an “Electric Piano 2” or a “Bright Acoustic Piano” depending on the MMM model’s random selection.

  • Note density: This parameter roughly controls the amount of notes generated in a pattern. A higher density results in a higher amount of notes being generated in the pattern and vice versa. If no density value is selected, the model will randomly pick a value for it.

  • From scratch / from content: respectively determines whether a full pattern or a specific subset of bars are generated by the model.

  • Bar selection: allows to select the specific bar sections to be filled exclusively with generated 1-bar MIDI patterns.

Secondary Controls

  • Craziness: This control, also called typicality, determines how much the structure of the generated MIDI pattern is closer or farther to what the MMM model is most likely to generate. Technically, it corresponds to the the temperature in the sampling of the neural network. There are 2 ends to the dimension to this control which goes from the most likely to the least likely to be generated MIDI patterns:

  • Conservative: the generated midi pattern is standard to what the model has been trained on and will likely generate for that request.

  • Experimental: the generated midi pattern is less common than what the model typically generates. Note pitches, positions and melodic lines are least likely to be normally generated and therefore more experimental.

  • Response curve: Smoothen or harden the distribution of values on the craziness meter. A hard response curve means values decrease/increase sharply on the ends while staying relatively stable in the middle. A smooth response curve means that value changes linearly along the craziness meter.

  • Tracks per step: The number of tracks being processed at each generative step

  • Bars per step: The number of bars processed within each track at each generative step

  • Percentage: This parameter, in the case of generating a new MIDI sequence for a pre-existing MIDI pattern, controls how much of the existing MIDI pattern is preserved or replaced by the generation. This is done based on the number of tracks per step and bars per step. For example, for tracks per step and bars per step each 4, and percentage at 25, the model will process only 4 out of 16 bars to be generated at each generation step. This parameter can be combined with “shuffle”.

  • Shuffle: This option is related to tracks per step and bars per step. When activated, it randomizes the selecting order of tracks and bars being processed at each generation step. For example, if there are 4 tracks of 8 bars each to be re-generated and bars and tracks per step are respectively 2 and 3. The model will not processed them sequentially. At each generation step, it will randomly select 2 tracks, each out of which 3 bars will be selected to be re-generated. This ordering matters because it influence which bars are conditioned by which neighboring bars and when.

Excluding clips from being used for generation: This is achieved by muting the corresponding MIDI tracks. Within a given scene, the MMM model allows you to generate MIDI patterns for the selected tracks given all existing patterns on non-selected tracks and excluding patterns from clips on muted tracks.


Mute buttons for excluding clips

Use cases

MMM4live is a flexible model that allow to generate from scratch, add new tracks to existing sessions, make variations and remixes of existing compositions, continuations, transitions, etc. Many use cases for the system are still to be discovered. The size of the search space is huge enough that it is more recommended to prime the system with existing MIDI patterns that you have and like and condition the generation on that.

We will now cover few examples of how MMM4Live can be used for music composition.

Example 1: Generate or re-generate a full pattern

We use the MMM template (or your own prepared session) and we assume you have installed the MMM4Live

“From scratch” indicates that the MMM model generates an entirely new MIDI pattern, discarding any existing MIDI data in that selected clip. To generate from scratch:

  1. Select a given scene and select the MIDI track you wish to generate for.

  2. A new tab named after the MIDI track should show in MMM4Live interface displaying generative parameters for that track.

  3. Ensure the generate “from scratch” is activated.

  4. Click on the “Generate” button.

  5. MMM4Live will populate the clip with the generated MIDI pattern’s content conditioned on existing clips in the scene if there are any.

Example 2: Generate full patterns in several tracks simultaneously

We use the MMM template (or your own prepared session) and we assume you have installed the MMM4Live

When generating more than one track at a time, generative parameters are independently available for each track via the corresponding tabs under the “Generate” button. To generate for two tracks:

  1. Select the working scene, then select the two MIDI tracks you wish to generate for.

  2. Two tabs should appear in MMM4Live interface.

  3. Ensure the generate “from scratch” is activated.

  4. Navigate to each tab to set generative parameter values for each track to be generated.

  5. Once happy with your settings, click on the “Generate” button

  6. MMM4Live will populate the clip with the generated MIDI pattern’s content.

Example 3: Re-generate a subset of bars within a given pattern (in-bar filling)

We use the MMM template (or your own prepared session) and we assume you have installed the MMM4Live

It is possible to only generate a subset of bars within a given MIDI pattern. Bars are represented in MMM4Live interface by a set of oval-shaped clickable buttons located in the “^ bar selection” view; each corresponding to the bar at that position. For example, the 2nd oval-shaped button corresponds to the 2nd bar in the MIDI pattern for that track. Clicking on those buttons select/de-select the bars for generation. To re-generate only the 1st and 3rd bars of an existing 4-bar MIDI pattern:

  1. Select the scene from the clip that contains the 4-bar MIDI pattern

  2. Select the MIDI track for that clip

  3. Ensure generate is set to “from content”

  4. Navigate to the “bar selection” view

  5. In the bar selection view, click on the 1st and 3rd oval-shaped buttons to select them, making sure other oval-shaped buttons are deselected.

  6. Set desirable generative parameter values and click on the “Generate” button

  7. By activating the 1st and 3rd oval-shaped buttons, the MMM 4Live generates only for their corresponding bars. The system will populate the 1st and 3rd bar sections within the MIDI clip with generated 1-bar MIDI patterns

This operation can be done as many times as needed only the desired MIDI outputs are achieved. The total number of oval-shaped buttons corresponds to the total number of bars in the selected MIDI track.

Example 4: Generate 2 tracks of 16-bars simultaneously

We use the MMM template (or your own prepared session) and we assume you have installed the MMM4Live

The MMM model works with MIDI tracks of any number of bars as long as we have at least 4 bars (see paragraph on “Model constraints”). To generate 2 tracks (e.g. melody and bass) of 16 bars length:

  1. Ensure all existing MIDI clips in the scene you are working with are 16 bars in length.

  2. Multi-select the 2 MIDI tracks you wish to generate for

  3. Two tabs, one for each track, should appear in MMM4Live interface. Set generate to “from content” for each tab

  4. The bar selection view on each tab should now display 16 oval-shaped buttons

  5. Select / de-select the oval-shaped buttons to chose which bars you wish to re-generated or set generate to “from scratch” to re-generate entire 16-bar MIDI patterns.

  6. Set other desirable parameters and click on the “Generate” button

  7. Repeat from Step 5 to continue generating MIDI patterns for those MIDI tracks until satisfied