Controls
In the control window you can define automations: you can define events and then for each event assign multiple actions that it triggers. Currently there can be two types of events, midi events and beat timer events. You can also organize events into groups. You can save your controls setup in Top Menu/File/Save controls to a file with .frgctrl extension, such files can be loaded in the file browser window. The controls are also saved into a fragmenter project file and optionally can be loaded along with the project when you load a project file in the file browser window.
In the main part of the Controls window you see the list of defined events, possibly some are grouped together into groups. And for each event you see the assigned actions. Each of these items has an enable/disable switch left to it.
-
Drag-and-drop groups, events, actions to reorder them.
-
Right-click on a group, event or action to modify or delete it.
-
Click to add a new group
-
Click to add a new event (that can be later moved into a group)
-
Click to add a new action assigned to the event left to this button
Next we explain first the MIDI events, then the beat timer events and then the actions.
MIDI events
Short introduction to the Midi protocol
Musical Instrument Digital Interface, or simply "MIDI", is a set of hardware requirements and a protocol that electronic devices use to communicate and store data (i.e., it is a language, file format, and hardware specifications), specifically designed for storing and transferring digital representations of music (as can be read in the introduction to MIDI). A midi message contains three numbers (see midi message explanation):
-
status
See status explanation for all details. The most useful status messages are the following:
-
9x (in hexadecimal), where x is some value (between 0 and F): usually refers to the fact that a key was pressed on channel x. The velocity defines the strength of pressing the key. If the velocity is 0, then it refers to the fact that the key was released on channel x.
-
8x (in hexadecimal), where x is some value: usually refers to the fact that a key was released on channel x.
-
Bx (in hexadecimal), where x is some value: usually refers to the fact that a controller (knob, slider, etc.) was used on channel x.
-
-
note
Refers to the key pressed or the controller (knob, slider, etc.) used. See note explanation for which value refers to which key.
-
velocity
Usually the strength of pressing the key or the value a controller (knob, slider, etc.) is set to. It goes from 0 to 127 but in Fragmenter it shows and is used as being normalized so that it goes from 0 to 100
Connecting to a MIDI device
The top of the Controls window contains the following items:
-
INIT button
Click on INIT to initialize a midi device. If you have any issues then read more specific details at Advanced MIDI setup.
-
NEXT button
Click on NEXT to receive messages from the next available midi device (Fragmenter listens to a single device at any given time).
Right-click on NEXT to refresh the list of available midi devices or to deinitialize the midi device.
-
name of midi device
Click on it to choose another device.
-
last message
Shows last received message in the following format: status/note - velocity, where the first two are in hexadecimal format while the velocity is in percentage (between 0 and 100).
Midi events explained
Fragmenter can receive MIDI messages from other connected machines. Such a midi event defines when the assigned actions happen:
-
sign= status + note
These are hexadecimal values between x00 and xFF (0 and 255 in decimal).
The actions assigned to the midi event will be triggered whenever a midi message is received which is matching (that is, both status and note) the midi sign of this event. One can also assign a range of notes instead of just one note (e.g., a set of keys on a midi keyboard).
Each midi event has the following parts:
-
button with a value
Becomes green for a while when the event is triggered.
Click on it to trigger the event with the value shown on the button.
Drag it to repeatedly trigger the event with changing values.
This button is very useful to test an events behaviour even if no MIDI device is connected.
-
enable/disable switch
When the event's group, the event and the action is all set to enabled then it triggers the assigned action. When it is set to disabled then it does nothing.
-
Name of the event and its details in the following format: MIDI [status/note] or MIDI [status/note start-note end] if a note range is defined
Right-click on it to modify the event.
Editing midi events
When you create a new event by clicking on or by right-clicking on an existing event, then you can set the following:
-
name of the event
-
type of the event (MIDI or beat)
-
status
Click on it to set the status of the event to a specific value. A star in the value means that all status values are assigned to the event which we can get by replacing the start with some hexadecimal character. Last received status is yellow in the list to make it easier to find. At the top there are some default values made more visible.
-
learn will set the status and note(!) from the midi message that will come first after pressing this button.
-
any (all values from 00 to FF) is sent by midi devices when anything happens with a key/controller.
-
on (all values from 90 to 9F) is sent by midi devices usually when a key is pressed on any channel.
-
off (all values from 80 to 8F) is sent by midi devices usually when a key is released on any channel.
-
controller (all values from B0 to BF) is sent by midi devices usually when a controller (knob, slider, etc.) is set to some value on any channel.
-
last refers to the last received midi message. When this is chosen, then automatically the note of the event is also set to the note of the last received midi message.
-
-
note
Click on it to set the note of the event to a specific value. Every key has a different value and every controller has a different value. Drag and hold to set the note of a event to a range of notes. In this case every note in the range triggers the selected action.
-
learn will set the note from the midi message that will come first after pressing this button.
-
learn end will set the note range end from the midi message that will come first after pressing this button.
-
reverse range will reverse the current note range (first note will become last and vice versa).
-
any means that every note value is assigned to the event.
-
close will close the note window.
-
Beat timer events
A beat timer event is similar to a midi event, but instead of a given midi sign, it uses a beat timer (in other words a metronome) to repeatedly trigger the assigned actions. This is useful for example to create automations following some rhythm that are in sync with some music even though there is no direct connection through midi.
Setting up the beat timer
The master beat timer can be set in the bottom right part of the Control window. The beat timer is a looped timer.
The green circle on the right visually shows where are we at a given moment within the loop (the top position is the beginning of a loop).
The length of a loop can be set in multiple ways:
-
Click on the Tap button to set up a rhythm by tapping on a button for start and end (e.g., when listening to a music).
-
Click on the ms button to set the length of the beat loop in milliseconds.
-
Click on the bpm button to set the length of the beat loop in beat per minute.
The position of the timer within the loop can be manipulated in multiple ways:
-
Click on the play/pause button to play/pause the timer.
-
Click on the rewind button to rewind the timer.
Beat timer events explained
Fragmenter can trigger actions when beat timer events happen. Such a beat timer event defines when the assigned actions happen:
-
speed
The number of times the event is triggered/looped while the beat timer loops once.
-
offset
The offset/shift of triggers compared to one loop of the event (and not of the beat timer!)
Example 1.: speed 1 and offset 1/2 will trigger the event whenever the beat timer is at half of its loop.
Example 2.: speed 4 and offset 0 will trigger the event 4 times during one loop of the beat timer starting from when it starts.
For certain actions that depend on the received value, the local percentage of the event's local loop will be sent as a value at every frame, not just when it makes a full loop (e.g., in Example 2. it will go continuously from 0 to 100 four times during one loop of the beat timer).
Each beat timer event has the following parts:
-
button with a value
Becomes green for a while when the event is triggered.
Click on it to trigger the event with the value shown on the button.
Drag it to repeatedly trigger the event with changing values.
This is very useful to test an events behaviour even if no MIDI device is connected.
-
enable/disable switch
When the event's group, the event and the action is all set to enabled then it triggers the assigned action. When it is set to disabled then it does nothing.
-
Name of the event and its details in the following format: beat [speed/offset]
Right-click on it to modify the event.
Editing beat timer events
When you create a new event by clicking on or by right-clicking on an existing event, then you can set the following:
-
name of the event
-
type of the event (MIDI or beat)
-
speed
-
offset
Actions
Actions explained
Actions define what and where should happen:
-
type
There are multiple types of actions.
-
value
For some actions value is an additional parameter that modifies the action's effect. For example for the show action there are several possible values:
- toggle toggles visibility of the assigned layer(s) whenever the action is triggered.
- on shows the assigned layer(s) whenever the action is triggered.
- off hides the assigned layer(s) whenever the action is triggered.
- on/off shows the assigned layer(s) when the key corresponding to the action is pressed and hides the layer(s) when it is released.
- solo shows the assigned layer(s) and hides all others.
For actions that set some value (opacity, tail length, goto, pen hue, etc.) you have other options:
-
some function of the input (which is either the velocity of a midi message or the position of the beat timer loop, as a percentage, or the value of the button if an event is triggered directly by its button to the left of it)
-
random
-
constant (normalized to 0-100) or explicit constant
-
note range position sets the respective value to the position of the note in the note range defined. That is, the first note sets the value to the smallest possible value and so on, the last note sets the value to the largest possible value. Makes sense only if the parent event is a midi event.
-
output limit is very useful to limit the output value to some given range, in percentage (e.g, when a beat timer should ping-pong in a smaller range of values)
-
target
The action is assigned to the target layers or target fxs (when relevant).
Click to set on which layers is the action triggered.
Each action has the following parts:
-
enable/disable switch
When the event's group, the event and the action is all set to enabled then it triggers the assigned action. When it is set to disabled then it does nothing.
-
The details of the action in the following format: action/value -> target
Right-click on it to modify the action.
Editing actions
When you create a new action by clicking on or by right-clicking on an existing action, then you can set the following:
-
type of the action
-
value of the action
-
target of the action
Advanced MIDI setup
Connecting to a physical MIDI device
Setting up midi sent to fragmenter is in principle the same as setting up midi to be sent to any other application. If you connect a real midi device to your pc then it should work immediately. If you get the message 'Device not supported' then there is a workaround which should still work:
- first install a virtual midi driver, so that one app can send midi message to another, e.g. on windows Loopbe1: download link, on mac PKMidiCron
- then install an app that can reroute the signal from your physical device to the virtual device, on mac you might have to open the MIDI settings and set the IAC driver online, on windows you can use Midi-ox, after running it, rerouting can be done as follows:
- in Midi-ox, open up Options->MIDI Devices...
- Select your MIDI Input
- Select your MIDI Output (LoopBe Internal Midi)
Connecting to a virtual MIDI device
If you do not have a physical midi device at all, you can still do a lot of things:
- first install a virtual midi device, so that one app can send midi message to another, e.g. on windows Loopbe1: download link, on mac PKMidiCron
-
then you also need something to generate the midi sign, a few options that work well:
-
vmpk, a free virtual midi keyboard:
-
to get the pitch from a live audio (through microphone) you can use the barebones puredata patch included in the "beat-to-midi pd patch" folder in the main Fragmenter folder
- there are also commercial apps to detect pitch and other features of live audio and generate midi signs from them, e.g. MIDI Merlin 2 and MIDI GUITAR 2
- to get the pitch from offline audio source, MIXXX is a free dj app that can send midi sign at every beat etc of a song, and works well with fragmenter; to set it up, see the "Prepare and configure Mixxx" part of this doc: Mixxx docs and when it says to select 'Midi Through', instead select 'LoopBe Internal MIDI' (or the virtual midi driver you have installed in step 1, if you installed something else).
-