Eokuwwy Development

Saturday, July 6, 2019

MIDI Mod is a set of modules designed to be used as modulation sources that send MIDI to various destinations. In addition, the majority of MIDI Mod's own parameters can be modulated internally. For example, the output of ENV 3 could be used to control the rate of LFO 1. The output of LFO 1 could be used to control the playback velocity of the arpeggiator, and so on.

MIDI Mod features a massive 32-slot mod matrix, which can be used for routing internally and externally to any number of things, including hardware devices, software, and other apps.

The sheer number of possibilities can be daunting, but don't let that stop you. To make things less overwhelming, MIDI Mod comes preloaded with parameter mappings for more than 50 devices and apps, including some of the most popular devices on the market today from manufacturers like Korg, Roland, Yamaha, Sequential (DSI), Novation, Elektron, Behringer, Moog, and more. More are being added, and if a mapping doesn't exist for your device yet, fear not. It's very easy to create routings just by entering a CC number or via MIDI Learn. MIDI Learn even works with Sysex!

TL;DR

4 LFOs

All the classic wave forms, plus 1 slot per LFO for a user-editable waveform

MIDI Mod User Guide

MIDI Mod is a set of modules designed to be used
as modulation sources that send MIDI to various destinations. In addition,
the majority of MIDI Mod's own parameters can be modulated internally. For example, the
output of ENV 3 could be used to control the rate of LFO 1. The output of LFO 1 could
be used to control the playback velocity of the arpeggiator, and so on.

Modulation SourcesMIDI Mod has 7 main modulation sources, 4 LFO's (Low Frequency Oscillators)
and 3 Envenlope Generators. The arpeggiator can also be used as a modulation source.
In addition, when MIDI Mod is combined with an input source, such as an
external MIDI-enabled keyboard, the following modulation sources are available.
Aftertouch
Velocity
Note Played
Modwheel
Pitchbend
Expression
CC (Any MIDI CC of your choice)

DestinationsMIDI Mod allows up to 32 source to destination assignments. Each
source has a maximum of 8 destinations. Allowable destinations include internal ones (parameters within MIDI Mod), MIDI CC, Sysex, NRPN and RPN. In addition, the Default destination set includes
Aftertouch (channel pressure), Note (on/off), Pitch Bend, and Volume, among other commonly
used parameters.

Assignments
Assignments can be made in a number of ways. They can be made directly from the main
modulation sources (LFO 1-4, ENV 1-3) by tapping the "+" button and then selecting
the desired destination. For maximum control over modulation assignments, use the
Mod Matrix.

Mod MatrixMIDI Mod features a 32-slot mod matrix which can be used for internal and external
routing. Simply tap on a source to get started. (Where it says "Empty"). Select a modulation
source from the provided options. Then tap on "Dest" to select a destination. The first
option in the destination select menu is "MIDI Mod". Use this option for internal routing.
Choose any of the other devices in the list for external modulation. You will then select the
MIDI channel, and then from there you can enter the destination manually with "Manual or Learn",
whereby you can input a CC or Sysex value manually or just twiddle a knob or control from your
device to make the assignment.
You can also choose a destination from any of the templates in the list. Just select a template and
the list of possible destinations will appear.

Once a destination is selected, you can control the exact range of values used for modulation. This
gives more granular control than a simple "Depth" parameter. Just tap on the range to change it. If you press the "INV" button, it will invert
the values sent to the destination. This is sometimes referred to as a negative amount.
For example, if you are using "NOTE" as the
modulation source, the output MIDI value will increase the higher you play up on the keyboard.
However, when "INV" is pressed, the output values will decrease the higher you play up the keyboard, and
they will increase when you play lower notes. Pressing the "BYP" button will disable or re-enable the modulation defined by the mod slot.

Arpeggiator
The arpeggiator has the following basic features:

Octaves: repeats the pattern up or down up to 2 octaves

Note Repeat: repeat each note in the pattern up to 7 times (plays 8 notes total)

