-
Notifications
You must be signed in to change notification settings - Fork 7
Output Events
Here is a table of recognized output events, their functions, and parameters that you can specify to occur in response to Input Events generated by the fweelin process.
Quit!
Stops sliding amplitudes for all loops.
Slides the amplitude of a given loop, like a fade. Successive events accelerate the sliding, until you reverse the speed or call set-loop-amplifier
- "loopid": the ID of the loop
- "slide": the speed at which to slide the amplitude.
Sets the amplitude of a given loop, and stops any sliding
- "loopid": the ID of the loop
- "amp": the amplitude to set it to (linear)
Adjusts the amplitude of a given loop, and stops any sliding
- "loopid": the ID of the loop
- "ampfactor": the factor to multiply the amplitude by
Triggers a given loop. if no loop exists at that loopid, begins recording a new loop..
if a new loop is recording, the behavior depends: if overdub="1", switches to overdub.. if overdub="0", switches to play..
if a loop is playing, the behavior depends: if overdub="1", switches to overdub.. if overdub="0", switches off..
if a loop is overdubbing, switches to play.
This is similar to an EDP style tapin-tapout-play/overdub. When recording a new loop, the length grows until we trigger-loop again. When overdubbing into an existing loop, the existing loop is blended with new input material.
You can modify this behavior with the "engage" option. When "engage" is set to 1, the loop will -always- start. When "engage" is set to 0, the loop will -always- stop. If engage is not set, the behavior depends on the current state of the loop, as described above.
You can modify the looping behavior with the "shot" option. When "shot" is set to 1, the loop will play through only once. When "shot" is not set, the loop will repeat indefinitely.
- "loopid": the ID of the loop
- "vol": the volume to trigger with- this combined with the loop amplitude determine the overall amplitude of the playing loop
- "shot": shot mode
- "engage": force on or off?
- "overdub": 1 or 0 determine whether to overdub or just play
- "overdubfeedback": Variable that holds the value of feedback to apply during overdub. Variable must be of type float (from 0.0 to 1.0). Variable can be continuousl varied.
Sets the volume of a given loop trigger. If you have a loop playing, you can change the volume with this event. It is different than the loop amplifier, because each time you trigger the loop you can have a different trigger volume, whereas the loop amplifier changes the volume of the loop once-and-for-all.
- "loopid": the ID of the loop
- "vol": the volume to set it to
Erase selected loops that are in the given selection set.
- "setid": Number of the selection set to use (usually this will be 0)
Erases all loops and time meters.
Erases a given loop. if recording is happening on the given id, stops and erases recording.
- "loopid": the ID of the loop
Moves a loop from "oldloopid" to "newloopid", if a loop exists there. This can be done at any time - when recording or playing a loop, or when it is inactive.
- "oldloopid": old loop ID
- "newloopid": new loop ID
Slides the master input volume at the speed given. A positive value increases volume. Actually, if you call slide-master-in-volume several times you cumulatively increase the speed of sliding. It is like a fade. This applies for other slide events too.
- "slide": speed of slide
Slides one input volume at the speed given. A positive value increases volume.
- "input": number of input to slide volume for
- "slide": speed of slide
Slides the master output volume at the speed given. A positive value increases volume.
- "slide": speed of slide
Sets the master input volume. Stops sliding.
- "vol": new linear volume- 1.0 is 100% volume.
- "fadervol": new logarithmic volume- specify fader throw (0.0 to 1.0).
Sets the master output volume. Stops sliding.
- "vol": new linear volume- 1.0 is 100% volume.
- "fadervol": new logarithmic volume- specify fader throw (0.0 to 1.0).
Sets one input volume. Stops sliding.
- "input": number of input to set volume for
- "vol": new linear volume- 1.0 is 100% volume.
- "fadervol": new logarithmic volume- specify fader throw (0.0 to 1.0).
Toggles recording of one input. Does not change monitoring for this input, only whether loops are recorded from the input.
- "input": number of input to toggle recording for
Adjusts the pitch transpose for MIDI out. MIDI events that aren't used in an event are echoed back out the MIDI out and to the internal FluidSynth synthesizer. This parameter adjusts the transpose that is applied to MIDI notes before they are echoed. It does not affect the note numbers coming into FreeWheeling events.
- "adjust": amount to shift transpose (semitones)
Enables or disables processing for the integrated FluidSynth. When FluidSynth is disabled, the real-time DSP for FluidSynth is not active, so FreeWheeling runs faster. By default, this is done by the patch browser. When you select FluidSynth patches, FluidSynth is enabled. When you select other patches, FluidSynth is automatically disabled.
- "enable": 1 for enable or 0 for disable
Retunes MIDI by the current value of the pitchbender. What this does is offset the zero position of pitchbender to a given value. You can easily tune to outside instruments by sweeping the pitchbender until you are in tune and then calling set-midi-tuning with the current value of the pitchbender (see system variables).
- "tuning": new zero position for MIDI pitchbender
DEPRECATED - FreeWheeling now sends to ports/channels as specified by the patch browser. Sets the MIDI port where incoming MIDI events are echoed. The only events echoed are those that do not trigger something in FreeWheeling.
- "echoport": new MIDI out port number to echo MIDI events (0 disables)
Sets the user variable named "var" to the value "val". The value given must be convertible into the type of variable "var".
- "var": variable to set
- "value": what to set it to
Toggles (increments) the user variable named "var" through an integer range of values, with a maximum of "maxvalue". Wraps to "minvalue" when maxvalue is exceeded.
- "var": variable to toggle
- "maxvalue": maximum value of variable
- "minvalue": minimum value of variable
Change the range of loops shown onscreen. In the onscreen layout given by "layoutid", shows loops in the range "loopid". For example, if you specify layoutid 0 and loopid 15>30, then layout 0 will show the loop at id 15 in its first element (element id 0), up to loopid 30 in element 15. You will see these changes only if the layout is set to show onscreen, and when there are loops stored in the loopids given.
- "interfaceid": interface where layout is defined
- "layoutid": which layout to change the range of shown loops
- "loopid": new range of shown loops
Shows or hides the layout given by "layoutid". If hideothers is "1", all other layouts are made hidden.
- "interfaceid": interface where layout is defined
- "layoutid": layout to show/hide
- "show": "1" for show and "0" for hide
- "hideothers": "1" to hide all other layouts
Switches to (shows) the interface given by "interfaceid". All displays and layouts defined in that interface are shown. All displays and layouts defined in other interfaces are hidden, EXCEPT those in non-switchable interfaces.
- "interfaceid": interface to switch to
Shows or hides help. FreeWheeling has an online help that can be overlaid on the screen while you are playing. This event shows a given page of that help (or hides it).The help text is user defined. Throughout this config file, you'll see comments which begin in "HELP:". Any comments that begin in this way become a part of the help text. If you have a second ":" in the help comment, it becomes a second column in the help text.
- "page": Help page number to show or "0" for hide
Put FreeWheeling in a window, or let 'er hog the whole screen
- "fullscreen": "1" for hog fullscreen and "0" for window
Selects time pulse #pulse. If no pulse exists at the given #, creates a new one. The length and downbeat of a new pulse are taken from the last recorded loop. Once a pulse is created, it is automatically selected. The selected pulse determines the timing of all newly recorded loops. If a new pulse is selected, only those loops recorded from that point on are affected. To deselect all pulses and return to free time, set pulse="-1".
- "pulse": Number of the time pulse to create/select
Delete time pulse #pulse. All loops attached to that pulse are also deleted.
- "pulse": Number of the time pulse to delete
Shows or hides debugging information. The information is printed to the console. It includes input events like MIDI and keyboard keys, and information from bound events. It can help track down problems in your configuration, if FreeWheeling is not working as you imagined. But it introduces some performance latency, so I recommend leaving it off!
- "show": "1" for show debug info and "0" for hide
Toggles output of the master outs to disk. This includes the input mix. OGG files are created in the library folder with the name 'live1.ogg', 'live2.ogg', etc.. The live mix is exactly what you hear from FreeWheeling's outputs. Accompanying each OGG file is a timing file named live.wav.usx, to be used in the GnuSound editor for doing precise splice edits on loop downbeats. Run oggdec on the OGG files and then load into GnuSound. You can also import timing information into Ardour from this .wav.usx file - see the file scripts/go-import-markers. If FreeWheeling is already writing to disk, this shuts the record off. The next write starts in a new folder. FreeWheeling no longer overwrites old files and folders. Existing save folders are skipped.
Turns on/off auto loop saving. This saves all new loops to disk. The loops are saved in the current "save" folder (see toggle-disk-output), with the name 'loop???.ogg'. The loopID is given in the filename. Loop files are not overwritten- subsequent writes of 55, for example, will yield filenames 'loop55-0.ogg', 'loop55-1.ogg', etc.
- "save": "1" to turn on auto loop saving and "0" for off
Saves the loop with given index. The file is named and saved as described above.
- "loopid": ID of loop to save
Saves a new scene. A scene is a snapshot of all loaded loops and levels. It is like a save of the complete session.
Overwrites current scene. A scene is a snapshot of all loaded loops and levels. It is like a save of the complete session.
Create a snapshot. A snapshot is a memory of all playing and idle loops and their levels. This allows you to easily create and switch between song 'sections'.
- "snapid": ID # of snapshot to save
- "snapid": ID # of snapshot to rename
- "snapid": ID # of snapshot to trigger
Swap two snapshots.
- "snapid1": ID # of first snapsho
- "snapid2": ID # of second snapshot
Switches an audible metronome on or off for the given pulse. The metronome sounds on the downbeat of the pulse.
- "pulse": Number of the pulse
- "metronome": 1 for metronome on, 0 for off
Taps a pulse - each tap gives a new downbeat. This allows you to tap tempo, instead of creating a pulse around an existing loop. If you tap a tempo and switch-metronome to on, it is like playing along with a click track. If you already have loops playing on a pulse, the effect is to change the timing when they loop to their start. The loops themselves do not change speed (yet).
- "pulse": Number of the pulse
- "newlen": 1 for change tempo, 0 for just hit downbeat
Moves forward or back in a browser
- "browserid": Browser ID - as you have defined in 'display' section
- "adjust": Number of individual items to move by (+ is forward - is back)
- "jumpadjust": number of divisions to jump by divisions are placed depending on the type of browser - for example, for Fluidsynth patches, there are divisions between soundfonts.
Choose or select the current item in a browser. Different browser types behave differently when an item is selected For example, the loop browser loads the selected loop
- "browserid": Browser ID - as you have defined in 'display' section
Rename the current item in a browser. This is an interactive process where the user can make changes to the item name. Many of the regular keyboard bindings become disabled during renaming. During renaming, you can type a new name with the keyboard. ESC aborts renaming, and ENTER accepts the new name.
- "browserid": Browser ID - as you have defined in 'display' section
Switch patch browser banks.
- "direction": -1 or 1 to move backward or forward
Switch patch browser banks, choosing by index.
- "index": Index of patchbank to select - Must be in the range of 0 to SYSTEM_num_patchbanks-1
This event is sent out by Freewheeling's browsers whenever a browser item is changed. This is useful in the patch browser- you can bind to browser-item-browsed and send out control changes or change MIDI echo ports whenever a new item is browsed.
- "browserid": Browser ID - as you have defined in 'display' section. Identifies which browser has had a change in item.
Show or hide a video display with the given ID. You define the displays and IDs in the video section below, and then you can turn them on or off as needed through this event.
- "interfaceid": interface where layout is defined
- "displayid": Display ID
- "show": 1 or 0 is show or hide display
Sets the loop ID where to put a loop when it is loaded from disk. Loops are loaded by the loop browser when an item is selected (browser-select-item). Whenever a single loop is loaded from disk, it will appear in this loop ID.
- "loopid": ID to load loops into
Sets the range of loop IDs to be used by default. For example when loading external loops, FW can place them here if the requested IDs are not available.
- "looprange": Range of IDs to use as default
Set the type of sync for syncronizing to an external sequencer/app.
Freewheeling uses a 'pulse' concept of timing. Instead of dividing time up into bars, beats, and ticks (sequencer style), Freewheeling simply defines time as a rhythmic pulsing. When you create a pulse, Freewheeling can optionally transmit or receive sync information for that pulse. Two syncronization mechanisms are provided- Jack and MIDI. Both represent time as bars, beats, and ticks. The sync type parameter controls whether we are mapping beats to pulses (beat sync) or bars to pulses (bar sync).
- "type": 1 for beat sync, 0 for bar sync
Set the number of beats/bars per pulse. This affects the translated speed between Freewheeling's internal clock and the external clock.
- "speed": Number of beats or bars (depending on sync type) to a single pulse.
Set whether to transmit MIDI sync. Note that to transmit MIDI sync, you also need to set 'midisyncouts' in the general config section, and you need to have a pulse running.
- "midisync": 1 to transmit MIDI sync. 0 for no MIDI sync.
Freewheeling allows you to select and work with several loops at once. This event toggles one loop as selected/unselected. You can have several selection sets.
- "setid": Number of the selection set in which to toggle the loop (usually this will be 0)
- "loopid": ID of the loop to toggle
Make the selection include only those loops that are currently playing/idle.
- "setid": Number of the selection set to change (usually this will be 0)
- "playing": 1 to include only playing loops, 0 to include only idle loops
Select/unselect all loops.
- "setid": Number of the selection set to change (usually this will be 0)
- "select": 1 to select all loops, 0 to select no loops
Invert the selection - Select all loops not currently selected.
- "setid": Number of the selection set to change (usually this will be 0)
Trigger the selected loops. You can toggle them for playing/idle, or you can force them to play.
- "setid": Number of the selection set to use (usually this will be 0)
- "vol": Volume at which to trigger loops
- "toggleloops": 1 to toggle loops for playing, 0 to force playing.
Set the volume of all selected loops. This only affects playing loops. This allows you to fade many loops together.
- "setid": Number of the selection set to use (usually this will be 0)
- "vol": Volume to set loops to
Triggers the input event "go-sub", which you can bind to. The effect is like creating a subroutine of several event triggers. You can then trigger go-sub from many places, and have the same subroutine of events triggered. This allows you to have FreeWheeling do several predefined things in response to one input, like changing loop volumes and moving loops, or repeating some operation on several loops. You can have many subroutines, and each subroutine can accept arbitrary parameters. See the 'go-sub' input event for example usage. Search for 'go-sub' in the default config to find more examples.
- "sub": Arbitrary event ID number
- "param1": Integer parameter 1
- "param2": Integer parameter 2
- "paramN": Integer parameter N (and so on - as few or as many as you need)
This wiki is available, modifiable, and shareable under the GNU Free Documentation License.