Skip to content

Fragmenter advanced features

Projection window

  • img projection button - click on it to switch on/off the projection window

-ctrl/right/long-click on projection button to switch between windowed/fullscreen projection window

-ctrl/right/long-click on canvas button or fx button (shown when M layer is active) or show/hide layer button will separate these buttons to two buttons, the top one having an effect only on the main window and the bottom button having an effect only on the projection window; again right-clicking on these buttons will unify them back

-ctrl/right/long-click on a library menu will load them such that they are initially invisible in the projection window

Library

The library has three tabs, MEDIA, FX and MIDI, clicking on the respective one shows the Media, FX and Midi libraries. Pressing TAB or SHIFT+TAB also changes which tab is active in the library.

Media Library

Items in the media library can be png/jpg images and frg files.

-clicking on an unselected item will select it

-clicking again on it will load it:

  • png/jpg items are loaded as canvas image

  • frg files are loaded to current layer OR loaded to first layer if M is the 'active' layer OR replace everything if it is a master/multi-layer file denoted by "M"

-you can browse your machine using the library, there are the following special folders:

  1. DEFAULT is a special folder where by default Fragmenter saves your files

  2. any folders can be made a FAVORITE folder

  3. HOME is a special folder where the following items are listed:

    • DEFAULT folder

    • SYSTEM drives

    • FAVORITE folders

-there are several buttons to manage media library contents:

  • img HOME button - go to HOME folder, clicking again will go to DEFAULT folder; long/ctrl/right-click to go to set the folder directly

  • img FAVORITE button - add the current folder to the FAVORITES (the FAVORITE folders can be found in the HOME folder)

  • img NEW FOLDER button - create a new folder

  • img COPY/MOVE to CLIPBOARD - copy selected item to CLIPBOARD; long/ctrl/right-click to move/cut to CLIPBOARD

  • img COPY from CLIPBOARD - copy CLIPBOARD content to current folder

  • ... RENAME button - rename selected item

  • img DELETE button - delete selected item (non-empty folders cannot be deleted)

-to save current layer, in its contextual dropdown menu click on the img save button

-to save etc. a layer not currently active by long/ctrl/right clicking on it to open the contextual dropdown menu

-to load selected library item to an empty layer-place, click on the + sign to see its contextual menu and click on the load icon (first element in the menu)

Advanced media library features

When you set advanced library in settings then you can manage yourself when a frg is saved to hdd or loaded to memory (saving/loading to hdd can cause a slight freeze in the animation while saving/loading to memory does not cause freeze - useful on a live event)

  • HDD - clicking will save to library the selected item; longclick will select all items to hdd - useful before exiting fragmenter, although on exit theoretically all items are saved to hdd automatically

  • MEM - clicking on an item not in memory will load it to memory; clicking on an item loaded to memor will unload it from memory; longclick will load all items to memory - useful before a live event

FX library

You can set the current FX by clicking on it in the FX library. There is a growing number of FX's to choose from, their name tells you what the FX does.

Midi library

Short introduction to Midi messages

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):

  1. status (see status byte explanation)

  2. note

  3. velocity

Short explanation of midi rules (for detailed explanation see later)

Fragmenter can receive MIDI messages from other connected machines. In Fragmenter the user can define midi control rules that define what should happen when a midi message is received. Such a midi control rule has the following form:

  • sign-layer-action (e.g., "0x80,50-3-skip")

This defines when (sign), where (layer) and what (action) should happen.

  1. sign: there are two types of signs possible, tick sign and midi sign.

    • midi sign: a midi sign contains the status (in hexadecimal) and the note (in decimal) separated by a comma, thus has the form "status,note"; the action of a rule will be triggered whenever a midi messages is received which is matching the midi sign of this rule

    • tick sign: it is the word "tick" and the delay in milliseconds separated by a comma, e,g. "tick,600"; this way you can add fake repeated emulated signs called ticks

  2. layer: can be "1","2","3","4","5","6","M" or "all" - the action will be assigned to this layer (or such a sign is added to all layers if "all" is given)

  3. action: currently it can be "skip", "toggle", "pulse", "fxres"

Thus, for a midi sign the form of a rule is:

  • status,note-layer-action

For a tick sign the form of a rule is:

  • TICK,delay-layer-action

See also the Detailed explanation of possible midi rules with examples.

Midi GUI

The Midi library contains the midi control rules. Initially this list is blank. There are several buttons to manage this library. Also, whenever a connected midi device sends a message, it will popup as two numbers: status (in hexadecimal), note (in decimal) (e.g., "0x90,50"). Note that Fragmenter does not use the velocity data of a midi message. The available buttons are the following:

  • DEVICE - click on it to find a midi device. click multiple times to change which one is active, if there is multiple devices. right-click to disable receiving messages from devices.

  • ADD - clicking on it shows the dialog to add a new midi control rule (in the format defined earlier)

  • img DELETE - clicking on it deletes the midi control rule selected in the midi library

  • TICK - clicking on it and clicking on it again after some time will show a dialog to add a tick sign that triggers an action on the current layer each time this amount of time passes. You can also press SPACEBAR twice to do the same. You can also press SPACEBAR then press a bit later CTRL+SPACEBAR to add quickly (without a dialog opening) a tick sign that pulses the current layer (if the current layer is the M layer then it adds such a tick sign to all layers).