Arp Pattern: changes the sequence in which the notes are played back. Press the
"Incl End" button to repeat the top or bottom notes on a pattern that goes up and down. For example:
"C E G G E C C E G G E C...", as opposed to "C E G E C E G E C..."

Swing: Controls the swing amount of the pattern as it is played back

Latch: allows you to input the notes and have them played back without needing to hold them down.
Up to 16 notes can be entered in Latch mode, which makes it function similar to a basic 16-step
sequencer. The notes appear in the "Pattern Edit" section.

Trans: Turns on transpose. This allows you to transpose the current sequence by pressing a key.

Ignore: The arpeggiator will ignore all incoming notes, allowing you to play freely over the top.

Split: Will ignore notes played above the split point (defaults to Middle C)

Inv Split: Will ingore notes played below the split point.

Device: Select specific outputs for the Arpeggiator. Press and hold on the list of devices displayed to clear them all.

Advanced Features

Velocity control: Press the "Vel Cntrl" button to set the velocity to a set amount by using the
Amount slider.

Velocity Decay: Use the "Decay" slider to have the velocity decrease as the pattern is played back. Press the "Inv"
button to have the velocity increase as it is played back. Press the "Fade" button to have the
velocity fade all the way down to 0 by the time the pattern reaches the end of its cycle.

Pattern Edit: In Latch mode, up to 16 notes can be iterated over. You can skip notes by tapping
on them in the "Pattern Edit" grid. This allows for more interesting rhythmic patterns. Keep in mind that the note displayed on the step may not match the actual note, depending on the playback pattern. The notes displayed on each step are in accordance with the order in which they were entered.

Auto Sequencer: These features allow you to transpose the entire arpeggiator pattern over time
according to certain parameters. You can think of it as a sequencer of a sequence.
Use the "Auto Trans" slider to change the pattern. The easiest
way to hear how this feature works is to just have a single note being played back in latch mode.
Then you can cycle through the playback patterns and play with the various options to learn how they
work. "Trans Step" controls how many steps the auto sequencer will run through for any given pattern.
"Trans Pattern" controls the sequence in which the pattern is applied. In addition, there is one
"User" pattern available as an "Auto Trans" pattern type. Pressing the "Edit" button opens a 16-step editor window, in which
you can transpose the entire pattern up or down 24 semitones for each step in the pattern.

Mod Only: Press this button to stop sending notes and only send modulation from the arpeggiator.
This assumes that you have mod slots in the Mod Matrix that use the arpeggiator as a mod source.

Main Toolbar

Settings (Gear Icon): Open the global settings

Load Saved Presets (Folder Icon): Load a saved preset. Sessions are auto-saved when you close or leave the app. You can recall that session by selecting "Previous Session" from the menu.

Save Preset (Disk Icon): Save the existing session as a preset.

LFO: Opens the LFO Module

ENV: Opens the Envelope Generator Module

MOD: Opens the Mod Matrix

ARP: Opens the Arpeggiator Module

On/Off: Button to quickly enable or disable the Arpeggiator from anywhere

KBD: Toggles an on-screen multi-touch keyboard that can be used to enter notes in the ARP or to be
sent to an output. (Configured in the settings). The keyboard has pitch bend and mod wheels, as well as Hold, Velocity, and Aftertouch functions. When the velocity button is engaged, the bottom of the keys send out the highest amount of velocity, and the top of the keys send out the least. When Aftertouch is engaged, you can send out aftertouch by holding a key and dragging either up or down.

Tempo Controls: Press the right or left arrow to increase or decrease the tempo

Tap: Tap the button 4 times to set the Tempo

Link: Connect MIDI Mod to other Ableton Link enabled apps, software, and devices. Whenever possible, use Ableton Link instead of MIDI clock send and receive. It is far more stable and reliable.

Bluetooth: Manage bluetooth MIDI connections.

BG: Allow MIDI Mod to continue operating when the app is in the background

Panic: Sends all notes off to all output devices (Configured in the settings)

LFO

BPM: Only allows the LFO rate to be a clock subdivision of the tempo. Ranges from 8-bars to
32nd notes.

