Skip to content

Configuration Format Reference

ToadsworthLP edited this page Sep 15, 2022 · 2 revisions

Basic Tags

<foresight version="0" name=""></foresight>

Marks the beginning and end of the configuration. Everything after the end tag ist ignored. version: The version of the configuration format name: The name that is displayed in the GUI

<settings></settings>

Contains special tags that alter miscallenous processing parameters.

<input></input>

Marks the input section of the configuration.

<output></output>

Marks the output section of the configuration.


Settings Section Tags

<latency>value</latency>

Sets the latency of the plugin. value: The value to set it to

<range boundary="">note</range>

Limits the range of Foresight's processing to not affect notes outside the specified range. boundary: "lower" or "upper", defines which boundary to set note: The name of the note to place the boundary at (inclusive)

<block>value</block>

Blocks the provided CC or note (outside the range) from being passed to the output. This does not affect messages generated by nodes in the output section. value: A CC name like "CC58" or a note name like "C#3"


Input Section Tags

<switch target=""></switch>

Marks the start of a branch in the decision tree. Child nodes of the <case> type define the different options. type: The type of the target for child nodes to act on. Examples: "CC1" (current value, for CCs), "legato" (0 or 1, whether the current note is part of a legato phrase), "velocity" (the current note velocity), "length" (the current note length, notes with undefined length have a length of C++ INT_MAX, a very large number), "C#3" (0 or the velocity of a held note outside the defined range), "program" (the currently active program as set by the last MIDI program change, starts at 0 even though some DAWs incorrectly display it as 1)

<case equals="0"></case> or <case greater="0" less="0"></case>

Compares the target defined by the parent node to a value or a range of values. All child nodes of this element are ignored if the condition doesn't apply. equals: True if the target value equals the given value greater, less: True if the target value is between the defined values


Output Section Tags

<tag name=""></tag>

Defines a tag with the given name. Its child notes are visited top to bottom for each note with this tag. name: The name of the tag

<set target="">value</switch>

Sets the specified parameter target: The target for the node to act on. Examples: "CC1" (for CCs), "note" (for notes), "start" (for shifting the note start time, introduces extra latency), "end" (for shifting the note end time), "program" (for MIDI program changes) value: The value to set the target to. For CCs, this is the new value of the CC. For notes, this is the pitch, like C#3. For note shifts, this is the amount of milliseconds to shift by (positive numbers shift forwards on time, negative numbers shift backwards)

<set target="legato"/>

Allows the current tag to start or be part of a legato phrase.

Clone this wiki locally