To enable/disable a rule, click on it to select and click on it again to toggle if it is enabled/disabled. When adding a new rule you can also choose 'add disabled' so that initially it is disabled. Note that adding a rule with a midi or tick sign assigned to some layer will overwrite any other rules with the same sign and assigned layer.

Detailed explanation of midi rules (with examples)

  1. sign (optional): there are two types of signs possible, tick sign and midi sign.

    • midi sign: a midi sign contains the status (in hexadecimal) and the note (in decimal) separated by a comma, thus has the form "status,note". The action will be triggered whenever a midi sign is received which is matching the midi sign of this rule. Hexadecimal numbers should be prefixed with "0x" or "0X" or "x" or "X". The status can be e.g. "0x80", or "X90" or one can use the * character to define ranges of numbers, e.g., * refers to any status, "0x8" refers to any status in the range 0x80-0x8F. Additionally, the status can be "on", which is equivalent to writing "0x9" and "off" which is equivalent to "0x8*". The note can be anything in the range 0-127 or if it is * or omitted then any note will trigger the action (if the status matches).

    Status examples:

    0x90 (channel 1 note on)

    0x80 (channel 1 note off)

    "0x8*" (any channel note off)

    "*" (any status)

    Note examples :

    0 (C-2)

    1 (C#-2)

    60 (middle C / C4)

    "*" (any note)

    Complete sign examples:

    "*,50" (triggered when note is 50 and status is anything)

    "0x8*,50" (triggered when note is 50 and status is something in the range 0x80-0x8F)

    If not set, then it any midi sign will trigger the action.

    Tip: you can use the popup message to know what midi signs are triggered by which button on your device etc..

    • tick sign: it is the word "tick" and the delay in milliseconds separated by a comma, e,g. "tick,600"; this way you can add fake repeated emulated signs called ticks; note that x BPM (beats per minute) equals to x/60000 beats per millisecond, thus if you wish to create a tick with x BPM then you need to set the delay to 60000/x (e.g. to set BPM to be 200, you need to set the delay to 60000/200=300 milliseconds)
  2. layer (optional): can be "1","2","3","4","5","6","M" or "all" - the action will be assigned to this layer (or such a sign is added to all layers if "all" is given); if not set, then the rule will be assigned to the current layer (or to all layers if M was the current layer); M is a valid setting only if the action is "fxres,random"

  3. action (optional): currently it can be "skip", "toggle", "pulse", "fxres"

    • "skip" (default action) (you can abbreviate to "s" when adding a new rule): at each sign the assigned layer will skip forward once on the assigned layer

    • "toggle" (you can abbreviate to "t" when adding a new rule): at each sign the assigned layer's visibility will be switched on/off having the same effect when the show/hide switch of the layer is pressed; if there is a separate button for the visibility of the layer in projection window, then it will only switch on/off the layer in the projection window

    • "pulse" (you can abbreviate to "p" when adding a new rule): at each sign the assigned layer will pulsate once (the tail length slider will fall off to zero and than go back to the initial value)

    • "fxres,random" (you can abbreviate to "fxres" or "fx" when adding a new rule):
      at each sign it changes the fx resolution to a new random value; this action can only affect the M layer, if you set another layer it will automatically be changed to M

    Examples:

    "0x80-2-pulse"

    "0x90,50-all-s" (this will add "0x90,50-layer-skip" for all layers from 1 to 6)

    "0x8,60-3" (this will add "0x8,60-3-skip")

    "--skip" (this will add ",*-currentlayer-sip")

    "0x90,50" (this will add "0x90,50-currentlayer-skip" where currentlayer is the number of the current layer; note that when the action is omitted then skip action is selected by default)

    a single * (this will add ",-currentlayer-skip")

    "0x90,50-M-fxres,random"

    "tick,300-3-toggle"

    "tick,500-all-skip" (this will add "tick,500-layer-skip" for all layers from 1 to 6)

    "tick,1000" (this will add "tick,1000-currentlayer-skip")

    "tick,300-M-fx"

Setting up a connection with a physical MIDI device

Setting up midi sent to fragmenter is in principle the same as setting up midi to be sent to e.g. any light control 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:

  1. 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
  2. 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)

Setting up a connection with a virtual MIDI device

If you do not have a physical midi device at all, you can still do a lot of things:

  1. 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
  2. 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).

Spout output (on windows only)

-click on spout button to switch on/off spout image sharing with other apps; when you separately set bg, layer visibility of layers than spout sends the same things ghat the projection window gets

-ctrl/right/long-click on spout button to switch on/off whether the background color is sent with the spout image or the background is transparent

-in the Settings Menu you can set the resolution of the spout output (sd or hd)

Spout technical details

-in "Spout Settings" app you need to disable "DirectX 9" (untick the box) otherwise enabling spout will crash Fragmenter

-fragmenter can only send to spout in memoryshare mode, which is not supported by every spout-enabled app

-it does work with: max, smode, magicmusicvisuals

-when sending the spout image directly does not work for the above reasons, you can use the spout-to-ndi app to convert the spout message to ndi format, also supported by most vj apps, this way you can send fragmenter output also to: resolume v6+, touchdesigner pro or commercial

-other spout or ndi input enabled apps should also work

-note that using spout-to-ndi you can even send the output to another machine on the same network!