Sync: Allows you to sync the rate of one LFO to the rate of another.

Main Switch: Enables or disables the LFO

Rate Mode Button: Sets the LFO range to slow or fast. This makes it easier to dial in very slow
rates. The max rate for fast mode can be configured in the Settings.

One Shot Button: When one-shot mode is enabled, the LFO will stop after one iteration over its waveform. It can be retriggered by toggling the main switch on/off, or via the keyboard if the "Key" button is enabled or there is a "Delay" amount greater than 0.

Delay: When a key is pressed (or MIDI Note On is sent) this controls the amount
of time between that key press and when the LFO begins to have any affect on its destinations.

Key Button: Restarts the LFO's oscillator whenever a key is pressed

Phase: Adjusts the phase of the LFO (point where the waveform starts)

Depth: A master depth control that allows you to quickly adjust the impact the LFO has on all of
its destinations.

"+" Button: Assign destinations to the LFO quickly with the "+" button.

Edit Button: When the selected wave shape is "User", press the Edit button to open the wave shape editor. Use the sliders to effectively "draw" your own LFO wave shape. If you turn off the "Smooth" button, then the waveform changes in between the slider positions will be abrupt (similar to a square or random wave)

ENV

Sync: Allows you to automatically re-trigger (loop) the envelope according to a subdivision of the current tempo, rate of an LFO, or simply just iterate over the envelope's whole cycle with the "Loop" option.

Retrig: With retrig enabled, you can re-trigger a looping envelope with a key press or the trig button.

Key: When enabled, a key press will trigger the envelope and a key release will release the envelope. Turn this off to play the keyboard without having any effect on the envelope.

Main Switch: Enables or disables the envelope

Trig: Manually trigger the envelope on and off with this button

Depth: A master depth control that allows you to quickly adjust the impact the ENV has on all of
its destinations.

"+" Button: Assign destinations to the ENV quickly with the "+" button.

Stages: Envelopes 1 and 2 have the classic "Attack", "Decay", and "Release" stages with a "Sustain"
level. (ADSR). In addition, they also have a "Delay" and "Hold" time, which are especially useful for
looping.
Envelope 3 has an additional time stage, and allows you to control the levels reached for each stage. If
you wanted to use this as a classic ADSR, you could completely ignore "T1" and "L1", and then set "L2" to
the max and treat "L3" as "Sustain" level. Then "T2" becomes "Attack", "T3" would be "Decay", and "T4"
would be release.
Maximum stage times for each envelope can be configured in the settings.

Settings
The following parameters can be configured in the Settings section. Tap the "Gear" icon to open the settings window.

Tx MIDI Clock: Sends MIDI clock system messages to any destinations specified in the "Clock Out" outputs. If possible, use Ableton Link instead of MIDI clock send and receive. Link's settings can be accessed via the Link button in the main toolbar.

Rx MIDI Clock: Sync MIDI Mod's tempo to an incoming MIDI Clock source, specified in the "Clock In" input. If possible, use Ableton Link instead of MIDI clock send and receive. Link's settings can be accessed via the Link button in the main toolbar.

Tx HW Pulse: Sends a pulse out of the device's audio output, which can be used to trigger
an external device. You may need to turn up the volume on your device for this to have any effect.

HW Pulse Subd: The clock subdivision used for the hardware sync pulse. Set it to the middle position (1/8) to sync with a Korg Volca.

HW Pulse Latency: The amount of additional latency to be used when sending out a pulse

Clock In: Select an input source for MIDI clock. Use this in conjunction with the "Sync"
button on the Toolbar to allow external MIDI clock to control MIDI Mod's tempo.

Control In: Devices that can be used to control MIDI Mod's parameters either by MIDI Learn or the published MIDI CC's (which are shown below)

Note/Mod In: Devices that can send MIDI notes, expression, aftertouch, pitch, and modulation
to MIDI Mod, such as an external keyboard controller

Note Out: Any notes from the internal on-screen keyboard or Note/Mod inputs will be routed to these destinations. Try to avoid MIDI feedback loops when assigning note inputs and note outputs.

Parameter Mappings: Opens an editor window which allows you to configure your own named parameter mappings, which will show up when selecting a destination. See the section below for specifics.

Choose Theme: Choose MIDI Mod's color theme. You will need to terminate and relaunch the app for the changes to take effect.

MIDI Learn: This allows you to override MIDI Mod's default parameter mappings. Simply tap on the parameter name in the list, and then send a MIDI CC (by twisting a knob on your MIDI controller, for example)

Favorites (1-8): Select up to 8 named favorites to be displayed first when selecting a destination. This allows you to select destinations more quickly for the things that you use the most.

ENV Max Time (1-3): Controls the maximum amount of time for each stage of the given envelope.

LFO Delay Max Time (1-4): Control the maximum delay time for each LFO.

LFO Max Rate: Sets the maximum LFO rate (in Hz) for fast mode. The default is 10 and the max is 40.

AT Delay Time: Controls the amount of time between when a note is first detected and when you
wish to start processing incoming Aftertouch messages. This is useful for sensitive keyboards that
start sending aftertouch messages immediately when the keys are pressed.

LFO Resolution: Sets the resolution of the LFO. This reduces the load that the LFO has on the CPU. Lower resolutions may not be able to output an adequate number of MIDI messages for faster LFO rates.

ENV Resolution: Sets the resolution of the ENV. This reduces the load that the ENV has on the CPU. Lower resolutions may produce more of a "steppy" output which may be noticeable during long attack, decay, or release times.

ARP Split Point: Customize the left/right split point which can be used when the Arpeggiator is on<

Max MIDI messages per second: The maximum number of MIDI messages a mod source can send per second. This can be useful when working with a device that might not handle a rapid stream of incoming MIDI messages very well.

Parameter Mappings Editor
Open the parameter mappings editor by clicking on "Parameter Mappings" in the settings. This editor window allows you to create a custom named mapping, which will show up in the list of destinations under "User Defined Mappings" when making assignments. Create a new mapping by selecting "New Mapping" in the menu that appears. You can also edit or delete an existing mapping from this menu.

Required Fields:
- Display Name: The name of the device, app, etc that this mapping is for. This is what will show up first when selecting a destination.
- At least one parameter mapping

Enter parameters by editing cells in the scrollable table in the top half of the editor window. Enter the name of the parameter, the type (CC, Sysex, NRPN) and then the value.

The value will be either a CC number, a sysex string, or an MSB/LSB pair for an NRPN (separated by spaces). If the type is NRPN, you can also simply enter the integer equivalent. For example, the MSB/LSB pair 1 1 is equivalent to 129. A Sysex string needs to have a value substitution byte in order for any control to take place. This is denoted with the symbol $V. First, omit the leading F0 and closing F7 bytes. Then put in the remaining bytes in hexadecimal format (refer to your device's documentation), using $V as a substitute for the byte that actually has value changes. For example: "41 36 00 23 20 01 0E $V". Where $V is the value that actually changes, most likely ranging from 00 to F7 (0 - 127)

Finally, enter the minimum and maximum allowed integer values for the parameter.

Press the "X" on the far left of a row to delete that parameter mapping.

Setting the capabilities: Setting the "device" capabilities will allow certain parameters to show up automatically when selecting a destination for the current mapping. For example, if you press the "Receive" button for "Ch Aftertouch", then "Aftertouch" will show up as a parameter choice when selecting a destination.

Press the "Done" button to save your changes and close the Parameter Mappings Editor window.

Legal Disclaimer

MIDI Mod is a flexible and powerful tool capable of sending out nearly every sort of MIDI command there is. By using this app, you agree to accept full responsibility for your actions, and will not hold the author(s) of MIDI Mod accountable for any damage, however unlikely, that occurs to your hardware or software on any platform (mobile, desktop, etc.) while using MIDI Mod. MIDI Mod is not affiliated with any hardware or software manufacturer.