From 26316522e607888a43944af5ca0faeff99354dec Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Sat, 14 Jan 2017 17:31:07 -0600 Subject: [PATCH] Sync with master branch. Now synchronized with commit bbc044f232daa0ae7feb97e79e02368e531fee94. --- implode | Bin 17688 -> 17688 bytes implode.cpp | 4 +- include/ableton-push2.html | 366 ++ ...r-devices-in-mackielogic-control-mode.html | 262 ++ ...ating-feedback-and-strip-types-values.html | 143 + include/controlling-ardour-with-osc.html | 1276 +----- include/devices-not-listed.html | 18 + ...es-using-mackielogic-control-protocol.html | 66 + include/feedback-in-osc.html | 243 ++ include/mackie-control-setup-on-linux.html | 20 + include/menu-actions-list.html | 743 ++++ include/midi-binding-maps.html | 390 ++ include/midi-learn.html | 44 + ... osc-control-in-ardour-4.7-and-prior.html} | 48 +- include/osc-control.html | 514 +++ include/osc-personal-monitoring.html | 112 + include/osc-setup-dialog.html | 125 + include/parameter-types-in-osc.html | 33 + include/presonus-faderport.html | 376 ++ include/querying-ardour-with-osc.html | 153 + include/selection-considerations-in-osc.html | 72 + include/ssl-nucleus.html | 219 + include/working-with-encoders.html | 57 + include/working-with-extenders.html | 49 + master-doc.txt | 3610 +++-------------- source/css/app.css | 12 + source/images/detailed-editor-window.png | Bin 0 -> 24066 bytes source/images/detailed-mixer-window.png | Bin 0 -> 34159 bytes source/images/global-editor-window-split.png | Bin 0 -> 27956 bytes source/images/global-mixer-window-split.png | Bin 0 -> 39369 bytes source/images/ruler.png | Bin 0 -> 6953 bytes source/images/summary.png | Bin 0 -> 3293 bytes 32 files changed, 4635 insertions(+), 4320 deletions(-) create mode 100644 include/ableton-push2.html create mode 100644 include/behringer-devices-in-mackielogic-control-mode.html create mode 100644 include/calculating-feedback-and-strip-types-values.html create mode 100644 include/devices-not-listed.html create mode 100644 include/devices-using-mackielogic-control-protocol.html create mode 100644 include/feedback-in-osc.html create mode 100644 include/mackie-control-setup-on-linux.html create mode 100644 include/menu-actions-list.html create mode 100644 include/midi-binding-maps.html create mode 100644 include/midi-learn.html rename include/{controlling-ardour-with-osc-4.7-and-prior.html => osc-control-in-ardour-4.7-and-prior.html} (99%) create mode 100644 include/osc-control.html create mode 100644 include/osc-personal-monitoring.html create mode 100644 include/osc-setup-dialog.html create mode 100644 include/parameter-types-in-osc.html create mode 100644 include/presonus-faderport.html create mode 100644 include/querying-ardour-with-osc.html create mode 100644 include/selection-considerations-in-osc.html create mode 100644 include/ssl-nucleus.html create mode 100644 include/working-with-encoders.html create mode 100644 include/working-with-extenders.html create mode 100644 source/images/detailed-editor-window.png create mode 100644 source/images/detailed-mixer-window.png create mode 100644 source/images/global-editor-window-split.png create mode 100644 source/images/global-mixer-window-split.png create mode 100644 source/images/ruler.png create mode 100644 source/images/summary.png diff --git a/implode b/implode index c9b87955c75c93d283bfe9da360bd4090cdf6b5f..a63c3a8315eef4cf4faa43bbf32c99c1b6efd3e8 100755 GIT binary patch delta 76 zcmV-S0JHy?iUF940kD@24~s?cNQuYj4*UQANQ3ABv!)K{69Hqhk0PQ30q?UiCl~<( iy9hqBOepsSvqUbm6#?^;`9n7WB$F{jKLPiXaYUyKT_5cL delta 75 zcmV-R0JQ&@iUF940kD@24~a$KNQ*`ANQuYj3j6>6v!)K{69Hngk0PQ30q(OhCl~<& h^YpV#DE9@kLoT%y0rHdiLpK2 + the Ableton Push 2 surface +

+

+ Since version 5.4, Ardour has had extensive support for the Ableton + Push2. This is an expensive but beautifully engineered control + surface primarily targetting the workflow found in Ableton's Live + software and other similar tools such as Bitwig. As of version 5.4, + Ardour does not offer the same kind of workflow, so we have designed + our support for the Push 2 around mixing and editing and musical + performance, without the clip/scene oriented approach in Live. This + may change in future versions of Ardour. +

+ +

Connecting the Push 2

+

+ Plug the USB cable from the Push 2 into a USB2 or USB3 port on your + computer. For brighter backlighting, also plug in the power supply + (this is not necessary for use). +

+

+ The Push 2 will be automatically recognized by your operating + system, and will appear in any of the lists of possible MIDI ports + in both Ardour and other similar software. +

+

+ To connect the Push 2 to Ardour, open the Preferences dialog, and + then click on "Control Surfaces". Click on the "Enable" button + in the line that says "Ableton Push 2" in order to activate Ardour's + Push 2 support. +

+

+ Once you select the input and output port, Ardour will initialize + the Push 2 and it will be ready to use. You only need do this + once: once these ports are connected and your session has been + saved, the connections will be made automatically in this and other + future sessions. +

+ +

Push 2 Configuration

+

+ The only configuration option at this time is whether the pads send + aftertouch or polyphonic pressure messages. You can alter this + setting via the Push 2 GUI, accessed by double-clicking on the "Push + 2" entry in the control surfaces list. +

+the Push 2 configuration dialog +

+ +

Basic Concepts

+

+ With the Push 2 support in Ardour 5.4, you can do the following + things: +

+
Perform using the 8 x 8 pad "grid"
+
The Push 2 has really lovely pressure-sensitive pads that can + also generate either aftertouch or note (polyphonic) pressure.
+
Global Mixing
+
See many tracks at once, and control numerous parameters for each.
+
Track/Bus Mixing
+
View a single track/bus, with even more parameters for the track.
+
Choose the mode/scale, root note and more for the pads
+
37 scales are available. Like Live, Ardour offers both + "in-key" and "chromatic" pad layouts.
+
+ + ... plus a variety of tasks related to transport control, selection, + import, click track control and more. +

+ +

Musical Performance

+

+ Messages sent from the 8x8 pad grid and the "pitch bend bar" are + routed to a special MIDI port within Ardour called "Push 2 Pads" + (no extra latency is incurred from this routing). Although you can + manually connect this port to whatever you wish, the normal + behaviour of Ardour's Push 2 support is to connect the pads to the + most recently selected MIDI track. +

+

+ This means that to play a soft-synth/instrument plugin in a given + MIDI track with the Push 2, you just need to select that track. +

+

+ If multiple MIDI tracks are selected at once, the first selected + track will be used. Note that messages originating from all other + controls on the Push 2 will not not be delivered to the + "Push 2 Pads" port. This makes no difference in practice, because + the other controls do not send messages that are useful for musical + performance. +

+ +

Global Mix

+

+ This is the default mode that Ardour will start the Push 2 in. In + this mode, the 8 knobs at the top of the device, the 8 buttons below + them, the video display and the 8 buttons below that are combined to + provide a global view of the session mix. +

+

+ global mix mode on Push2 screen +

+

+ The upper buttons are labelled by text in the video display just + below them. Pressing one of the buttons changes the function of the + knobs, and the parameters that will shown for each track/bus in the + display. +

+

+ As of Ardour 5.4, the possible parameters are: +

+
Volumes
+
The display shows a knob and text displaying + the current gain setting for the track, and a meter that + corresponds precisely to the meter shown in the Ardour GUI for + that track. Changing the meter type (e.g. from Peak to K12) in the + GUI will also change it in the Push 2 display. The physical knob + will alter track/bus gain. +
+
Pans
+
The display shows a knob indicating the pan direction/azimuth + for the corresponding track/bus. Turning the physical knob will + pan the track left and right. If the track/bus has no panner + (i.e. it has only a single output), no knob is shown and the + physical knob will do nothing.
+
Pan Widths
+

For tracks with 2 outputs, the display will show a knob + indicating the pan width setting for the corresponding + track/bus. The physical knob can be turned to adjust the + width. +

+

+ Unlike many DAWs, Ardour's stereo panners have "width" + parameter that defaults to 100%. You cannot change the pan + direction/azimuth of a track with 100% width, but must first + reduce the width in order to pan it. Similarly, a track panned + anywhere other than dead center has limits on the maximum + width setting. If these concepts are not familiar to you, + please be aware than many DAWs use a "panner" that actually + implement "balance" and not "panning", hence the difference. +

+
+
A Sends
+
The display shows a knob indicating the gain level for the + first send in that track. If the track has no send, no knob will + be shown, and the physical knob for that track will do nothing. +
+
B Sends, C Sends, D Sends
+
Like "A Sends", but for the 2nd, 3rd and 4th sends of a + track/bus respectively. +
+
+

+

+ To change which tracks are shown while in global mix mode, use the + left and right arrow/cursor keys just below and to the right of the + display. Tracks and busses that are hidden in Ardour's GUI will also + be hidden from display on the Push 2. +

+

+ To select a track/bus directly from the Push 2, press the + corresponding button below the display. The track name will be + highlighted, and the selection will change in Ardour's GUI as well + (and also any other control surfaces). +

+ +

Soloing and Muting in Global Mix mode

+

+ The Solo and Mute buttons to the left of the video display can be + used to solo and mute tracks while in Global Mix mode. The operation + will be applied to the first currently selected + track(s). +

+

+ There are two indications that one or more tracks are soloed: +

    +
  1. The solo button will blink red
  2. +
  3. Track names will be prefixed by "*" if they are soloed, and + "-" if they are muted due to soloing.
  4. +
+

+

+ To cancel solo, either: +

+

+ +

Track Mix

+

Track Mix mode allows you to focus on a single track in more detail + than is possible in Global Mix mode. To enter (or leave) Track Mix + mode, press the "Mix" button. +

+

+ +

+

+ In Track Mix mode, various aspects of the state of the first + selected track/bus will be displayed on the Push 2. Above the + display, the first 4 knobs control track volume (gain), pan + directiom/azimuth, pan width, and where appropriate, track input + trim. +

+

+ Below the display, 7 buttons provide immediate control of mute, + solo, rec-enable, monitoring (input or disk or automatic), solo + isolate and solo safe state. When a a track is muted due to other + track(s) soloing, the mute button will flash (to differentiate from + its state when it is explicitly muted). +

+

+ The video display also shows meters for the track, which as in + Global Mix mode, precisely match the meter type shown in Ardour's + GUI. There are also two time displays showing the current playhead + position in both musical (beats|bars|ticks) format, and as + hours:minutes:seconds. +

+

+ To change which track is visible in Track Mix mode, use the + left/right arrow/cursor keys just below and to the right of the + video display. +

+ +

Scale Selection

+

+ Press the Scale button to enter Scale mode. The display will look + like this: +

+

+ track mix mode on Push2 screen +

+

+ In the center, 37 scales are presented. Scroll through them by + either using the cursor/arrow keys to the lower right of the + display, or the knobs above the display. The scale will change + dynamically as you scroll. You can also scroll in whole pages using + the upper right and upper left buttons above the display (they will + display "<" and ">" if scrolling is possible). +

+

+ To change the root note of the scale, press the corresponding button + above or below the video display.The button will be lit to indicate + your selection (and the text will be highlighted). +

+

+ By default, Ardour configures the Push 2 pads to use "in-key" mode, + where all pads correspond to notes "in" the chosen scale. Notes + corresponding to the root note, or the equivalent note in higher + octaves, are highlighted with the color of the current target MIDI + track. +

+

+ In + "chromatic" mode, the pads correspond to a continuous sequence of + notes starting with your selected root note. Pads corresponding to + notes in the scale are illuminated; those corresponding to the root + note are lit with the color the current target MIDI track. Other + pads are left dark, but you can still play them. +

+

+ To switch between them, press button on the lower left of the video + display; the text above it will display the current mode (though it + is usually visually self-evident from the pad lighting pattern). +

+

+ To leave Scale mode, press the "Scale" button again. You may also + use the upper left button above the display, though if you have + scrolled left, it may require more than one press. +

+ +

Specific Button/Knob Functions

+ +

+ In addition to the layouts described above, many (but not all) of + the buttons and knobs around the edges of the Push 2 will carry out + various functions related to their (illuminated) label. As of Ardour + 5.4, this includes: +

+
Metronome (button and adjacent knob)
+
+ Enables/disables the click (metronome). The knob directly above + it will control the volume (gain) of the click. +
+
Undo/Redo
+
+ Undo or redo the previous editing operation. +
+
Delete
+
+ Deletes the currently selected region, or range, or + note. Equivalent to using Ctrl/Cmd-x on the keyboard. +
+
Quantize
+
+ If a MIDI region is selected in Ardour, this will open the + quantize dialog. +
+
Duplicate
+
+ Duplicates the current region or range selection. +
+
Rec-Enable
+
+ Enables and disables Ardour's global record enable state. +
+
Play
+
+ Starts and stops the transport. Press Shift-Play to return to + the session start. +
+
Add Track
+
+ Opens Ardour's Add Track/Bus dialog. +
+
Browse
+
+ Open's Ardour's import dialog to select and audition existing + audio and MIDI files. +
+
Master
+
+ Pressing this button jumps directly to Track Mix mode, with the + master out bus displayed. +
+
Cursor arrows
+
+ These are used by some modes to navigate within the display (e.g + Scale mode). In other modes, the up/down cursor arrows will + scroll the GUI display up and down, while the left/right cursor + arrows will generally scroll within the Push 2 display itself. +
+
Repeat
+
+ Enables/disables loop playback. This will follow Ardour's "loop + is mode" preference, just like the loop button in the Ardour + GUI. +
+
Octave buttons
+
+ These shift the root note of the current pad scale up or down by + 1 octave. +
+
Page buttons
+
+ These scroll Ardour's editor display left and right along the + timeline. +
+
Master (top right) knob
+
+ This knob controls the gain/volume of Ardour's main output. If + the session has a monitor saec +
+
+

+ diff --git a/include/behringer-devices-in-mackielogic-control-mode.html b/include/behringer-devices-in-mackielogic-control-mode.html new file mode 100644 index 0000000..39d0ce5 --- /dev/null +++ b/include/behringer-devices-in-mackielogic-control-mode.html @@ -0,0 +1,262 @@ +--- +layout: default +title: Behringer devices in Mackie/Logic Control Mode +menu_title: Behringer devices +--- + +

Behringer BCF-2000 Faders Controller

+

+ Digramatic Image of the BCF2000 +

+

+ The Behringer BCF-2000 Fader Controller is a control surface with 8 motorized + faders, 8 rotary encoders and 30 push buttons. The device is a class + compliant USB Midi Interface and also has standard Midi DIN IN/OUT/THRU ports. + The device has included a Mackie/Logic Control Emulation Mode since firmware v1.06. + If you're devices firmware is older than v1.06 it will require an update before + Mackie Control Emulation will work as described here. +

+

+ Digramatic Image of the BCF2000 in Edit Global Mode +

+ +

+ In order to put the controller into Mackie/Logic control mode turn on the + unit while holding third button from the left in the top most row + of buttons (under the rotary encoder row). Hold the button down until EG + or edit global mode is displayed on the LCD screen of the unit. The global parameters + can then be edited using the 8 rotary encoders in the top row. +

+ +

+ To exit the EG mode press the Exit button. The device is now + ready to use with Ardour. +

+ +

Modes of Operation

+

+ Digramatic Image of the BCF2000 Control Modes +

+

+ The four buttons arranged in a rectangle and located under the Behringer logo + are the mode selection buttons in Logic Control Emulation Mode, + currently Ardour has implemented support for two of these modes. +

+

+The surface can be broken into 8 groups of controls. +

+ +
    +
  1. The rotary encoders at the top of the device
  2. +
  3. The first row of buttons under the encoders
  4. +
  5. The second row of buttons under the encoders
  6. +
  7. The row of motorized faders
  8. +
  9. + The group of 4 buttons at the top right that will be + referred to here as the Shift Group +
  10. +
  11. + The group of 4 buttons under the Shift Group + referred to here as the Mode Group +
  12. +
  13. + The group of 2 buttons under the Mode Group + referred to here as the Select Group +
  14. +
  15. + The group of 4 buttons under the Select Group + referred to here as the Transport Group +
  16. +
+ +

Mixer Pan Mode

+

+ Digramatic Image of the BCF2000 Control Modes +

+

+ This is the standard work mode that organizes the control surface to emulate + a standard mixer layout where controls for each track/bus are arranged vertically. + The order of the faders is either controlled by the order of the tracks in the + mixer or can be set manually by the user. +

+
+
Encoders
+
Mixer Pans. The red LEDs show the amount of pan left or right
+
First Row of Buttons
+
Mixer Mutes. The button led lights if the track is currently muted
+
Second Row of Buttons
+
Select Active Track/Bus. Currently selected track/bus is indicated by the button led
+
Faders
+
Mixer Gains
+
Shift Group
+
+ The top and bottom left buttons are the simply shifts to change the function of other buttons +
+
+ The top right is the Fine Control button that allows the increment values sent by + by rotary encoders and faders to be a small value for more precise editing. This button + can also act as a shift button. +
+
+ The bottom right is the Global Shift button that allows you to change back to the + standard Mixer Pan view from other views and modes. This button can also act as a shift button. +
+
Mode Group
+
The top two buttons functions are not currently implemented in Ardour.
+
The bottom left button sets the device to Pan mode and should currently be lit
+
+ The bottom right button sets the device to Send mode but will only allow the switch + if the currently selected track/bus has a send or sends to control. +
+
Select Group
+
+ In this mode they function as bank select left and right. If your session has more than 8 tracks + the next set of 8 tracks is selected with the right button and the faders will move to match the + current gain settings of that bank of 8 tracks/busses. If the last bank contains less than 8 + tracks/busses the unused faders will move to the bottom and the pan lights will all turn + off. An unlimited amount of tracks can be controlled with the device. +
+
Transport Group
+
The upper left button controls Rewind. +
The upper right button controls Fast Foreword +
The lower left button controls stop
+
The lower right button controls play
+
+

Send Mode

+

+ Digramatic Image of the Send Mode +

+

+ Send mode allows for the top row of encoders to control the sends for a selected channel. + One interesting option is to flip the controls from the encoders to the faders by pressing + the shift 1 button and the global view button at the same time. +

+
+
Encoders
+
+ In send mode, the encoders control sends from left to right instead of mixer pans. + If there are less than 8 sends the behavior of the encoder will be to continue controlling + the mixer pan. Visually it's indicated by the change in the LED from originating at the 12 + o'clock position to originating at the 7 o'clock position. If FLIP is pressed + the encoder will control the mixer gain for the selected track/bus. +
+
First row of buttons
+
No Change
+
Second row of buttons
+
No Change.
+
Faders
+
+ No change unless FLIPis pressed then it controls the send for the selected track/bus. +
+
Shift Group
+
No Change
+
Select Group
+
No Change
+
Transport Group
+
No Change
+
+

Mixer Pan While Holding Shift 1

+

+ Digramatic Image of the Mixer Mode while holding down shift 1 +

+

+ The operations of various buttons change while holding down the Shift 1 button +

+
+
Encoders
+
No Change
+
First row of buttons
+
These now control the Soloing of each track/bus in the current bank
+
Second row of buttons
+
These now control the Enable Record for each track
+
Faders
+
No Change
+
Shift Group
+
No change
+
Mode Group
+
No Change
+
Select Group
+
+ These now change the current bank of tracks being controlled over by + one. So if you where controlling tracks 1-8 a push the right + button the surface would now control tracks 2-9 pressing the left + would then shift back to controlling tracks 1-8. +
+
Transport Group
+
The upper left now controls turning on and off Loop mode.
+
+ The upper right now toggles + Click. +
+
The lower left toggles Replace.
+
+ The lower right toggles + Global Record. +
+
+

Mixer Pan While Holding Shift 2

+

+ Digramatic Image of the Mixer Mode while holding down shift 2 +

+

+ The operations of various buttons change while holding down the Shift 2 button +

+
+
Encoders
+
No Change
+
First row of buttons
+
FIX ME
+
Second row of buttons
+
These now control setting up different Views. See bellow for more info
+
Faders
+
No Change
+
Shift Group
+
No change
+
Mode Group
+
No Change
+
Select Group
+
Left button controls Undo(NEEDS VERIFIED)
+
Transport Group
+
FIX ME
+
FIX ME
+
FIX ME
+
FIX ME
+
+

Views

+

+ Digramatic Image of the LED display for different Views +

+

+ FIX ME +

\ No newline at end of file diff --git a/include/calculating-feedback-and-strip-types-values.html b/include/calculating-feedback-and-strip-types-values.html new file mode 100644 index 0000000..91a9b70 --- /dev/null +++ b/include/calculating-feedback-and-strip-types-values.html @@ -0,0 +1,143 @@ +--- +layout: default +title: OSC: Feedback and Strip-types Values +--- + +

/set_surface has two values the user needs to calculate before + use. In general these will not be calculated at run time, but + beforehand. There may be more than one button with different values + to turn various kinds of feedback on or off or to determine which + kinds of strips are currently viewed/controlled. +

+

Both ,feedback and strip-types use bitsets to keep + track what they are doing. Any number in a computer is made out of + bits that are on or off, but we represent them as normal base 10 + numbers. Any one bit turned on will add a unique value to the + number as a whole. So for each kind of feedback or strip type + to be used, that number should be added to the total.

+

strip_types

+

+ strip_types is an integer made up of bits. The easy way to + deal with this is to think of strip_types items being worth a number and + then adding all those numbers together for a value to send. + Strip Types will determine What kind of strips will be included in + bank. This would include: Audio, MIDI, busses, VCAs, Master, Monitor + and hidden or selected strips. +

+ +

+ Selected and Hidden bits are normally not needed as Ardour defaults to + showing Selected strips and not showing Hidden strips. The purpose of + these two flags is to allow showing only Selected strips or only + Hidden strips. Using Hidden with other flags will allow Hidden strips + to show inline with other strips. +

+

+ Some handy numbers to use might be: 15 (all tracks and buses), 31 + (add VCAs to that). Master or Monitor strips are generally not useful + on a surface that has dedicated controls for these strips as there are + /master* and /monitor* commands already. However, on a surface with + just a bank of fader strips, adding master or monitor would allow + access to them within the banks. Selected would be useful for working + on a group or a set of user selected strips. Hidden shows strips the + GUI has hidden. +

+

+ Audio Aux? say what? I am sure most people will have noticed that they + can find no Aux strips in the Ardour mixer. There are none. + There are buses that can be used a number of ways. From analog days, + in OSC, a bus is something that gets used as a sub mix before ending up + going to Master. An auxiliary bus is used like a separate mixer and + it's output goes outside the program or computer to be used as: + a monitor mix, a back up recording, or what have you. In OSC where + controller strips may be limited, it may be useful not to use up a + strip for an aux that is not really a part of the mix. It is also + useful to get a list of only aux buses if the control surface is a + phone used to provide talent monitor mix control on stage. Each + performer would be able to mix their own monitor. The user is free + to enable both buses and auxes if they would prefer. +

+ +

feedback

+

Feedback is an integer made up of bits. The easy way to + deal with this is to think of feedback items being worth a number and + then adding all those numbers together for a value to send. +

+ +

+ So using a value of 19 would turn on feedback for strip and master + controls, but leave meters, timecode and bar/beat feedback off. +

diff --git a/include/controlling-ardour-with-osc.html b/include/controlling-ardour-with-osc.html index edf802a..194960f 100644 --- a/include/controlling-ardour-with-osc.html +++ b/include/controlling-ardour-with-osc.html @@ -1,1280 +1,12 @@ --- +layout: default title: Controlling Ardour with OSC ---

- OSC lets synthesizers - and other devices communicate with Ardour. OSC devices can send commands - relating to playback (such as play or stop), performance (such as volume, + OSC lets synthesizers + and other devices communicate with Ardour. OSC devices can send commands + relating to playback (such as play or stop), performance (such as volume, play, stop, and almost any other function (such as Edit, or Undo).

-

- Note: OSC control has changed dramatically since Ardour 4.7. - The Path structure has been completely redone, Banking has been introduced, - The controller is now able to tell Ardour what kind of feedback it can - work with (including bank size) and two new math styles have been added - to gain controls. If you are using an Ardour version of 4.7 or less, - please read - Osc control in ardour 4.7 and prior. -

- -

- Ardour is probably one of the most OSC-controllable audio applications - around, but as with all OSC-controllable apps, you can't do much without - knowing what messages can be sent. This document describes the - various categories of messages that Ardour understands. It is subject to - change, particularly the "Actions" part below, since this relates to the - GTK GUI for Ardour rather than the backend. -

- -

Connecting to Ardour via OSC

- -

- OSC support is not enabled by default, but can be turned on via - Edit > Preferences > Control Surfaces. - Once enabled, Ardour will listen on port 3819 by default. - This port number can be changed by editing $ARDOUR_CONFIG - and adding this line within the <Config> section: -

- -<Option name="osc-port" value="Your choice -here"/> - -

- Ardour sends any feedback to the port and address that sent any - feedback request. The port does not have to match Ardour's port. In - fact it is better not to. This means that Ardour can deal with more - than one controller at a time. The two controllers can bank - independently and even use different math for faders. This could be - used to allow talent to adjust their own monitor mix using a tablet - or phone that can run an OSC controller. For a full explanation of - how Ardour's feedback works please read - OSC feedback In Ardour. -

- -

Control Surface Set Up

- -

- Control surface set up allows the controller to tell Ardour about it's - capabilities. The surface can tell Ardour how many control strips it - has for banking, if it is capable of setting it's faders or buttons - to values set by Ardour's GUI or automation, What kind of math the - faders use and more. -

- -

- Any time the /set_surface command is sent, the current bank - is recalculated and if feedback is turned on, the values of each - strip's controls are sent (or refreshed) as well. This will also - refresh the Master feedback setup. -

- -

- Surface Port Setting is available in the OSC GUI. -

- -

- As of Ardour 5.1, There is now a GUI setup in response to those using - tablets with applications such as touchOSC or AndrOSC who need to be - able to set a port for Ardour to send to. It can also change the - default setting for set_surface. For more information about Ardour's - OSC configuration GUI please read - Ardour's Setup Dialog. -

- -

If /set_surface is not sent, the default values are used: -

-

- -

- These values give the same behaviour as prior versions of Ardour. (or the closest possible) -

- -
-
/set_surface bank_size strip_types - feedback fadermode
-
- See below for an explanation of each parameter. -
-
- -

bank_size

- -

- Bank Size is the number of channel strips the controller supports - without banking. Setting this to 0 turns banking off by setting the - bank size to infinite. -

- -

- Bank size can also be set with /set_surface/bank_size size. -

- -

strip_types

- -

- strip_types is an integer made up of bits. The easy way to - deal with this is to think of strip_types items being worth a number and - then adding all those numbers together for a value to send. - Strip Types will determine what kind of strips will be included in - bank. This would include: Audio, MIDI, buses, VCAs, Master, Monitor - and hidden or selected strips. -

- -

- Aside from setting the track types for the main mix assignments, using - /set_surface/strip_types with more than one surface button will allow - switching between modes for example: inputs only, buses only, - selected only, hidden only, by having the buttons send values of: 3, - 12, 256, 512. A full mix button might have a value 31. -

- -

- While Master and Monitor are listed as possibilities, most surfaces - will not use them. Using /master and /monitor makes more sense. - However, in the case where there are no master or monitor fader strips - on the surface, it may be necessary to include them in the banked - strips. -

- -

Please see: - Calculating Feedback and Strip-types Values. -

- -

- Strip types can also be set with /set_surface/strip_types types. -

- -

feedback

- -

Feedback is an integer made up of bits. The easy way to - deal with this is to think of feedback items being worth a number and - then adding all those numbers together for a value to send. -

- -

Please see: - Calculating Feedback and Strip-types Values. -

- -

- Feedback can also be set with /set_surface/feedback feedback. -

- -

gainmode

- -

- Gainmode is a an int that acts as a bool: -

-

- -

- Gainmode applies only to feedback values. The controller can choose - which gain math to use by choosing to use the /*/gain or /*/fader path - to send to Ardour. This makes sure a controller that doesn't set up - Ardour's OSC can still use either math. The gainmode for feedback also - determines the path Ardour uses for feedback so that the feedback - messages match the control messages. -

- -

- Gain mode can also be set with /set_surface/gainmode gainmode. -

- -

Querying Ardour for information

- -

- The control Surface may wish to control the type a frequency of - updates it receives. It can do this with querying commands. See: - Querying Ardour with OSC. -

- -

List of OSC messages

- -

- Parameter types show how the value will be used. However, they may - be sent as a different type if needed, see: - Parameter Types in OSC. -

- -

Master or Global messages

- -

Transport Control

- -
-
/transport_stop
-
-
/transport_play
-
-
/toggle_roll
-
Toggles between play and stop
-
/set_transport_speed s
-
where s is a float ranging from -8.0f to 8.0f
-
/ffwd
-
-
/rewind
-
-
/goto_start
-
-
/goto_end
-
-
/jump_bars bars
-
Where bars is a float (+/-) of the number of bars to jump
-
/jump_seconds seconds
-
Where seconds is a float (+/-) of the number of seconds to jump
-
/add_marker
-
(adds marker to the current transport position)
-
/remove_marker
-
Removes marker at the current transport position (if there is one)
-
/mark_in
-
Marks the begining of a range at the current transport position
-
/mark_out
-
Marks the end of a range at the current transport position
-
/next_marker
-
-
/prev_marker
-
-
/locate spos roll
-
where spos is the target position in samples and - roll is a bool/integer defining whether you want transport - to be kept rolling or not
-
/loop_toggle
-
-
/loop_location start end
-
start is the beginning of a loop and end is the - end of a loop both are integer frame positions.
-
/set_loop_range
-
Uses edit range as loop range
-
/set_session_range
-
Uses edit range as session range
-
/toggle_click
-
-
/midi_panic
-
Ardour will send an all notes off to all midi tracks
-
/cancel_all_solos
-
Cancel All Solos/PFLs/AFLs
-
- -

Transport Information

- -
-
/transport_frame
-
Ardour sends /transport_frame current_frame
-
/transport_speed
-
Ardour sends /transport_speed speed
-
/record_enabled
-
Ardour sends /record_enabled recordenable_status
-
- -

Editing-related

- -
-
/undo
-
-
/redo
-
-
/save_state
-
(this is the regular Session > Save - operation)
-
/quick_snapshot_switch
-
Take a snapshot and switch to new version
-
/quick_snapshot_stay
-
Take a snapshot and keep working on this version
-
/fit_*_track(s)
-
Were * is one of 1, 2, 4, 8, 16, 32 or all. Fits this - many tracks in editor window. (add s for more than 1)
-
/zoom_*
-
Zoom editor to include * where * is 100_ms, 1_sec, - 10_sec, 1_min, 5_min, 10_min or to_session
-
/temporal_zoom_in
-
Zoom editor in to show less time
-
/temporal_zoom_out
-
Zoom editor out to show more time
-
/scroll_up_1_track
-
Scroll the editor pane up 1 track
-
/scroll_up_1_page
-
Scroll the editor pane up 1 page
-
/scroll_dn_1_track
-
Scroll the editor pane down 1 track
-
/scroll_dn_1_page
-
Scroll the editor pane down 1 page
-
- -

Recording control

- -
-
/toggle_punch_in
-
-
/toggle_punch_out
-
-
/set_punch_range
-
Uses edit range as punch range
-
/rec_enable_toggle
-
- -
/stop_forget
-
Stop transport and delete/forget last take
-
- -

Master and Monitor strip control

- -
-
/master/gain dB
-
See gain in strips
-
/master/fader position
-
See fader in strips
-
/master/trimdB dB
-
see trimdb in strips
-
/master/pan_stereo_position position
-
See pan_stereo_position in strips
-
/master/mute yn
-
See mute in strips
-
/monitor/gain dB
-
See gain in strips
-
/monitor/fader position
-
See fader in strips
-
- -

Track specific operations

- -

- For each of the following, ssid is the Surface Strip ID for the track -

- -

- SSID has a different meaning than RID in Ardour version 4.7 and before. - Effectively, banking is always being used and the SSID is generated on - the fly. The SSID is the position of the strip within bank as an int - 1 to bank size. There are no gaps as there have been in the past. - Depending on the value of strip_types sent to Ardour, Master and - Monitor, may be included in the list of SSIDs or not as set in - /set_surface. -

- -

- Some Surfaces (many Android applets) are not able to deal with more - than one parameter in a command. However, the two parameter commands - below can also be sent as /strip/command/ssid param. In this case the - param should be a float even if an int is required below. -

- -
-
/bank_up
-
Change bank to the next higher bank.
-
/bank_down
-
Change bank to the next lower bank.
-
/strip/mute ssid mute_st
-
where mute_st is a bool/int representing the desired mute state of the track
-
/strip/solo ssid solo_st
-
where solo_st is a bool/int representing the desired solo state of the track
-
/strip/solo_iso ssid state
-
where state is a bool/int representing the desired solo isolate state of the track
-
/strip/solo_safe ssid state
-
where state is a bool/int representing the desired solo safe/lock state of the track
-
/strip/monitor_input ssid monitor_st
-
where monitor_st is a bool/int where 1 is forced input monitoring.
-
/strip/monitor_disk ssid monitor_st
-
where monitor_st is a bool/int where 1 is forced disk monitoring. When input and disk are both off, - Auto monitoring is enabled.
-
/strip/recenable ssid rec_st
-
where rec_st is a bool/int representing the desired rec state of the track
-
/strip/record_safe ssid rec_st
-
where rec_st is a bool/int representing the desired record safe state of the track
-
/strip/polarity ssid invert
-
where invert is a bool/int representing the desired polarity of the track
-
/strip/gain ssid gain
-
where gain is a float ranging from -193 to 6 representing the desired gain of the track in dB.
-
/strip/fader ssid position
-
where position is a float ranging from 0 to 1 representing the fader control position.
-
/strip/trimdB ssid trim_db
-
where trim_db is a float ranging from -20 to 20 representing the desired trim of the track in dB.
-
/strip/pan_stereo_position ssid position
-
where position is a float ranging from 0 to 1 representing the desired pan position of the track
-
/strip/pan_stereo_width ssid width
-
where width is a float ranging from 0 to 1 representing the desired pan width of the track
-
/strip/send/gain ssid sendid send_gain
-
where sendid = nth_send, send_gain is a float - ranging from -193 to +6 representing the desired gain in dB for the send
-
/strip/send/fader ssid sendid send_gain
-
where sendid = nth_send, send_gain is a float - ranging from 0 to 1 representing the desired position for the send as a fader
-
/strip/send/enable ssid sendid state
-
where sendid = nth_send, state is 1 for enabled and 0 for disabled
-
/strip/list
-
see: - Querying Ardour with OSC.
-
/strip/sends ssid
-
see: - Querying Ardour with OSC.
-
/strip/receives ssid
-
see: - Querying Ardour with OSC.
-
/strip/plugin/list ssid
-
see: - Querying Ardour with OSC.
-
/strip/plugin/descriptor ssid
-
see: - Querying Ardour with OSC.
-
/strip/plugin/reset ssid piid
-
where piid = nth Plugin, will reset all values to the plugin's original values
-
/strip/plugin/activate ssid piid
-
where piid = nth Plugin, will set the plugin's state to active
-
/strip/plugin/deactivate ssid piid
-
where piid = nth Plugin, will set the plugin's state to inactive
-
/strip/plugin/parameter ssid piid param value
-
where piid = nth Plugin, param = nth param, value - is a float ranging from 0 to 1 representing the desired parameter value
-
/strip/name ssid name
-
where name is a string for the desired name of the track
-
- -

Selected Strip Operations

- -

- New for Ardour 5, A whole set of operations that work on the selected - or expanded strip. -

- -

- Selected strip operations are complex enough for their own page. - Please read: - Selection Considerations in OSC. This is most important if more - than one OSC surface is being used with Ardour. -

- -

- There are two kinds of selection in OSC. GUI selection and local - expansion. By default expansion follows selection. -

-

- -
-
/strip/select ssid y/n
-
Where y/n = 1 for select. Sets both GUI select and strip - to expanded mode. (0 is ignored)
-
/strip/expand ssid y/n
-
Where y/n = 1 for expanded mode. Sets only local strip to - Expanded. Setting to 0 resets the expansion to follow selection.
-
/select/expand y/n
-
Where y/n = 1 for expanded mode, 0 for Select mode.
-
/select/recenable y/n
-
Where y/n is 1 for enabled and 0 for disabled
-
/select/record_safe y/n
-
Where y/n is 1 for safe and 0 for unlocked
-
/select/mute y/n
-
Where y/n is 1 for enabled and 0 for disabled
-
/select/solo y/n
-
Where y/n is 1 for enabled and 0 for disabled
-
/select/solo_iso state
-
where state is a bool/int representing the desired solo isolate state of the track
-
/select/solo_safe state
-
where state is a bool/int representing the desired solo safe/lock state of the track
-
/select/monitor_input y/n
-
Where y/n is 1 for monitor from input and 0 for auto
-
/select/monitor_disk y/n
-
Where y/n is 1 for monitor from disk and 0 for auto
-
/select/polarity invert
-
where invert is a bool/int representing the desired polarity of the track
-
/select/gain gain
-
Where gain is a float ranging from -193 to 6 representing the desired gain of the track in dB.
-
/select/fader position
-
Where position is an float ranging from 0 to 1 representing the fader control position.
-
/select/trimdB trim_db
-
where trim_db is a float ranging from -20 to 20 representing the desired trim of the track in dB.
-
/select/pan_stereo_position position
-
where position is a float ranging from 0 to 1 representing the desired pan position of the track
-
/select/pan_stereo_width width
-
where width is a float ranging from 0 to 1 representing the desired pan width of the track
-
/select/pan_elevation_position position
-
where position is a float ranging from 0 to 1 representing the desired pan elevation of the track
-
/select/pan_frontback_position position
-
where position is a float ranging from 0 to 1 representing the desired front to back position of the track
-
/select/pan_lfe_control value
-
where value is a float ranging from 0 to 1 representing the desired LFE control value for the track
-
/select/send_gain", sendid send_gain
-
where sendid = nth_send, send_gain is a float - ranging from -193 to +6 representing the desired gain in dB for the send
-
/select/send_fader", sendid send_gain
-
where sendid = nth_send, send_gain is a float - ranging from 0 to 1 representing the desired position for the send as a fader
-
/select/send_enable", sendid state
-
where sendid = nth_send, state is 1 for enabled and 0 for disabled
-
- -

Menu actions

- -

- Every single menu item in Ardour's GUI is accessible via OSC. There is - a single common syntax to trigger the action as if it was selected - with the mouse (or keyboard): -

- -/access_action action_name - -

- The list below shows all available values of action-name as of - June 2016 for Ardour 5.0.pre0.1. You can get the current list at any - time by running Ardour with the -b flag. -

- -
-
Action Name
Menu Name
- -
ProcessorMenu/ab_plugins
A/B Plugins
-
ProcessorMenu/activate_all
Activate All
-
ProcessorMenu/clear
Clear (all)
-
ProcessorMenu/clear_post
Clear (post-fader)
-
ProcessorMenu/clear_pre
Clear (pre-fader)
-
ProcessorMenu/controls
Controls
-
ProcessorMenu/copy
Copy
-
ProcessorMenu/cut
Cut
-
ProcessorMenu/deactivate_all
Deactivate All
-
ProcessorMenu/delete
Delete
-
ProcessorMenu/deselectall
Deselect All
-
ProcessorMenu/edit-generic
Edit with generic controls...
-
ProcessorMenu/edit
Edit...
-
ProcessorMenu/newaux
New Aux Send ...
-
ProcessorMenu/newinsert
New Insert
-
ProcessorMenu/newplugin
New Plugin
-
ProcessorMenu/newsend
New External Send ...
-
ProcessorMenu/paste
Paste
-
ProcessorMenu/rename
Rename
-
ProcessorMenu/selectall
Select All
-
ProcessorMenu/send_options
Send Options
- -
Common/Hide
-
Common/NewMIDITracer
MIDI Tracer
-
Common/Quit
Quit
-
Common/Save
Save
-
Common/ToggleMaximalEditor
Maximize Editor Space
-
Common/ToggleMaximalMixer
-
Common/ToggleMixerList
-
Common/ToggleMonitorSection
-
Common/ToggleRecordEnableTrack10
Toggle Record Enable Track 10
-
Common/ToggleRecordEnableTrack11
Toggle Record Enable Track 11
-
Common/ToggleRecordEnableTrack12
Toggle Record Enable Track 12
-
Common/ToggleRecordEnableTrack13
Toggle Record Enable Track 13
-
Common/ToggleRecordEnableTrack14
Toggle Record Enable Track 14
-
Common/ToggleRecordEnableTrack15
Toggle Record Enable Track 15
-
Common/ToggleRecordEnableTrack16
Toggle Record Enable Track 16
-
Common/ToggleRecordEnableTrack17
Toggle Record Enable Track 17
-
Common/ToggleRecordEnableTrack18
Toggle Record Enable Track 18
-
Common/ToggleRecordEnableTrack19
Toggle Record Enable Track 19
-
Common/ToggleRecordEnableTrack1
Toggle Record Enable Track 1
-
Common/ToggleRecordEnableTrack20
Toggle Record Enable Track 20
-
Common/ToggleRecordEnableTrack21
Toggle Record Enable Track 21
-
Common/ToggleRecordEnableTrack22
Toggle Record Enable Track 22
-
Common/ToggleRecordEnableTrack23
Toggle Record Enable Track 23
-
Common/ToggleRecordEnableTrack24
Toggle Record Enable Track 24
-
Common/ToggleRecordEnableTrack25
Toggle Record Enable Track 25
-
Common/ToggleRecordEnableTrack26
Toggle Record Enable Track 26
-
Common/ToggleRecordEnableTrack27
Toggle Record Enable Track 27
-
Common/ToggleRecordEnableTrack28
Toggle Record Enable Track 28
-
Common/ToggleRecordEnableTrack29
Toggle Record Enable Track 29
-
Common/ToggleRecordEnableTrack2
Toggle Record Enable Track 2
-
Common/ToggleRecordEnableTrack30
Toggle Record Enable Track 30
-
Common/ToggleRecordEnableTrack31
Toggle Record Enable Track 31
-
Common/ToggleRecordEnableTrack32
Toggle Record Enable Track 32
-
Common/ToggleRecordEnableTrack3
Toggle Record Enable Track 3
-
Common/ToggleRecordEnableTrack4
Toggle Record Enable Track 4
-
Common/ToggleRecordEnableTrack5
Toggle Record Enable Track 5
-
Common/ToggleRecordEnableTrack6
Toggle Record Enable Track 6
-
Common/ToggleRecordEnableTrack7
Toggle Record Enable Track 7
-
Common/ToggleRecordEnableTrack8
Toggle Record Enable Track 8
-
Common/ToggleRecordEnableTrack9
Toggle Record Enable Track 9
-
Common/attach-editor
-
Common/attach-mixer
-
Common/attach-preferences
-
Common/change-editor-visibility
-
Common/change-mixer-visibility
-
Common/change-preferences-visibility
-
Common/Chat
Chat
-
Common/cheat-sheet
-
Common/detach-editor
-
Common/detach-mixer
-
Common/detach-preferences
-
Common/forums
-
Common/hide-editor
-
Common/hide-mixer
-
Common/hide-preferences
-
Common/howto-report
-
Common/key-change-editor-visibility
-
Common/key-change-mixer-visibility
-
Common/key-change-preferences-visibility
-
Common/Manual
Manual
-
Common/menu-show-preferences
-
Common/next-tab
-
Common/previous-tab
-
Common/Reference
Reference
-
Common/show-editor
-
Common/show-mixer
-
Common/show-preferences
-
Common/toggle-editor-mixer
Toggle Editor+Mixer
-
Common/toggle-luawindow
-
Common/toggle-meterbridge
Meterbridge
-
Common/tracker
-
Common/website
-
Common/website-dev
- -
MIDI/panic
Panic
- -
Main/AddLuaScript
-
Main/AddTrackBus
Add Track or Bus...
-
Main/CleanupPeakFiles
-
Main/CleanupUnused
Clean-up Unused Sources...
-
Main/Close
Close
-
Main/CloseVideo
Remove Video
-
Main/EditMetadata
Edit Metadata...
-
Main/Escape
-
Main/ExportAudio
Export To Audio File(s)...
-
Main/Export
Export
-
Main/ExportVideo
Export To Video File
-
Main/FlushWastebasket
Flush Wastebasket
-
Main/ImportMetadata
Import Metadata...
-
Main/Metadata
Metadata
-
Main/New
New...
-
Main/Open
Open...
-
Main/OpenVideo
Open Video
-
Main/QuickSnapshotStay
-
Main/QuickSnapshotSwitch
-
Main/Recent
Recent...
-
Main/RemoveLuaScript
-
Main/Rename
Rename...
-
Main/SaveAs
Save As...
-
Main/SaveTemplate
Save Template...
-
Main/Scripting
-
Main/SnapshotStay
-
Main/SnapshotSwitch
-
Main/StemExport
Stem export...
-
Main/cancel-solo
-
Main/duplicate-routes
- -
Main_menu/AudioFileFormatData
Sample Format
-
Main_menu/AudioFileFormatHeader
File Type
-
Main_menu/AudioFileFormat
Audio File Format
-
Main_menu/Cleanup
Clean-up
-
Main_menu/ControlSurfaces
Control Surfaces
-
Main_menu/Denormals
Denormal Handling
-
Main_menu/Help
Help
-
Main_menu/KeyMouseActions
Misc. Shortcuts
-
Main_menu/MeteringFallOffRate
Fall Off Rate
-
Main_menu/MeteringHoldTime
Hold Time
-
Main_menu/Metering
Metering
-
Main_menu/MixerMenu
-
Main_menu/Plugins
Plugins
-
Main_menu/PrefsMenu
-
Main_menu/Session
Session
-
Main_menu/Sync
Sync
-
Main_menu/TransportOptions
Options
-
Main_menu/WindowMenu
Window
- -
options/SendMidiClock
Send MIDI Clock
-
options/SendMIDIfeedback
Send MIDI Feedback
-
options/SendMMC
Send MMC
-
options/SendMTC
Send MTC
-
options/UseMMC
Use MMC
- -
Transport/ForwardFast
Forward (Fast)
-
Transport/Forward
Forward
-
Transport/ForwardSlow
Forward (Slow)
-
Transport/GotoEnd
Goto End
-
Transport/GotoStart
Goto Start
-
Transport/GotoWallClock
Goto Wall Clock
-
Transport/GotoZero
Goto Zero
-
Transport/Loop
Play Loop Range
-
Transport/PlayPreroll
Play Selection w/Preroll
-
Transport/PlaySelection
Play Selected Range
-
Transport/Record
Enable Record
-
Transport/RewindFast
Rewind (Fast)
-
Transport/Rewind
Rewind
-
Transport/RewindSlow
Rewind (Slow)
-
Transport/Roll
Roll
-
Transport/Stop
Stop
-
Transport/ToggleAutoInput
Auto Input
-
Transport/ToggleAutoPlay
Auto Play
-
Transport/ToggleAutoReturn
Auto Return
-
Transport/ToggleClick
Click
-
Transport/ToggleExternalSync
-
Transport/ToggleFollowEdits
Follow Edits
-
Transport/TogglePunchIn
Punch In
-
Transport/TogglePunch
Punch In/Out
-
Transport/TogglePunchOut
Punch Out
-
Transport/ToggleRollForgetCapture
Stop and Forget Capture
-
Transport/ToggleRoll
Start/Stop
-
Transport/ToggleRollMaybe
Start/Continue/Stop
-
Transport/ToggleTimeMaster
Time Master
-
Transport/ToggleVideoSync
Sync Startup to Video
-
Transport/TransitionToReverse
Transition To Reverse
-
Transport/TransitionToRoll
Transition To Roll
-
Transport/Transport
Transport
-
Transport/alternate-GotoStart
-
Transport/alternate-ToggleRoll
-
Transport/alternate-numpad-decimal
-
Transport/alternate-record-roll
-
Transport/focus-on-clock
Focus On Clock
-
Transport/numpad-0
-
Transport/numpad-1
-
Transport/numpad-2
-
Transport/numpad-3
-
Transport/numpad-4
-
Transport/numpad-5
-
Transport/numpad-6
-
Transport/numpad-7
-
Transport/numpad-8
-
Transport/numpad-9
-
Transport/numpad-decimal
-
Transport/primary-clock-bbt
Bars & Beats
-
Transport/primary-clock-minsec
Minutes & Seconds
-
Transport/primary-clock-samples
Samples
-
Transport/primary-clock-timecode
Timecode
-
Transport/record-roll
Start Recording
-
Transport/secondary-clock-bbt
Bars & Beats
-
Transport/secondary-clock-minsec
Minutes & Seconds
-
Transport/secondary-clock-samples
Samples
-
Transport/secondary-clock-timecode
Timecode
- -
Window/toggle-about
About
-
Window/toggle-add-routes
Add Tracks/Busses
-
Window/toggle-add-video
Add Tracks/Busses
-
Window/toggle-audio-connection-manager
Audio Connections
-
Window/toggle-audio-midi-setup
Audio/MIDI Setup
-
Window/toggle-big-clock
Big Clock
-
Window/toggle-bundle-manager
Bundle Manager
-
Window/toggle-inspector
Tracks and Busses
-
Window/toggle-key-editor
Key Bindings
-
Window/toggle-locations
Locations
-
Window/toggle-midi-connection-manager
MIDI Connections
-
Window/toggle-script-manager
-
Window/toggle-session-options-editor
Properties
-
Window/toggle-speaker-config
Speaker Configuration
-
Window/toggle-video-export
- -
Editor/SnapMode
Snap Mode
-
Editor/SnapTo
Snap to
-
Editor/ToggleGroupTabs
Show Group Tabs
-
Editor/ToggleJadeo
Video Monitor
-
Editor/ToggleMeasureVisibility
Show Measures
-
Editor/ToggleSummary
Show Summary
-
Editor/add-location-from-playhead
Add Mark from Playhead
-
Editor/addExistingAudioFiles
Import
-
Editor/addExistingPTFiles
-
Editor/addExternalAudioToRegionList
Import to Region List...
-
Editor/alt-finish-range
-
Editor/alt-start-range
-
Editor/alternate-add-location-from-playhead
-
Editor/alternate-alternate-redo
-
Editor/alternate-editor-delete
-
Editor/alternate-jump-backward-to-mark
-
Editor/alternate-jump-forward-to-mark
-
Editor/alternate-redo
-
Editor/alternate-remove-location-from-playhead
-
Editor/alternate-select-all-after-edit-cursor
-
Editor/alternate-select-all-before-edit-cursor
-
Editor/alternate-tab-to-transient-backwards
-
Editor/alternate-tab-to-transient-forwards
-
Editor/bring-into-session
-
Editor/center-edit-cursor
Center Edit Point
-
Editor/center-playhead
Center Playhead
-
Editor/crop
Crop
-
Editor/cycle-edit-point
Change Edit Point
-
Editor/cycle-edit-point-with-marker
Change Edit Point Including Marker
-
Editor/cycle-snap-mode
Next Snap Mode
-
Editor/cycle-zoom-focus
Next Zoom Focus
-
Editor/deselect-all
Deselect All
-
Editor/duplicate-range
Duplicate Range
-
Editor/edit-at-mouse
Mouse
-
Editor/edit-at-playhead
Playhead
-
Editor/edit-at-selected-marker
Marker
-
Editor/edit-cursor-to-next-region-end
To Next Region End
-
Editor/edit-cursor-to-next-region-start
To Next Region Start
-
Editor/edit-cursor-to-next-region-sync
To Next Region Sync
-
Editor/edit-cursor-to-previous-region-end
To Previous Region End
-
Editor/edit-cursor-to-previous-region-start
To Previous Region Start
-
Editor/edit-cursor-to-previous-region-sync
To Previous Region Sync
-
Editor/edit-cursor-to-range-end
To Range End
-
Editor/edit-cursor-to-range-start
To Range Start
-
Editor/edit-to-playhead
Active Mark to Playhead
-
Editor/editor-copy
Copy
-
Editor/editor-crop
Crop
-
Editor/editor-cut
Cut
-
Editor/editor-delete
Delete
-
Editor/editor-fade-range
-
Editor/editor-paste
Paste
-
Editor/editor-separate
Separate
-
Editor/expand-tracks
Expand Track Height
-
Editor/export-audio
Export Audio
-
Editor/export-range
Export Range
-
Editor/finish-loop-range
-
Editor/finish-punch-range
-
Editor/finish-range
Finish Range
-
Editor/fit-selection
Fit Selected Tracks
-
Editor/fit_16_tracks
-
Editor/fit_1_track
-
Editor/fit_2_tracks
-
Editor/fit_32_tracks
-
Editor/fit_4_tracks
-
Editor/fit_8_tracks
-
Editor/fit_all_tracks
-
Editor/goto-mark-1
Locate to Mark 1
-
Editor/goto-mark-2
Locate to Mark 2
-
Editor/goto-mark-3
Locate to Mark 3
-
Editor/goto-mark-4
Locate to Mark 4
-
Editor/goto-mark-5
Locate to Mark 5
-
Editor/goto-mark-6
Locate to Mark 6
-
Editor/goto-mark-7
Locate to Mark 7
-
Editor/goto-mark-8
Locate to Mark 8
-
Editor/goto-mark-9
Locate to Mark 9
-
Editor/goto-visual-state-10
Goto View 10
-
Editor/goto-visual-state-11
Goto View 11
-
Editor/goto-visual-state-12
Goto View 12
-
Editor/goto-visual-state-1
Goto View 1
-
Editor/goto-visual-state-2
Goto View 2
-
Editor/goto-visual-state-3
Goto View 3
-
Editor/goto-visual-state-4
Goto View 4
-
Editor/goto-visual-state-5
Goto View 5
-
Editor/goto-visual-state-6
Goto View 6
-
Editor/goto-visual-state-7
Goto View 7
-
Editor/goto-visual-state-8
Goto View 8
-
Editor/goto-visual-state-9
Goto View 9
-
Editor/importFromSession
Import From Session
-
Editor/insert-time
Insert Time
-
Editor/invert-selection
Invert Selection
-
Editor/jump-backward-to-mark
Jump to Previous Mark
-
Editor/jump-forward-to-mark
Jump to Next Mark
-
Editor/lock
-
Editor/main-menu-play-selected-regions
Play Selected Regions
-
Editor/move-range-end-to-next-region-boundary
Move Range End to Next Region Boundary
-
Editor/move-range-end-to-previous-region-boundary
Move Range End to Previous Region Boundary
-
Editor/move-range-start-to-next-region-boundary
Move Range Start to Next Region Boundary
-
Editor/move-range-start-to-previous-region-boundary
Move Range Start to Previous Region Boundary
-
Editor/move-selected-tracks-down
Move Selected Tracks Down
-
Editor/move-selected-tracks-up
Move Selected Tracks Up
-
Editor/next-snap-choice
Next Snap Choice
-
Editor/next-snap-choice-music-only
Next Musical Snap Choice
-
Editor/nudge-next-backward
Nudge Next Earlier
-
Editor/nudge-next-forward
Nudge Next Later
-
Editor/nudge-playhead-backward
Nudge Playhead Backward
-
Editor/nudge-playhead-forward
Nudge Playhead Forward
-
Editor/play-edit-range
Play Edit Range
-
Editor/play-from-edit-point-and-return
Play from Edit Point and Return
-
Editor/play-from-edit-point
Play From Edit Point
-
Editor/playhead-backward-to-grid
Playhead To Previous Grid
-
Editor/playhead-forward-to-grid
Playhead To Next Grid
-
Editor/playhead-to-edit
Playhead to Active Mark
-
Editor/playhead-to-next-region-boundary
Playhead to Next Region Boundary
-
Editor/playhead-to-next-region-boundary-noselection
Playhead to Next Region Boundary (No Track Selection)
-
Editor/playhead-to-next-region-end
Playhead to Next Region End
-
Editor/playhead-to-next-region-start
Playhead to Next Region Start
-
Editor/playhead-to-next-region-sync
Playhead to Next Region Sync
-
Editor/playhead-to-previous-region-boundary
Playhead to Previous Region Boundary
-
Editor/playhead-to-previous-region-boundary-noselection
Playhead to Previous Region Boundary (No Track Selection)
-
Editor/playhead-to-previous-region-end
Playhead to Previous Region End
-
Editor/playhead-to-previous-region-start
Playhead to Previous Region Start
-
Editor/playhead-to-previous-region-sync
Playhead to Previous Region Sync
-
Editor/playhead-to-range-end
Playhead to Range End
-
Editor/playhead-to-range-start
Playhead to Range Start
-
Editor/prev-snap-choice
Previous Snap Choice
-
Editor/prev-snap-choice-music-only
Previous Musical Snap Choice
-
Editor/redo
Redo
-
Editor/redo-last-selection-op
-
Editor/remove-last-capture
Remove Last Capture
-
Editor/remove-location-from-playhead
-
Editor/remove-time
-
Editor/remove-track
Remove
-
Editor/save-visual-state-10
Save View 10
-
Editor/save-visual-state-11
Save View 11
-
Editor/save-visual-state-12
Save View 12
-
Editor/save-visual-state-1
Save View 1
-
Editor/save-visual-state-2
Save View 2
-
Editor/save-visual-state-3
Save View 3
-
Editor/save-visual-state-4
Save View 4
-
Editor/save-visual-state-5
Save View 5
-
Editor/save-visual-state-6
Save View 6
-
Editor/save-visual-state-7
Save View 7
-
Editor/save-visual-state-8
Save View 8
-
Editor/save-visual-state-9
Save View 9
-
Editor/script-action-1
-
Editor/script-action-2
-
Editor/script-action-3
-
Editor/script-action-4
-
Editor/script-action-5
-
Editor/script-action-6
-
Editor/script-action-7
-
Editor/script-action-8
-
Editor/script-action-9
-
Editor/scroll-backward
Scroll Backward
-
Editor/scroll-forward
Scroll Forward
-
Editor/scroll-playhead-backward
Playhead Backward
-
Editor/scroll-playhead-forward
Playhead Forward
-
Editor/scroll-tracks-down
Scroll Tracks Down
-
Editor/scroll-tracks-up
Scroll Tracks Up
-
Editor/select-all-after-edit-cursor
Select All After Edit Point
-
Editor/select-all-before-edit-cursor
Select All Before Edit Point
-
Editor/select-all-between-cursors
Select All Overlapping Edit Range
-
Editor/select-all-in-loop-range
Select All in Loop Range
-
Editor/select-all-in-punch-range
Select All in Punch Range
-
Editor/select-all-objects => Ctrl+A
-
Editor/select-all-tracks => Ctrl+T
-
Editor/select-all-within-cursors
Select All Inside Edit Range
-
Editor/select-from-regions
-
Editor/select-loop-range
-
Editor/select-next-route
Select Next Track or Bus
-
Editor/select-prev-route
Select Previous Track or Bus
-
Editor/select-punch-range
-
Editor/select-range-between-cursors
-
Editor/selected-marker-to-next-region-boundary
To Next Region Boundary
-
Editor/selected-marker-to-next-region-boundary-noselection
To Next Region Boundary (No Track Selection)
-
Editor/selected-marker-to-previous-region-boundary
To Previous Region Boundary
-
Editor/selected-marker-to-previous-region-boundary-noselection
To Previous Region Boundary (No Track Selection)
-
Editor/select-range-between-cursors
Select Edit Range
-
Editor/separate-from-loop
Separate Using Loop Range
-
Editor/separate-from-punch
Separate Using Punch Range
-
Editor/set-edit-lock
Lock
-
Editor/set-edit-point
Active Marker to Mouse
-
Editor/set-edit-ripple
-
Editor/set-edit-slide
Slide
-
Editor/set-loop-from-edit-range
Set Loop from Edit Range
-
Editor/set-playhead
Playhead to Mouse
-
Editor/set-punch-from-edit-range
Set Punch from Edit Range
-
Editor/set-session-end-from-playhead
-
Editor/set-session-from-edit-range
-
Editor/set-session-start-from-playhead
-
Editor/set-tempo-from-edit-range
Set Tempo from Edit Range = Bar
-
Editor/show-editor-list
Show Editor List
-
Editor/show-editor-mixer
Show Editor Mixer
-
Editor/show-marker-lines
Show Marker Lines
-
Editor/shrink-tracks
Shrink Track Height
-
Editor/snap-magnetic
Magnetic
-
Editor/snap-normal
Grid
-
Editor/snap-off
No Grid
-
Editor/sound-midi-notes
Sound Selected MIDI Notes
-
Editor/start-loop-range
-
Editor/start-punch-range
-
Editor/start-range
Start Range
-
Editor/start-range-from-playhead
-
Editor/step-mouse-mode
Step Mouse Mode
-
Editor/step-tracks-down
Step Tracks Down
-
Editor/step-tracks-up
Step Tracks Up
-
Editor/tab-to-transient-backwards
Move Earlier to Transient
-
Editor/tab-to-transient-forwards
Move Later to Transient
-
Editor/temporal-zoom-in
Zoom In
-
Editor/temporal-zoom-out
Zoom Out
-
Editor/toggle-edit-mode
Toggle Edit Mode
-
Editor/toggle-follow-playhead
Follow Playhead
-
Editor/toggle-log-window
Log
-
Editor/toggle-midi-input-active
Toggle MIDI Input Active for Editor-Selected Tracks/Busses
-
Editor/toggle-skip-playback
-
Editor/toggle-stationary-playhead
Stationary Playhead
-
Editor/toggle-track-active
Toggle Active
-
Editor/toggle-vmon-frame
Frame number
-
Editor/toggle-vmon-fullscreen
Fullscreen
-
Editor/toggle-vmon-letterbox
Letterbox
-
Editor/toggle-vmon-ontop
Always on Top
-
Editor/toggle-vmon-osdbg
Timecode Background
-
Editor/toggle-vmon-timecode
Timecode
-
Editor/toggle-zoom
Toggle Zoom State
-
Editor/track-height-large
Large
-
Editor/track-height-larger
Larger
-
Editor/track-height-largest
Largest
-
Editor/track-height-normal
Normal
-
Editor/track-height-small
Small
-
Editor/track-mute-toggle
Toggle Mute
-
Editor/track-record-enable-toggle
Toggle Record Enable
-
Editor/track-solo-isolate-toggle
Toggle Solo Isolate
-
Editor/track-solo-toggle
Toggle Solo
-
Editor/undo
Undo
-
Editor/undo-last-selection-op
-
Editor/zoom-to-selection
-
Editor/zoom-to-session
Zoom to Session
-
Editor/zoom-vmon-100
Original Size
-
Editor/zoom_100_ms
-
Editor/zoom_10_min
-
Editor/zoom_10_ms
-
Editor/zoom_10_sec
-
Editor/zoom_1_min
-
Editor/zoom_1_sec
-
Editor/zoom_5_min
- -
EditorMenu/ActionScripts
-
EditorMenu/AlignMenu
Align
-
EditorMenu/Autoconnect
Autoconnect
-
EditorMenu/Crossfades
Crossfades
-
EditorMenu/EditCursorMovementOptions
Move Selected Marker
-
EditorMenu/Edit
Edit
-
EditorMenu/EditPointMenu
Edit Point
-
EditorMenu/EditSelectRangeOptions
Select Range Operations
-
EditorMenu/EditSelectRegionOptions
Select Regions
-
EditorMenu/FadeMenu
Fade
-
EditorMenu/LatchMenu
Latch
-
EditorMenu/Link
Link
-
EditorMenu/LocateToMarker
Locate to Markers
-
EditorMenu/MIDI
MIDI Options
-
EditorMenu/MarkerMenu
Markers
-
EditorMenu/MeterFalloff
Meter falloff
-
EditorMenu/MeterHold
Meter hold
-
EditorMenu/MiscOptions
Misc Options
-
EditorMenu/Monitoring
Monitoring
-
EditorMenu/MoveActiveMarkMenu
Active Mark
-
EditorMenu/MovePlayHeadMenu
Playhead
-
EditorMenu/PlayMenu
Play
-
EditorMenu/PrimaryClockMenu
Primary Clock
-
EditorMenu/Pullup
Pullup / Pulldown
-
EditorMenu/RegionEditOps
Region operations
-
EditorMenu/RegionGainMenu
Gain
-
EditorMenu/RegionMenuDuplicate
Duplicate
-
EditorMenu/RegionMenuEdit
Edit
-
EditorMenu/RegionMenuFades
Fades
-
EditorMenu/RegionMenuGain
Gain
-
EditorMenu/RegionMenu
Region
-
EditorMenu/RegionMenuLayering
Layering
-
EditorMenu/RegionMenuMIDI
MIDI
-
EditorMenu/RegionMenuPosition
Position
-
EditorMenu/RegionMenuRanges
Ranges
-
EditorMenu/RegionMenuTrim
Trim
-
EditorMenu/RulerMenu
Rulers
-
EditorMenu/SavedViewMenu
Views
-
EditorMenu/ScrollMenu
Scroll
-
EditorMenu/SecondaryClockMenu
Secondary Clock
-
EditorMenu/Select
Select
-
EditorMenu/SelectMenu
Select
-
EditorMenu/SeparateMenu
Separate
-
EditorMenu/SetLoopMenu
Loop
-
EditorMenu/SetPunchMenu
Punch
-
EditorMenu/Solo
Solo
-
EditorMenu/Subframes
Subframes
-
EditorMenu/SyncMenu
Sync
-
EditorMenu/TempoMenu
Tempo
-
EditorMenu/Timecode
Timecode fps
-
EditorMenu/Tools
Tools
-
EditorMenu/TrackHeightMenu
Height
-
EditorMenu/TrackMenu
Track
-
EditorMenu/VideoMonitorMenu
Video Monitor
-
EditorMenu/View
View
-
EditorMenu/ZoomFocus
Zoom Focus
-
EditorMenu/ZoomFocusMenu
Zoom Focus
-
EditorMenu/ZoomMenu
Zoom
- -
MouseMode/set-mouse-mode-audition
Audition Tool
-
MouseMode/set-mouse-mode-content
-
MouseMode/set-mouse-mode-cut
-
MouseMode/set-mouse-mode-draw
Note Drawing Tool
-
MouseMode/set-mouse-mode-object
Object Tool
-
MouseMode/set-mouse-mode-object-range
Smart Object Mode
-
MouseMode/set-mouse-mode-range
Range Tool
-
MouseMode/set-mouse-mode-timefx
Time FX Tool
- -
Region/add-range-marker-from-region
Add Single Range Marker
-
Region/add-range-markers-from-region
Add Range Marker Per Region
-
Region/align-regions-end
Align End
-
Region/align-regions-end-relative
Align End Relative
-
Region/align-regions-start
Align Start
-
Region/align-regions-start-relative
Align Start Relative
-
Region/align-regions-sync
Align Sync
-
Region/align-regions-sync-relative
Align Sync Relative
-
/Region/alternate-nudge-backward
-
/Region/alternate-nudge-forward
-
/Region/alternate-set-fade-in-length
-
/Region/alternate-set-fade-out-length
-
Region/boost-region-gain
Boost Gain
-
Region/bounce-regions-processed
Bounce (without processing)
-
Region/bounce-regions-unprocessed
Bounce (with processing)
-
Region/choose-top-region-context-menu
Choose Top...
-
Region/choose-top-region
Choose Top...
-
Region/close-region-gaps
Close Gaps
-
Region/combine-regions
Combine
-
Region/cut-region-gain
Cut Gain
-
Region/duplicate-region
Duplicate
-
Region/export-region
Export...
-
Region/fork-region
Unlink from other copies
-
Region/insert-patch-change-context
Insert Patch Change...
-
Region/insert-patch-change
Insert Patch Change...
-
Region/insert-region-from-region-list
Insert Region From Region List
-
/Region/legatize-region
-
Region/loop-region
Loop
-
Region/loudness-analyze-region
-
Region/lower-region
Lower
-
Region/lower-region-to-bottom
Lower to Bottom
-
Region/multi-duplicate-region
Multi-Duplicate...
-
Region/naturalize-region
Move to Original Position
-
Region/normalize-region
Normalize...
-
Region/nudge-backward-by-capture-offset
Nudge Earlier by Capture Offset
-
Region/nudge-backward
Nudge Earlier
-
Region/nudge-forward-by-capture-offset
Nudge Later by Capture Offset
-
Region/nudge-forward
Nudge Later
-
Region/pitch-shift-region
Pitch Shift...
-
Region/place-transient
Place Transient
-
Region/play-selected-regions
Play
-
Region/quantize-region
Quantize...
-
Region/raise-region
Raise
-
Region/raise-region-to-top
Raise to Top
-
Region/region-fill-track
Fill Track
-
Region/remove-region
Remove
-
Region/remove-region-sync
Remove Sync
-
Region/rename-region
Rename...
-
Region/reset-region-gain-envelopes
Reset Envelope
-
Region/reset-region-scale-amplitude
Reset Gain
-
Region/reverse-region
Reverse
-
Region/separate-under-region
Separate Under
-
Region/sequence-regions
-
Region/set-fade-in-length
Set Fade In Length
-
Region/set-fade-out-length
Set Fade Out Length
-
Region/set-loop-from-region
Set Loop Range
-
Region/set-punch-from-region
Set Punch
-
Region/set-region-sync-position
Set Sync Position
-
Region/set-selection-from-region
Set Range Selection
-
Region/set-tempo-from-region
Set Tempo from Region = Bar
-
Region/show-region-list-editor
List Editor...
-
Region/show-region-properties
Properties...
-
Region/show-rhythm-ferret
Rhythm Ferret...
-
Region/snap-regions-to-grid
Snap Position To Grid
-
Region/split-multichannel-region
Make Mono Regions
-
Region/split-region-at-transients
Split at Percussion Onsets
-
Region/split-region
Split
-
Region/strip-region-silence
Strip Silence...
-
Region/toggle-opaque-region
Opaque
-
Region/toggle-region-fade-in
Fade In
-
Region/toggle-region-fade-out
Fade Out
-
Region/toggle-region-fades
Fades
-
Region/toggle-region-gain-envelope-active
Envelope Active
-
Region/toggle-region-lock
Lock
-
Region/toggle-region-lock-style
Glue to Bars and Beats
-
Region/toggle-region-mute
Mute
-
Region/toggle-region-video-lock
Lock to Video
-
Region/transform-region
-
Region/transpose-region
Transpose...
-
Region/trim-back
Trim End at Edit Point
-
Region/trim-front
Trim Start at Edit Point
-
Region/trim-region-to-loop
Trim to Loop
-
Region/trim-region-to-punch
Trim to Punch
-
Region/trim-to-next-region
Trim to Next
-
Region/trim-to-previous-region
Trim to Previous
-
Region/uncombine-regions
Uncombine
- -
RegionList/RegionListSort
Sort
-
RegionList/SortAscending
Ascending
-
RegionList/SortByRegionEndinFile
By Region End in File
-
RegionList/SortByRegionLength
By Region Length
-
RegionList/SortByRegionName
By Region Name
-
RegionList/SortByRegionPosition
By Region Position
-
RegionList/SortByRegionStartinFile
By Region Start in File
-
RegionList/SortByRegionTimestamp
By Region Timestamp
-
RegionList/SortBySourceFileCreationDate
By Source File Creation Date
-
RegionList/SortBySourceFileLength
By Source File Length
-
RegionList/SortBySourceFileName
By Source File Name
-
RegionList/SortBySourceFilesystem
By Source Filesystem
-
RegionList/SortDescending
Descending
-
RegionList/removeUnusedRegions
Remove Unused
-
RegionList/rlAudition
Audition
-
RegionList/rlHide
Hide
-
RegionList/rlShow
Show
-
RegionList/rlShowAll
Show All
-
RegionList/rlShowAuto
Show Automatic Regions
- -
Rulers/toggle-bbt-ruler
Bars & Beats
-
Rulers/toggle-cd-marker-ruler
CD Markers
-
Rulers/toggle-loop-punch-ruler
Loop/Punch
-
Rulers/toggle-marker-ruler
Markers
-
Rulers/toggle-meter-ruler
Meter
-
Rulers/toggle-minsec-ruler
Min:Sec
-
Rulers/toggle-range-ruler
Ranges
-
Rulers/toggle-samples-ruler
Samples
-
Rulers/toggle-tempo-ruler
Tempo
-
Rulers/toggle-timecode-ruler
Timecode
-
Rulers/toggle-video-ruler
Video
- - -
Snap/snap-to-asixteenthbeat
Snap to Sixteenths
-
Snap/snap-to-bar
Snap to Bar
-
Snap/snap-to-beat
Snap to Beat
-
Snap/snap-to-cd-frame
Snap to CD Frame
-
Snap/snap-to-eighths
Snap to Eighths
-
Snap/snap-to-fifths
Snap to Fifths
-
Snap/snap-to-fourteenths
Snap to Fourteenths
-
Snap/snap-to-halves
Snap to Halves
-
Snap/snap-to-mark
Snap to Mark
-
Snap/snap-to-minutes
Snap to Minutes
-
Snap/snap-to-onetwentyeighths
Snap to One Twenty Eighths
-
Snap/snap-to-quarters
Snap to Quarters
-
Snap/snap-to-region-boundary
Snap to Region Boundary
-
Snap/snap-to-region-end
Snap to Region End
-
Snap/snap-to-region-start
Snap to Region Start
-
Snap/snap-to-region-sync
Snap to Region Sync
-
Snap/snap-to-seconds
Snap to Seconds
-
Snap/snap-to-sevenths
Snap to Sevenths
-
Snap/snap-to-sixths
Snap to Sixths
-
Snap/snap-to-sixtyfourths
Snap to Sixty Fourths
-
Snap/snap-to-tenths
Snap to Tenths
-
Snap/snap-to-thirds
Snap to Thirds
-
Snap/snap-to-thirtyseconds
Snap to Thirty Seconds
-
Snap/snap-to-timecode-frame
Snap to Timecode Frame
-
Snap/snap-to-timecode-minutes
Snap to Timecode Minutes
-
Snap/snap-to-timecode-seconds
Snap to Timecode Seconds
-
Snap/snap-to-twelfths
Snap to Twelfths
-
Snap/snap-to-twentieths
Snap to Twentieths
-
Snap/snap-to-twentyeighths
Snap to Twenty Eighths
-
Snap/snap-to-twentyfourths
Snap to Twenty Fourths
- -
Zoom/zoom-focus-center
Zoom Focus Center
-
Zoom/zoom-focus-edit
Zoom Focus Edit Point
-
Zoom/zoom-focus-left
Zoom Focus Left
-
Zoom/zoom-focus-mouse
Zoom Focus Mouse
-
Zoom/zoom-focus-playhead
Zoom Focus Playhead
-
Zoom/zoom-focus-right
Zoom Focus Right
- -
/Mixer/ab-plugins
-
/Mixer/copy-processors
-
/Mixer/cut-processors
-
/Mixer/decrement-gain
-
/Mixer/delete-processors
-
/Mixer/increment-gain
-
/Mixer/mute
-
/Mixer/paste-processors
-
/Mixer/recenable
-
/Mixer/scroll-left
-
/Mixer/scroll-right
-
/Mixer/select-all-processors
-
/Mixer/select-none
-
/Mixer/solo
-
/Mixer/toggle-midi-input-active
-
/Mixer/toggle-processors
-
/Mixer/unity-gain
-
- diff --git a/include/devices-not-listed.html b/include/devices-not-listed.html new file mode 100644 index 0000000..579ca6e --- /dev/null +++ b/include/devices-not-listed.html @@ -0,0 +1,18 @@ +--- +layout: default +title: What to do if your Device is not Listed +menu_title: Unlisted devices +--- + +

+ All Mackie Control devices are based on the original Logic Control and the + documentation in the user manual that came with it. The Mackie Control and + the Mackie Control Pro and so on, all use this same protocol. Any units + from other manufactures will also use the same encoding as best the + hardware will allow. If the unit in use has more than one Mackie Control + option, it is best to choose Logic Control or LC. Any Templates for the + buttons should be chosen the same way as the Function key Editor uses these + button names. The "Mackie Control" option should be considered default and + should be tried with any unlisted device before attemping to create a + custom definition file. +

diff --git a/include/devices-using-mackielogic-control-protocol.html b/include/devices-using-mackielogic-control-protocol.html new file mode 100644 index 0000000..32051b8 --- /dev/null +++ b/include/devices-using-mackielogic-control-protocol.html @@ -0,0 +1,66 @@ +--- +layout: default +title: Devices using Mackie/Logic Control Protocol +menu_title: Mackie/Logic Control Devices +--- + +

+ This will walk you through the process of configuring and using + a MIDI control surface with Ardour that uses the Mackie Control + protocol (MCP) or Logic Control protocol. Devices that + have been tested and are known to work include the SSL Nucleus, Mackie + Control Pro (plus extenders), Behringer devices in Mackie/Logic mode, + and Steinberg CMC devices. +

+ +

Enabling Mackie Control in Ardour

+

+ Navigate to Edit > Preferences > Control Surfaces. + Double-click on Mackie Control to see the setup dialog: +

+Mackie Control Setup Dialog +

+ From the selector at the top, choose the type of device you are using. + ( + What to do if your device is not listed). +

+

+ Once your setup is complete, click "OK" to close the dialog. Now click + on the enable checkbox for "Mackie Control". +

+ +

Connecting control surface and Ardour MIDI ports

+

+ If you are using a device that uses ipMIDI, such as the SSL Nucleus, no + MIDI port connections are required — Ardour and your control + surface will be able to talk to each other automatically. +

+

+ If you are using a device that uses normal MIDI (via a standard MIDI or + USB cable), you need to connect Ardour's Mackie Control in and out ports + to the MIDI ports leading to and coming from the control surface. +

+

+ When you have made these connections once, Ardour will recreate them + for you in the future, as long as you leave Mackie Control enabled. +

+ +

Customizing your control surface

+

+ Every possible Mackie Control button can be bound to any action present + in Ardour's GUI. Please check your control surface page for suggestions. +

+ +

Preparing your device for use with Ardour

+

+ Most interfaces will require some configuration to send and respond to + MCP. +

+ +

+ When setting up the control surface, do not use "Pro Tools" + mode. Pro Tools is the only DAW that still requires HUI. The rest of + world uses Mackie Control Protocol. Ardour does not support HUI. +

+ diff --git a/include/feedback-in-osc.html b/include/feedback-in-osc.html new file mode 100644 index 0000000..1b40557 --- /dev/null +++ b/include/feedback-in-osc.html @@ -0,0 +1,243 @@ +--- +layout: default +title: OSC: Feedback +--- + +

+ Feedback from the Ardour to the the control surface is very useful for + a number of things. Motor faders need to know where the the track + they have been attached to is at before they were assigned otherwise + the DAW fader will jump to where the controller fader is. Likewise, + the buttons on each strip need to know what their value is so they can + light their LED correctly. Transport controls should let you know if + they are active too. This is what feedback is all about. +

+

+ Ardour does feedback by sending the same path back that is used to + control the same function. As such any controls that have feedback + have a parameter that is the value of the control or it's state + (on or off). In the case of OSC paths listed on the main OSC page + as having no parameter, if they have feedback, they will also work + with a 1 for button press and 0 for button release. This is because + many OSC controllers will only use exactly the same path for feedback + as for control. For example: +

+ +
+
/transport_stop
+
+
+

can be used also in the form:

+ +
+
/transport_stop press
+
where press is an int/bool indicating if the button is pressed or not.
+
+ +

+ The feedback does not have the same meaning as the control message. + Where the button release sent to Ardour will be ignored and has no + meaning. Both states have meaning in feedback to the controller. + The feedback will be: +

+ +
+
/transport_stop state
+
where state is an int/bool indicating if the transport is stopped or not.
+
+

+ With feedback turned on, OSC control commands that try to change a + control that does not exist will get feedback that resets that control + to off. For example, sending a /strip/recenable to a buss will not work + and Ardour will try to turn the controller LED off in that case. Also + note that Pan operation may be limited by pan width in some cases. + That is with pan width at 100% (or -100%) there is no pan position + movement available. +

+

+ It may come as a surprise, but feedback often generates more network + traffic than control itself does. Some things are more obvious like + head position or meters. But even a simple button push like transport + start sends not only a signal to turn on the play LED, but also one to + turn off the stop LED, the Rewind LED, the Fast Forward LED and the + Loop LED. That is still minor, think instead of a surface refresh + such as happens when the surface is first connected and then most of + that happens every time the fader strips are banked. This is why + feedback is enabled in sections so that as little feedback as is + actually needed is sent. This is also a consideration if the surface + is connected via wifi. +

+

List of OSC feedback messages

+ +

Feedback only

+

+ These messages are feedback only. They are sent as status from Ardour + and some of them may be enabled separately from other feedback. See: + + Calculating Feedback and Strip-types Values. +

+

+ See strip section below for info about ssid and wrapping it into the + path. Also /master and /monitor support what the /strip does. +

+

+ In the case where Gainmode is set to position, the track name will + show the dB value while values are changing. +

+
+
/strip/name ssid track_name
+
where track_name is a string representing the name of the track
+
/session_name session_name
+
where session_name is a string representing the name of the session
+
/strip/meter ssid meter
+
where meter is a value repesenting the current audio level. + (the exact math used is determined by the feedback bits set)
+
/strip/signal ssid signal
+
where signal is a float indicating the instantaneous + audio level is -40dB or higher.
+
/position/smpte time
+
where time is a string with the current play head time. Seconds as per smpte.
+
/position/bbt beat
+
where beat is a string with the current play head bar/beat.
+
/position/time time
+
where time is a string with the current play head time. Seconds are in milliseconds
+
/position/samples samples
+
where samples is a string with the current play head position in samples.
+
/heartbeat LED
+
where LED is a float that cycles 1/0 at 1 second intervals.
+
/record_tally state
+
Some record enable is true or "ready to record". For a "Recording" sign at studio door.
+
+ +

Transport Control

+
+
/transport_stop state
+
state is true when transport is stopped
+
/transport_play state
+
state is true when transport speed is 1.0
+
/ffwd state
+
state is true when transport is moving forward but not at speed 1.0
+
/rewind state
+
state is true when transport speed is less than 0.0
+
/loop_toggle state
+
state is true when loop mode is true
+
/cancel_all_solos state
+
Where state true indicates there are active solos that can be canceled.
+
+ +

Recording control

+
+ +
/rec_enable_toggle state
+
Master record enabled.
+
+ +

Master and monitor strips

+

+ Master and monitor strips are similar to track strips but do not use + the SSID. Rather they use their name as part of the path: +

+
+
/master/gain dB
+
where dB is a float ranging from -193 to +6 representing the actual gain of master in dB
+
/master/fader position
+
where position is an int ranging from 0 to 1023 representing the fader control position
+
/master/trimdB dB
+
where dB is a float ranging from -20 to +20 representing the actual trim for master in dB
+
/master/pan_stereo_position position
+
where position is a float ranging from 0 to 1 representing the actual pan position for master
+
/master/mute yn
+
where yn is a bool/int representing the actual mute state of the Master strip
+
/monitor/gain dB
+
where dB is a float ranging from -193 to 6 representing the actual gain of monitor in dB
+
/monitor/fader position
+
where position is an int ranging from 0 to 1023 representing the fader control position
+
+ +

Track specific operations

+

+ For each of the following, ssid is the surface strip ID for the track +

+

+ Some Surfaces (many Android applets) are not able to deal with more + than one parameter in a command. However, the two parameter commands + below can also be sent as /strip/command/ssid param. Feedback can be + set to match this with the /set_surface/feedback state + command. See + Calculating Feedback and Strip-types Values. +

+ +
+
/bank_up LED
+
where LED is a bool that indicates another bank_up operation is possible.
+
/bank_down LED
+
where LED is a bool that indicates another bank_down operation is possible.
+
/strip/name ssid track_name
+
where track_name is a string representing the name of the track + (note there is no coresponding command to set the track name)
+
/strip/mute ssid mute_st
+
where mute_st is a bool/int representing the actual mute state of the track
+
/strip/solo ssid solo_st
+
where solo_st is a bool/int representing the actual solo state of the track
+
/strip/monitor_input ssid monitor_st
+
where monitor_st is a bool/int. True/1 meaning the track is force to monitor input
+
/strip/monitor_disk ssid monitor_st
+
where monitor_st is a bool/int. True/1 meaning the track is force to monitor disk, + where both disk and input are false/0, auto monitoring is used.
+
/strip/recenable ssid rec_st
+
where rec_st is a bool/int representing the actual rec state of the track
+
/strip/record_safe ssid rec_st
+
where rec_st is a bool/int representing the actual record safe state of the track
+
/strip/gain ssid gain
+
where gain is a float ranging from -193 to 6 representing the actual gain of the track in dB.
+
/strip/fader ssid position
+
where position is an float ranging from 0 to 1 representing the actual fader position of the track.
+
/strip/trimdB ssid trim_db
+
where trim_db is a float ranging from -20 to 20 representing the actual trim of the track in dB.
+
/strip/pan_stereo_position ssid position
+
where position is a float ranging from 0 to 1 representing the actual pan position of the track
+
+

Selection Operations

+

+ Selection feedback is the same as for strips, only the path changes + from /strip to /select and there is no ssid. + there are some extra feedback and commands that will be listed here. +

+
+
/select/n_inputs number
+
where number number of inputs for this strip
+
/select/n_outputs number
+
where number number of outputs for this strip
+
/select/comment text
+
where text is the strip comment
+
/select/solo_iso state
+
where state is a bool/int representing the Actual solo isolate state of the track
+
/select/solo_safe state
+
where state is a bool/int representing the actual solo safe/lock state of the track
+
/select/polarity invert
+
where invert is a bool/int representing the actual polarity of the track
+
/select/pan_stereo_width width
+
where width is a float ranging from 0 to 1 representing the actual pan width of the track
+
/select/send_gain", sendid send_gain
+
where sendid = nth_send, send_gainis a float + ranging from -193 to +6 representing the actual gain in dB for the send
+
/select/send_fader", sendid send_gain
+
where sendid = nth_send, send_gainis a float + ranging from 0 to 1 representing the actual position for the send as a fader
+
/select/send_name sendid send_name
+
where send_name is a string representing the name of the buss + this send goes to.
+
+

Menu actions

+

+ Every single menu item in Ardour's GUI is accessible via OSC. However, + there is no provision for returning the state of anything set this way. + This is not a bad thing as most menu items either do not have an on/off + state or that state is quite visible. Binding that affect other parameters + that OSC does track will show on those OSC controls. Examples of this + might be track record enable for tracks 1 to 32, play or stop. +

diff --git a/include/mackie-control-setup-on-linux.html b/include/mackie-control-setup-on-linux.html new file mode 100644 index 0000000..e155e5a --- /dev/null +++ b/include/mackie-control-setup-on-linux.html @@ -0,0 +1,20 @@ +--- +layout: default +title: Mackie Control Setup on Linux +--- + +

Devices using ipMIDI

+

+ If you are using a device like the SSL Nucleus that uses ipMIDI, + no set up is required other than to ensure that your control surface + and computer are both connected to the same network. +

+ +

Devices using conventional MIDI

+

+ Before attempting to use a Mackie Control device that communicates via + a standard MIDI cable or a USB cable, you should ensure that + your Linux + MIDI environment is setup. +

+ diff --git a/include/menu-actions-list.html b/include/menu-actions-list.html new file mode 100644 index 0000000..8bf4131 --- /dev/null +++ b/include/menu-actions-list.html @@ -0,0 +1,743 @@ +--- +layout: default +title: List of Menu Actions +--- + + +

Menu actions

+

+ Every single menu item in Ardour's GUI is accessible by control + surfaces or scripts. +

+ +

+ The list below shows all available values of action-name as of + June 2016 for Ardour 5.0.pre0.1. You can get the current list at any + time by running Ardour with the -b flag. +

+
+
Action Name
Menu Name
+ +
ProcessorMenu/ab_plugins
A/B Plugins
+
ProcessorMenu/activate_all
Activate All
+
ProcessorMenu/clear
Clear (all)
+
ProcessorMenu/clear_post
Clear (post-fader)
+
ProcessorMenu/clear_pre
Clear (pre-fader)
+
ProcessorMenu/controls
Controls
+
ProcessorMenu/copy
Copy
+
ProcessorMenu/cut
Cut
+
ProcessorMenu/deactivate_all
Deactivate All
+
ProcessorMenu/delete
Delete
+
ProcessorMenu/deselectall
Deselect All
+
ProcessorMenu/edit-generic
Edit with generic controls...
+
ProcessorMenu/edit
Edit...
+
ProcessorMenu/newaux
New Aux Send ...
+
ProcessorMenu/newinsert
New Insert
+
ProcessorMenu/newplugin
New Plugin
+
ProcessorMenu/newsend
New External Send ...
+
ProcessorMenu/paste
Paste
+
ProcessorMenu/rename
Rename
+
ProcessorMenu/selectall
Select All
+
ProcessorMenu/send_options
Send Options
+ +
Common/Hide
+
Common/NewMIDITracer
MIDI Tracer
+
Common/Quit
Quit
+
Common/Save
Save
+
Common/ToggleMaximalEditor
Maximize Editor Space
+
Common/ToggleMaximalMixer
+
Common/ToggleMixerList
+
Common/ToggleMonitorSection
+
Common/ToggleRecordEnableTrack10
Toggle Record Enable Track 10
+
Common/ToggleRecordEnableTrack11
Toggle Record Enable Track 11
+
Common/ToggleRecordEnableTrack12
Toggle Record Enable Track 12
+
Common/ToggleRecordEnableTrack13
Toggle Record Enable Track 13
+
Common/ToggleRecordEnableTrack14
Toggle Record Enable Track 14
+
Common/ToggleRecordEnableTrack15
Toggle Record Enable Track 15
+
Common/ToggleRecordEnableTrack16
Toggle Record Enable Track 16
+
Common/ToggleRecordEnableTrack17
Toggle Record Enable Track 17
+
Common/ToggleRecordEnableTrack18
Toggle Record Enable Track 18
+
Common/ToggleRecordEnableTrack19
Toggle Record Enable Track 19
+
Common/ToggleRecordEnableTrack1
Toggle Record Enable Track 1
+
Common/ToggleRecordEnableTrack20
Toggle Record Enable Track 20
+
Common/ToggleRecordEnableTrack21
Toggle Record Enable Track 21
+
Common/ToggleRecordEnableTrack22
Toggle Record Enable Track 22
+
Common/ToggleRecordEnableTrack23
Toggle Record Enable Track 23
+
Common/ToggleRecordEnableTrack24
Toggle Record Enable Track 24
+
Common/ToggleRecordEnableTrack25
Toggle Record Enable Track 25
+
Common/ToggleRecordEnableTrack26
Toggle Record Enable Track 26
+
Common/ToggleRecordEnableTrack27
Toggle Record Enable Track 27
+
Common/ToggleRecordEnableTrack28
Toggle Record Enable Track 28
+
Common/ToggleRecordEnableTrack29
Toggle Record Enable Track 29
+
Common/ToggleRecordEnableTrack2
Toggle Record Enable Track 2
+
Common/ToggleRecordEnableTrack30
Toggle Record Enable Track 30
+
Common/ToggleRecordEnableTrack31
Toggle Record Enable Track 31
+
Common/ToggleRecordEnableTrack32
Toggle Record Enable Track 32
+
Common/ToggleRecordEnableTrack3
Toggle Record Enable Track 3
+
Common/ToggleRecordEnableTrack4
Toggle Record Enable Track 4
+
Common/ToggleRecordEnableTrack5
Toggle Record Enable Track 5
+
Common/ToggleRecordEnableTrack6
Toggle Record Enable Track 6
+
Common/ToggleRecordEnableTrack7
Toggle Record Enable Track 7
+
Common/ToggleRecordEnableTrack8
Toggle Record Enable Track 8
+
Common/ToggleRecordEnableTrack9
Toggle Record Enable Track 9
+
Common/attach-editor
+
Common/attach-mixer
+
Common/attach-preferences
+
Common/change-editor-visibility
+
Common/change-mixer-visibility
+
Common/change-preferences-visibility
+
Common/Chat
Chat
+
Common/cheat-sheet
+
Common/detach-editor
+
Common/detach-mixer
+
Common/detach-preferences
+
Common/forums
+
Common/hide-editor
+
Common/hide-mixer
+
Common/hide-preferences
+
Common/howto-report
+
Common/key-change-editor-visibility
+
Common/key-change-mixer-visibility
+
Common/key-change-preferences-visibility
+
Common/Manual
Manual
+
Common/menu-show-preferences
+
Common/next-tab
+
Common/previous-tab
+
Common/Reference
Reference
+
Common/show-editor
+
Common/show-mixer
+
Common/show-preferences
+
Common/toggle-editor-mixer
Toggle Editor+Mixer
+
Common/toggle-luawindow
+
Common/toggle-meterbridge
Meterbridge
+
Common/tracker
+
Common/website
+
Common/website-dev
+ +
MIDI/panic
Panic
+ +
Main/AddLuaScript
+
Main/AddTrackBus
Add Track or Bus...
+
Main/CleanupPeakFiles
+
Main/CleanupUnused
Clean-up Unused Sources...
+
Main/Close
Close
+
Main/CloseVideo
Remove Video
+
Main/EditMetadata
Edit Metadata...
+
Main/Escape
+
Main/ExportAudio
Export To Audio File(s)...
+
Main/Export
Export
+
Main/ExportVideo
Export To Video File
+
Main/FlushWastebasket
Flush Wastebasket
+
Main/ImportMetadata
Import Metadata...
+
Main/Metadata
Metadata
+
Main/New
New...
+
Main/Open
Open...
+
Main/OpenVideo
Open Video
+
Main/QuickSnapshotStay
+
Main/QuickSnapshotSwitch
+
Main/Recent
Recent...
+
Main/RemoveLuaScript
+
Main/Rename
Rename...
+
Main/SaveAs
Save As...
+
Main/SaveTemplate
Save Template...
+
Main/Scripting
+
Main/SnapshotStay
+
Main/SnapshotSwitch
+
Main/StemExport
Stem export...
+
Main/cancel-solo
+
Main/duplicate-routes
+ +
Main_menu/AudioFileFormatData
Sample Format
+
Main_menu/AudioFileFormatHeader
File Type
+
Main_menu/AudioFileFormat
Audio File Format
+
Main_menu/Cleanup
Clean-up
+
Main_menu/ControlSurfaces
Control Surfaces
+
Main_menu/Denormals
Denormal Handling
+
Main_menu/Help
Help
+
Main_menu/KeyMouseActions
Misc. Shortcuts
+
Main_menu/MeteringFallOffRate
Fall Off Rate
+
Main_menu/MeteringHoldTime
Hold Time
+
Main_menu/Metering
Metering
+
Main_menu/MixerMenu
+
Main_menu/Plugins
Plugins
+
Main_menu/PrefsMenu
+
Main_menu/Session
Session
+
Main_menu/Sync
Sync
+
Main_menu/TransportOptions
Options
+
Main_menu/WindowMenu
Window
+ +
options/SendMidiClock
Send MIDI Clock
+
options/SendMIDIfeedback
Send MIDI Feedback
+
options/SendMMC
Send MMC
+
options/SendMTC
Send MTC
+
options/UseMMC
Use MMC
+ +
Transport/ForwardFast
Forward (Fast)
+
Transport/Forward
Forward
+
Transport/ForwardSlow
Forward (Slow)
+
Transport/GotoEnd
Goto End
+
Transport/GotoStart
Goto Start
+
Transport/GotoWallClock
Goto Wall Clock
+
Transport/GotoZero
Goto Zero
+
Transport/Loop
Play Loop Range
+
Transport/PlayPreroll
Play Selection w/Preroll
+
Transport/PlaySelection
Play Selected Range
+
Transport/Record
Enable Record
+
Transport/RewindFast
Rewind (Fast)
+
Transport/Rewind
Rewind
+
Transport/RewindSlow
Rewind (Slow)
+
Transport/Roll
Roll
+
Transport/Stop
Stop
+
Transport/ToggleAutoInput
Auto Input
+
Transport/ToggleAutoPlay
Auto Play
+
Transport/ToggleAutoReturn
Auto Return
+
Transport/ToggleClick
Click
+
Transport/ToggleExternalSync
+
Transport/ToggleFollowEdits
Follow Edits
+
Transport/TogglePunchIn
Punch In
+
Transport/TogglePunch
Punch In/Out
+
Transport/TogglePunchOut
Punch Out
+
Transport/ToggleRollForgetCapture
Stop and Forget Capture
+
Transport/ToggleRoll
Start/Stop
+
Transport/ToggleRollMaybe
Start/Continue/Stop
+
Transport/ToggleTimeMaster
Time Master
+
Transport/ToggleVideoSync
Sync Startup to Video
+
Transport/TransitionToReverse
Transition To Reverse
+
Transport/TransitionToRoll
Transition To Roll
+
Transport/Transport
Transport
+
Transport/alternate-GotoStart
+
Transport/alternate-ToggleRoll
+
Transport/alternate-numpad-decimal
+
Transport/alternate-record-roll
+
Transport/focus-on-clock
Focus On Clock
+
Transport/numpad-0
+
Transport/numpad-1
+
Transport/numpad-2
+
Transport/numpad-3
+
Transport/numpad-4
+
Transport/numpad-5
+
Transport/numpad-6
+
Transport/numpad-7
+
Transport/numpad-8
+
Transport/numpad-9
+
Transport/numpad-decimal
+
Transport/primary-clock-bbt
Bars & Beats
+
Transport/primary-clock-minsec
Minutes & Seconds
+
Transport/primary-clock-samples
Samples
+
Transport/primary-clock-timecode
Timecode
+
Transport/record-roll
Start Recording
+
Transport/secondary-clock-bbt
Bars & Beats
+
Transport/secondary-clock-minsec
Minutes & Seconds
+
Transport/secondary-clock-samples
Samples
+
Transport/secondary-clock-timecode
Timecode
+ +
Window/toggle-about
About
+
Window/toggle-add-routes
Add Tracks/Busses
+
Window/toggle-add-video
Add Tracks/Busses
+
Window/toggle-audio-connection-manager
Audio Connections
+
Window/toggle-audio-midi-setup
Audio/MIDI Setup
+
Window/toggle-big-clock
Big Clock
+
Window/toggle-bundle-manager
Bundle Manager
+
Window/toggle-inspector
Tracks and Busses
+
Window/toggle-key-editor
Key Bindings
+
Window/toggle-locations
Locations
+
Window/toggle-midi-connection-manager
MIDI Connections
+
Window/toggle-script-manager
+
Window/toggle-session-options-editor
Properties
+
Window/toggle-speaker-config
Speaker Configuration
+
Window/toggle-video-export
+ +
Editor/SnapMode
Snap Mode
+
Editor/SnapTo
Snap to
+
Editor/ToggleGroupTabs
Show Group Tabs
+
Editor/ToggleJadeo
Video Monitor
+
Editor/ToggleMeasureVisibility
Show Measures
+
Editor/ToggleSummary
Show Summary
+
Editor/add-location-from-playhead
Add Mark from Playhead
+
Editor/addExistingAudioFiles
Import
+
Editor/addExistingPTFiles
+
Editor/addExternalAudioToRegionList
Import to Region List...
+
Editor/alt-finish-range
+
Editor/alt-start-range
+
Editor/alternate-add-location-from-playhead
+
Editor/alternate-alternate-redo
+
Editor/alternate-editor-delete
+
Editor/alternate-jump-backward-to-mark
+
Editor/alternate-jump-forward-to-mark
+
Editor/alternate-redo
+
Editor/alternate-remove-location-from-playhead
+
Editor/alternate-select-all-after-edit-cursor
+
Editor/alternate-select-all-before-edit-cursor
+
Editor/alternate-tab-to-transient-backwards
+
Editor/alternate-tab-to-transient-forwards
+
Editor/bring-into-session
+
Editor/center-edit-cursor
Center Edit Point
+
Editor/center-playhead
Center Playhead
+
Editor/crop
Crop
+
Editor/cycle-edit-point
Change Edit Point
+
Editor/cycle-edit-point-with-marker
Change Edit Point Including Marker
+
Editor/cycle-snap-mode
Next Snap Mode
+
Editor/cycle-zoom-focus
Next Zoom Focus
+
Editor/deselect-all
Deselect All
+
Editor/duplicate-range
Duplicate Range
+
Editor/edit-at-mouse
Mouse
+
Editor/edit-at-playhead
Playhead
+
Editor/edit-at-selected-marker
Marker
+
Editor/edit-cursor-to-next-region-end
To Next Region End
+
Editor/edit-cursor-to-next-region-start
To Next Region Start
+
Editor/edit-cursor-to-next-region-sync
To Next Region Sync
+
Editor/edit-cursor-to-previous-region-end
To Previous Region End
+
Editor/edit-cursor-to-previous-region-start
To Previous Region Start
+
Editor/edit-cursor-to-previous-region-sync
To Previous Region Sync
+
Editor/edit-cursor-to-range-end
To Range End
+
Editor/edit-cursor-to-range-start
To Range Start
+
Editor/edit-to-playhead
Active Mark to Playhead
+
Editor/editor-copy
Copy
+
Editor/editor-crop
Crop
+
Editor/editor-cut
Cut
+
Editor/editor-delete
Delete
+
Editor/editor-fade-range
+
Editor/editor-paste
Paste
+
Editor/editor-separate
Separate
+
Editor/expand-tracks
Expand Track Height
+
Editor/export-audio
Export Audio
+
Editor/export-range
Export Range
+
Editor/finish-loop-range
+
Editor/finish-punch-range
+
Editor/finish-range
Finish Range
+
Editor/fit-selection
Fit Selected Tracks
+
Editor/fit_16_tracks
+
Editor/fit_1_track
+
Editor/fit_2_tracks
+
Editor/fit_32_tracks
+
Editor/fit_4_tracks
+
Editor/fit_8_tracks
+
Editor/fit_all_tracks
+
Editor/goto-mark-1
Locate to Mark 1
+
Editor/goto-mark-2
Locate to Mark 2
+
Editor/goto-mark-3
Locate to Mark 3
+
Editor/goto-mark-4
Locate to Mark 4
+
Editor/goto-mark-5
Locate to Mark 5
+
Editor/goto-mark-6
Locate to Mark 6
+
Editor/goto-mark-7
Locate to Mark 7
+
Editor/goto-mark-8
Locate to Mark 8
+
Editor/goto-mark-9
Locate to Mark 9
+
Editor/goto-visual-state-10
Goto View 10
+
Editor/goto-visual-state-11
Goto View 11
+
Editor/goto-visual-state-12
Goto View 12
+
Editor/goto-visual-state-1
Goto View 1
+
Editor/goto-visual-state-2
Goto View 2
+
Editor/goto-visual-state-3
Goto View 3
+
Editor/goto-visual-state-4
Goto View 4
+
Editor/goto-visual-state-5
Goto View 5
+
Editor/goto-visual-state-6
Goto View 6
+
Editor/goto-visual-state-7
Goto View 7
+
Editor/goto-visual-state-8
Goto View 8
+
Editor/goto-visual-state-9
Goto View 9
+
Editor/importFromSession
Import From Session
+
Editor/insert-time
Insert Time
+
Editor/invert-selection
Invert Selection
+
Editor/jump-backward-to-mark
Jump to Previous Mark
+
Editor/jump-forward-to-mark
Jump to Next Mark
+
Editor/lock
+
Editor/main-menu-play-selected-regions
Play Selected Regions
+
Editor/move-range-end-to-next-region-boundary
Move Range End to Next Region Boundary
+
Editor/move-range-end-to-previous-region-boundary
Move Range End to Previous Region Boundary
+
Editor/move-range-start-to-next-region-boundary
Move Range Start to Next Region Boundary
+
Editor/move-range-start-to-previous-region-boundary
Move Range Start to Previous Region Boundary
+
Editor/move-selected-tracks-down
Move Selected Tracks Down
+
Editor/move-selected-tracks-up
Move Selected Tracks Up
+
Editor/next-snap-choice
Next Snap Choice
+
Editor/next-snap-choice-music-only
Next Musical Snap Choice
+
Editor/nudge-next-backward
Nudge Next Earlier
+
Editor/nudge-next-forward
Nudge Next Later
+
Editor/nudge-playhead-backward
Nudge Playhead Backward
+
Editor/nudge-playhead-forward
Nudge Playhead Forward
+
Editor/play-edit-range
Play Edit Range
+
Editor/play-from-edit-point-and-return
Play from Edit Point and Return
+
Editor/play-from-edit-point
Play From Edit Point
+
Editor/playhead-backward-to-grid
Playhead To Previous Grid
+
Editor/playhead-forward-to-grid
Playhead To Next Grid
+
Editor/playhead-to-edit
Playhead to Active Mark
+
Editor/playhead-to-next-region-boundary
Playhead to Next Region Boundary
+
Editor/playhead-to-next-region-boundary-noselection
Playhead to Next Region Boundary (No Track Selection)
+
Editor/playhead-to-next-region-end
Playhead to Next Region End
+
Editor/playhead-to-next-region-start
Playhead to Next Region Start
+
Editor/playhead-to-next-region-sync
Playhead to Next Region Sync
+
Editor/playhead-to-previous-region-boundary
Playhead to Previous Region Boundary
+
Editor/playhead-to-previous-region-boundary-noselection
Playhead to Previous Region Boundary (No Track Selection)
+
Editor/playhead-to-previous-region-end
Playhead to Previous Region End
+
Editor/playhead-to-previous-region-start
Playhead to Previous Region Start
+
Editor/playhead-to-previous-region-sync
Playhead to Previous Region Sync
+
Editor/playhead-to-range-end
Playhead to Range End
+
Editor/playhead-to-range-start
Playhead to Range Start
+
Editor/prev-snap-choice
Previous Snap Choice
+
Editor/prev-snap-choice-music-only
Previous Musical Snap Choice
+
Editor/redo
Redo
+
Editor/redo-last-selection-op
+
Editor/remove-last-capture
Remove Last Capture
+
Editor/remove-location-from-playhead
+
Editor/remove-time
+
Editor/remove-track
Remove
+
Editor/save-visual-state-10
Save View 10
+
Editor/save-visual-state-11
Save View 11
+
Editor/save-visual-state-12
Save View 12
+
Editor/save-visual-state-1
Save View 1
+
Editor/save-visual-state-2
Save View 2
+
Editor/save-visual-state-3
Save View 3
+
Editor/save-visual-state-4
Save View 4
+
Editor/save-visual-state-5
Save View 5
+
Editor/save-visual-state-6
Save View 6
+
Editor/save-visual-state-7
Save View 7
+
Editor/save-visual-state-8
Save View 8
+
Editor/save-visual-state-9
Save View 9
+
Editor/script-action-1
+
Editor/script-action-2
+
Editor/script-action-3
+
Editor/script-action-4
+
Editor/script-action-5
+
Editor/script-action-6
+
Editor/script-action-7
+
Editor/script-action-8
+
Editor/script-action-9
+
Editor/scroll-backward
Scroll Backward
+
Editor/scroll-forward
Scroll Forward
+
Editor/scroll-playhead-backward
Playhead Backward
+
Editor/scroll-playhead-forward
Playhead Forward
+
Editor/scroll-tracks-down
Scroll Tracks Down
+
Editor/scroll-tracks-up
Scroll Tracks Up
+
Editor/select-all-after-edit-cursor
Select All After Edit Point
+
Editor/select-all-before-edit-cursor
Select All Before Edit Point
+
Editor/select-all-between-cursors
Select All Overlapping Edit Range
+
Editor/select-all-in-loop-range
Select All in Loop Range
+
Editor/select-all-in-punch-range
Select All in Punch Range
+
Editor/select-all-objects => Ctrl+A
+
Editor/select-all-tracks => Ctrl+T
+
Editor/select-all-within-cursors
Select All Inside Edit Range
+
Editor/select-from-regions
+
Editor/select-loop-range
+
Editor/select-next-route
Select Next Track or Bus
+
Editor/select-prev-route
Select Previous Track or Bus
+
Editor/select-punch-range
+
Editor/select-range-between-cursors
+
Editor/selected-marker-to-next-region-boundary
To Next Region Boundary
+
Editor/selected-marker-to-next-region-boundary-noselection
To Next Region Boundary (No Track Selection)
+
Editor/selected-marker-to-previous-region-boundary
To Previous Region Boundary
+
Editor/selected-marker-to-previous-region-boundary-noselection
To Previous Region Boundary (No Track Selection)
+
Editor/select-range-between-cursors
Select Edit Range
+
Editor/separate-from-loop
Separate Using Loop Range
+
Editor/separate-from-punch
Separate Using Punch Range
+
Editor/set-edit-lock
Lock
+
Editor/set-edit-point
Active Marker to Mouse
+
Editor/set-edit-ripple
+
Editor/set-edit-slide
Slide
+
Editor/set-loop-from-edit-range
Set Loop from Edit Range
+
Editor/set-playhead
Playhead to Mouse
+
Editor/set-punch-from-edit-range
Set Punch from Edit Range
+
Editor/set-session-end-from-playhead
+
Editor/set-session-from-edit-range
+
Editor/set-session-start-from-playhead
+
Editor/set-tempo-from-edit-range
Set Tempo from Edit Range = Bar
+
Editor/show-editor-list
Show Editor List
+
Editor/show-editor-mixer
Show Editor Mixer
+
Editor/show-marker-lines
Show Marker Lines
+
Editor/shrink-tracks
Shrink Track Height
+
Editor/snap-magnetic
Magnetic
+
Editor/snap-normal
Grid
+
Editor/snap-off
No Grid
+
Editor/sound-midi-notes
Sound Selected MIDI Notes
+
Editor/start-loop-range
+
Editor/start-punch-range
+
Editor/start-range
Start Range
+
Editor/start-range-from-playhead
+
Editor/step-mouse-mode
Step Mouse Mode
+
Editor/step-tracks-down
Step Tracks Down
+
Editor/step-tracks-up
Step Tracks Up
+
Editor/tab-to-transient-backwards
Move Earlier to Transient
+
Editor/tab-to-transient-forwards
Move Later to Transient
+
Editor/temporal-zoom-in
Zoom In
+
Editor/temporal-zoom-out
Zoom Out
+
Editor/toggle-edit-mode
Toggle Edit Mode
+
Editor/toggle-follow-playhead
Follow Playhead
+
Editor/toggle-log-window
Log
+
Editor/toggle-midi-input-active
Toggle MIDI Input Active for Editor-Selected Tracks/Busses
+
Editor/toggle-skip-playback
+
Editor/toggle-stationary-playhead
Stationary Playhead
+
Editor/toggle-track-active
Toggle Active
+
Editor/toggle-vmon-frame
Frame number
+
Editor/toggle-vmon-fullscreen
Fullscreen
+
Editor/toggle-vmon-letterbox
Letterbox
+
Editor/toggle-vmon-ontop
Always on Top
+
Editor/toggle-vmon-osdbg
Timecode Background
+
Editor/toggle-vmon-timecode
Timecode
+
Editor/toggle-zoom
Toggle Zoom State
+
Editor/track-height-large
Large
+
Editor/track-height-larger
Larger
+
Editor/track-height-largest
Largest
+
Editor/track-height-normal
Normal
+
Editor/track-height-small
Small
+
Editor/track-mute-toggle
Toggle Mute
+
Editor/track-record-enable-toggle
Toggle Record Enable
+
Editor/track-solo-isolate-toggle
Toggle Solo Isolate
+
Editor/track-solo-toggle
Toggle Solo
+
Editor/undo
Undo
+
Editor/undo-last-selection-op
+
Editor/zoom-to-selection
+
Editor/zoom-to-session
Zoom to Session
+
Editor/zoom-vmon-100
Original Size
+
Editor/zoom_100_ms
+
Editor/zoom_10_min
+
Editor/zoom_10_ms
+
Editor/zoom_10_sec
+
Editor/zoom_1_min
+
Editor/zoom_1_sec
+
Editor/zoom_5_min
+ +
EditorMenu/ActionScripts
+
EditorMenu/AlignMenu
Align
+
EditorMenu/Autoconnect
Autoconnect
+
EditorMenu/Crossfades
Crossfades
+
EditorMenu/EditCursorMovementOptions
Move Selected Marker
+
EditorMenu/Edit
Edit
+
EditorMenu/EditPointMenu
Edit Point
+
EditorMenu/EditSelectRangeOptions
Select Range Operations
+
EditorMenu/EditSelectRegionOptions
Select Regions
+
EditorMenu/FadeMenu
Fade
+
EditorMenu/LatchMenu
Latch
+
EditorMenu/Link
Link
+
EditorMenu/LocateToMarker
Locate to Markers
+
EditorMenu/MIDI
MIDI Options
+
EditorMenu/MarkerMenu
Markers
+
EditorMenu/MeterFalloff
Meter falloff
+
EditorMenu/MeterHold
Meter hold
+
EditorMenu/MiscOptions
Misc Options
+
EditorMenu/Monitoring
Monitoring
+
EditorMenu/MoveActiveMarkMenu
Active Mark
+
EditorMenu/MovePlayHeadMenu
Playhead
+
EditorMenu/PlayMenu
Play
+
EditorMenu/PrimaryClockMenu
Primary Clock
+
EditorMenu/Pullup
Pullup / Pulldown
+
EditorMenu/RegionEditOps
Region operations
+
EditorMenu/RegionGainMenu
Gain
+
EditorMenu/RegionMenuDuplicate
Duplicate
+
EditorMenu/RegionMenuEdit
Edit
+
EditorMenu/RegionMenuFades
Fades
+
EditorMenu/RegionMenuGain
Gain
+
EditorMenu/RegionMenu
Region
+
EditorMenu/RegionMenuLayering
Layering
+
EditorMenu/RegionMenuMIDI
MIDI
+
EditorMenu/RegionMenuPosition
Position
+
EditorMenu/RegionMenuRanges
Ranges
+
EditorMenu/RegionMenuTrim
Trim
+
EditorMenu/RulerMenu
Rulers
+
EditorMenu/SavedViewMenu
Views
+
EditorMenu/ScrollMenu
Scroll
+
EditorMenu/SecondaryClockMenu
Secondary Clock
+
EditorMenu/Select
Select
+
EditorMenu/SelectMenu
Select
+
EditorMenu/SeparateMenu
Separate
+
EditorMenu/SetLoopMenu
Loop
+
EditorMenu/SetPunchMenu
Punch
+
EditorMenu/Solo
Solo
+
EditorMenu/Subframes
Subframes
+
EditorMenu/SyncMenu
Sync
+
EditorMenu/TempoMenu
Tempo
+
EditorMenu/Timecode
Timecode fps
+
EditorMenu/Tools
Tools
+
EditorMenu/TrackHeightMenu
Height
+
EditorMenu/TrackMenu
Track
+
EditorMenu/VideoMonitorMenu
Video Monitor
+
EditorMenu/View
View
+
EditorMenu/ZoomFocus
Zoom Focus
+
EditorMenu/ZoomFocusMenu
Zoom Focus
+
EditorMenu/ZoomMenu
Zoom
+ +
MouseMode/set-mouse-mode-audition
Audition Tool
+
MouseMode/set-mouse-mode-content
+
MouseMode/set-mouse-mode-cut
+
MouseMode/set-mouse-mode-draw
Note Drawing Tool
+
MouseMode/set-mouse-mode-object
Object Tool
+
MouseMode/set-mouse-mode-object-range
Smart Object Mode
+
MouseMode/set-mouse-mode-range
Range Tool
+
MouseMode/set-mouse-mode-timefx
Time FX Tool
+ +
Region/add-range-marker-from-region
Add Single Range Marker
+
Region/add-range-markers-from-region
Add Range Marker Per Region
+
Region/align-regions-end
Align End
+
Region/align-regions-end-relative
Align End Relative
+
Region/align-regions-start
Align Start
+
Region/align-regions-start-relative
Align Start Relative
+
Region/align-regions-sync
Align Sync
+
Region/align-regions-sync-relative
Align Sync Relative
+
/Region/alternate-nudge-backward
+
/Region/alternate-nudge-forward
+
/Region/alternate-set-fade-in-length
+
/Region/alternate-set-fade-out-length
+
Region/boost-region-gain
Boost Gain
+
Region/bounce-regions-processed
Bounce (without processing)
+
Region/bounce-regions-unprocessed
Bounce (with processing)
+
Region/choose-top-region-context-menu
Choose Top...
+
Region/choose-top-region
Choose Top...
+
Region/close-region-gaps
Close Gaps
+
Region/combine-regions
Combine
+
Region/cut-region-gain
Cut Gain
+
Region/duplicate-region
Duplicate
+
Region/export-region
Export...
+
Region/fork-region
Unlink from other copies
+
Region/insert-patch-change-context
Insert Patch Change...
+
Region/insert-patch-change
Insert Patch Change...
+
Region/insert-region-from-region-list
Insert Region From Region List
+
/Region/legatize-region
+
Region/loop-region
Loop
+
Region/loudness-analyze-region
+
Region/lower-region
Lower
+
Region/lower-region-to-bottom
Lower to Bottom
+
Region/multi-duplicate-region
Multi-Duplicate...
+
Region/naturalize-region
Move to Original Position
+
Region/normalize-region
Normalize...
+
Region/nudge-backward-by-capture-offset
Nudge Earlier by Capture Offset
+
Region/nudge-backward
Nudge Earlier
+
Region/nudge-forward-by-capture-offset
Nudge Later by Capture Offset
+
Region/nudge-forward
Nudge Later
+
Region/pitch-shift-region
Pitch Shift...
+
Region/place-transient
Place Transient
+
Region/play-selected-regions
Play
+
Region/quantize-region
Quantize...
+
Region/raise-region
Raise
+
Region/raise-region-to-top
Raise to Top
+
Region/region-fill-track
Fill Track
+
Region/remove-region
Remove
+
Region/remove-region-sync
Remove Sync
+
Region/rename-region
Rename...
+
Region/reset-region-gain-envelopes
Reset Envelope
+
Region/reset-region-scale-amplitude
Reset Gain
+
Region/reverse-region
Reverse
+
Region/separate-under-region
Separate Under
+
Region/sequence-regions
+
Region/set-fade-in-length
Set Fade In Length
+
Region/set-fade-out-length
Set Fade Out Length
+
Region/set-loop-from-region
Set Loop Range
+
Region/set-punch-from-region
Set Punch
+
Region/set-region-sync-position
Set Sync Position
+
Region/set-selection-from-region
Set Range Selection
+
Region/set-tempo-from-region
Set Tempo from Region = Bar
+
Region/show-region-list-editor
List Editor...
+
Region/show-region-properties
Properties...
+
Region/show-rhythm-ferret
Rhythm Ferret...
+
Region/snap-regions-to-grid
Snap Position To Grid
+
Region/split-multichannel-region
Make Mono Regions
+
Region/split-region-at-transients
Split at Percussion Onsets
+
Region/split-region
Split
+
Region/strip-region-silence
Strip Silence...
+
Region/toggle-opaque-region
Opaque
+
Region/toggle-region-fade-in
Fade In
+
Region/toggle-region-fade-out
Fade Out
+
Region/toggle-region-fades
Fades
+
Region/toggle-region-gain-envelope-active
Envelope Active
+
Region/toggle-region-lock
Lock
+
Region/toggle-region-lock-style
Glue to Bars and Beats
+
Region/toggle-region-mute
Mute
+
Region/toggle-region-video-lock
Lock to Video
+
Region/transform-region
+
Region/transpose-region
Transpose...
+
Region/trim-back
Trim End at Edit Point
+
Region/trim-front
Trim Start at Edit Point
+
Region/trim-region-to-loop
Trim to Loop
+
Region/trim-region-to-punch
Trim to Punch
+
Region/trim-to-next-region
Trim to Next
+
Region/trim-to-previous-region
Trim to Previous
+
Region/uncombine-regions
Uncombine
+ +
RegionList/RegionListSort
Sort
+
RegionList/SortAscending
Ascending
+
RegionList/SortByRegionEndinFile
By Region End in File
+
RegionList/SortByRegionLength
By Region Length
+
RegionList/SortByRegionName
By Region Name
+
RegionList/SortByRegionPosition
By Region Position
+
RegionList/SortByRegionStartinFile
By Region Start in File
+
RegionList/SortByRegionTimestamp
By Region Timestamp
+
RegionList/SortBySourceFileCreationDate
By Source File Creation Date
+
RegionList/SortBySourceFileLength
By Source File Length
+
RegionList/SortBySourceFileName
By Source File Name
+
RegionList/SortBySourceFilesystem
By Source Filesystem
+
RegionList/SortDescending
Descending
+
RegionList/removeUnusedRegions
Remove Unused
+
RegionList/rlAudition
Audition
+
RegionList/rlHide
Hide
+
RegionList/rlShow
Show
+
RegionList/rlShowAll
Show All
+
RegionList/rlShowAuto
Show Automatic Regions
+ +
Rulers/toggle-bbt-ruler
Bars & Beats
+
Rulers/toggle-cd-marker-ruler
CD Markers
+
Rulers/toggle-loop-punch-ruler
Loop/Punch
+
Rulers/toggle-marker-ruler
Markers
+
Rulers/toggle-meter-ruler
Meter
+
Rulers/toggle-minsec-ruler
Min:Sec
+
Rulers/toggle-range-ruler
Ranges
+
Rulers/toggle-samples-ruler
Samples
+
Rulers/toggle-tempo-ruler
Tempo
+
Rulers/toggle-timecode-ruler
Timecode
+
Rulers/toggle-video-ruler
Video
+ + +
Snap/snap-to-asixteenthbeat
Snap to Sixteenths
+
Snap/snap-to-bar
Snap to Bar
+
Snap/snap-to-beat
Snap to Beat
+
Snap/snap-to-cd-frame
Snap to CD Frame
+
Snap/snap-to-eighths
Snap to Eighths
+
Snap/snap-to-fifths
Snap to Fifths
+
Snap/snap-to-fourteenths
Snap to Fourteenths
+
Snap/snap-to-halves
Snap to Halves
+
Snap/snap-to-mark
Snap to Mark
+
Snap/snap-to-minutes
Snap to Minutes
+
Snap/snap-to-onetwentyeighths
Snap to One Twenty Eighths
+
Snap/snap-to-quarters
Snap to Quarters
+
Snap/snap-to-region-boundary
Snap to Region Boundary
+
Snap/snap-to-region-end
Snap to Region End
+
Snap/snap-to-region-start
Snap to Region Start
+
Snap/snap-to-region-sync
Snap to Region Sync
+
Snap/snap-to-seconds
Snap to Seconds
+
Snap/snap-to-sevenths
Snap to Sevenths
+
Snap/snap-to-sixths
Snap to Sixths
+
Snap/snap-to-sixtyfourths
Snap to Sixty Fourths
+
Snap/snap-to-tenths
Snap to Tenths
+
Snap/snap-to-thirds
Snap to Thirds
+
Snap/snap-to-thirtyseconds
Snap to Thirty Seconds
+
Snap/snap-to-timecode-frame
Snap to Timecode Frame
+
Snap/snap-to-timecode-minutes
Snap to Timecode Minutes
+
Snap/snap-to-timecode-seconds
Snap to Timecode Seconds
+
Snap/snap-to-twelfths
Snap to Twelfths
+
Snap/snap-to-twentieths
Snap to Twentieths
+
Snap/snap-to-twentyeighths
Snap to Twenty Eighths
+
Snap/snap-to-twentyfourths
Snap to Twenty Fourths
+ +
Zoom/zoom-focus-center
Zoom Focus Center
+
Zoom/zoom-focus-edit
Zoom Focus Edit Point
+
Zoom/zoom-focus-left
Zoom Focus Left
+
Zoom/zoom-focus-mouse
Zoom Focus Mouse
+
Zoom/zoom-focus-playhead
Zoom Focus Playhead
+
Zoom/zoom-focus-right
Zoom Focus Right
+ +
/Mixer/ab-plugins
+
/Mixer/copy-processors
+
/Mixer/cut-processors
+
/Mixer/decrement-gain
+
/Mixer/delete-processors
+
/Mixer/increment-gain
+
/Mixer/mute
+
/Mixer/paste-processors
+
/Mixer/recenable
+
/Mixer/scroll-left
+
/Mixer/scroll-right
+
/Mixer/select-all-processors
+
/Mixer/select-none
+
/Mixer/solo
+
/Mixer/toggle-midi-input-active
+
/Mixer/toggle-processors
+
/Mixer/unity-gain
+
+ +{% children %} diff --git a/include/midi-binding-maps.html b/include/midi-binding-maps.html new file mode 100644 index 0000000..9210456 --- /dev/null +++ b/include/midi-binding-maps.html @@ -0,0 +1,390 @@ +--- +layout: default +title: MIDI Binding Maps +--- + +

+ Ardour 2.X supported + MIDI learning + for more or less any control. This was a nice feature that quite a few other + DAWs are providing by now, but it didn't allow Ardour to work "out of the + box" with sensible defaults for existing commercial MIDI + controllers. In Ardour 3 and later versions, we have augmented the + MIDI learn feature with the ability to load a MIDI binding map + for a given controller, which can set up an arbitrary number of physical + controls with anything inside Ardour that can be controlled. +

+

+ Currently (August 2016), we have presets for the following devices/modes: +

+ + At this time, new binding maps need to be created with a text editor. +

+ MIDI binding maps are accessible by double-clicking Edit + > Preferences > Control Surfaces > Generic MIDI. Ardour will + retain your selection after you choose one. +

+ +

Creating new MIDI maps

+

The Basic Concept

+

+ Since the beginning of time (well, sometime early in the 2.X series), + Ardour has had the concept of identifying each track and bus with a + remote control ID. This ID uniquely identifies a track or bus + so that when messages arrive from elsewhere via MIDI or OSC , we can determine + which track or bus they are intended to control. Ardour has a + number + of ways of assigning remote control IDs, but they don't really matter + very much when creating MIDI binding maps, so we won't discuss that here. + You just need to know that there is a "first track" and its remote control + ID is 1, and so on. +

+

Getting Started

+

+ MIDI bindings are stored in files with the suffix ".map" attached to their + name. The minimal content looks like this: +

+
+<?xml version="1.0" encoding="UTF-8"?>
+<ArdourMIDIBindings version="1.0.0" name="The name of this set of
+bindings">
+</ArdourMIDIBindings>
+
+

+ So, to start, create a file with that as the initial contents. +

+

+ On OS X, Ardour loads midi maps from its binary-bundle folder in + Ardour-<version>/midi_maps/ and checks + various other locations as well (defined by the ARDOUR_MIDIMAPS_PATH + environment variable). On GNU/Linux the easiest is to save the file to + ~/.config/ardour3/midi_maps/. +

+ +

Finding out what your MIDI control surface sends

+

+ This is the most complex part of the job, but its still not very hard. + You need to connect the control surface to an application that will show + you the information that the device sends each time you modify a knob, + slider, button etc. There are a variety of such applications (notably + gmidimon and kmidimon, but you can actually use + Ardour for this if you want. Start Ardour in a terminal window, connect + MIDI ports up, and in the Preferences window, enable "Trace Input" on the + relevant MIDI port. A full trace of the MIDI data received will show up in + the terminal window. (Note: in Ardour3, you get a dedicated, custom dialog + for this kind of tracing.) +

+

Types of Bindings

+

+ There are two basic kinds of bindings you can make between a MIDI message + and something inside Ardour. The first is a binding to a specific parameter + of a track or bus. The second is a binding to a function that will change + Ardour's state in some way. +

+

Binding to Track/Bus controls

+

+ A track/bus binding has one of two basic structures +

+ + <Binding msg specification uri="... control address ..."/> + <Binding msg specification function="... function name ..."/> + + +

Message specifications

+

+ You can create a binding for either 3 types of channel messages, or for a + system exclusive ("sysex") message. A channel message specification looks + like this: +

+ + <Binding channel="1" ctl="13" .... + +

+ This defines a binding for a MIDI Continuous Controller message involving + controller 13, arriving on channel 1. There are 16 MIDI channels, numbered + 1 to 16. Where the example above says ctl, you can alternatively + use note (to create binding for a Note On message) or + pgm (to create a binding for a Program Change message). +

+

+ As of Ardour 4.2, enc-r, enc-l, enc-2 and + enc-b may be used for surfaces that have encoders that send + offsets rather than values. These accept Continuous Controller messages + but treat them as offsets. These are good for banked controls as they are + always at the right spot to start adjusting. ( + + Learn more about working with encoders + ) +

+

+ You can also bind sysex messages: +

+ + <Binding sysex="f0 0 0 e 9 0 5b f7" .... + <Binding sysex="f0 7f 0 6 7 f7" .... + +

+ The string after the sysex= part is the sequence of MIDI bytes, + as hexadecimal values, that make up the sysex message. +

+

+ Finally, you can bind a totally arbitrary MIDI message:

+ + <Binding msg="f0 0 0 e 9 0 5b f7" .... + <Binding msg="80 60 40" .... + +

+ The string after the msg= part is the sequence of MIDI bytes, as + hexadecimal values, that make up the message you want to bind. Using this is + slightly less efficient than the other variants shown above, but is useful for + some oddly designed control devices. +

+ +

+ As of Ardour 4.6 it is possible to use multi-event MIDI strings such as + two event CC messages, RPN or NRPN. +

+ +

+ The sysex= and msg= bindings will only work with + function= or action= control addresses. They + will not work with the uri= control addresses. + Controls used with uri= require a Value which is + only available in a known place with channel mode MIDI events. +

+ +

Control address

+

+ A control address defines what the binding will actually control. + There are quite a few different things that can be specified here: +

+
+
/route/gain
+
the gain control ("fader") for the track/bus
+
/route/trim
+
the trim control for the track/bus (new in 4.1)
+
/route/solo
+
a toggleable control for solo (and listen) of the track/bus
+
/route/mute
+
a toggleable control to mute/unmute the track/bus
+
/route/recenable
+
a toggleable control to record-enable the track
+
/route/panwidth
+
interpreted by the track/bus panner, should control image "width"
+
/route/pandirection
+
interpreted by the track/bus panner, should control image "direction"
+
/route/plugin/parameter
+
the Mth parameter of the Nth plugin of a track/bus +
+
/route/send/gain
+
the gain control ("fader") of the Nth send of a track/bus
+
+

Each of the specifications needs an address, which takes various forms too. For track-level controls (solo/gain/mute/recenable), the address is one the following:

+
+
a number, eg. "1" +
+
identifies a track or bus by its remote control ID +
+
B, followed by a number +
+
identifies a track or bus by its remote control ID within the current bank (see below for more on banks) +
+
one or more words +
+
identifies a track or bus by its name +
+
+

+ For send/insert/plugin controls, the address consists of a track/bus + address (as just described) followed by a number identifying the plugin/send + (starting from 1). For plugin parameters, there is an additional third + component: a number identifying the plugin parameter number (starting from + 1). +

+

+ One additional feature: for solo and mute bindings, you can also add + momentary="yes" after the control address. This is useful + primarily for NoteOn bindings — when Ardour gets the NoteOn it + will solo or mute the targetted track or bus, but then when a NoteOff + arrives, it will un-solo or un-mute it. +

+ +

Bindings to Ardour "functions"

+

+ Rather than binding to a specific track/bus control, it may be useful to + have a MIDI controller able to alter some part of Ardour's state. A + binding definition that does this looks like this: +

+ + <Binding channel="1" note="13" function="transport-roll"/> + +

+ In this case, a NoteOn message for note number 13 (on channel 1) will + start the transport rolling. The following function names are available: +

+
+
+transport-stop +
+
stop the transport +
+
+transport-roll +
+
start the transport "rolling" +
+
+transport-zero +
+
move the playhead to the zero position +
+
+transport-start +
+
move the playhead to the start marker +
+
+transport-end +
+
move the playhead to the end marker +
+
+loop-toggle +
+
turn on loop playback +
+
+rec-enable +
+
enable the global record button +
+
+rec-disable +
+
disable the global record button +
+
+next-bank +
+
Move track/bus mapping to the next bank (see Banks below) +
+
+prev-bank +
+
Move track/bus mapping to the previous bank (see Banks below) +
+
+ +

Binding to Ardour "actions"

+

+ You can also bind a sysex or arbitrary message to any of the items + that occur in Ardour's main menu (and its submenus). The best place + to look for the (long) list of how to address each item is in your + keybindings file, which will contain lines that look like this: +

+ +(gtk_accel_path "<Actions>/Editor/temporal-zoom-in" "equal") + +

+ To create a binding between an arbitrary MIDI message (we'll use a + note-off on channel 1 of MIDI note 60 (hex) with release velocity + 40 (hex)), the binding file would contain: +

+ + <Binding msg="80 60 40" action="Editor/temporal-zoom-in"/> + +

+ The general rule, when taken an item from the keybindings file and + using it in a MIDI binding is to simply strip the + <Action> prefix of the second field in the + keybinding definition. +

+ +

Banks and Banking

+

+ Because many modern control surfaces offer per-track/bus controls + for far fewer tracks & busses than many users want to control, + Ardour offers the relatively common place concept of banks. Banks + allow you to control any number of tracks and/or busses easily, + regardless of how many faders/knobs etc. your control surface has.
+ To use banking, the control addresses must be specified using the + bank relative format mentioned above ("B1" to identify + the first track of a bank of tracks, rather than "1" to identify + the first track). +

+

+ One very important extra piece of information is required to use + banking: an extra line near the start of the list of bindings + that specifies how many tracks/busses to use per bank. If the + device has 8 faders, then 8 would be a sensible value to use for + this. The line looks like this:

+ + <DeviceInfo bank-size="8"/> + +

+ In addition, you probably want to ensure that you bind something + on the control surface to the next-bank and + prev-bank functions, otherwise you and other users + will have to use the mouse and the GUI to change banks, which + rather defeats the purpose of the bindings. +

+

A Complete (though muddled) Example

+
+<?xml version="1.0" encoding="UTF-8"?>
+<ArdourMIDIBindings version="1.0.0" name="pc1600x transport controls">
+  <DeviceInfo bank-size="16"/>
+  <Binding channel="1" ctl="1"   uri="/route/gain B1"/>
+  <Binding channel="1" ctl="2"   uri="/route/gain B2"/>
+  <Binding channel="1" ctl="3"   uri="/route/send/gain B1 1"/>
+  <Binding channel="1" ctl="4"   uri="/route/plugin/parameter B1 1 1"/>
+  <Binding channel="1" ctl="6"   uri="/bus/gain master"/>
+
+  <Binding channel="1" note="1"  uri="/route/solo B1"/>
+  <Binding channel="1" note="2"  uri="/route/solo B2" momentary="yes"/>
+
+  <Binding channel="1" note="15"  uri="/route/mute B1" momentary="yes"/>
+  <Binding channel="1" note="16"  uri="/route/mute B2" momentary="yes"/>
+
+  <Binding sysex="f0 0 0 e 9 0 5b f7" function="transport-start"/>
+  <Binding sysex="f0 7f 0 6 7 f7" function="rec-disable"/>
+  <Binding sysex="f0 7f 0 6 6 f7" function="rec-enable"/>
+  <Binding sysex="f0 0 0 e 9 0 53 0 0 f7" function="loop-toggle"/>
+
+  <Binding channel="1" note="13" function="transport-roll"/>
+  <Binding channel="1" note="14" function="transport-stop"/>
+  <Binding channel="1" note="12" function="transport-start"/>
+  <Binding channel="1" note="11" function="transport-zero"/>
+  <Binding channel="1" note="10" function="transport-end"/>
+</ArdourMIDIBindings>
+
+

+ Please note that channel, controller and note numbers are specified as + decimal numbers in the ranges 1-16, 0-127 and 0-127 respectively + (the channel range may change at some point). +

+ diff --git a/include/midi-learn.html b/include/midi-learn.html new file mode 100644 index 0000000..c200bf1 --- /dev/null +++ b/include/midi-learn.html @@ -0,0 +1,44 @@ +--- +layout: default +title: MIDI Learn +--- + +

Philosophy

+

+There are no "best" ways to map an arbitrary MIDI controller for +controlling Ardour. There may be very legitimate reasons for different +users to prefer quite different mappings. +

+

+On every platform that Ardour runs on, there are excellent +free-of-charge tools for making connections between MIDI hardware and +"virtual" MIDI ports like the ones that Ardour creates and +uses. Rather than waste precious developer time replicating these +connection/patch managers, we prefer to leverage their existence by +having users rely on them to actually connect Ardour to other MIDI +devices and software. On OS X, we recommend Pete Yandell's MIDI +Patchbay. On Linux, a wide variety of tools are available including +QJackctl, aconnect, Patchage, and more. +

+ +

Basics

+ +
    +
  1. Enable Generic MIDI control: Edit > Preferences + > Control Surfaces > Generic MIDI
  2. +
  3. Connect Ardour's MIDI port named control to whatever + hardware or software you want (using a MIDI patchbay app)
  4. +
  5. Middle-click on whatever on-screen + fader, plugin parameter control, button etc. you want to control
  6. +
  7. A small window appears that says "Operate Controller now"
  8. +
  9. Move the hardware knob or fader, or press the note/key.
  10. +
  11. The binding is complete. Moving the hardware should control the Ardour fader etc.
  12. +
+ +

Avoiding work in the future

+

+If you want the bindings you set up to be used automatically in every +session, the simplest thing to do is to use Session > Save +Template. Then, when creating new sessions, select that template and +all the bindings will be automatically set up for you. +

diff --git a/include/controlling-ardour-with-osc-4.7-and-prior.html b/include/osc-control-in-ardour-4.7-and-prior.html similarity index 99% rename from include/controlling-ardour-with-osc-4.7-and-prior.html rename to include/osc-control-in-ardour-4.7-and-prior.html index abde245..d5221ae 100644 --- a/include/controlling-ardour-with-osc-4.7-and-prior.html +++ b/include/osc-control-in-ardour-4.7-and-prior.html @@ -1,30 +1,35 @@ --- -title: Controlling Ardour with OSC (Ardour 4.7 and Prior) +layout: default +title: OSC control for Ardour 4.7 and Prior --- +

+ This page is what was available before version 5.* was added. It has + not been updated to make sure all 4.7 functionality is acurately + represented. This page will vanish soon. +

+

- OSC lets synthesizers - and other devices communicate with Ardour. OSC devices can send commands - relating to playback (such as play or stop), performance (such as volume, + OSC lets synthesizers + and other devices communicate with Ardour. OSC devices can send commands + relating to playback (such as play or stop), performance (such as volume, play, stop, and almost any other function (such as Edit, or Undo).

-

- Ardour is probably one of the most OSC-controllable audio applications - around, but as with all OSC-controllable apps, you can't do much without - knowing what messages can be sent. This document describes the - various categories of messages that Ardour understands. It is subject to - change, particularly the "Actions" part below, since this relates to the + Ardour is probably one of the most OSC-controllable audio applications + around, but as with all OSC-controllable apps, you can't do much without + knowing what messages can be sent. This document describes the + various categories of messages that Ardour understands. It is subject to + change, particularly the "Actions" part below, since this relates to the GTK GUI for Ardour rather than the backend.

Connecting to Ardour via OSC

-

- OSC support is not enabled by default, but can be turned on via - Edit > Preferences > Control Surfaces. - Once enabled, Ardour will listen on port 3819 by default. - This port number can be changed by editing $ARDOUR_CONFIG + OSC support is not enabled by default, but can be turned on via + Edit > Preferences > Control Surfaces. + Once enabled, Ardour will listen on port 3819 by default. + This port number can be changed by editing $ARDOUR_CONFIG and adding this line within the <Config> section:

<Option name="osc-port" value="Your choice @@ -56,7 +61,7 @@ here"/>
/ardour/locate spos roll
where spos is the target position in samples and - roll is a bool/integer defining whether you want transport + roll is a bool/integer defining whether you want transport to be kept rolling or not
/ardour/loop_toggle
@@ -580,7 +585,7 @@ here"/>
Region/trim-to-next-region
Trim to Next
Region/trim-to-previous-region
Trim to Previous
Region/uncombine-regions
Uncombine
-
Rulers/toggle-bbt-ruler
Bars & Beats
+
Rulers/toggle-bbt-ruler
Bars & Beats
Rulers/toggle-cd-marker-ruler
CD Markers
Rulers/toggle-loop-punch-ruler
Loop/Punch
Rulers/toggle-marker-ruler
Markers
@@ -634,8 +639,8 @@ here"/>
Transport/Loop
Play Loop Range
Transport/PlayPreroll
Play Selection w/Preroll
Transport/PlaySelection
Play Selected Range
-
Transport/primary-clock-bbt
Bars & Beats
-
Transport/primary-clock-minsec
Minutes & Seconds
+
Transport/primary-clock-bbt
Bars & Beats
+
Transport/primary-clock-minsec
Minutes & Seconds
Transport/primary-clock-samples
Samples
Transport/primary-clock-timecode
Timecode
Transport/Record
Enable Record
@@ -644,8 +649,8 @@ here"/>
Transport/Rewind
Rewind
Transport/RewindSlow
Rewind (Slow)
Transport/Roll
Roll
-
Transport/secondary-clock-bbt
Bars & Beats
-
Transport/secondary-clock-minsec
Minutes & Seconds
+
Transport/secondary-clock-bbt
Bars & Beats
+
Transport/secondary-clock-minsec
Minutes & Seconds
Transport/secondary-clock-samples
Samples
Transport/secondary-clock-timecode
Timecode
Transport/Stop
Stop
@@ -688,4 +693,3 @@ here"/>
Zoom/zoom-focus-playhead
Zoom Focus Playhead
Zoom/zoom-focus-right
Zoom Focus Right
- diff --git a/include/osc-control.html b/include/osc-control.html new file mode 100644 index 0000000..3fc9c97 --- /dev/null +++ b/include/osc-control.html @@ -0,0 +1,514 @@ +--- +layout: default +title: OSC: Controlling Ardour with OSC +--- + +

+ OSC lets synthesizers + and other devices communicate with Ardour. OSC devices can send commands + relating to playback (such as play or stop), performance (such as volume, + play, stop, and almost any other function (such as Edit, or Undo). +

+ +

+ Note: OSC control has changed dramatically since Ardour 4.7. + The Path structure has been completely redone, Banking has been introduced, + The controller is now able to tell Ardour what kind of feedback it can + work with (including bank size) and two new math styles have been added + to gain controls. If you are using an Ardour version of 4.7 or less, + please read + Osc control in ardour 4.7 and prior. +

+ +

+ Ardour is probably one of the most OSC-controllable audio applications + around, but as with all OSC-controllable apps, you can't do much without + knowing what messages can be sent. This document describes the + various categories of messages that Ardour understands. It is subject to + change, particularly the "Actions" part below, since this relates to the + GTK GUI for Ardour rather than the backend. +

+ +

Connecting to Ardour via OSC

+

+ OSC support is not enabled by default, but can be turned on via + Edit > Preferences > Control Surfaces. + Once enabled, Ardour will listen on port 3819 by default. + This port number can be changed by editing $ARDOUR_CONFIG + and adding this line within the <Config> section: +

+<Option name="osc-port" value="Your choice +here"/> + +

+ Ardour sends any feedback to the port and address that sent any + feedback request. The port does not have to match Ardour's port. In + fact it is better not to. This means that Ardour can deal with more + than one controller at a time. The two controllers can bank + independently and even use different math for faders. This could be + used to allow talent to adjust their own monitor mix using a tablet + or phone that can run an OSC controller. For a full explanation of + how Ardour's feedback works please read + OSC feedback In Ardour. +

+ +

Control Surface Set Up

+ +

+ Control surface set up allows the controller to tell Ardour about it's + capabilities. The surface can tell Ardour how many control strips it + has for banking, if it is capable of setting it's faders or buttons + to values set by Ardour's GUI or automation, What kind of math the + faders use and more. +

+

+ Any time the /set_surface command is sent, the current bank + is recalculated and if feedback is turned on, the values of each + strip's controls are sent (or refreshed) as well. This will also + refresh the Master feedback setup. +

+

+ Surface Port Setting is available in the OSC GUI. +

+

+ As of Ardour 5.1, There is now a GUI setup in response to those using + tablets with applications such as touchOSC or AndrOSC who need to be + able to set a port for Ardour to send to. It can also change the + default setting for set_surface. For more information about Ardour's + OSC configuration GUI please read + Ardour's Setup Dialog. +

+

If /set_surface is not sent, the default values are used: +

+

+

+ These values give the same behaviour as prior versions of Ardour. (or the closest possible) +

+
+
/set_surface bank_size strip_types + feedback fadermode
+
+ See below for an explanation of each parameter. +
+
+

bank_size

+

+ Bank Size is the number of channel strips the controller supports + without banking. Setting this to 0 turns banking off by setting the + bank size to infinite. +

+

+ Bank size can also be set with /set_surface/bank_size size. +

+

strip_types

+

+ strip_types is an integer made up of bits. The easy way to + deal with this is to think of strip_types items being worth a number and + then adding all those numbers together for a value to send. + Strip Types will determine what kind of strips will be included in + bank. This would include: Audio, MIDI, buses, VCAs, Master, Monitor + and hidden or selected strips. +

+

+ Aside from setting the track types for the main mix assignments, using + /set_surface/strip_types with more than one surface button will allow + switching between modes for example: inputs only, buses only, + selected only, hidden only, by having the buttons send values of: 3, + 12, 256, 512. A full mix button might have a value 31. +

+

+ While Master and Monitor are listed as possibilities, most surfaces + will not use them. Using /master and /monitor makes more sense. + However, in the case where there are no master or monitor fader strips + on the surface, it may be necessary to include them in the banked + strips. +

+

Please see: + Calculating Feedback and Strip-types Values. +

+

+ Strip types can also be set with /set_surface/strip_types types. +

+

feedback

+

Feedback is an integer made up of bits. The easy way to + deal with this is to think of feedback items being worth a number and + then adding all those numbers together for a value to send. +

+

Please see: + Calculating Feedback and Strip-types Values.

+

+ Feedback can also be set with /set_surface/feedback feedback. +

+ +

gainmode

+

+ Gainmode is a an int that acts as a bool: +

+

+

+ Gainmode applies only to feedback values. The controller can choose + which gain math to use by choosing to use the /*/gain or /*/fader path + to send to Ardour. This makes sure a controller that doesn't set up + Ardour's OSC can still use either math. The gainmode for feedback also + determines the path Ardour uses for feedback so that the feedback + messages match the control messages. +

+

+ Gain mode can also be set with /set_surface/gainmode gainmode. +

+ +

Querying Ardour for information

+

+ The control Surface may wish to control the type a frequency of + updates it receives. It can do this with querying commands. See: + Querying Ardour with OSC. +

+ +

List of OSC messages

+

+ Parameter types show how the value will be used. However, they may + be sent as a different type if needed, see: + Parameter Types in OSC. +

+

Master or Global messages

+ +

Transport Control

+
+
/transport_stop
+
+
/transport_play
+
+
/toggle_roll
+
Toggles between play and stop
+
/set_transport_speed s
+
where s is a float ranging from -8.0f to 8.0f
+
/ffwd
+
+
/rewind
+
+
/goto_start
+
+
/goto_end
+
+
/jump_bars bars
+
Where bars is a float (+/-) of the number of bars to jump
+
/jump_seconds seconds
+
Where seconds is a float (+/-) of the number of seconds to jump
+
/add_marker
+
(adds marker to the current transport position)
+
/remove_marker
+
Removes marker at the current transport position (if there is one)
+
/mark_in
+
Marks the begining of a range at the current transport position
+
/mark_out
+
Marks the end of a range at the current transport position
+
/next_marker
+
+
/prev_marker
+
+
/locate spos roll
+
where spos is the target position in samples and + roll is a bool/integer defining whether you want transport + to be kept rolling or not
+
/loop_toggle
+
+
/loop_location start end
+
start is the beginning of a loop and end is the + end of a loop both are integer frame positions.
+
/set_loop_range
+
Uses edit range as loop range
+
/set_session_range
+
Uses edit range as session range
+
/toggle_click
+
+
/midi_panic
+
Ardour will send an all notes off to all midi tracks
+
/cancel_all_solos
+
Cancel All Solos/PFLs/AFLs
+
+ +

Transport Information

+
+
/transport_frame
+
Ardour sends /transport_frame current_frame
+
/transport_speed
+
Ardour sends /transport_speed speed
+
/record_enabled
+
Ardour sends /record_enabled recordenable_status
+
+ +

Editing-related

+
+
/undo
+
+
/redo
+
+
/save_state
+
(this is the regular Session > Save + operation)
+
/quick_snapshot_switch
+
Take a snapshot and switch to new version
+
/quick_snapshot_stay
+
Take a snapshot and keep working on this version
+
/fit_*_track(s)
+
Were * is one of 1, 2, 4, 8, 16, 32 or all. Fits this + many tracks in editor window. (add s for more than 1)
+
/zoom_*
+
Zoom editor to include * where * is 100_ms, 1_sec, + 10_sec, 1_min, 5_min, 10_min or to_session
+
/temporal_zoom_in
+
Zoom editor in to show less time
+
/temporal_zoom_out
+
Zoom editor out to show more time
+
/scroll_up_1_track
+
Scroll the editor pane up 1 track
+
/scroll_up_1_page
+
Scroll the editor pane up 1 page
+
/scroll_dn_1_track
+
Scroll the editor pane down 1 track
+
/scroll_dn_1_page
+
Scroll the editor pane down 1 page
+
+ +

Recording control

+
+
/toggle_punch_in
+
+
/toggle_punch_out
+
+
/set_punch_range
+
Uses edit range as punch range
+
/rec_enable_toggle
+
+ +
/stop_forget
+
Stop transport and delete/forget last take
+
+ +

Master and Monitor strip control

+
+
/master/gain dB
+
See gain in strips
+
/master/fader position
+
See fader in strips
+
/master/trimdB dB
+
see trimdb in strips
+
/master/pan_stereo_position position
+
See pan_stereo_position in strips
+
/master/mute yn
+
See mute in strips
+
/monitor/gain dB
+
See gain in strips
+
/monitor/fader position
+
See fader in strips
+
+ +

Track specific operations

+

+ For each of the following, ssid is the Surface Strip ID for the track +

+

+ SSID has a different meaning than RID in Ardour version 4.7 and before. + Effectively, banking is always being used and the SSID is generated on + the fly. The SSID is the position of the strip within bank as an int + 1 to bank size. There are no gaps as there have been in the past. + Depending on the value of strip_types sent to Ardour, Master and + Monitor, may be included in the list of SSIDs or not as set in + /set_surface. +

+

+ Some Surfaces (many Android applets) are not able to deal with more + than one parameter in a command. However, the two parameter commands + below can also be sent as /strip/command/ssid param. In this case the + param should be a float even if an int is required below. +

+
+
/bank_up
+
Change bank to the next higher bank.
+
/bank_down
+
Change bank to the next lower bank.
+
/strip/mute ssid mute_st
+
where mute_st is a bool/int representing the desired mute state of the track
+
/strip/solo ssid solo_st
+
where solo_st is a bool/int representing the desired solo state of the track
+
/strip/solo_iso ssid state
+
where state is a bool/int representing the desired solo isolate state of the track
+
/strip/solo_safe ssid state
+
where state is a bool/int representing the desired solo safe/lock state of the track
+
/strip/monitor_input ssid monitor_st
+
where monitor_st is a bool/int where 1 is forced input monitoring.
+
/strip/monitor_disk ssid monitor_st
+
where monitor_st is a bool/int where 1 is forced disk monitoring. When input and disk are both off, + Auto monitoring is enabled.
+
/strip/recenable ssid rec_st
+
where rec_st is a bool/int representing the desired rec state of the track
+
/strip/record_safe ssid rec_st
+
where rec_st is a bool/int representing the desired record safe state of the track
+
/strip/polarity ssid invert
+
where invert is a bool/int representing the desired polarity of the track
+
/strip/gain ssid gain
+
where gain is a float ranging from -193 to 6 representing the desired gain of the track in dB.
+
/strip/fader ssid position
+
where position is a float ranging from 0 to 1 representing the fader control position.
+
/strip/trimdB ssid trim_db
+
where trim_db is a float ranging from -20 to 20 representing the desired trim of the track in dB.
+
/strip/pan_stereo_position ssid position
+
where position is a float ranging from 0 to 1 representing the desired pan position of the track
+
/strip/pan_stereo_width ssid width
+
where width is a float ranging from 0 to 1 representing the desired pan width of the track
+
/strip/send/gain ssid sendid send_gain
+
where sendid = nth_send, send_gain is a float + ranging from -193 to +6 representing the desired gain in dB for the send
+
/strip/send/fader ssid sendid send_gain
+
where sendid = nth_send, send_gain is a float + ranging from 0 to 1 representing the desired position for the send as a fader
+
/strip/send/enable ssid sendid state
+
where sendid = nth_send, state is 1 for enabled and 0 for disabled
+
/strip/list
+
see: + Querying Ardour with OSC.
+
/strip/sends ssid
+
see: + Querying Ardour with OSC.
+
/strip/receives ssid
+
see: + Querying Ardour with OSC.
+
/strip/plugin/list ssid
+
see: + Querying Ardour with OSC.
+
/strip/plugin/descriptor ssid
+
see: + Querying Ardour with OSC.
+
/strip/plugin/reset ssid piid
+
where piid = nth Plugin, will reset all values to the plugin's original values
+
/strip/plugin/activate ssid piid
+
where piid = nth Plugin, will set the plugin's state to active
+
/strip/plugin/deactivate ssid piid
+
where piid = nth Plugin, will set the plugin's state to inactive
+
/strip/plugin/parameter ssid piid param value
+
where piid = nth Plugin, param = nth param, value + is a float ranging from 0 to 1 representing the desired parameter value
+
/strip/name ssid name
+
where name is a string for the desired name of the track
+
+

Selected Strip Operations

+

+ New for Ardour 5, A whole set of operations that work on the selected + or expanded strip. +

+

+ Selected strip operations are complex enough for their own page. + Please read: + Selection Considerations in OSC. This is most important if more + than one OSC surface is being used with Ardour. +

+

+ There are two kinds of selection in OSC. GUI selection and local + expansion. By default expansion follows selection. +

+

+ +
+
/strip/select ssid y/n
+
Where y/n = 1 for select. Sets both GUI select and strip + to expanded mode. (0 is ignored)
+
/strip/expand ssid y/n
+
Where y/n = 1 for expanded mode. Sets only local strip to + Expanded. Setting to 0 resets the expansion to follow selection.
+
/select/expand y/n
+
Where y/n = 1 for expanded mode, 0 for Select mode.
+
/select/recenable y/n
+
Where y/n is 1 for enabled and 0 for disabled
+
/select/record_safe y/n
+
Where y/n is 1 for safe and 0 for unlocked
+
/select/mute y/n
+
Where y/n is 1 for enabled and 0 for disabled
+
/select/solo y/n
+
Where y/n is 1 for enabled and 0 for disabled
+
/select/solo_iso state
+
where state is a bool/int representing the desired solo isolate state of the track
+
/select/solo_safe state
+
where state is a bool/int representing the desired solo safe/lock state of the track
+
/select/monitor_input y/n
+
Where y/n is 1 for monitor from input and 0 for auto
+
/select/monitor_disk y/n
+
Where y/n is 1 for monitor from disk and 0 for auto
+
/select/polarity invert
+
where invert is a bool/int representing the desired polarity of the track
+
/select/gain gain
+
Where gain is a float ranging from -193 to 6 representing the desired gain of the track in dB.
+
/select/fader position
+
Where position is an float ranging from 0 to 1 representing the fader control position.
+
/select/trimdB trim_db
+
where trim_db is a float ranging from -20 to 20 representing the desired trim of the track in dB.
+
/select/pan_stereo_position position
+
where position is a float ranging from 0 to 1 representing the desired pan position of the track
+
/select/pan_stereo_width width
+
where width is a float ranging from 0 to 1 representing the desired pan width of the track
+
/select/pan_elevation_position position
+
where position is a float ranging from 0 to 1 representing the desired pan elevation of the track
+
/select/pan_frontback_position position
+
where position is a float ranging from 0 to 1 representing the desired front to back position of the track
+
/select/pan_lfe_control value
+
where value is a float ranging from 0 to 1 representing the desired LFE control value for the track
+
/select/send_gain", sendid send_gain
+
where sendid = nth_send, send_gain is a float + ranging from -193 to +6 representing the desired gain in dB for the send
+
/select/send_fader", sendid send_gain
+
where sendid = nth_send, send_gain is a float + ranging from 0 to 1 representing the desired position for the send as a fader
+
/select/send_enable", sendid state
+
where sendid = nth_send, state is 1 for enabled and 0 for disabled
+
+ +

Menu actions

+

+ Every single menu item in Ardour's GUI is accessible via OSC. There is + a single common syntax to trigger the action as if it was selected + with the mouse (or keyboard):

+/access_action action_name +

+ The + list of actions shows all available values of action-name as of + June 2016 for Ardour 5.0.pre0.1. You can get the current list at any + time by running Ardour with the -b flag. +

+ +{% children %} diff --git a/include/osc-personal-monitoring.html b/include/osc-personal-monitoring.html new file mode 100644 index 0000000..9cc24f5 --- /dev/null +++ b/include/osc-personal-monitoring.html @@ -0,0 +1,112 @@ +--- +layout: default +title: OSC: Personal Monitoring Control +--- + +

+ Personal monitoring can allow a performer with a smart phone to set + their personal monitor mix for a floor wedge or inear monitoring. +

+

Setup

+

+ Some setup needs to be done in the GUI mixer window before this can + work. +

+ +

+ This gives stage or studio monitoring for the performer. +

+ +

The OSC commands and feedback for personal monitoring

+

+ All of the personal monitoring commands and feedback start with a + /cue. It is expected that a surface used as a personal + monitor control will use only /cue commands. +

+

+ The send controls and feedback all have the send id (1 to n) in line + as part of the OSC path. So the path for the second send would be + /cue/send/fader/2 to set the level. It is considered that + most surfaces used for this will only be able to handle one parameter. +

+

Commands

+
+
/cue/connect
+
Returns a list of aux buses.
+
/cue/aux aux-number
+
where aux-number is an integer which is the aux bus + number this surface will use.
+
/cue/next_aux
+
Sets the the aux bus to one bus higher.
+
/cue/previous_aux
+
Sets the aux to one bus lower.
+
/cue/connect
+
Returns a list of aux buses.
+
/cue/fader position
+
where position is a float for the position of the fader + between 0.0 and 1.0.
+
/cue/mute state
+
where state is a float of 0.0 for mute off and 1.0 for mute on.
+
/cue/send/fader/id position
+
where position is a float for the position of the fader + between 0.0 and 1.0.
+
/cue/send/enable/id state
+
where state is a float of 0.0 for disable and 1.0 for enable.
+
+

Feedback

+
+
/cue/name name
+
where name is a string that is the name of the currently + selected aux bus.
+
/cue/name/id name
+
where name is a string that is the name of the aux bus + that id belongs to.
+
/cue/fader position
+
where position is a float from 0.0 to 1.0 that shows the + fader position for the selected aux bus.
+
/cue/mute state
+
where state is a float of 0.0 or 1.0 that shows the state + of the mute for the selected aux bus.
+
/cue/signal activity
+
where activity is a float of 0.0 or 1.0 that shows audio + activity for the selected aux bus.
+
/cue/send/name/id name
+
where name is a string that is the name of the channel + that send id belongs to.
+
/cue/send/fader/id position
+
where position is a float from 0.0 to 1.0 that is the position + for the fader for the send that id belongs to.
+
/cue/send/enable/id state
+
where state is a float of 0.0 or 1.0 that is the state + of the enable for the send that id belongs to.
+
+

+ While a fader is being adjusted, the corresponding /*/name + text will give the level in db. +

diff --git a/include/osc-setup-dialog.html b/include/osc-setup-dialog.html new file mode 100644 index 0000000..d21edf8 --- /dev/null +++ b/include/osc-setup-dialog.html @@ -0,0 +1,125 @@ +--- +layout: default +title: OSC: Using the Setup Dialog +--- + +

+ Starting with Ardour 5.1 OSC has a graphic setup dialog. This dialog + can be accessed from Preferences->Control Surfaces. Select OSC and + click on the Show Protocol Settings. +

+

+ The Ardour OSC dialog has three tabs. The main tab, the Strip Types + tab and the Feedback tab. +

+

+ Many OSC devices get their IP from a DHCP making it difficult to set + an IP in Ardour's OSC settings. Therefore, most of the settings are + default settings. Values are set and the next OSC surface to + send a /set_surface* message to Ardour will use those settings. An OSC + surface that has previously sent a message to Ardour will retain the + settings it already had. The Clear OSC Devices will reset all + device settings. A /refresh message will both reset the + device settings as well as set that device to any new settings. The + Use of /set_surface will override all settings except + Port Mode. +

+

Dialog settings

+

OSC setup tab

+

+the OSC configuration dialog +

+

Connection:

+

+ This field is informational only. It shows where Ardour will receive + OSC messages. The system Name and the Port are the most important parts. +

+

Port Mode:

+

+ This drop down allows the choice of Auto or Manual outbound port + setting. The default Auto port mode, will send OSC messages back to + the port messages from that surface are received from. This setting + allows two surfaces on the same IP to operate independently. However, + there are a number of OSC control surfaces that do not monitor the + same port they send from and in fact may change ports they send from + as well. Manual allows the outgoing port (the port the surface will + receive on, to be manually set. In Manual port mode only one control + surface per IP can work. Most phone or tablet OSC controllers like + touchOSC or Control need Manual port mode. More than one controller + can be used so long as each has it's own IP. +

+

Manual Port:

+

+ This is an Entry box for setting the outgoing port when in + Manual port mode. +

+

Bank Size:

+

+ This sets the default bank size for the next surface to send a + /set_surface/* OSC message. Bank size 0 (the default) sets + no banking and allows controlling all strips included in strip_types + at once. +

+

Gain Mode:

+

+ Sets the faders (and sends faders) feedback math to position where a + value between 0 and 1 represents the fader position of the same fader + in the mixer GUI or dB where the feedback from fader movement will be + returned as a dB value. When the Gain Mode is set to position, the + /*/name feedback for the channel will show dB values in text while the + fader is being adjusted and then return the the name text. +

+

Debug:

+

+ For debugging purposes this allows logging either good OSC messages + Ardour receives or invalid messages received or none. +

+

Preset:

+

+ Ardour now allows the use of preset settings. The default settings + used are the settings from the last session or the factory defaults + the first time OSC is enabled. As soon as any of these settings are + changed, the Preset will change to "User" and the new settings will be + save to the osc directory Ardour configuration directory as + user.preset. This preset file can be renamed for future use. + It is suggested to also change the name value inside to avoid confusion + in the preset listing. Ardour will ship with some of it's own presets + that go with some popular OSC control and map combinations. +

+

Clear OSC Devices

+

+ This button clears operating device profiles so that Ardour will reset + all devices settings to use the new defaults from changed settings. a + device may still override these new settings with the /set_surface set + of commands. The reason for setting defaults settings is that some OSC + controllers are not able to send more than one parameter at a time and + so having correct defaults allows one "Connect" button rather than 4. +

+

Default Strip Types tab

+

+the Default Strip Types tab +

+

+ This allows selecting which of Ardour's mixer strips will be available + for control. The Factory default is all strips except master, monitor + and hidden strips. If it is desired to only see input tracks the + others can be deselected. It is also possible to change these settings + from the control surface. A set of buttons could select showing only + inputs or only buses. If a group is selected in the GUI then showing + only selected strips will show only that group. Showing hidden tracks + is handy for cases where a groups of tracks that grouped to a bus or + controlled by a VCA are hidden, but one of those tracks needs a tweak. +

+

Default Feedback tab

+

+the Default Feedback tab +

+

+ This allows setting up which controls provide feedback. The Factory + default is none. If the controller is unable to receive feedback, this + should be left blank. In the case of metering, Metering as a LED strip + only works if Metering as a Float is disabled. +

diff --git a/include/parameter-types-in-osc.html b/include/parameter-types-in-osc.html new file mode 100644 index 0000000..7af30f0 --- /dev/null +++ b/include/parameter-types-in-osc.html @@ -0,0 +1,33 @@ +--- +layout: default +title: OSC: Parameter Types +--- + +

+ An OSC message is laid out in this form: +

+ + /path/of/command type parameter + +

+ The type is there to indicate what the parameter is. This gives + the idea that parameter types are quite strict and if the command + requires an Integer "i" then the controller had better send it. + However, the checking of the parameter type is left to the receiving + software. +

+

+ What this means in practical terms is that the surface can get away + with sending the wrong type of parameter. There are some places + where that just doesn't make sense. For example, a parameter that + is specified as a Float with a range of 0 to 1, could be sent as + an Integer, but would only have full scale and minimum value with + nothing in between. This is not much use for a fader, though ok for + a button. +

+

+ There are a number of OSC controllers based on iOS and Android + tablets that only send or receive parameters as floats or text. + These controllers should have no problem sending bool or int values + as floats. Ardour will interpret the values as required. +

diff --git a/include/presonus-faderport.html b/include/presonus-faderport.html new file mode 100644 index 0000000..9acf374 --- /dev/null +++ b/include/presonus-faderport.html @@ -0,0 +1,376 @@ +--- +layout: default +title: Using the Presonus Faderport +menu_title: Presonus Faderport +--- + +

+ Since version 4.5, Ardour has had full support for the Presonus + Faderport. This is a compact control surface featuring a single + motorized fader, a single knob (encoder) and 24 buttons with fixed + labels. It is a relatively low-cost device that functions very well + to control a single (selected) track or bus, along with a variety of + other "global" settings and conditions. +

+ +

Connecting the Faderport

+

+ The Faderport comes with a single USB socket on the back. Connect a + suitable USB cable from there to a USB port on your computer. As of + the end of 2015, you should avoid USB3 ports - these cause erratic + behaviour with the device. This issue might get fixed by Presonus in + the future. +

+

+ Ardour uses the Faderport in what Presonus calls "native" mode. You + do not need to do anything to enable this - Ardour will set the + device to be in the correct mode. In native mode, the Faderport + sends and receives ordinary MIDI messages to/from the host, and the + host understands the intended meaning of these messages. We note + this detail to avoid speculation about whether Ardour supports the + device via the HUI protocol - it does not. +

+ The Faderport will be automatically recognized by your operating + system, and will appear in any of the lists of possible MIDI ports + in both Ardour and other similar software. +

+

+ To connect the Faderport to Ardour, open the Preferences dialog, and + then click on "Control Surfaces". Click on the "Enable" button + in the line that says "Faderport" in order to activate Ardour's + Faderport support. Then double click on the line that says + "Faderport". A new dialog will open, containing (among other things) + two dropdown selectors that will allow you to identify the MIDI + ports where your Faderport is connected. +

+

+the Faderport configuration dialog +

+

+ Once you select the input and output port, Ardour will initialize + the Faderport and it will be ready to use. You only need do this + once: once these ports are connected and your session has been + saved, the connections will be made automatically in this and other + future sessions. +

+ You do not need to use the power supply that comes with the + Faderport but without it, the fader will not be motorized. This + makes the overall experience of using the Faderport much less + satisfactory, since the fader will not move when Ardour tells it + to, leading to very out-of-sync conditions between the physical + fader position and the "fader position" inside the program. +

+ +

Using the Faderport

+

+ The Faderport's controls can be divided into three groups: +

    +
  1. Global controls such as the transport buttons
  2. + +
  3. Controls which change the settings for particular track or + bus
  4. + +
  5. Controls which alter which track or bus is modified by the + per-track/bus controls.
  6. +
+

+

+ Because the Faderport has only a single set of per-track controls, + by default those controls operate on the first selected track or + bus. If there is no selected track or bus, the controls will do + nothing. +

+ +

Transport Buttons

+

+ The transport buttons all work as you would expect. +

+
Rewind
+
+

+ When pressed on its own, starts the transport moving backwards. Successive presses + speed up the "rewind" behaviour. +

+

+ If pressed while also holding the Stop button, the playhead will + return to the zero position on the timeline. +

+

+ If pressed while also holding the Shift button, the playhead will + move to the session start marker. +

+
+
Fast Forward
+
+

+ When pressed on its own, starts the transport moving faster than normal. Successive presses + speed up the "fast forward" behaviour. +

+

+ If pressed while also holding the Shift button, the playhead + will move to the session end marker. +

+
+
Stop
+
+ Stops the transport. Also used in combination with the Rewind + button to "return to zero". +
+
Play
+
+ Starts the transport. If pressed while the transport is + already rolling at normal speed, causes the playhead to jump to + the start of the last "roll" and continue rolling ("Poor man's + looping"). +
+
Record Enable
+
Toggles the global record enable setting +
+
+

+ +

Other Global Controls

+

+ The Mix, Proj, Trns buttons do not obviously correspond any + particular functions or operations in Ardour. We have therefore + allowed users to choose from a carefully curated set of possible + actions that seem related to the button labels in some clear + way. This can be done via the Faderport configuration dialog + accessed via Preferences > Control Surfaces. Each + button has 3 possible actions associated with it: +

+ Click on the relevant drop-down selector to pick an action as you + prefer. +

+

+ The User button also has no obvious mapping to specific Ardour + functionality, so we allow users to choose from any + possible GUI action. The menu for selecting the action is somewhat + confusing and it can be hard to find what you're looking + for. However, all possible actions are there, so keep looking! +

+

+
Mix
+
+

+ Possible actions include: +

    +
  • Toggle Editor & Mixer visibility
  • +
  • Show/Hide the Editor mixer strip
  • +
+

+
+
Proj
+
+

+ Possible actions include: +

    +
  • Toggle Meterbridge visibility
  • +
  • Toggle Session Summary visibility
  • +
  • Toggle Editor Lists visibility
  • +
  • Zoom to session
  • +
  • Zoom in
  • +
  • Zoom out
  • +
+

+
+
Trns
+
+

+ Possible actions include: +

    +
  • Toggle Locations window visibility
  • +
  • Toggle Metronome
  • +
  • Toggle external sync
  • +
  • Set Playhead at current pointer position
  • +
+

+
+
Undo/Redo
+
+ Undo Causes the last operation carried out in the editor to be + undone. When pressed in conjuction with the Shift button, it + causes the most recent undone operation to be re-done. +
+
Punch
+
+

+ When pressed on its own, toggles punch recording. If there is no + punch range set for the session, this will do nothing. +

+

+ When pressed in conjunction with the Shift button, this moves + the playhead to the previous Marker +

+
+
User
+
+

+ See above. Any and all GUI-initiated actions can be driven with + by pressing this button on its own, or with a "long" press. +

+

+ When pressed in conjunction with the Shift button, this will move + the playhead to the next marker. +

+
+
Loop
+
+

+ When pressed on its own, this toggles loop playback. If the + Ardour preference "Loop-is-mode" is enabled, this does nothing + to the current transport state. If that preference is disabled, + then engaging loop playback will also start the transport. +

+

+ When pressed in conjunction with the Shift button, this will + create a new (unnamed) marker at the current playhead + position. +

+
+
+

+ +

Per-track Controls

+

+

+
Mute
+
+ This toggles the mute setting of the currently controlled + track/bus. The button will be lit if the track/bus is muted. +
+
Solo
+
+ This toggles the solo (or listen) setting of the currently + controlled track/bus. The button will be lit if the track/bus is + soloed (or set to listen mode). +
+
Rec
+
+ This toggles the record-enabled setting of the currently + controlled track/bus. The button will be lit if the track is + record-enabled. This button will do nothing if the Faderport is + controlling a bus. +
+
Fader
+
+ The fader controls the gain applied to the currently controlled + track/bus. If the Faderport is powered, changing the gain in + Ardour's GUI or via another control surface, or via automation, + will result in the fader moving under its own control. +
+
Knob/Dial/Encoder
+
+

+ The knob controls 1 or 2 pan settings for the current + controlled track/bus. When used alone, turning the knob controls + the "azimuth" or "direction" (between left and right) for the + panner in the track/bus (if any). This is all you need when + controlling tracks/busses with 1 input and 2 outputs. +

+

+ If controlling a 2 input/2 output track/bus, Ardour's panner + has two controls: azimuth (direction) and width. The width + must be reduced to less than 100% before the azimuth can be + changed. Pressing the "Shift" button while turning the knob + will alter the width setting. +

+

+ The knob can also be turned while the "User" button is held, + in order to modify the input gain for the currently controlled + track. +

+
+
Read
+
+ Enables playback/use of fader automation data by the controlled track/bus. +
+
Write
+
+ Puts the fader for the controlled track/bus into automation + write mode. While the transport is rolling, all fader changes + will be recorded to the fader automation lane for the relevant track/bus. +
+
Touch
+
+ Puts the fader for the controlled track/bus into automation + touch mode. While the transport is rolling, touching the fader + will initiate recording all fader changes until the fader is + released. When the fader is not being touched, existing + automation data will be played/used to control the gain level. +
+
Off
+
+ This disables all automation modes for the currently controlled + track/bus. Existing automation data will be left unmodified by + any fader changes, and will not be used for controlling gain. +
+
+

+ +

Track Selection Controls

+

+ You can manually change the track/bus controlled by the Faderport by + changing the selected track in Ardour's editor window. If you select + more than 1 track, the Faderport will control the first selected + track and only that track/bus. +

+

+

+
Left (arrow)
+
+ This causes the Ardour GUI to select the previous track/bus + (using the current visual order in the editor window), which + will in turn cause the Faderport to control that track. If there + is no previous track/bus, the selected track/bus is left + unchanged, and the Faderport continues to control it. +
+
Right (arrow)
+
+ This causes the Ardour GUI to select the next track/bus + (using the current visual order in the editor window), which + will in turn cause the Faderport to control that track. If there + is no next track/bus, the selected track/bus is left + unchanged, and the Faderport continues to control it. +
+
Output
+
+

+ Pressing the Output button causes the Faderport to control + the fader, pan, mute and solo settings of the Master bus. If + your session does not contain a Master bus, it does nothing. + This is a toggle button - pressing it again returns Faderport + to controlling whichever track/bus was selected before the + first press of the Output button. +

+

+ If your session uses Ardour's monitor section, you can use + Shift-Output to assign it to the Faderport in the same way + that Output assigns the Master bus. This is also a toggle + setting, so the second Shift-Output will return the Faderport + to controlling whichever track/bus was selected before. +

+

+ If you press Shift-Output after a single press to Output + (i.e. control the Monitor Section while currently controlling + the Master bus) or vice versa (i.e. control the Master bus + while currently controlling the Monitor Section), the press + will be ignored. This avoids getting into a tricky situation + where it is no longer apparent what is being controlled and + what will happen if you try to change it. +

+
+
Bank
+
+ The "Bank" button is currently not used by Ardour +
+
+

diff --git a/include/querying-ardour-with-osc.html b/include/querying-ardour-with-osc.html new file mode 100644 index 0000000..13e7322 --- /dev/null +++ b/include/querying-ardour-with-osc.html @@ -0,0 +1,153 @@ +--- +layout: default +title: OSC: Querying Ardour +--- + +

+ In order to make a custom controller that knows what strips Ardour + has, the controller needs to be able to query Ardour for that + information. These set of commands are for smarter control surfaces + That have the logic to figure out what to do with the information. + These are not of value for mapped controllers like touchOSC and + friends. The controller will need to send these queries to ardour + as often as it needs this information. It may well make sense to use + regular feedback for things that need to be updated often such as + position or metering. + Here are the commands used to query Ardour: +

+ +
+
/strip/list
+
Ask for a list of strips
+
/strip/sends ssid
+
Asks for a list of sends on the strip ssid
+
/strip/receives ssid
+
Asks for a list of tracks that have sends to the strip ssid points to
+
/strip/plugin/list ssid
+
Asks for a list of plug-ins for strip ssid.
+
/plugin/descriptor ssid piid
+
Asks for a list of descriptors for plug-in piid on strip ssid
+
+ +

A list of strips

+ +

+ /strip/list asks Ardour for a list of strips that the + current session has. Ardour replies with a message for each + strip with the following information: +

+ After all the strip messages have been sent, one final message is + sent with: + +

+

A bus will not have a record enable and so a bus message + will have one less parameter than a track. It is the controllers + responsability to deal with this. +

+ +

A list of sends

+

+ /strip/sends ssid asks Ardour for a list of + sends for strip number ssid. The reply is sent back to the + controller as one message with the following information: +

+

+

+ The controller can tell how many sends there are from the number of + parameters as each send has 5 parameters and there is one extra for + ssid. +

+ +

A list if tracks that send audio to a bus

+

+ /strip/receives ssid will return a list of + tracks that have sends to the bus at the ssid. The reply will + contain the following information for each track conntected to this + bus: +

+

+ +

A list of plug-ins for strip

+

+ /strip/plugin/list ssid will return a list of + plug-ins that strip ssid has. The reply will contain the following + information: +

+

+ +

A list of a plug-in's parameters

+

+ /plugin/descriptor ssid piid will + return the plug-in parameters for ppid plug-in on the ssid strip. The + reply will contain the following information: +

+

+

+ The flag bitset above has been defined as (from lsb): +

+

+

+ While this seems complex, it is really not that bad. Minimum, + maximum and value will in most cases give you all you need. +

diff --git a/include/selection-considerations-in-osc.html b/include/selection-considerations-in-osc.html new file mode 100644 index 0000000..3996b49 --- /dev/null +++ b/include/selection-considerations-in-osc.html @@ -0,0 +1,72 @@ +--- +layout: default +title: OSC: Selection and Expansion Considerations +--- + +

+ Ardour does not send every possible feedback value for each channel. + It does send expanded information on the selected channel. There are + also extra commands for the selected strip. All the feedback and + select commands have their own path /select. + This means that for the selected channel the surface does not have to + keep track of the strip ID. The /select strip will follow the + "current mixer strip" in the GUI editor window. +

+

+ There are two major uses for this: +

    +
  1. Single strip control surfaces. Using + /access_action Editor/select-next-route or + /access_action Editor/select-prev-route + to step through the mixer strips.
  2. +
  3. Using a "Super strip" section of knobs to control parts + of the strip that are changed less often such as polarity, sends or + plugin parameters.
  4. +
+

+

+ Selection in Ardour's OSC implementation are complicated by the + possibility of using more than one OSC controller at the same time. + User "A" may select strip 4 and use a selected controller to make + changes to that strip. User "B" may subsequently select strip 7 to + make changes on. This leaves user "A" making changes to strip 7 + which they did not choose. +

+

+ For this reason Ardour offers local expansion aside from the GUI + selection. Local expansion only affects the one OSC controller. GUI + selection is global and affects all controllers using GUI selection + as well as the GUI. +

+

+ Both select and expansion use the /select set of commands. +

+

+ In general, in a one user situation where that one user may use either + the OSC surface or the GUI, using GUI based selection makes the most + sense. This is the default because this is the more common use. +

+

+ When there is more than one operator, then expansion only is the + mode of choice. It may make sense for one of the surfaces to + use GUI selection where the operator is also using the GUI for some + things. However, the set up should be carefully analyzed for the + possibility of selection confusions. Expansion should be + considered the safe option. +

+

+ It is always ok to use expansion on the surface even in a one + user scenario. This allows the user to use GUI and surface selection + for different uses. +

+

+ It is also possible to use both if desired. /strip/select will ways + set the GUI select, but /strip/expand will set the select feedback + and commands locally without changing the GUI select. Another + /strip/expand or a /strip/select will override that expand command + and releasing the /strip/expand or /select/expand (setting it to 0 or + false) will set the /select set of commands and feedback back to + whichever strip the GUI has selected at that time. This could be used + to switch between the GUI select and the local expand to compare two + strips settings. +

diff --git a/include/ssl-nucleus.html b/include/ssl-nucleus.html new file mode 100644 index 0000000..83c98e2 --- /dev/null +++ b/include/ssl-nucleus.html @@ -0,0 +1,219 @@ +--- +layout: default +title: SSL Nucleus +--- + +

+ The Nucleus, from Solid State Logic, is a 16 fader Mackie Control + device that includes many buttons, separate meters, two LCD displays + and other features. The device is not cheap (around US$5000 at the + time of writing), and has some design features + (or lack thereof) which some Ardour developers find + questionable. Nevertheless, it is a very flexible device, and makes + a nice 16 fader surface without the need to somehow attach an + extender to your main surface. +

+ +

Pre-configuring the Nucleus

+ +

+ Your Nucleus comes complete with a number of "profiles" for a few + well-known DAWs. At the time of writing it does not include one for + Ardour (or related products such as Harrison Mixbus). +

+

+ We have prepared a profile in which as many buttons as possible send + Mackie Control messages, which makes the device maximally useful + with Ardour (and Mixbus). You can + download the + profile + and load it to your Nucleus using the Edit Profiles + button in SSL's Nucleus Remote application. Be sure to select it for + the active DAW layer in order to make Ardour work as well as + possible. Note: unfortunately, the Nucleus Remote application + only runs on OS X or Windows, so Linux users will need access to + another system to load the profile. We will provide notes on the + profile settings at a future time. +

+ +

Connecting the Nucleus

+ +

+ Unlike most Mackie Control devices, the Nucleus uses an ethernet + connection to send and receive the MIDI messages that make up the + Mackie Control protocol. Specifically, it uses a technology called + "ipMIDI" which essentially "broadcasts" MIDI messages on a local + area network, so that any connected devices (computers, control + surfaces, tablets etc.) can participate. +

+

+ All other DAWs so far that support the Nucleus have chosen to do so + by using a 3rd party MIDI driver called "ipMIDI", which creates a + number of "virtual" MIDI ports on your computer. You, the user, + tells the DAW which ports to connect to, and ipMIDI takes care of + the rest. +

+

+ Ardour has builtin ipMIDI support, with no need of any 3rd party + packages, and no need to identify the "ports" to connect to in order + to communicate with the Nucleus. This makes setting it up a bit + easier than most other systems. +

+

+ Unless ... you already installed the ipMIDI driver in order to use + some other DAW with your Nucleus. If ipMIDI is configured to create + any "ports", it is not possible for Ardour's own ipMIDI support to + function. We decided to offer both methods of communicating with + your Nucleus. If you regularly use other DAWs, and appreciate having + ipMIDI permanently set up to communication with the Nucleus - that's + OK, you can tell Ardour to use the ipMIDI driver you already + have. But if you're not using other DAWs with the Nucleus (and thus + have not installed the ipMIDI driver), then you can ignore the + ipMIDI driver entirely, and let Ardour connect directly with no + configuration. +

+ +

Connecting via Ardour's own ipMIDI support

+ +

+ This is usable only on computers with no 3rd party ipMIDI + driver software installed and configured. If you have the OS X or + Windows ipMIDI driver from nerds.de, it MUST be + configured to offer ZERO ports before using this + method. +

+ +

+ Open Preferences > Control Surfaces. Ensure that the + Mackie protocol is enabled, then double-click on it to open the + Mackie Control setup dialog. +

+

+ Ensure that the device selected is "SSL Nucleus". The dialog should + show a single numerical selector control below it, defining the + ipMIDI port number to use (it should almost always be left at the + default value of 21928). +

+

+ Communication is automatically established with the Nucleus and you + need do nothing more. +

+

+ If this does not work, then make sure your network cables are + properly connected, and that you are not running + other ipMIDI software on the computer. +

+ +

Connecting via 3rd party ipMIDI support

+ +

+ This is usable only on computers with 3rd party ipMIDI + driver software installed and configured for (at least) 2 ports. +

+ +

+ Open Preferences > Control Surfaces. Ensure that the + Mackie protocol is enabled, then double-click on it to open the + Mackie Control setup dialog. +

+

+ Ensure that the device selected is "SSL Nucleus (via platform MIDI)". The dialog should + show four combo/dropdown selectors, labelled (respectively): +

+ +

+ You should choose "ipMIDI port 1", "ipMIDI port 1", "ipMIDI port 2" + and "ipMIDI port 2" for each of the 4 combo/dropdown selectors. +

+

+ Communication should be automatically established with the Nucleus. +

+

+ If this does not work, then make sure your network cables are + properly connected, and that you are running the approprate ipMIDI + driver and have configured it for 2 (or more) ports. +

+ +

Nucleus Design Discussion

+ +

+ You might be reading this part of the manual seeking some guidance + on whether the Nucleus would make a suitable control surface for + your workflows. We don't want to try to answer that question + definitively, since the real answer depends on the very specific + details of your workflow and situation, but we would like to point + out a number of design features of the Nucleus that might change + your opinion. +

+ +

Cons

+
+
No Master Faster
+
It is not possible to control the level of the Master bus or + Monitor section. Really don't know what SSL was thinking here.
+
No dedicated rec-enable buttons
+
You have to press the "Rec" button and convert the per-strip + "Select" buttons into rec-enables
+
No dedicated automation buttons
+
You have to press the "Auto" button and convert the first 4 + vpots into 4 automation-related buttons, losing your current view + of the session.
+
No buttons with Mackie-defined "Marker" functionality
+
Mackie's design intentions for the interoperation of the + Marker, rewind and ffwd buttons requires profile editing in order + to function properly. +
+
No "Dyn" button
+
This is hard to assign in an edited profile. To be fair, other + Mackie Control devices also lack this button. +
+
+ +

Pros

+
+
Single cable connectivity
+
No need for multiple MIDI cables to get 16 faders
+
Broadcast connectivity
+
Connecting to multiple computers does not require recabling
+
16 faders from a single box
+
No need to figure out how to keep extenders together
+
Meters separated from displays
+
Contrast with the Mackie Control Universal Pro, where meters + interfere with the display +
+
DAW profiles
+
Easy to flip profiles for use by different DAWs.
+
+ + +

Ambiguous

+
+
Ability to make buttons generate USB keyboard events
+
The extent to which this is useful reflects the target DAWs + inability to manage all of its functionality via Mackie Control +
+
Sophisticated "profile" editing
+
It is nice to be able to reassign the functionality of most + buttons, but this is only necessary because of the relatively few + global buttons on the surface. +
+
Builtin analog signal path
+
SSL clearly expects users to route audio back from their + computer via the Nucleus' own 2 channel output path, and maybe even + use the input path as well. They take up a significant amount of + surface space with the controls for this signal path, space that + could have been used for a master fader or more Mackie Control + buttons. The USB audio device requires a proprietary driver, so + Linux users can't use this, and OS X/Windows users will have to + install a device driver (very odd for a USB audio device these + days). The analog path also no doubt adds notable cost to the + Nucleus. There's nothing wrong with this feature for users that + don't already have a working analog/digital signal path for their + computers. But who is going to spend $5000 on a Nucleus that + doesn't have this already?
+
diff --git a/include/working-with-encoders.html b/include/working-with-encoders.html new file mode 100644 index 0000000..2a94968 --- /dev/null +++ b/include/working-with-encoders.html @@ -0,0 +1,57 @@ +--- +layout: default +title: Working With Encoders in Ardour +menu_title: Working With Encoders +--- + +

+ Encoders are showing up more frequently on controllers. However, they use + the same MIDI events as Continuous Controllers and they have no standard + way of sending that information as MIDI events. Ardour 4.2 has implemented + 4 of the more common ways of sending encoder information. +

+

+ Encoders that send the same continuous values as a pot would are not + discussed here as they are already supported by ctl. +

+

+ Encoders as this page talks about them send direction and offset that the + DAW will add to or subtract from the current value. +

+

+ The 4 kinds of encoder supported are: +

+ +

+ If the wrong one is chosen, either the positive or negative side will act + incorrectly. It is not really possible to auto detect which one the + controller is using. Trial and error is the only way if the specification + of the controller is not known. +

+

+ Many controllers have more than one choice as well, check the manual for + the surface. +

diff --git a/include/working-with-extenders.html b/include/working-with-extenders.html new file mode 100644 index 0000000..661d67d --- /dev/null +++ b/include/working-with-extenders.html @@ -0,0 +1,49 @@ +--- +layout: default +title: Working With Extenders +menu_title: Working With Extenders +--- + +

+ Extenders will require a custom file as there are no combinations listed + at this time. The best way is to start with the mc.device file and copy it + to a new name such as xt+mc.device and then edit that file. It is best to + name the file with the order the devices are expected to be used in as + the position of the master device is specified in this file. +

+

+ The two lines of interest are: +

+

+ <Extenders value="0"/>
+ <MasterPosition value="0"/>
+
+

+ Add these two lines if they are not present. The Extenders + value is the number of extenders used and should not include the master in + that number. +

+

+ When an Extenders value of greater than 0 is used, extra midi + ports will appear for the extenders to be connected to. The MIDI ports + for the controllers will be named mackie control #1, + mackie control #2 and up. The numbers will go from left to + right. That is, from lowest number channel to highest. +

+

+ The MasterPosition value is the port number the master unit + (with the master fader) is connected to. So if there are three surfaces, + <MasterPosition value="1"/> will expect the master on + the left, <MasterPosition value="2"/> would be master + in the middle and <MasterPosition value="3"/> would be + master on the right. So the position matches the port name. +

+

+ The default value of <MasterPosition value="0"/> has + the same effect as <MasterPosition value="1"/>. +

+

+ If the MasterPosition value does not properly match the + physcal position and MIDI port, the master fader and global controls will + not work. The master unit will act like an extender. +

diff --git a/master-doc.txt b/master-doc.txt index b55c71d..5b830fa 100644 --- a/master-doc.txt +++ b/master-doc.txt @@ -1083,11 +1083,7 @@ part: subchapter the Session > New... dialog and the Audio/MIDI Setup dialog. See New/Open Session Dialog for a description of those dialogs.

---- -title: Starting Ardour From the Command Line (Linux) -menu_title: Starting from Linux Cmdline -part: subchapter ---- +

Starting Ardour From the Command Line (Linux)

Like (almost) any other program on Linux, Ardour can be started on the @@ -1108,8 +1104,6 @@ part: subchapter

ardour5 -N /path/to/session -

Other Command Line Options

- --- title: Keyboard and Mouse Shortcuts @@ -1838,7 +1832,7 @@ part: subchapter --- -title: System Configuration +title: Ardour Configuration part: part --- @@ -4015,2994 +4009,275 @@ part: subchapter --- -title: Peripherals +title: Configuring MIDI part: chapter --- --- -title: Controlling Ardour with OSC -include: controlling-ardour-with-osc.html -exclude: yes +title: Using External MIDI Devices part: subchapter --- ---- -title: Controlling Ardour with OSC (Ardour 4.7 and Prior) -include: controlling-ardour-with-osc-4.7-and-prior.html -exclude: yes -part: subchapter ---- +

Add content

+ --- -title: OSC Feedback With Ardour +title: Setting Up MIDI part: subchapter --- +

What Can Ardour Do With MIDI?

- Feedback from the Ardour to the the control surface is very useful for - a number of things. Motor faders need to know where the the track - they have been attached to is at before they were assigned otherwise - the DAW fader will jump to where the controller fader is. Likewise, - the buttons on each strip need to know what their value is so they can - light their LED correctly. Transport controls should let you know if - they are active too. This is what feedback is all about. + MIDI is a way to describe musical + performances and to control music hardware and software.

- -

- Ardour does feedback by sending the same path back that is used to - control the same function. As such any controls that have feedback - have a parameter that is the value of the control or it's state - (on or off). In the case of OSC paths listed on the main OSC page - as having no parameter, if they have feedback, they will also work - with a 1 for button press and 0 for button release. This is because - many OSC controllers will only use exactly the same path for feedback - as for control. For example: +

Ardour can import and record MIDI data, and perform a variety of + editing operations on it. Furthermore, MIDI can be used to control + various functions of Ardour.

-
-
/transport_stop
-
-
- -

can be used also in the form:

- -
-
/transport_stop press
-
where press is an int/bool indicating if the button is pressed or not.
-
- +

MIDI Handling Frameworks

- The feedback does not have the same meaning as the control message. - Where the button release sent to Ardour will be ignored and has no - meaning. Both states have meaning in feedback to the controller. - The feedback will be: + MIDI input and output for Ardour are handled by the same "engine" + that handles audio input and output. Up to release 3.5, that means + that all MIDI I/O takes place via JACK. JACK itself uses the + native MIDI support of the operating system to receive and send + MIDI data. The native MIDI support provides device drivers for MIDI + hardware and libraries needed by software applications that want to + work with MIDI.

-
-
/transport_stop state
-
where state is an int/bool indicating if the transport is stopped or not.
+
+
OS X
+
CoreMIDI is the standard MIDI framework on OSX systems. +
+
Linux
+
+ ALSA MIDI + is the standard MIDI framework on Linux systems. +
-

- With feedback turned on, OSC control commands that try to change a - control that does not exist will get feedback that resets that control - to off. For example, sending a /strip/recenable to a buss will not work - and Ardour will try to turn the controller LED off in that case. Also - note that Pan operation may be limited by pan width in some cases. - That is with pan width at 100% (or -100%) there is no pan position - movement available. -

-

- It may come as a surprise, but feedback often generates more network - traffic than control itself does. Some things are more obvious like - head position or meters. But even a simple button push like transport - start sends not only a signal to turn on the play LED, but also one to - turn off the stop LED, the Rewind LED, the Fast Forward LED and the - Loop LED. That is still minor, think instead of a surface refresh - such as happens when the surface is first connected and then most of - that happens every time the fader strips are banked. This is why - feedback is enabled in sections so that as little feedback as is - actually needed is sent. This is also a consideration if the surface - is connected via wifi. -

-

List of OSC feedback messages

-

Feedback only

-

- These messages are feedback only. They are sent as status from Ardour - and some of them may be enabled separately from other feedback. See: - - Calculating Feedback and Strip-types Values. -

- See strip section below for info about ssid and wrapping it into the - path. Also /master and /monitor support what the /strip does. + On Linux systems, QJackCtl control software displays ALSA MIDI + ports under its "ALSA" tab (it does not currently display CoreMIDI + ports). By contrast, JACK MIDI ports show up under + the MIDI tab in QJackCtl.

+ +

JACK MIDI Configuration

- In the case where Gainmode is set to position, the track name will - show the dB value while values are changing. +By default, JACK will not automatically detect and use existing MIDI +ports on your system. You must choose one of several ways +of bridging between the native MIDI frameworks +(e.g. CoreMIDI or ALSA) and JACK MIDI, as described in the sections +below.

-
-
/strip/name ssid track_name
-
where track_name is a string representing the name of the track
-
/session_name session_name
-
where session_name is a string representing the name of the session
-
/strip/meter ssid meter
-
where meter is a value repesenting the current audio level. - (the exact math used is determined by the feedback bits set)
-
/strip/signal ssid signal
-
where signal is a float indicating the instantaneous - audio level is -40dB or higher.
-
/position/smpte time
-
where time is a string with the current play head time. Seconds as per smpte.
-
/position/bbt beat
-
where beat is a string with the current play head bar/beat.
-
/position/time time
-
where time is a string with the current play head time. Seconds are in milliseconds
-
/position/samples samples
-
where samples is a string with the current play head position in samples.
-
/heartbeat LED
-
where LED is a float that cycles 1/0 at 1 second intervals.
-
/record_tally state
-
Some record enable is true or "ready to record". For a "Recording" sign at studio door.
-
-

Transport Control

-
-
/transport_stop state
-
state is true when transport is stopped
-
/transport_play state
-
state is true when transport speed is 1.0
-
/ffwd state
-
state is true when transport is moving forward but not at speed 1.0
-
/rewind state
-
state is true when transport speed is less than 0.0
-
/loop_toggle state
-
state is true when loop mode is true
-
/cancel_all_solos state
-
Where state true indicates there are active solos that can be canceled.
-
+--- +title: MIDI on Linux +part: subchapter +--- -

Recording control

-
- -
/rec_enable_toggle state
-
Master record enabled.
-
+

The right approach for using MIDI on Linux depends on which version of +JACK you use. The world divides into:

-

Master and monitor strips

-

- Master and monitor strips are similar to track strips but do not use - the SSID. Rather they use their name as part of the path: -

-
-
/master/gain dB
-
where dB is a float ranging from -193 to +6 representing the actual gain of master in dB
-
/master/fader position
-
where position is an int ranging from 0 to 1023 representing the fader control position
-
/master/trimdB dB
-
where dB is a float ranging from -20 to +20 representing the actual trim for master in dB
-
/master/pan_stereo_position position
-
where position is a float ranging from 0 to 1 representing the actual pan position for master
-
/master/mute yn
-
where yn is a bool/int representing the actual mute state of the Master strip
-
/monitor/gain dB
-
where dB is a float ranging from -193 to 6 representing the actual gain of monitor in dB
-
/monitor/fader position
-
where position is an int ranging from 0 to 1023 representing the fader control position
+
+
Systems using JACK 1, versions 0.124 or later
+
On these systems, just start JACK with the -X alsa_midi server argument. To support legacy control applications, you can also use the -X seq argument to the ALSA backend of JACK and get the exact same results.
+
All others
+
Use a2jmidid to act as a bridge between ALSA MIDI and JACK. Do not use the -X seq or -X raw arguments—the timing and performance of these options is not acceptable. +
-

Track specific operations

-

- For each of the following, ssid is the surface strip ID for the track -

-

- Some Surfaces (many Android applets) are not able to deal with more - than one parameter in a command. However, the two parameter commands - below can also be sent as /strip/command/ssid param. Feedback can be - set to match this with the /set_surface/feedback state - command. See - Calculating Feedback and Strip-types Values. -

+

a2jmidid

-
-
/bank_up LED
-
where LED is a bool that indicates another bank_up operation is possible.
-
/bank_down LED
-
where LED is a bool that indicates another bank_down operation is possible.
-
/strip/name ssid track_name
-
where track_name is a string representing the name of the track - (note there is no coresponding command to set the track name)
-
/strip/mute ssid mute_st
-
where mute_st is a bool/int representing the actual mute state of the track
-
/strip/solo ssid solo_st
-
where solo_st is a bool/int representing the actual solo state of the track
-
/strip/monitor_input ssid monitor_st
-
where monitor_st is a bool/int. True/1 meaning the track is force to monitor input
-
/strip/monitor_disk ssid monitor_st
-
where monitor_st is a bool/int. True/1 meaning the track is force to monitor disk, - where both disk and input are false/0, auto monitoring is used.
-
/strip/recenable ssid rec_st
-
where rec_st is a bool/int representing the actual rec state of the track
-
/strip/record_safe ssid rec_st
-
where rec_st is a bool/int representing the actual record safe state of the track
-
/strip/gain ssid gain
-
where gain is a float ranging from -193 to 6 representing the actual gain of the track in dB.
-
/strip/fader ssid position
-
where position is an float ranging from 0 to 1 representing the actual fader position of the track.
-
/strip/trimdB ssid trim_db
-
where trim_db is a float ranging from -20 to 20 representing the actual trim of the track in dB.
-
/strip/pan_stereo_position ssid position
-
where position is a float ranging from 0 to 1 representing the actual pan position of the track
-
-

Selection Operations

-

- Selection feedback is the same as for strips, only the path changes - from /strip to /select and there is no ssid. - there are some extra feedback and commands that will be listed here. -

-
-
/select/n_inputs number
-
where number number of inputs for this strip
-
/select/n_outputs number
-
where number number of outputs for this strip
-
/select/comment text
-
where text is the strip comment
-
/select/solo_iso state
-
where state is a bool/int representing the Actual solo isolate state of the track
-
/select/solo_safe state
-
where state is a bool/int representing the actual solo safe/lock state of the track
-
/select/polarity invert
-
where invert is a bool/int representing the actual polarity of the track
-
/select/pan_stereo_width width
-
where width is a float ranging from 0 to 1 representing the actual pan width of the track
-
/select/send_gain", sendid send_gain
-
where sendid = nth_send, send_gainis a float - ranging from -193 to +6 representing the actual gain in dB for the send
-
/select/send_fader", sendid send_gain
-
where sendid = nth_send, send_gainis a float - ranging from 0 to 1 representing the actual position for the send as a fader
-
/select/send_name sendid send_name
-
where send_name is a string representing the name of the buss - this send goes to.
-
-

Menu actions

- Every single menu item in Ardour's GUI is accessible via OSC. However, - there is no provision for returning the state of anything set this way. - This is not a bad thing as most menu items either do not have an on/off - state or that state is quite visible. Binding that affect other parameters - that OSC does track will show on those OSC controls. Examples of this - might be track record enable for tracks 1 to 32, play or stop. + a2jmidid is an application that bridges between the system + MIDI ports and + JACK.

---- -title: Calculating Feedback and Strip-types Values -part: subchapter ---- -

- /set_surface has two values the user needs to calculate before - use. In general these will not be calculated at run time, but - beforehand. There may be more than one button with different values - to turn various kinds of feedback on or off or to determine which - kinds of strips are currently viewed/controlled. + First you should make sure that there is no ALSA sequencer support enabled + in JACK. To do that open QJackCtl's Setup window.

- Both ,feedback and strip-types use bitsets to keep - track what they are doing. Any number in a computer is made out of - bits that are on or off, but we represent them as normal base 10 - numbers. Any one bit turned on will add a unique value to the - number as a whole. So for each kind of feedback or strip type - to be used, that number should be added to the total. + Set Settings > MIDI Driver to none. + Then uncheck the Misc > Enable ALSA Sequencer + support option.
+ Now it's time to restart your jack server before going on.

-

strip_types

+

Check for a2jmidid availability

- strip_types is an integer made up of bits. The easy way to - deal with this is to think of strip_types items being worth a number and - then adding all those numbers together for a value to send. - Strip Types will determine What kind of strips will be included in - bank. This would include: Audio, MIDI, busses, VCAs, Master, Monitor - and hidden or selected strips. + First, check whether a2jmidid is already installed in your system. After + starting your JACK server, go to the command line and type

-
    -
  • - 1 - AudioTracks. -
  • -
  • - 2 - MidiTracks. -
  • -
  • - 4 - AudioBuses. -
  • -
  • - 8 - MidiBuses. -
  • -
  • - 16 - VCAs. -
  • -
  • - 32 - Master. -
  • -
  • - 64 - Monitor. -
  • -
  • - 128 - Audio Aux. -
  • -
  • - 256 - Selected. -
  • -
  • - 512 - Hidden. -
  • -
-

- Selected and Hidden bits are normally not needed as Ardour defaults to - showing Selected strips and not showing Hidden strips. The purpose of - these two flags is to allow showing only Selected strips or only - Hidden strips. Using Hidden with other flags will allow Hidden strips - to show inline with other strips. -

-

- Some handy numbers to use might be: 15 (all tracks and buses), 31 - (add VCAs to that). Master or Monitor strips are generally not useful - on a surface that has dedicated controls for these strips as there are - /master* and /monitor* commands already. However, on a surface with - just a bank of fader strips, adding master or monitor would allow - access to them within the banks. Selected would be useful for working - on a group or a set of user selected strips. Hidden shows strips the - GUI has hidden. -

-

- Audio Aux? say what? I am sure most people will have noticed that they - can find no Aux strips in the Ardour mixer. There are none. - There are buses that can be used a number of ways. From analog days, - in OSC a bus is something that gets used as a sub mix before ending up - going to Master. An auxiliary bus is used like a separate mixer and - it's output goes outside the program or computer to be used as: - a monitor mix, a back up recording, or what have you. In OSC where - controller strips may be limited, it may be useful not to use up a - strip for an aux that is not really a part of the mix. It is also - useful to get a list of only aux buses if the control surface is a - phone used to provide talent monitor mix control on stage. Each - performer would be able to mix their own monitor. The user is free - to enable both buses and auxes if they would prefer. -

- -

feedback

-

Feedback is an integer made up of bits. The easy way to - deal with this is to think of feedback items being worth a number and - then adding all those numbers together for a value to send. -

-
    -
  • - 1 - Button status for strips. -
  • -
  • - 2 - Variable control values for strips. -
  • -
  • - 4 - Send SSID as path extension. -
  • -
  • - 8 - heartbeat to surface. -
  • -
  • - 16 - Enable master section feedback. -
  • -
  • - 32 - Send Bar and Beat. -
  • -
  • - 64 - Send timecode. -
  • -
  • - 128 - Send meter as dB (-193 to +6) or 0 to 1 depending on gainmode -
  • -
  • - 256 - Send meter a 16 bit value where each bit is a level - and all bits of lower level are on. For use in a LED strip. This - will not work if the above option is turned on. -
  • -
  • - 512 - Send signal present, true if level is higher than -40dB -
  • -
  • - 1024 - Send position in samples -
  • -
  • - 2048 - Send position in time, hours, minutes, seconds and milliseconds -
  • -
  • - 8192 - Turn on extra select channel feedback beyond what a /strip supports -
  • -
+a2jmidid -e +

- So using a value of 19 would turn on feedback for strip and master - controls, but leave meters, timecode and bar/beat feedback off. + If a2jmidid does not exist, install it with the software manager of your + Linux distribution and try again.

---- -title: Parameter Types in OSC -part: subchapter ---- +

Check available MIDI ports

- An OSC message is laid out in this form: + If you have correctly configured JACK for MIDI, then your MIDI ports should appear in + qjackctl under Connections > MIDI .

- - /path/of/command type parameter - +

Making it automatic

- The type is there to indicate what the parameter is. This gives - the idea that parameter types are quite strict and if the command - requires an Integer "i" then the controller had better send it. - However, the checking of the parameter type is left to the receiving - software. +Once you've verified that the ports appear in JACK as expected, you +can make this happen whenever you start JACK.

-

- What this means in practical terms is that the surface can get away - with sending the wrong type of parameter. There are some places - where that just doesn't make sense. For example, a parameter that - is specified as a Float with a range of 0 to 1, could be sent as - an Integer, but would only have full scale and minimum value with - nothing in between. This is not much use for a fader, though ok for - a button. +

If you use a newer version of JACK 1, just make sure the -X +alsa_midi or -X seq options are enabled for whatever technique you use +to start JACK.

- There are a number of OSC controllers based on iOS and Android - tablets that only send or receive parameters as floats or text. - These controllers should have no problem sending bool or int values - as floats. Ardour will interpret the values as required. +For other versions of JACK, +add a2jmidid -e & as an "after start-up" script +in the Setup > Options tab of QJackCtl, so +that it is started automatically whenever you start JACK.

+

Is this true anymore in Ardour 5? This section may have been relevant in Ardour 3, but it might not be relevant anymore.

+ --- -title: Selection/Feedback Expansion Considerations in OSC +title: MIDI on OS X part: subchapter ---

- Ardour does not send every possible feedback value for each channel. - It does send expanded information on the selected channel. There are - also extra commands for the selected strip. All the feedback and - select commands have their own path /select. - This means that for the selected channel the surface does not have to - keep track of the strip ID. The /select strip will follow the - "current mixer strip" in the GUI editor window. -

-

- There are two major uses for this: -

    -
  1. Single strip control surfaces. Using - /access_action Editor/select-next-route or - /access_action Editor/select-prev-route - to step through the mixer strips.
  2. -
  3. Using a "Super strip" section of knobs to control parts - of the strip that are changed less often such as polarity, sends or - plugin parameters.
  4. -
-

-

- Selection in Ardour's OSC implementation are complicated by the - possibility of using more than one OSC controller at the same time. - User "A" may select strip 4 and use a selected controller to make - changes to that strip. User "B" may subsequently select strip 7 to - make changes on. This leaves user "A" making changes to strip 7 - which they did not choose. + In order for CoreMIDI to work with Jack MIDI, a CoreMIDI-to-JACK-MIDI + bridge + is required. This feature is available on versions equal to or great than + version 0.89 of JackOSX.

-

- For this reason Ardour offers local expansion aside from the GUI - selection. Local expansion only affects the one OSC controller. GUI - selection is global and affects all controllers using GUI selection - as well as the GUI. -

+

Routing MIDI

-

- In general, in a one user situation where that one user may use either - the OSC surface or the GUI, using GUI based selection makes the most - sense. This is the default because this is the more common use. -

+

Inside Ardour

- When there is more than one operator, then expansion only is the - mode of choice. It may make sense for one of the surfaces to - use GUI selection where the operator is also using the GUI for some - things. However, the set up should be carefully analyzed for the - possibility of selection confusions. Expansion should be - considered the safe option. + MIDI ports show up in Ardour's MIDI connection matrix in multiple + locations. Bridged CoreMIDI ports as well as JACK MIDI ports that have + been created by other software clients will show up under the "Other" tab. + Bridged CoreMIDI hardware ports show up under the "Hardware" tab.

-

- It is always ok to use expansion on the surface even in a one - user scenario. This allows the user to use GUI and surface selection - for different uses. -

+

External Applications

- It is also possible to use both if desired. /strip/select will ways - set the GUI select, but /strip/expand will set the select feedback - and commands locally without changing the GUI select. Another - /strip/expand or a /strip/select will override that expand command - and releasing the /strip/expand or /select/expand (setting it to 0 or - false) will set the /select set of commands/feedback back to whichever - strip the GUI has selected at that time. This could be used to switch - between the GUI select and the local expand to compare two strips - settings. + There are multiple options for connecting MIDI ports outside of Ardour.

---- -title: Using the OSC Setup Dialog -part: subchapter ---- +
    +
  • MIDI Monitor is a handy + tool for doing various MIDI-related tasks.
  • +
  • MIDI Patchbay lets you + connect ports and filters MIDI data.
  • +
-

- Starting with Ardour 5.1 OSC has a graphic setup dialog. This dialog - can be accessed from Preferences->Control Surfaces. Select OSC and - click on the Show Protocol Settings. -

-

- The Ardour OSC dialog has three tabs. The main tab, the Strip Types - tab and the Feedback tab. -

-

- Many OSC devices get their IP from a DHCP making it difficult to set - an IP in Ardour's OSC settings. Therefore, most of the settings are - default settings. Values are set and the next OSC surface to - send a /set_surface* message to Ardour will use those settings. An OSC - surface that has previously sent a message to Ardour will retain the - settings it already had. The Clear OSC Devices will reset all - device settings. A /refresh message will both reset the - device settings as well as set that device to any new settings. The - Use of /set_surface will override all settings except - Port Mode. -

-

Dialog settings

+--- +title: Ardour's Interface +part: part +--- -

OSC setup tab

+ +--- +title: About Ardour's Interface +part: chapter +---

-the OSC configuration dialog + In Ardour, you work in two main windows: the Editor and the + Mixer.

-

Connection:

+
+ Ardour's editor window + Ardour's mixer window +
+
    +
  1. Main menu
  2. +
  3. Status bar
  4. +
    +
  1. Transport bar & Times
  2. +
  3. Mode switch
  4. +
    +
  1. The Mixer window
  2. +
  3. The Editor window
  4. +
+
+

- This field is informational only. It shows where Ardour will receive - OSC messages. The system Name and the Port are the most important parts. + Switching between the Editor and the Mixer windows done:

-

Port Mode:

+
    +
  • with the Mode Switch buttons (#4 in the screenshot) in the upper right
  • +
  • with the M shortcut
  • +
  • with the menu Window > Editor (or Mixer) > Show.
  • +

- This drop down allows the choice of Auto or Manual outbound port - setting. The default Auto port mode, will send OSC messages back to - the port messages from that surface are received from. This setting - allows two surfaces on the same IP to operate independently. However, - there are a number of OSC control surfaces that do not monitor the - same port they send from and in fact may change ports they send from - as well. Manual allows the outgoing port (the port the surface will - receive on, to be manually set. In Manual port mode only one control - surface per IP can work. Most phone or tablet OSC controllers like - touchOSC or Control need Manual port mode. More than one controller - can be used so long as each has it's own IP. + Both windows can be visible at the same time (eg. for a multi-monitor + setup) using Window > Editor (or Mixer) > Detach option in the same submenu.

-

Manual Port:

+
+ +

Which of these two should be there? They seem to have the same content…

- This is an Entry box for setting the outgoing port when in - Manual port mode. + In Ardour, you work in two main windows: the Editor and the Mixer.

-

Bank Size:

+
+ Ardour's mixer window + Ardour's editor window +
+
    +
  1. Main menu
  2. +
  3. Status bar
  4. +
  5. Transport bar & Times
  6. +
    +
  1. Mode switch
  2. +
  3. The Editor window
  4. +
  5. a track's mixer strip
  6. +
    +
  1. Editors List
  2. +
  3. The Mixer window
  4. +
  5. Favorite plugins
  6. +
    +
  1. Track list
  2. +
  3. Group list
  4. +
  5. Master strip
  6. +
+
+

- This sets the default bank size for the next surface to send a - /set_surface/* OSC message. Bank size 0 (the default) sets - no banking and allows controlling all strips included in strip_types - at once. + To switch between those windows, use the buttons (#4 Mode switch in the upper right), the shortcut M, or the menu Window > Editor (or Mixer) > Show. Both windows can be visible at the same time (eg. for a multi-monitor setup) using Detach in the same menu.

-

Gain Mode:

- -

- Sets the faders (and sends faders) feedback math to position where a - value between 0 and 1 represents the fader position of the same fader - in the mixer GUI or dB where the feedback from fader movement will be - returned as a dB value. When the Gain Mode is set to position, the - /*/name feedback for the channel will show dB values in text while the - fader is being adjusted and then return the the name text. -

-

Debug:

-

- For debugging purposes this allows logging either good OSC messages - Ardour receives or invalid messages received or none. -

-

Preset:

-

- Ardour now allows the use of preset settings. The default settings - used are the settings from the last session or the factory defaults - the first time OSC is enabled. As soon as any of these settings are - changed, the Preset will change to "User" and the new settings will be - save to the osc directory Ardour configuration directory as - user.preset. This preset file can be renamed for future use. - It is suggested to also change the name value inside to avoid confusion - in the preset listing. Ardour will ship with some of it's own presets - that go with some popular OSC control and map combinations. -

-

Clear OSC Devices

-

- This button clears operating device profiles so that Ardour will reset - all devices settings to use the new defaults from changed settings. a - device may still override these new settings with the /set_surface set - of commands. The reason for setting defaults settings is that some OSC - controllers are not able to send more than one parameter at a time and - so having correct defaults allows one "Connect" button rather than 4. -

-

Default Strip Types tab

-

-the Default Strip Types tab -

-

- This allows selecting which of Ardour's mixer strips will be available - for control. The Factory default is all strips except master, monitor - and hidden strips. If it is desired to only see input tracks the - others can be deselected. It is also possible to change these settings - from the control surface. A set of buttons could select showing only - inputs or only buses. If a group is selected in the GUI then showing - only selected strips will show only that group. Showing hidden tracks - is handy for cases where a groups of tracks that grouped to a bus or - controlled by a VCA are hidden, but one of those tracks needs a tweak. -

- -

Default Feedback tab

- -

-the Default Feedback tab -

- -

- This allows setting up which controls provide feedback. The Factory - default is none. If the controller is unable to receive feedback, this - should be left blank. In the case of metering, Metering as a LED strip - only works if Metering as a Float is disabled. -

- ---- -title: Querying Ardour with OSC -part: subchapter ---- - -

- In order to make a custom controller that knows what strips Ardour - has, the controller needs to be able to query Ardour for that - information. These set of commands are for smarter control surfaces - That have the logic to figure out what to do with the information. - These are not of value for mapped controllers like touchOSC and - friends. The controller will need to send these queries to ardour - as often as it needs this information. It may well make sense to use - regular feedback for things that need to be updated often such as - position or metering. - Here are the commands used to query Ardour: -

- -
-
/strip/list
-
Ask for a list of strips
-
/strip/sends ssid
-
Asks for a list of sends on the strip ssid
-
/strip/receives ssid
-
Asks for a list of tracks that have sends to the strip ssid points to
-
/strip/plugin/list ssid
-
Asks for a list of plug-ins for strip ssid.
-
/plugin/descriptor ssid piid
-
Asks for a list of descriptors for plug-in piid on strip ssid
-
- -

A list of strips

- -

- /strip/list asks Ardour for a list of strips that the - current session has. Ardour replies with a message for each - strip with the following information: -

    -
  • Strip type
  • -
  • Strip name
  • -
  • Number of inputs
  • -
  • Number of outputs
  • -
  • Muted (bool)
  • -
  • Soloed (bool)
  • -
  • Ssid (strip number)
  • -
  • Record enabled (bool)
  • -
- After all the strip messages have been sent, one final message is - sent with: -
    -
  • The text end_route_list
  • -
  • The session frame rate
  • -
  • The last frame number of the session
  • -
-

-

A bus will not have a record enable and so a bus message - will have one less parameter than a track. It is the controllers - responsability to deal with this. -

- -

A list of sends

-

- /strip/sends ssid asks Ardour for a list of - sends for strip number ssid. The reply is sent back to the - controller as one message with the following information: -

    -
  • Ssid that information is for
  • -
  • Each send's information:
  • -
      -
    • The send's target bus ssid
    • -
    • The send's target bus name
    • -
    • The send id for this strip
    • -
    • The send gain as a fader possition
    • -
    • The Send's enable state
    • -
    -
-

-

- The controller can tell how many sends there are from the number of - parameters as each send has 5 parameters and there is one extra for - ssid. -

- -

A list if tracks that send audio to a bus

-

- /strip/receives ssid will return a list of - tracks that have sends to the bus at the ssid. The reply will - contain the following information for each track conntected to this - bus: -

    -
  • The ssid of the track sending
  • -
  • The name of the sending track
  • -
  • The id of the send at that track
  • -
  • It's gain in fader possition
  • -
  • The send's enable state
  • -
-

- -

A list of plug-ins for strip

-

- /strip/plugin/list ssid will return a list of - plug-ins that strip ssid has. The reply will contain the following - information: -

    -
  • Ssid that information is for
  • -
  • Each plugin's information:
  • -
      -
    • The plug-in's id
    • -
    • The plug-in's name
    • -
    -
-

- -

A list of a plug-in's parameters

-

- /plugin/descriptor ssid piid will - return the plug-in parameters for ppid plug-in on the ssid strip. The - reply will contain the following information: -

    -
  • Ssid of the strip the plug-in is in
  • -
  • The plug-in id for the plug-in
  • -
  • The plug-in's name
  • -
  • Information about each parameter
  • -
      -
    • The parameter id
    • -
    • The parameter's name
    • -
    • A bitset of flags (see below)
    • -
    • Data type
    • -
    • Minimum value
    • -
    • Maximum value
    • -
    • The number of scale points
    • -
    • zero or more scale points of one value and one string each
    • -
    • The current parameter value
    • -
    -
-

- -

- The flag bitset above has been defined as (from lsb): -

    -
  • 0 - enumeration
  • -
  • 1 - integer step
  • -
  • 2 - logarithmic
  • -
  • 3 - max unbound
  • -
  • 4 - min unbound
  • -
  • 5 - sample rate dependent
  • -
  • 6 - toggled
  • -
  • 7 - controllable
  • -
-

- -

- While this seems complex, it is really not that bad. Minimum, maximum and value will in most cases give you all you need. -

- ---- -title: Devices using Mackie/Logic Control Protocol -menu_title: Mackie/Logic Control Devices -part: subchapter ---- - -

- This will walk you through the process of configuring and using - a MIDI control surface with Ardour that uses the Mackie Control - protocol (MCP) or Logic Control protocol. Devices that - have been tested and are known to work include the SSL Nucleus, Mackie - Control Pro (plus extenders), Behringer devices in Mackie/Logic mode, - and Steinberg CMC devices. -

- -

Enabling Mackie Control in Ardour

- -

- Navigate to Edit > Preferences > Control Surfaces. - Double-click on Mackie Control to see the setup dialog: -

- -Mackie Control Setup Dialog - -

- From the selector at the top, choose the type of device you are using. - ( - What to do if your device is not listed). -

- -

- Once your setup is complete, click "OK" to close the dialog. Now click - on the enable checkbox for "Mackie Control". -

- -

Connecting control surface and Ardour MIDI ports

- -

- If you are using a device that uses ipMIDI, such as the SSL Nucleus, no - MIDI port connections are required—Ardour and your control - surface will be able to talk to each other automatically. -

- -

- If you are using a device that uses normal MIDI (via a standard MIDI or - USB cable), you need to connect Ardour's Mackie Control in and out ports - to the MIDI ports leading to and coming from the control surface. -

- -

- When you have made these connections once, Ardour will recreate them - for you in the future, as long as you leave Mackie Control enabled. -

- -

Customizing your control surface

- -

- Every possible Mackie Control button can be bound to any action present - in Ardour's GUI. Please check your control surface page for suggestions. -

- -

Preparing your device for use with Ardour

- -

- Most interfaces will require some configuration to send and respond to - MCP. -

- -

- When setting up the control surface, do not use "Pro Tools" - mode. Pro Tools is the only DAW that still requires HUI. The rest of - world uses Mackie Control Protocol. Ardour does not support HUI. -

- ---- -title: Behringer devices in Mackie/Logic Control Mode -menu_title: Behringer devices -part: subchapter ---- - -

Behringer BCF-2000 Faders Controller

- -

- Digramatic Image of the BCF2000 -

- -

- The Behringer BCF-2000 Fader Controller is a control surface with 8 motorized - faders, 8 rotary encoders and 30 push buttons. The device is a class - compliant USB Midi Interface and also has standard Midi DIN IN/OUT/THRU ports. - The device has included a Mackie/Logic Control Emulation Mode since firmware v1.06. - If you're devices firmware is older than v1.06 it will require an update before - Mackie Control Emulation will work as described here. -

- -

- Digramatic Image of the BCF2000 in Edit Global Mode -

- -

- In order to put the controller into Mackie/Logic control mode turn on the - unit while holding third button from the left in the top most row - of buttons (under the rotary encoder row). Hold the button down until EG - or edit global mode is displayed on the LCD screen of the unit. The global parameters - can then be edited using the 8 rotary encoders in the top row. -

-
    -
  • - Encoder #1 sets the operating mode and should be set to U-1 or - USB mode 1 if using with a USB cable connection. -
  • -
  • - Encoder #3 sets the foot switch mode and should most likely be set to - Auto to detect how the foot switch is wired. -
  • -
  • - Encoder #5 sets the device id, if you are using only 1 device the id - should be set to ID 1. If you are using multiple BCF/BCR2000 each - device is required to be set up sequentially and one at a time. -
  • -
  • - Encoder #7 controls the MIDI Dead Time or the amount of milliseconds - after a move has been made that the device ignores further changes, this - should be set to 100. -
  • -
  • - Encoder #8 controls the MIDI message Send Interval in milliseconds - and should be set to 10 -
  • -
-

- To exit the EG mode press the Exit button. The device is now - ready to use with Ardour. -

- -

Modes of Operation

-

- Digramatic Image of the BCF2000 Control Modes -

-

- The four buttons arranged in a rectangle and located under the Behringer logo - are the mode selection buttons in Logic Control Emulation Mode, - currently Ardour has implemented support for two of these modes. -

-

-The surface can be broken into 8 groups of controls. -

- -
    -
  1. The rotary encoders at the top of the device
  2. -
  3. The first row of buttons under the encoders
  4. -
  5. The second row of buttons under the encoders
  6. -
  7. The row of motorized faders
  8. -
  9. - The group of 4 buttons at the top right that will be - referred to here as the Shift Group -
  10. -
  11. - The group of 4 buttons under the Shift Group - referred to here as the Mode Group -
  12. -
  13. - The group of 2 buttons under the Mode Group - referred to here as the Select Group -
  14. -
  15. - The group of 4 buttons under the Select Group - referred to here as the Transport Group -
  16. -
- -

Mixer Pan Mode

-

- Digramatic Image of the BCF2000 Control Modes -

-

- This is the standard work mode that organizes the control surface to emulate - a standard mixer layout where controls for each track/bus are arranged vertically. - The order of the faders is either controlled by the order of the tracks in the - mixer or can be set manually by the user. -

-
-
Encoders
-
Mixer Pans. The red LEDs show the amount of pan left or right
-
First Row of Buttons
-
Mixer Mutes. The button led lights if the track is currently muted
-
Second Row of Buttons
-
Select Active Track/Bus. Currently selected track/bus is indicated by the button led
-
Faders
-
Mixer Gains
-
Shift Group
-
- The top and bottom left buttons are the simply shifts to change the function of other buttons -
-
- The top right is the Fine Control button that allows the increment values sent by - by rotary encoders and faders to be a small value for more precise editing. This button - can also act as a shift button. -
-
- The bottom right is the Global Shift button that allows you to change back to the - standard Mixer Pan view from other views and modes. This button can also act as a shift button. -
-
Mode Group
-
The top two buttons functions are not currently implemented in Ardour.
-
The bottom left button sets the device to Pan mode and should currently be lit
-
- The bottom right button sets the device to Send mode but will only allow the switch - if the currently selected track/bus has a send or sends to control. -
-
Select Group
-
- In this mode they function as bank select left and right. If your session has more than 8 tracks - the next set of 8 tracks is selected with the right button and the faders will move to match the - current gain settings of that bank of 8 tracks/busses. If the last bank contains less than 8 - tracks/busses the unused faders will move to the bottom and the pan lights will all turn - off. An unlimited amount of tracks can be controlled with the device. -
-
Transport Group
-
The upper left button controls Rewind. -
The upper right button controls Fast Foreword -
The lower left button controls stop
-
The lower right button controls play
-
-

Send Mode

-

- Digramatic Image of the Send Mode -

-

- Send mode allows for the top row of encoders to control the sends for a selected channel. - One interesting option is to flip the controls from the encoders to the faders by pressing - the shift 1 button and the global view button at the same time. -

-
-
Encoders
-
- In send mode, the encoders control sends from left to right instead of mixer pans. - If there are less than 8 sends the behavior of the encoder will be to continue controlling - the mixer pan. Visually it's indicated by the change in the LED from originating at the 12 - o'clock position to originating at the 7 o'clock position. If FLIP is pressed - the encoder will control the mixer gain for the selected track/bus. -
-
First row of buttons
-
No Change
-
Second row of buttons
-
No Change.
-
Faders
-
- No change unless FLIPis pressed then it controls the send for the selected track/bus. -
-
Shift Group
-
No Change
-
Select Group
-
No Change
-
Transport Group
-
No Change
-
-

Mixer Pan While Holding Shift 1

-

- Digramatic Image of the Mixer Mode while holding down shift 1 -

-

- The operations of various buttons change while holding down the Shift 1 button -

-
-
Encoders
-
No Change
-
First row of buttons
-
These now control the Soloing of each track/bus in the current bank
-
Second row of buttons
-
These now control the Enable Record for each track
-
Faders
-
No Change
-
Shift Group
-
No change
-
Mode Group
-
No Change
-
Select Group
-
- These now change the current bank of tracks being controlled over by - one. So if you where controlling tracks 1-8 a push the right - button the surface would now control tracks 2-9 pressing the left - would then shift back to controlling tracks 1-8. -
-
Transport Group
-
The upper left now controls turning on and off Loop mode.
-
- The upper right now toggles - Click. -
-
The lower left toggles Replace.
-
- The lower right toggles - Global Record. -
-
-

Mixer Pan While Holding Shift 2

-

- Digramatic Image of the Mixer Mode while holding down shift 2 -

-

- The operations of various buttons change while holding down the Shift 2 button -

-
-
Encoders
-
No Change
-
First row of buttons
-
FIX ME
-
Second row of buttons
-
These now control setting up different Views. See bellow for more info
-
Faders
-
No Change
-
Shift Group
-
No change
-
Mode Group
-
No Change
-
Select Group
-
Left button controls Undo(NEEDS VERIFIED)
-
Transport Group
-
FIX ME
-
FIX ME
-
FIX ME
-
FIX ME
-
- -

Views

- -

- Digramatic Image of the LED display for different Views -

- -

FIX ME

- ---- -title: SSL Nucleus -part: subchapter ---- - -

- The Nucleus, from Solid State Logic, is a 16 fader Mackie Control - device that includes many buttons, separate meters, two LCD displays - and other features. The device is not cheap (around US$5000 at the - time of writing), and has some design features - (or lack thereof) which some Ardour developers find - questionable. Nevertheless, it is a very flexible device, and makes - a nice 16 fader surface without the need to somehow attach an - extender to your main surface. -

- -

Pre-configuring the Nucleus

- -

- Your Nucleus comes complete with a number of "profiles" for a few - well-known DAWs. At the time of writing it does not include one for - Ardour (or related products such as Harrison Mixbus). -

-

- We have prepared a profile in which as many buttons as possible send - Mackie Control messages, which makes the device maximally useful - with Ardour (and Mixbus). You can - download the - profile - and load it to your Nucleus using the Edit Profiles - button in SSL's Nucleus Remote application. Be sure to select it for - the active DAW layer in order to make Ardour work as well as - possible. Note: unfortunately, the Nucleus Remote application - only runs on OS X or Windows, so Linux users will need access to - another system to load the profile. We will provide notes on the - profile settings at a future time. -

- -

Connecting the Nucleus

- -

- Unlike most Mackie Control devices, the Nucleus uses an ethernet - connection to send and receive the MIDI messages that make up the - Mackie Control protocol. Specifically, it uses a technology called - "ipMIDI" which essentially "broadcasts" MIDI messages on a local - area network, so that any connected devices (computers, control - surfaces, tablets etc.) can participate. -

-

- All other DAWs so far that support the Nucleus have chosen to do so - by using a 3rd party MIDI driver called "ipMIDI", which creates a - number of "virtual" MIDI ports on your computer. You, the user, - tells the DAW which ports to connect to, and ipMIDI takes care of - the rest. -

-

- Ardour has builtin ipMIDI support, with no need of any 3rd party - packages, and no need to identify the "ports" to connect to in order - to communicate with the Nucleus. This makes setting it up a bit - easier than most other systems. -

-

- Unless ... you already installed the ipMIDI driver in order to use - some other DAW with your Nucleus. If ipMIDI is configured to create - any "ports", it is not possible for Ardour's own ipMIDI support to - function. We decided to offer both methods of communicating with - your Nucleus. If you regularly use other DAWs, and appreciate having - ipMIDI permanently set up to communication with the Nucleus—that's - OK, you can tell Ardour to use the ipMIDI driver you already - have. But if you're not using other DAWs with the Nucleus (and thus - have not installed the ipMIDI driver), then you can ignore the - ipMIDI driver entirely, and let Ardour connect directly with no - configuration. -

- -

Connecting via Ardour's own ipMIDI support

- -

- This is usable only on computers with no 3rd party ipMIDI - driver software installed and configured. If you have the OS X or - Windows ipMIDI driver from nerds.de, it MUST be - configured to offer ZERO ports before using this - method. -

- -

- Open Preferences > Control Surfaces. Ensure that the - Mackie protocol is enabled, then double-click on it to open the - Mackie Control setup dialog. -

-

- Ensure that the device selected is "SSL Nucleus". The dialog should - show a single numerical selector control below it, defining the - ipMIDI port number to use (it should almost always be left at the - default value of 21928). -

-

- Communication is automatically established with the Nucleus and you - need do nothing more. -

-

- If this does not work, then make sure your network cables are - properly connected, and that you are not running - other ipMIDI software on the computer. -

- -

Connecting via 3rd party ipMIDI support

- -

- This is usable only on computers with 3rd party ipMIDI - driver software installed and configured for (at least) 2 ports. -

- -

- Open Preferences > Control Surfaces. Ensure that the - Mackie protocol is enabled, then double-click on it to open the - Mackie Control setup dialog. -

-

- Ensure that the device selected is "SSL Nucleus (via platform MIDI)". The dialog should - show four combo/dropdown selectors, labelled (respectively): -

-
    -
  • Main Surface receives via
  • -
  • Main Surface sends via
  • -
  • 1st extender receives via
  • -
  • 1st extender sends via
  • -
-

- You should choose "ipMIDI port 1", "ipMIDI port 1", "ipMIDI port 2" - and "ipMIDI port 2" for each of the 4 combo/dropdown selectors. -

-

- Communication should be automatically established with the Nucleus. -

-

- If this does not work, then make sure your network cables are - properly connected, and that you are running the approprate ipMIDI - driver and have configured it for 2 (or more) ports. -

- -

Nucleus Design Discussion

- -

- You might be reading this part of the manual seeking some guidance - on whether the Nucleus would make a suitable control surface for - your workflows. We don't want to try to answer that question - definitively, since the real answer depends on the very specific - details of your workflow and situation, but we would like to point - out a number of design features of the Nucleus that might change - your opinion. -

- -

Cons

-
-
No Master Faster
-
It is not possible to control the level of the Master bus or - Monitor section. Really don't know what SSL was thinking here.
-
No dedicated rec-enable buttons
-
You have to press the "Rec" button and convert the per-strip - "Select" buttons into rec-enables
-
No dedicated automation buttons
-
You have to press the "Auto" button and convert the first 4 - vpots into 4 automation-related buttons, losing your current view - of the session.
-
No buttons with Mackie-defined "Marker" functionality
-
Mackie's design intentions for the interoperation of the - Marker, rewind and ffwd buttons requires profile editing in order - to function properly. -
-
No "Dyn" button
-
This is hard to assign in an edited profile. To be fair, other - Mackie Control devices also lack this button. -
-
- -

Pros

-
-
Single cable connectivity
-
No need for multiple MIDI cables to get 16 faders
-
Broadcast connectivity
-
Connecting to multiple computers does not require recabling
-
16 faders from a single box
-
No need to figure out how to keep extenders together
-
Meters separated from displays
-
Contrast with the Mackie Control Universal Pro, where meters - interfere with the display -
-
DAW profiles
-
Easy to flip profiles for use by different DAWs.
-
- - -

Ambiguous

-
-
Ability to make buttons generate USB keyboard events
-
The extent to which this is useful reflects the target DAWs - inability to manage all of its functionality via Mackie Control -
-
Sophisticated "profile" editing
-
It is nice to be able to reassign the functionality of most - buttons, but this is only necessary because of the relatively few - global buttons on the surface. -
-
Builtin analog signal path
-
SSL clearly expects users to route audio back from their - computer via the Nucleus' own 2 channel output path, and maybe even - use the input path as well. They take up a significant amount of - surface space with the controls for this signal path, space that - could have been used for a master fader or more Mackie Control - buttons. The USB audio device requires a proprietary driver, so - Linux users can't use this, and OS X/Windows users will have to - install a device driver (very odd for a USB audio device these - days). The analog path also no doubt adds notable cost to the - Nucleus. There's nothing wrong with this feature for users that - don't already have a working analog/digital signal path for their - computers. But who is going to spend $5000 on a Nucleus that - doesn't have this already?
-
- ---- -title: Mackie Control Setup on Linux -part: subchapter ---- - -

Devices using ipMIDI

- -

- If you are using a device like the SSL Nucleus that uses ipMIDI, - no set up is required other than to ensure that your control surface - and computer are both connected to the same network. -

- -

Devices using conventional MIDI

- -

- Before attempting to use a Mackie Control device that communicates via - a standard MIDI cable or a USB cable, you should ensure that - your Linux - MIDI environment is setup. -

- ---- -title: What to do if your Device is not Listed -menu_title: Unlisted devices -part: subchapter ---- - -

- All Mackie Control devices are based on the original Logic Control and the - documentation in the user manual that came with it. The Mackie Control and - the Mackie Control Pro and so on, all use this same protocol. Any units - from other manufactures will also use the same encoding as best the - hardware will allow. If the unit in use has more than one Mackie Control - option, it is best to choose Logic Control or LC. Any Templates for the - buttons should be chosen the same way as the Function key Editor uses these - button names. The "Mackie Control" option should be considered default and - should be tried with any unlisted device before attemping to create a - custom definition file. -

- ---- -title: Working With Extenders -menu_title: Working With Extenders -part: subchapter ---- - -

- Extenders will require a custom file as there are no combinations listed - at this time. The best way is to start with the mc.device file and copy it - to a new name such as xt+mc.device and then edit that file. It is best to - name the file with the order the devices are expected to be used in as - the position of the master device is specified in this file. -

- -

- The two lines of interest are: -

- -

- <Extenders value="0"/>
- <MasterPosition value="0"/>
-
- -

- Add these two lines if they are not present. The Extenders - value is the number of extenders used and should not include the master in - that number. -

- -

- When an Extenders value of greater than 0 is used, extra midi - ports will appear for the extenders to be connected to. The MIDI ports - for the controllers will be named mackie control #1, - mackie control #2 and up. The numbers will go from left to - right. That is, from lowest number channel to highest. -

- -

- The MasterPosition value is the port number the master unit - (with the master fader) is connected to. So if there are three surfaces, - <MasterPosition value="1"/> will expect the master on - the left, <MasterPosition value="2"/> would be master - in the middle and <MasterPosition value="3"/> would be - master on the right. So the position matches the port name. -

- -

- The default value of <MasterPosition value="0"/> has - the same effect as <MasterPosition value="1"/>. -

- -

- If the MasterPosition value does not properly match the - physcal position and MIDI port, the master fader and global controls will - not work. The master unit will act like an extender. -

- ---- -title: MIDI Binding Maps -part: subchapter ---- - -

- Ardour 2.X supported - MIDI learning - for more or less any control. This was a nice feature that quite a few other - DAWs are providing by now, but it didn't allow Ardour to work "out of the - box" with sensible defaults for existing commercial MIDI - controllers. In Ardour 3 and later versions, we have augmented the - MIDI learn feature with the ability to load a MIDI binding map - for a given controller, which can set up an arbitrary number of physical - controls with anything inside Ardour that can be controlled. -

- -

- Currently (August 2016), we have presets for the following devices/modes: -

- -
    -
  • AKAI MPD-32
  • -
  • AKAI MPK61
  • -
  • AKAI MPKmini
  • -
  • Behringer BCF2000
  • -
  • Behringer BCF2000 (Mackie Emulation mode; better to use - Ardour's actual Mackie Control Protocol support)
  • -
  • Behringer DDX3216
  • -
  • Korg nanoKONTROL (2 layouts)
  • -
  • Korg nanoKONTROL 2 (2 layouts)
  • -
  • Korg Taktile
  • -
  • M-Audio Axiom 25 (2 layouts)
  • -
  • M-Audio Axiom 61
  • -
  • M-Audio Oxygen 49
  • -
  • M-Audio Oxygen 61v3
  • -
  • M-Audio Oxygen 25
  • -
  • M-Audio Oxygen 8v2
  • -
  • Novation Impulse 49
  • -
  • Novation Impulse 61
  • -
  • Novation LaunchControl XL
  • -
  • Novation LaunchKey 25
  • -
  • Roland SI-24
  • -
  • Roland V Studio 20
  • -
  • Yamaha KX25
  • -
- At this time, new binding maps need to be created with a text editor. -

- MIDI binding maps are accessible by double-clicking Edit - > Preferences > Control Surfaces > Generic MIDI. Ardour will - retain your selection after you choose one. -

- -

Creating new MIDI maps

-

The Basic Concept

-

- Since the beginning of time (well, sometime early in the 2.X series), - Ardour has had the concept of identifying each track and bus with a - remote control ID. This ID uniquely identifies a track or bus - so that when messages arrive from elsewhere via MIDI or OSC , we can determine - which track or bus they are intended to control. Ardour has a - number - of ways of assigning remote control IDs, but they don't really matter - very much when creating MIDI binding maps, so we won't discuss that here. - You just need to know that there is a "first track" and its remote control - ID is 1, and so on. -

-

Getting Started

-

- MIDI bindings are stored in files with the suffix ".map" attached to their - name. The minimal content looks like this: -

-
-<?xml version="1.0" encoding="UTF-8"?>
-<ArdourMIDIBindings version="1.0.0" name="The name of this set of
-bindings">
-</ArdourMIDIBindings>
-
-

- So, to start, create a file with that as the initial contents. -

-

- On OS X, Ardour loads midi maps from its binary-bundle folder in - Ardour-<version>/midi_maps/ and checks - various other locations as well (defined by the ARDOUR_MIDIMAPS_PATH - environment variable). On GNU/Linux the easiest is to save the file to - ~/.config/ardour3/midi_maps/. -

- -

Finding out what your MIDI control surface sends

-

- This is the most complex part of the job, but its still not very hard. - You need to connect the control surface to an application that will show - you the information that the device sends each time you modify a knob, - slider, button etc. There are a variety of such applications (notably - gmidimon and kmidimon, but you can actually use - Ardour for this if you want. Start Ardour in a terminal window, connect - MIDI ports up, and in the Preferences window, enable "Trace Input" on the - relevant MIDI port. A full trace of the MIDI data received will show up in - the terminal window. (Note: in Ardour3, you get a dedicated, custom dialog - for this kind of tracing.) -

-

Types of Bindings

-

- There are two basic kinds of bindings you can make between a MIDI message - and something inside Ardour. The first is a binding to a specific parameter - of a track or bus. The second is a binding to a function that will change - Ardour's state in some way. -

-

Binding to Track/Bus controls

-

- A track/bus binding has one of two basic structures -

- - <Binding msg specification uri="... control address ..."/> - <Binding msg specification function="... function name ..."/> - - -

Message specifications

-

- You can create a binding for either 3 types of channel messages, or for a - system exclusive ("sysex") message. A channel message specification looks - like this: -

- - <Binding channel="1" ctl="13" .... - -

- This defines a binding for a MIDI Continuous Controller message involving - controller 13, arriving on channel 1. There are 16 MIDI channels, numbered - 1 to 16. Where the example above says ctl, you can alternatively - use note (to create binding for a Note On message) or - pgm (to create a binding for a Program Change message). -

-

- As of Ardour 4.2, enc-r, enc-l, enc-2 and - enc-b may be used for surfaces that have encoders that send - offsets rather than values. These accept Continuous Controller messages - but treat them as offsets. These are good for banked controls as they are - always at the right spot to start adjusting. ( - - Learn more about working with encoders - ) -

-

- You can also bind sysex messages: -

- - <Binding sysex="f0 0 0 e 9 0 5b f7" .... - <Binding sysex="f0 7f 0 6 7 f7" .... - -

- The string after the sysex= part is the sequence of MIDI bytes, - as hexadecimal values, that make up the sysex message. -

-

- Finally, you can bind a totally arbitrary MIDI message:

- - <Binding msg="f0 0 0 e 9 0 5b f7" .... - <Binding msg="80 60 40" .... - -

- The string after the msg= part is the sequence of MIDI bytes, as - hexadecimal values, that make up the message you want to bind. Using this is - slightly less efficient than the other variants shown above, but is useful for - some oddly designed control devices. -

- -

- As of Ardour 4.6 it is possible to use multi-event MIDI strings such as - two event CC messages, RPN or NRPN. -

- -

- The sysex= and msg= bindings will only work with - function= or action= control addresses. They - will not work with the uri= control addresses. - Controls used with uri= require a Value which is - only available in a known place with channel mode MIDI events. -

- -

Control address

-

- A control address defines what the binding will actually control. - There are quite a few different things that can be specified here: -

-
-
/route/gain
-
the gain control ("fader") for the track/bus
-
/route/trim
-
the trim control for the track/bus (new in 4.1)
-
/route/solo
-
a toggleable control for solo (and listen) of the track/bus
-
/route/mute
-
a toggleable control to mute/unmute the track/bus
-
/route/recenable
-
a toggleable control to record-enable the track
-
/route/panwidth
-
interpreted by the track/bus panner, should control image "width"
-
/route/pandirection
-
interpreted by the track/bus panner, should control image "direction"
-
/route/plugin/parameter
-
the Mth parameter of the Nth plugin of a track/bus -
-
/route/send/gain
-
the gain control ("fader") of the Nth send of a track/bus
-
-

Each of the specifications needs an address, which takes various forms too. For track-level controls (solo/gain/mute/recenable), the address is one the following:

-
-
a number, eg. "1" -
-
identifies a track or bus by its remote control ID -
-
B, followed by a number -
-
identifies a track or bus by its remote control ID within the current bank (see below for more on banks) -
-
one or more words -
-
identifies a track or bus by its name -
-
-

- For send/insert/plugin controls, the address consists of a track/bus - address (as just described) followed by a number identifying the plugin/send - (starting from 1). For plugin parameters, there is an additional third - component: a number identifying the plugin parameter number (starting from - 1). -

-

- One additional feature: for solo and mute bindings, you can also add - momentary="yes" after the control address. This is useful - primarily for NoteOn bindings—when Ardour gets the NoteOn it - will solo or mute the targetted track or bus, but then when a NoteOff - arrives, it will un-solo or un-mute it. -

- -

Bindings to Ardour "functions"

-

- Rather than binding to a specific track/bus control, it may be useful to - have a MIDI controller able to alter some part of Ardour's state. A - binding definition that does this looks like this: -

- - <Binding channel="1" note="13" function="transport-roll"/> - -

- In this case, a NoteOn message for note number 13 (on channel 1) will - start the transport rolling. The following function names are available: -

-
-
-transport-stop -
-
stop the transport -
-
-transport-roll -
-
start the transport "rolling" -
-
-transport-zero -
-
move the playhead to the zero position -
-
-transport-start -
-
move the playhead to the start marker -
-
-transport-end -
-
move the playhead to the end marker -
-
-loop-toggle -
-
turn on loop playback -
-
-rec-enable -
-
enable the global record button -
-
-rec-disable -
-
disable the global record button -
-
-next-bank -
-
Move track/bus mapping to the next bank (see Banks below) -
-
-prev-bank -
-
Move track/bus mapping to the previous bank (see Banks below) -
-
- -

Binding to Ardour "actions"

-

- You can also bind a sysex or arbitrary message to any of the items - that occur in Ardour's main menu (and its submenus). The best place - to look for the (long) list of how to address each item is in your - keybindings file, which will contain lines that look like this: -

- -(gtk_accel_path "<Actions>/Editor/temporal-zoom-in" "equal") - -

- To create a binding between an arbitrary MIDI message (we'll use a - note-off on channel 1 of MIDI note 60 (hex) with release velocity - 40 (hex)), the binding file would contain: -

- - <Binding msg="80 60 40" action="Editor/temporal-zoom-in"/> - -

- The general rule, when taken an item from the keybindings file and - using it in a MIDI binding is to simply strip the - <Action> prefix of the second field in the - keybinding definition. -

- -

Banks and Banking

-

- Because many modern control surfaces offer per-track/bus controls - for far fewer tracks & busses than many users want to control, - Ardour offers the relatively common place concept of banks. Banks - allow you to control any number of tracks and/or busses easily, - regardless of how many faders/knobs etc. your control surface has.
- To use banking, the control addresses must be specified using the - bank relative format mentioned above ("B1" to identify - the first track of a bank of tracks, rather than "1" to identify - the first track). -

-

- One very important extra piece of information is required to use - banking: an extra line near the start of the list of bindings - that specifies how many tracks/busses to use per bank. If the - device has 8 faders, then 8 would be a sensible value to use for - this. The line looks like this:

- - <DeviceInfo bank-size="8"/> - -

- In addition, you probably want to ensure that you bind something - on the control surface to the next-bank and - prev-bank functions, otherwise you and other users - will have to use the mouse and the GUI to change banks, which - rather defeats the purpose of the bindings. -

-

A Complete (though muddled) Example

-
-<?xml version="1.0" encoding="UTF-8"?>
-<ArdourMIDIBindings version="1.0.0" name="pc1600x transport controls">
-  <DeviceInfo bank-size="16"/>
-  <Binding channel="1" ctl="1"   uri="/route/gain B1"/>
-  <Binding channel="1" ctl="2"   uri="/route/gain B2"/>
-  <Binding channel="1" ctl="3"   uri="/route/send/gain B1 1"/>
-  <Binding channel="1" ctl="4"   uri="/route/plugin/parameter B1 1 1"/>
-  <Binding channel="1" ctl="6"   uri="/bus/gain master"/>
-
-  <Binding channel="1" note="1"  uri="/route/solo B1"/>
-  <Binding channel="1" note="2"  uri="/route/solo B2" momentary="yes"/>
-
-  <Binding channel="1" note="15"  uri="/route/mute B1" momentary="yes"/>
-  <Binding channel="1" note="16"  uri="/route/mute B2" momentary="yes"/>
-
-  <Binding sysex="f0 0 0 e 9 0 5b f7" function="transport-start"/>
-  <Binding sysex="f0 7f 0 6 7 f7" function="rec-disable"/>
-  <Binding sysex="f0 7f 0 6 6 f7" function="rec-enable"/>
-  <Binding sysex="f0 0 0 e 9 0 53 0 0 f7" function="loop-toggle"/>
-
-  <Binding channel="1" note="13" function="transport-roll"/>
-  <Binding channel="1" note="14" function="transport-stop"/>
-  <Binding channel="1" note="12" function="transport-start"/>
-  <Binding channel="1" note="11" function="transport-zero"/>
-  <Binding channel="1" note="10" function="transport-end"/>
-</ArdourMIDIBindings>
-
-

- Please note that channel, controller and note numbers are specified as - decimal numbers in the ranges 1-16, 0-127 and 0-127 respectively - (the channel range may change at some point). -

- ---- -title: Working With Encoders in Ardour -menu_title: Working With Encoders -part: subchapter ---- - -

- Encoders are showing up more frequently on controllers. However, they use - the same MIDI events as Continuous Controllers and they have no standard - way of sending that information as MIDI events. Ardour 4.2 has implemented - 4 of the more common ways of sending encoder information. -

-

- Encoders that send the same continuous values as a pot would are not - discussed here as they are already supported by ctl. -

-

- Encoders as this page talks about them send direction and offset that the - DAW will add to or subtract from the current value. -

-

- The 4 kinds of encoder supported are: -

-
    -
  • - enc-r: On the bcr/bcf2000 this is called "Relative Signed Bit". The most - significant bit sets positive and the lower 6 signifcant bits are the - offset. -
  • -
  • - enc-l: The bcr2000 calls this "Relative Signed Bit 2". The most - significant bit sets negative and the lower 6 signifcant bits are the - offset. If you are using one of these two and the values are right but - reversed, use the other. This one is the one the Mackie Control Protocol - uses. -
  • -
  • - enc-2: The bcr2000 calls this one "Relative 2s Complement". Positive - offsets are sent as normal from 1 to 64 and negative offsets are sent as - 2s complement negative numbers. -
  • -
  • - enc-b: The bcr2000 calls this one "Relative Binary Offset". Positive - offsets are sent as offset plus 64 and negative offsets are sent as 64 - minus offset. -
  • -
-

- If the wrong one is chosen, either the positive or negative side will act - incorrectly. It is not really possible to auto detect which one the - controller is using. Trial and error is the only way if the specification - of the controller is not known. -

-

- Many controllers have more than one choice as well, check the manual for - the surface. -

- ---- -title: MIDI Learn -part: subchapter ---- - -

Philosophy

- -

- There are no "best" ways to map an arbitrary MIDI controller for controlling Ardour. There may be very legitimate reasons for different users to prefer quite different mappings. -

- -

- On every platform that Ardour runs on, there are excellent free-of-charge tools for making connections between MIDI hardware and "virtual" MIDI ports like the ones that Ardour creates and uses. Rather than waste precious developer time replicating these connection/patch managers, we prefer to leverage their existence by having users rely on them to actually connect Ardour to other MIDI devices and software. On OS X, we recommend Pete Yandell's MIDI Patchbay. On Linux, a wide variety of tools are available including QJackctl, aconnect, Patchage, and more. -

- -

Basics

- -
    -
  1. Enable Generic MIDI control: Edit > Preferences - > Control Surfaces > Generic MIDI
  2. -
  3. Connect Ardour's MIDI port named control to whatever - hardware or software you want (using a MIDI patchbay app)
  4. -
  5. Middle-click on whatever on-screen - fader, plugin parameter control, button etc. you want to control
  6. -
  7. A small window appears that says "Operate Controller now"
  8. -
  9. Move the hardware knob or fader, or press the note/key.
  10. -
  11. The binding is complete. Moving the hardware should control the Ardour fader etc.
  12. -
- -

Avoiding work in the future

- -

- If you want the bindings you set up to be used automatically in every session, the simplest thing to do is to use Session > Save Template. Then, when creating new sessions, select that template and all the bindings will be automatically set up for you. -

- ---- -title: Using the Presonus Faderport -menu_title: Presonus Faderport -part: subchapter ---- - -

- Since version 4.5, Ardour has had full support for the Presonus - Faderport. This is a compact control surface featuring a single - motorized fader, a single knob (encoder) and 24 buttons with fixed - labels. It is a relatively low-cost device that functions very well - to control a single (selected) track or bus, along with a variety of - other "global" settings and conditions. -

- -

Connecting the Faderport

- -

- The Faderport comes with a single USB socket on the back. Connect a - suitable USB cable from there to a USB port on your computer. As of - the end of 2015, you should avoid USB3 ports—these cause erratic - behaviour with the device. This issue might get fixed by Presonus in - the future. -

- -

- Ardour uses the Faderport in what Presonus calls "native" mode. You - do not need to do anything to enable this—Ardour will set the - device to be in the correct mode. In native mode, the Faderport - sends and receives ordinary MIDI messages to/from the host, and the - host understands the intended meaning of these messages. We note - this detail to avoid speculation about whether Ardour supports the - device via the HUI protocol—it does not. -

- -

- The Faderport will be automatically recognized by your operating - system, and will appear in any of the lists of possible MIDI ports - in both Ardour and other similar software. -

- -

- To connect the Faderport to Ardour, open the Preferences dialog, and - then click on "Control Surfaces". Click on the "Enable" button - in the line that says "Faderport" in order to activate Ardour's - Faderport support. Then double click on the line that says - "Faderport". A new dialog will open, containing (among other things) - two dropdown selectors that will allow you to identify the MIDI - ports where your Faderport is connected. -

- -

-the Faderport configuration dialog -

- -

- Once you select the input and output port, Ardour will initialize - the Faderport and it will be ready to use. You only need do this - once: once these ports are connected and your session has been - saved, the connections will be made automatically in this and other - future sessions. -

- -

- You do not need to use the power supply that comes with the - Faderport but without it, the fader will not be motorized. This - makes the overall experience of using the Faderport much less - satisfactory, since the fader will not move when Ardour tells it - to, leading to very out-of-sync conditions between the physical - fader position and the "fader position" inside the program. -

- -

Using the Faderport

- -

- The Faderport's controls can be divided into three groups: -

    -
  1. Global controls such as the transport buttons
  2. - -
  3. Controls which change the settings for particular track or - bus
  4. - -
  5. Controls which alter which track or bus is modified by the - per-track/bus controls.
  6. -
-

-

- Because the Faderport has only a single set of per-track controls, - by default those controls operate on the first selected track or - bus. If there is no selected track or bus, the controls will do - nothing. -

- -

Transport Buttons

-

- The transport buttons all work as you would expect. -

-
Rewind
-
-

- When pressed on its own, starts the transport moving backwards. Successive presses - speed up the "rewind" behaviour. -

-

- If pressed while also holding the Stop button, the playhead will - return to the zero position on the timeline. -

-

- If pressed while also holding the Shift button, the playhead will - move to the session start marker. -

-
-
Fast Forward
-
-

- When pressed on its own, starts the transport moving faster than normal. Successive presses - speed up the "fast forward" behaviour. -

-

- If pressed while also holding the Shift button, the playhead - will move to the session end marker. -

-
-
Stop
-
- Stops the transport. Also used in combination with the Rewind - button to "return to zero". -
-
Play
-
- Starts the transport. If pressed while the transport is - already rolling at normal speed, causes the playhead to jump to - the start of the last "roll" and continue rolling ("Poor man's - looping"). -
-
Record Enable
-
Toggles the global record enable setting -
-
-

- -

Other Global Controls

-

- The Mix, Proj, Trns buttons do not obviously correspond any - particular functions or operations in Ardour. We have therefore - allowed users to choose from a carefully curated set of possible - actions that seem related to the button labels in some clear - way. This can be done via the Faderport configuration dialog - accessed via Preferences > Control Surfaces. Each - button has 3 possible actions associated with it: -

    -
  • Plain Press: action to be taken when the button is pressed on - its own.
  • -
  • Shift-Press: action to be taken when the button is pressed in - conjunction with the Shift button.
  • -
  • Long Press: action to be taken when the button is pressed on - its own and held down for more than 0.5 seconds.
  • -
- Click on the relevant drop-down selector to pick an action as you - prefer. -

-

- The User button also has no obvious mapping to specific Ardour - functionality, so we allow users to choose from any - possible GUI action. The menu for selecting the action is somewhat - confusing and it can be hard to find what you're looking - for. However, all possible actions are there, so keep looking! -

-

-
Mix
-
-

- Possible actions include: -

    -
  • Toggle Editor & Mixer visibility
  • -
  • Show/Hide the Editor mixer strip
  • -
-

-
-
Proj
-
-

- Possible actions include: -

    -
  • Toggle Meterbridge visibility
  • -
  • Toggle Session Summary visibility
  • -
  • Toggle Editor Lists visibility
  • -
  • Zoom to session
  • -
  • Zoom in
  • -
  • Zoom out
  • -
-

-
-
Trns
-
-

- Possible actions include: -

    -
  • Toggle Locations window visibility
  • -
  • Toggle Metronome
  • -
  • Toggle external sync
  • -
  • Set Playhead at current pointer position
  • -
-

-
-
Undo/Redo
-
- Undo Causes the last operation carried out in the editor to be - undone. When pressed in conjuction with the Shift button, it - causes the most recent undone operation to be re-done. -
-
Punch
-
-

- When pressed on its own, toggles punch recording. If there is no - punch range set for the session, this will do nothing. -

-

- When pressed in conjunction with the Shift button, this moves - the playhead to the previous Marker -

-
-
User
-
-

- See above. Any and all GUI-initiated actions can be driven with - by pressing this button on its own, or with a "long" press. -

-

- When pressed in conjunction with the Shift button, this will move - the playhead to the next marker. -

-
-
Loop
-
-

- When pressed on its own, this toggles loop playback. If the - Ardour preference "Loop-is-mode" is enabled, this does nothing - to the current transport state. If that preference is disabled, - then engaging loop playback will also start the transport. -

-

- When pressed in conjunction with the Shift button, this will - create a new (unnamed) marker at the current playhead - position. -

-
-
-

- -

Per-track Controls

-

-

-
Mute
-
- This toggles the mute setting of the currently controlled - track/bus. The button will be lit if the track/bus is muted. -
-
Solo
-
- This toggles the solo (or listen) setting of the currently - controlled track/bus. The button will be lit if the track/bus is - soloed (or set to listen mode). -
-
Rec
-
- This toggles the record-enabled setting of the currently - controlled track/bus. The button will be lit if the track is - record-enabled. This button will do nothing if the Faderport is - controlling a bus. -
-
Fader
-
- The fader controls the gain applied to the currently controlled - track/bus. If the Faderport is powered, changing the gain in - Ardour's GUI or via another control surface, or via automation, - will result in the fader moving under its own control. -
-
Knob/Dial/Encoder
-
-

- The knob controls 1 or 2 pan settings for the current - controlled track/bus. When used alone, turning the knob controls - the "azimuth" or "direction" (between left and right) for the - panner in the track/bus (if any). This is all you need when - controlling tracks/busses with 1 input and 2 outputs. -

-

- If controlling a 2 input/2 output track/bus, Ardour's panner - has two controls: azimuth (direction) and width. The width - must be reduced to less than 100% before the azimuth can be - changed. Pressing the "Shift" button while turning the knob - will alter the width setting. -

-

- The knob can also be turned while the "User" button is held, - in order to modify the input gain for the currently controlled - track. -

-
-
Read
-
- Enables playback/use of fader automation data by the controlled track/bus. -
-
Write
-
- Puts the fader for the controlled track/bus into automation - write mode. While the transport is rolling, all fader changes - will be recorded to the fader automation lane for the relevant track/bus. -
-
Touch
-
- Puts the fader for the controlled track/bus into automation - touch mode. While the transport is rolling, touching the fader - will initiate recording all fader changes until the fader is - released. When the fader is not being touched, existing - automation data will be played/used to control the gain level. -
-
Off
-
- This disables all automation modes for the currently controlled - track/bus. Existing automation data will be left unmodified by - any fader changes, and will not be used for controlling gain. -
-
-

- -

Track Selection Controls

-

- You can manually change the track/bus controlled by the Faderport by - changing the selected track in Ardour's editor window. If you select - more than 1 track, the Faderport will control the first selected - track and only that track/bus. -

-

-

-
Left (arrow)
-
- This causes the Ardour GUI to select the previous track/bus - (using the current visual order in the editor window), which - will in turn cause the Faderport to control that track. If there - is no previous track/bus, the selected track/bus is left - unchanged, and the Faderport continues to control it. -
-
Right (arrow)
-
- This causes the Ardour GUI to select the next track/bus - (using the current visual order in the editor window), which - will in turn cause the Faderport to control that track. If there - is no next track/bus, the selected track/bus is left - unchanged, and the Faderport continues to control it. -
-
Output
-
-

- Pressing the Output button causes the Faderport to control - the fader, pan, mute and solo settings of the Master bus. If - your session does not contain a Master bus, it does nothing. - This is a toggle button—pressing it again returns Faderport - to controlling whichever track/bus was selected before the - first press of the Output button. -

-

- If your session uses Ardour's monitor section, you can use - Shift-Output to assign it to the Faderport in the same way - that Output assigns the Master bus. This is also a toggle - setting, so the second Shift-Output will return the Faderport - to controlling whichever track/bus was selected before. -

-

- If you press Shift-Output after a single press to Output - (i.e. control the Monitor Section while currently controlling - the Master bus) or vice versa (i.e. control the Master bus - while currently controlling the Monitor Section), the press - will be ignored. This avoids getting into a tricky situation - where it is no longer apparent what is being controlled and - what will happen if you try to change it. -

-
-
Bank
-
- The "Bank" button is currently not used by Ardour -
-
-

- ---- -title: Using the Ableton Push 2 -menu_title: Ableton Push 2 -part: subchapter ---- - -

- the Ableton Push 2 surface -

- -

- Since version 5.4, Ardour has had extensive support for the Ableton - Push2. This is an expensive but beautifully engineered control - surface primarily targetting the workflow found in Ableton's Live - software and other similar tools such as Bitwig. As of version 5.4, Ardour - does not offer the same kind of workflow, so we have designed our support for the - Push 2 to be used for mixing and editing and musical performance, - without the clip/scene oriented approach in Live. This may change in - future versions of Ardour. -

- -

Connecting the Push 2

- -

- Plug the USB cable from the Push 2 into a USB2 or USB3 port on your - computer. For brighter backlighting, also plug in the power supply - (this is not necessary for use). -

- -

- The Push 2 will be automatically recognized by your operating - system, and will appear in any of the lists of possible MIDI ports - in both Ardour and other similar software. -

- -

- To connect the Push 2 to Ardour, open the Preferences dialog, and - then click on "Control Surfaces". Click on the "Enable" button - in the line that says "Ableton Push 2" in order to activate Ardour's - Push 2 support. -

- -

- Once you select the input and output port, Ardour will initialize - the Push 2 and it will be ready to use. You only need do this - once: once these ports are connected and your session has been - saved, the connections will be made automatically in this and other - future sessions. -

- -

Push 2 Configuration

- -

- The only configuration option at this time is whether the pads send - aftertouch or polyphonic pressure messages. You can alter this - setting via the Push 2 GUI, accessed by double-clicking on the "Push - 2" entry in the control surfaces list. -

- -the Push 2 configuration dialog -

- -

Basic Concepts

- -

- With the Push 2 support in Ardour 5.4, you can do the following - things: -

-
Perform using the 8 x 8 pad "grid"
-
The Push 2 has really lovely pressure-sensitive pads that can - also generate either aftertouch or note (polyphonic) pressure.
-
Global Mixing
-
See many tracks at once, and control numerous parameters for each.
-
Track/Bus Mixing
-
View a single track/bus, with even more parameters for the track.
-
Choose the mode/scale, root note and more for the pads
-
37 scales are available. Like Live, Ardour offers both - "in-key" and "chromatic" pad layouts.
-
- - … plus a variety of tasks related to transport control, selection, - import, click track control and more. -

- -

Musical Performance

- -

- Messages sent from the 8x8 pad grid and the "pitch bend bar" are - routed to a special MIDI port within Ardour called "Push 2 Pads" - (no extra latency is incurred from this routing). Although you can - manually connect this port to whatever you wish, the normal - behaviour of Ardour's Push 2 support is to connect the pads to the - most recently selected MIDI track. -

- -

- This means that to play a soft-synth/instrument plugin in a given - MIDI track with the Push 2, you just need to select that track. -

- -

- If multiple MIDI tracks are selected at once, the first selected - track will be used. Note that messages originating from all other - controls on the Push 2 will not not be delivered to the - "Push 2 Pads" port. This makes no difference in practice, because - the other controls do not send messages that are useful for musical - performance. -

- -

Global Mix

- -

- This is the default mode that Ardour will start the Push 2 in. In - this mode, the 8 knobs at the top of the device, the 8 buttons below - them, the video display and the 8 buttons below that are combined to - provide a global view of the session mix. -

- -

- global mix mode on Push2 screen -

- -

- The upper buttons are labelled by text in the video display just - below them. Pressing one of the buttons changes the function of the - knobs, and the parameters that will shown for each track/bus in the - display. -

- -

- As of Ardour 5.4, the possible parameters are: -

-
Volumes
-
The display shows a knob and text displaying - the current gain setting for the track, and a meter that - corresponds precisely to the meter shown in the Ardour GUI for - that track. Changing the meter type (e.g. from Peak to K12) in the - GUI will also change it in the Push 2 display. The physical knob - will alter track/bus gain. -
-
Pans
-
The display shows a knob indicating the pan direction/azimuth - for the corresponding track/bus. Turning the physical knob will - pan the track left and right. If the track/bus has no panner - (i.e. it has only a single output), no knob is shown and the - physical knob will do nothing.
-
Pan Widths
-

For tracks with 2 outputs, the display will show a knob - indicating the pan width setting for the corresponding - track/bus. The physical knob can be turned to adjust the - width. -

- -

- Unlike many DAWs, Ardour's stereo panners have "width" - parameter that defaults to 100%. You cannot change the pan - direction/azimuth of a track with 100% width, but must first - reduce the width in order to pan it. Similarly, a track panned - anywhere other than dead center has limits on the maximum - width setting. If these concepts are not familiar to you, - please be aware than many DAWs use a "panner" that actually - implement "balance" and not "panning", hence the difference. -

-
-
A Sends
-
The display shows a knob indicating the gain level for the - first send in that track. If the track has no send, no knob will - be shown, and the physical knob for that track will do nothing. -
-
B Sends, C Sends, D Sends
-
Like "A Sends", but for the 2nd, 3rd and 4th sends of a - track/bus respectively. -
-
-

- -

- To change which tracks are shown while in global mix mode, use the - left and right arrow/cursor keys just below and to the right of the - display. Tracks and busses that are hidden in Ardour's GUI will also - be hidden from display on the Push 2. -

- -

- To select a track/bus directly from the Push 2, press the - corresponding button below the display. The track name will be - highlighted, and the selection will change in Ardour's GUI as well - (and also any other control surfaces). -

- -

Soloing and Muting in Global Mix mode

- -

- The Solo and Mute buttons to the left of the video display can be - used to solo and mute tracks while in Global Mix mode. The operation - will be applied to the first currently selected - track(s). -

- -

- There are two indications that one or more tracks are soloed: -

    -
  1. The solo button will blink red
  2. -
  3. Track names will be prefixed by "*" if they are soloed, and - "-" if they are muted due to soloing.
  4. -
-

- -

- To cancel solo, either: -

    -
  • Select the soloed track(s) and press the solo button - again
  • -
  • Press and hold the solo button for more than 1 second
  • -
-

- -

Track Mix

- -

Track Mix mode allows you to focus on a single track in more detail - than is possible in Global Mix mode. To enter (or leave) Track Mix - mode, press the "Mix" button. -

- -

- In Track Mix mode, various aspects of the state of the first - selected track/bus will be displayed on the Push 2. Above the - display, the first 4 knobs control track volume (gain), pan - directiom/azimuth, pan width, and where appropriate, track input - trim. -

- -

- Below the display, 7 buttons provide immediate control of mute, - solo, rec-enable, monitoring (input or disk or automatic), solo - isolate and solo safe state. When a a track is muted due to other - track(s) soloing, the mute button will flash (to differentiate from - its state when it is explicitly muted). -

- -

- The video display also shows meters for the track, which as in - Global Mix mode, precisely match the meter type shown in Ardour's - GUI. There are also two time displays showing the current playhead - position in both musical (beats|bars|ticks) format, and as - hours:minutes:seconds. -

- -

- To change which track is visible in Track Mix mode, use the - left/right arrow/cursor keys just below and to the right of the - video display. -

- -

Scale Selection

- -

- Press the Scale button to enter Scale mode. The display will look - like this: -

- -

- track mix mode on Push2 screen -

- -

- In the center, 37 scales are presented. Scroll through them by - either using the cursor/arrow keys to the lower right of the - display, or the knobs above the display. The scale will change - dynamically as you scroll. You can also scroll in whole pages using - the upper right and upper left buttons above the display (they will - display "<" and ">" if scrolling is possible). -

- -

- To change the root note of the scale, press the corresponding button - above or below the video display.The button will be lit to indicate - your selection (and the text will be highlighted). -

- -

- By default, Ardour configures the Push 2 pads to use "in-key" mode, - where all pads correspond to notes "in" the chosen scale. Notes - corresponding to the root note, or the equivalent note in higher - octaves, are highlighted with the color of the current target MIDI - track. -

- -

- In - "chromatic" mode, the pads correspond to a continuous sequence of - notes starting with your selected root note. Pads corresponding to - notes in the scale are illuminated; those corresponding to the root - note are lit with the color the current target MIDI track. Other - pads are left dark, but you can still play them. -

- -

- To switch between them, press button on the lower left of the video - display; the text above it will display the current mode (though it - is usually visually self-evident from the pad lighting pattern). -

- -

- To leave Scale mode, press the "Scale" button again. You may also - use the upper left button above the display, though if you have - scrolled left, it may require more than one press. -

- -

Specific Button/Knob Functions

- -

- In addition to the layouts described above, many (but not all) of - the buttons and knobs around the edges of the Push 2 will carry out - various functions related to their (illuminated) label. As of Ardour - 5.4, this includes: -

-
Metronome (button and adjacent knob)
-
- Enables/disables the click (metronome). The knob directly above - it will control the volume (gain) of the click. -
-
Undo/Redo
-
- Undo or redo the previous editing operation. -
-
Delete
-
- Deletes the currently selected region, or range, or - note. Equivalent to using Ctrl/Cmd-x on the keyboard. -
-
Quantize
-
- If a MIDI region is selected in Ardour, this will open the - quantize dialog. -
-
Duplicate
-
- Duplicates the current region or range selection. -
-
Rec-Enable
-
- Enables and disables Ardour's global record enable state. -
-
Play
-
- Starts and stops the transport. Press Shift-Play to return to the session start. -
-
Add Track
-
- Opens Ardour's Add Track/Bus dialog. -
-
Browse
-
- Open's Ardour's import dialog to select and audition existing - audio and MIDI files. -
-
Master
-
- Pressing this button jumps directly to Track Mix mode, with the - master out bus displayed. -
-
Cursor arrows
-
- These are used by some modes to navigate within the display (e.g - Scale mode). In other modes, the up/down cursor arrows will - scroll the GUI display up and down, while the left/right cursor - arrows will generally scroll within the Push 2 display itself. -
-
Repeat
-
- Enables/disables loop playback. This will follow Ardour's "loop - is mode" preference, just like the loop button in the Ardour - GUI. -
-
Octave buttons
-
- These shift the root note of the current pad scale up or down by - 1 octave. -
-
Page buttons
-
- These scroll Ardour's editor display left and right along the - timeline. -
-
Master (top right) knob
-
- This knob controls the gain/volume of Ardour's main output. If - the session has a monitor saec -
-
-

- - ---- -title: Configuring MIDI -part: chapter ---- - - ---- -title: Using External MIDI Devices -part: subchapter ---- - -

Add content

- - ---- -title: Setting Up MIDI -part: subchapter ---- - -

What Can Ardour Do With MIDI?

-

- MIDI is a way to describe musical - performances and to control music hardware and software. -

-

Ardour can import and record MIDI data, and perform a variety of - editing operations on it. Furthermore, MIDI can be used to control - various functions of Ardour. -

- -

MIDI Handling Frameworks

-

- MIDI input and output for Ardour are handled by the same "engine" - that handles audio input and output. Up to release 3.5, that means - that all MIDI I/O takes place via JACK. JACK itself uses the - native MIDI support of the operating system to receive and send - MIDI data. The native MIDI support provides device drivers for MIDI - hardware and libraries needed by software applications that want to - work with MIDI. -

- -
-
OS X
-
CoreMIDI is the standard MIDI framework on OSX systems. -
-
Linux
-
- ALSA MIDI - is the standard MIDI framework on Linux systems. -
-
- -

- On Linux systems, QJackCtl control software displays ALSA MIDI - ports under its "ALSA" tab (it does not currently display CoreMIDI - ports). By contrast, JACK MIDI ports show up under - the MIDI tab in QJackCtl. -

- -

JACK MIDI Configuration

-

-By default, JACK will not automatically detect and use existing MIDI -ports on your system. You must choose one of several ways -of bridging between the native MIDI frameworks -(e.g. CoreMIDI or ALSA) and JACK MIDI, as described in the sections -below. -

- ---- -title: MIDI on Linux -part: subchapter ---- - -

The right approach for using MIDI on Linux depends on which version of -JACK you use. The world divides into:

- -
-
Systems using JACK 1, versions 0.124 or later
-
On these systems, just start JACK with the -X alsa_midi server argument. To support legacy control applications, you can also use the -X seq argument to the ALSA backend of JACK and get the exact same results.
-
All others
-
Use a2jmidid to act as a bridge between ALSA MIDI and JACK. Do not use the -X seq or -X raw arguments—the timing and performance of these options is not acceptable. -
-
- -

a2jmidid

- -

- a2jmidid is an application that bridges between the system - MIDI ports and - JACK. -

- -

- First you should make sure that there is no ALSA sequencer support enabled - in JACK. To do that open QJackCtl's Setup window. -

- -

- Set Settings > MIDI Driver to none. - Then uncheck the Misc > Enable ALSA Sequencer - support option.
- Now it's time to restart your jack server before going on. -

- -

Check for a2jmidid availability

- -

- First, check whether a2jmidid is already installed in your system. After - starting your JACK server, go to the command line and type -

- -a2jmidid -e - -

- If a2jmidid does not exist, install it with the software manager of your - Linux distribution and try again. -

- -

Check available MIDI ports

- -

- If you have correctly configured JACK for MIDI, then your MIDI ports should appear in - qjackctl under Connections > MIDI . -

- -

Making it automatic

- -

-Once you've verified that the ports appear in JACK as expected, you -can make this happen whenever you start JACK. -

- -

If you use a newer version of JACK 1, just make sure the -X -alsa_midi or -X seq options are enabled for whatever technique you use -to start JACK. -

- -

-For other versions of JACK, -add a2jmidid -e & as an "after start-up" script -in the Setup > Options tab of QJackCtl, so -that it is started automatically whenever you start JACK. -

- -

Is this true anymore in Ardour 5? This section may have been relevant in Ardour 3, but it might not be relevant anymore.

- ---- -title: MIDI on OS X -part: subchapter ---- - -

- In order for CoreMIDI to work with Jack MIDI, a CoreMIDI-to-JACK-MIDI - bridge - is required. This feature is available on versions equal to or great than - version 0.89 of JackOSX. -

- -

Routing MIDI

- -

Inside Ardour

- -

- MIDI ports show up in Ardour's MIDI connection matrix in multiple - locations. Bridged CoreMIDI ports as well as JACK MIDI ports that have - been created by other software clients will show up under the "Other" tab. - Bridged CoreMIDI hardware ports show up under the "Hardware" tab. -

- -

External Applications

- -

- There are multiple options for connecting MIDI ports outside of Ardour. -

- -
    -
  • MIDI Monitor is a handy - tool for doing various MIDI-related tasks.
  • -
  • MIDI Patchbay lets you - connect ports and filters MIDI data.
  • -
- - - - ---- -title: Ardour's Interface -part: part ---- - - ---- -title: About Ardour's Interface -part: chapter ---- - -

- In Ardour, you work in two main windows: the Editor and the - Mixer. -

-
- Ardour's mixer window - Ardour's editor window -
-
    -
  1. Main menu
  2. -
  3. Status bar
  4. -
  5. Transport bar & Times
  6. -
    -
  1. Mode switch
  2. -
  3. The Editor window
  4. -
  5. a track's mixer strip
  6. -
    -
  1. Editors List
  2. -
  3. The Mixer window
  4. -
  5. Favorite plugins
  6. -
    -
  1. Strips list
  2. -
  3. Group list
  4. -
  5. Master strip
  6. -
-
-
-

- To switch between those windows, use the buttons (#4 Mode switch in the upper right), - the shortcut M, or the menu - Window > Editor (or Mixer) > Show. - Both windows can be visible at the same time (eg. for a multi-monitor - setup) using Detach in the same menu.

- --- title: Main Menu @@ -7018,7 +4293,9 @@ part: chapter --- The status bar +

The status bar is an informative bar at the top of the window, showing:

+
  • File: the file format used in the session, including when recording
  • TC: is the timecode, i.e. the number of frames per second used by the session (for videos)
  • @@ -7031,7 +4308,7 @@ part: chapter
  • a Log button that indicates if Ardour has encountered any warning or error.
-

The buffers are labelled as p for playback and c for capture. If the +

The buffers are labeled as p for playback and c for capture. If the system is fast enough, these buffers should be 100% full at all times, showing the system has time to precompute all the data before delivering it to the audio system. A buffer constantly under 20% is a sign of an underpowered computer system or of too much processing.

@@ -7039,7 +4316,7 @@ computer system or of too much processing.

An Xrun (short for buffer over- or under-run) happens when the system has been forced to skip audio frames, e.g. if the latency asked is too short for the computing power of the machine. It usually results in clicks, pops and crackles if it happens while recording.

-

The log button turns yellow when a warning is shows, and red when an error occurs. Clicking the log button gives acces to the log.

+

The log button turns yellow when a warning occurs, and red when an error occurs. Clicking the log button gives acces to the log.

--- title: Transport bar and times @@ -7061,15 +4338,15 @@ part: chapter

    -
  • the Transport Controls
  • -
  • the Clocks
  • +
  • the Transport Controls
  • +
  • the Clocks
  • 3 status indicators:
    • Solo: Blinks when one or more tracks are being soloed, see Muting and Soloing. Clicking this button disables any active explicit and implicit solo on all tracks and busses.
    • Audition: Blinks when using the import dialog to audition material.
    • Feedback: Blinks when Ardour detects a feedback loop, which happens when the output of an audio signal chain is plugged back to its input. This is probably not wanted and can be dangerous for the hardware and the listener.
  • -
  • A global Meter, showing the level of the Master Output, see Metering in Ardour
  • +
  • A global Meter, showing the level of the Master Output, see Metering in Ardour
  • the Mode Selector, allowing to switch between Editor and Mixer views, or edit the Preferences.
@@ -7105,7 +4382,7 @@ part: subchapter Play Loop Range: Repeats the defined loop as defined by the Loop range, until the "Stop playback" button is pressed. Clicking the "Play loop Range" button while already active switches to normal Play mode, which exits the loop without stopping and restarting playback.
  • - Play Range/Selection: If a range has been defined using the Range Mode button, plays the range, of if an audio or MIDI region is selected, plays this region. In both cases, the playback stops at the end of the range or selected region. + Play Range/Selection: If a range has been defined using the Range Mode button, plays the range; or if an audio or MIDI region is selected, plays this region. In both cases, the playback stops at the end of the range or selected region.
  • Play from playhead: Starts the playback and optionally record (more below). @@ -7129,7 +4406,7 @@ part: subchapter

    - The Shuttle Speed Control supports 2 operating modes, that can be chosen with right click > Mode: + The Shuttle Speed Control supports 2 operating modes, that can be chosen with right click > Mode:

      @@ -7142,7 +4419,7 @@ part: subchapter

      - The 3 vertical buttons on the right of the transport bar control the behaviour of the playhead: + The 3 vertical buttons on the right of the transport bar control the behavior of the playhead:

        @@ -7157,16 +4434,40 @@ part: subchapter
      +

      Using Key Bindings

      + +

      + Ardour has many available commands for playback control that can be bound + to keys. Many of them have default bindings, some do not, so the list below + shows both the default bindings and internal command names for some of them. +

      + +
      +
      Space
      +
      switch between playback and stop.
      +
      Home
      +
      Move playhead to session start marker
      +
      End
      +
      Move playhead to session end marker
      +
      +
      Playhead to next region boundary
      +
      +
      Playhead to previous region boundary
      +
      0
      +
      Move playhead to start of the timeline
      +
      + +

      + Go to the Transport and Transport >> Playhead to find more. +

      + --- title: Times part: subchapter ---

      - Clocks in Ardour are used to display time values precisely. - In many cases, they are also one way to edit (change) time values, and in a few - cases, the only way. All clocks share the same basic appearance and functionality, - which is described below, but a few clocks serve particularly important roles. + Clocks in Ardour are used to display time values precisely. In many cases, they are also one way to edit (change) time values, and in a few cases, the only way. All clocks share the same basic appearance and functionality, which is described below, but a few clocks serve particularly important roles.

      Transport Clocks

      @@ -7188,6 +4489,7 @@ part: subchapter

      The Big Clock

      +

      To show the current playhead position in a big, resizable window, activate Window > Big Clock. The big clock is very useful @@ -7198,17 +4500,21 @@ part: subchapter large big clock window filling a good part of the display, and on the right, the same clock during active recording.

      + an image of the big clock filling a screen an image of the big clock while recording

      The Special Role of the Secondary Transport Clock

      +

      On a few occasions Ardour needs to display time values to the user, but there is no obvious way to specify what units to use. The most common case is the big cursor that appears when dragging regions. For this and other similar cases, Ardour will display time using the same units as the secondary clock.

      +

      Why are there two transport clocks?

      +

      Having two transport clocks lets you see the playhead position in two different time units without having to change any settings. For example, you can see the @@ -7216,6 +4522,7 @@ part: subchapter

      Selection and Punch Clocks

      +

      The transport bar also contains a set of 5 clocks that show the current selection range and punch ranges. Clicking on the punch @@ -7228,6 +4535,7 @@ part: subchapter An image of the the selection and punch clocks in Ardour 3

      Clock Modes

      +

      Every clock in Ardour has four different, selectable clock modes. Each mode displays time using different units. @@ -7367,13 +4675,34 @@ title: The Editor part: chapter --- +

      + Ardour's editor windo
+w +
      +
        +
      1. Toolbar
      2. +
      3. Rulers
      4. +
        +
      1. Editor's List
      2. +
      3. a Mixer strip
      4. +
        +
      1. Summary
      2. +
      3. an audio track
      4. +
      +
        +
      1. a MIDI track
      2. +
      3. automation
      4. +
      +
      +
      +

      The Editor window includes the editor track canvas where you can arrange audio and MIDI data along a timeline. This is the window you will be in while editing and arranging a project. The window has a general "horizontal" sense to it: the timeline flows from left to right, the playhead showing the current position in the session moves - from left to right — the window really represents time + from left to right—the window really represents time in a fairly literal way.

      @@ -7381,7 +4710,7 @@ part: chapter It is possible to show a single channel strip in the editor window, and some people find this enough to work on mixing without actually opening the mixer window. Most of the time though, you will want both of these - windows at various stages of a session's lifetime — sometimes + windows at various stages of a session's lifetime—sometimes you'll be focused on editing, sometimes on mixing and possibly some of the time on both.

      @@ -7409,21 +4738,21 @@ part: chapter
      1. Edit Point
        -
      1. Nudge
      2. +
      3. Nudge

      - The Toolbar is made of 5 "zones" -

      --- -title: The Toolbar +title: The Toolbox part: subchapter --- -Editor toolbar's tools +Editor toolbar's tools, aka toolbox

      Global Edit mode

      @@ -7529,11 +4858,8 @@ part: subchapter On a MIDI region, it allows to lasso-select multiple notes at a time.
  • - -

    Make sure the Internal Edit and Draw tool act as described

    - --- title: the Zoom Controls part: subchapter @@ -7757,25 +5083,49 @@ part: subchapter --- -title: the Nudge Controls +title: The Nudge Controls +part: subchapter +--- + +Editor toolbar's Nudge + +

    + The nudge controls will move the selected region(s) by a fixed amount of time. The left and right buttons move either backward or forward in time, and the small clock to the left of these buttons sets the amount of time to nudge by. As with all other clocks, you can right-click on the clock to choose the time representation you want to use. +

    + +

    + If there are no selected objects, the nudge controls can be used to move the playhead backward or forward by the amount shown on the clock. +

    + +--- +title: The Ruler part: subchapter --- -Editor toolbar's Nudge +Ardour's Ruler

    - The nudge controls will move the selected region(s) by a fixed amount - of time. The left and right buttons move either backward or forward in time, and the small - clock to the left of these buttons sets the amount of time to nudge by. - As with all other clocks, you can right-click on the clock to choose the - time representation you want to use. + The Ruler scales the session along time, allows navigating, and can be marked for different uses. The main use of the Ruler is to move the playhead: clicking anywhere on the timeline will bring the playhead at this location in time.

    - If there are no selected objects, the nudge controls can be - used to move the playhead backward or forward by the amount shown on the clock. + It is made of a succession of rows, each having a special role related to time.From top to bottom, those rows are :

    +
    +
    Timecode
    scaling the session whith the traditional Hours:Mins:Secs:Frames notation
    +
    Bars:Beats
    slicing the time according to the time signature ot the Meter
    +
    Meter
    shows the time signature. It can be changed along the timeline, by Right click > New Meter. The Bars:Beats ruler will reflect the change.
    +
    Tempo
    shows the BPM. It can be changed along the timeline, by Right click > New Tempo. The Bars:Beats ruler will reflect the change.
    +
    Range Markers
    allow to create and modify ranges directly on the Ruler.
    +
    Loop/Punch Ranges
    are special kind of ranges designed to be played as a loop and to do punch recording, i.e. recording on a precise section of time, respectively.
    +
    CD Markers
    are markers designed to be used while creating a recording that has to be split in time, as an audio CD
    +
    Location Markers
    is meant to receive any kind of marker, user generated or from Ardour itself.
    +
    + +

    + Most of the operations on the markers are described in Working with Markers, while the Meter, Tempo, Bars:Beats and Timecode use are described in Tempo and Meter. +

    --- @@ -7793,7 +5143,6 @@ part: chapter vary the width of the list.

    - --- title: Region List part: subchapter @@ -7840,7 +5189,7 @@ part: subchapter

    --- -title: Tracks & Busses List +title: Tracks and Busses List part: subchapter --- @@ -7866,7 +5215,7 @@ part: subchapter
    SI
    track solo-isolated state.
    SS
    -
    solo safe state.
    +
    solo safe state.

    @@ -7893,7 +5242,7 @@ part: subchapter

    --- -title: Track & Bus Group List +title: Track and Bus Group List part: subchapter --- @@ -7929,22 +5278,16 @@ part: subchapter
    Sel
    whether the constituents are selected together.
    A
    -
    whether the constituents share active status.
    +
    whether the constituents share active status.
    --- -title: Ranges & Marks List +title: Ranges and Marks List part: subchapter ---

    - The Ranges & Marks List is a tab in the Editor - Lists area on the right of the Editor window. If the editor - list area isn't visible it can be enabled by checking - View > Show Editor List. - The Ranges & Marks list can be used as a single point - of control for all range and location markers (including the punch and - loop ranges), or as a supplement to other methods of working with them. + The Ranges & Marks List is a tab in the Editor Lists area on the right of the Editor window. If the editor list area isn't visible it can be enabled by checking View > Show Editor List. The Ranges & Marks list can be used as a single point of control for all range and location markers (including the punch and loop ranges), or as a supplement to other methods of working with them.

    Common elements

    @@ -7964,11 +5307,13 @@ part: subchapter changing of the display between Timecode, Bars:Beats, Minutes:Seconds, and Samples.

    +

    The (subtract) button in front of each user-defined range or marker in the list allows that particular item to be removed. The name fields of custom ranges and markers can be edited.

    +

    The Hide checkboxes make markers and ranges invisible on the respective ruler to reduce visual clutter; the markers remain @@ -7980,6 +5325,7 @@ part: subchapter than the absolute time. This will make the respective marker follow changes in the tempo map.

    +

    At the bottom of the list are buttons to add new markers or ranges.

    @@ -8002,26 +5348,39 @@ part: subchapter that may contain audio data between tracks. +--- +Title: The Summary +part: subchapter +--- +Ardour's Summary +

    + The Summary is a global overview of the session, allowing for a good "bird's eye" view of where in time and tracks the work happens. +

    +

    + Each horizontal line represents a track in the session, with the colored bars being the audio and MIDI regions, colored as per their track's color setting. +

    +

    + Two yellow vertical lines show the position of the Start and End markers, defining the session's length. The red line shows the playhead's position. +

    +

    + The transparent white rectangle represents what's actually displayed in the Editor window, i.e. what part of the session is beign looked at on screen. +

    +

    + The Summary also doubles as a navigator: +

    - - - - - - - - - - - - - + --- @@ -8029,16 +5388,29 @@ title: The Mixer part: chapter --- +
    + Ardour's mixer window +
    +
      +
    1. Favorite Plugins
    2. +
    3. Strip List
    4. +
      +
    1. Group list
    2. +
    3. a track's strip
    4. +
      +
    1. Master strip
    2. +
    3. Monitor section
    4. +
    +
    +
    +

    - The Mixer window on the other hand represents signal flow and - is the window you will probably be using most when mixing a session. It - includes channel strips for each track and bus in your session. - It has a general "vertical" sense to it: signals flow from the top of each - channel strip through the processing elements in the strip to reach the - output listed at the bottom. + The Mixer window on the other hand represents signal flow and is the window you will probably be using most when mixing a session. It includes channel strips for each track and bus in your session. It has a general "vertical" sense to it: signals flow from the top of each channel strip through the processing elements in the strip to reach the output listed at the bottom.

    - +

    + This section describes the Mixer. To learn more about the process of mixing, see Mixing. +

    --- title: The Mixer - Favorite Plugins Window @@ -8075,21 +5447,91 @@ part: subchapter When favorites are added with the Plugin Manager, they are appended to the bottom of the list.

    - - --- title: The Mixer - The Strips list part: subchapter --- -

    add content

    +

    + The Strips List is a quick way to manage big sessions, with lots of tracks, where the mixer would otherwise be too crowded. +

    + +

    + It is a list of all the tracks, busses and VCA in the session, with a tick to allow for hiding or showing them. This visibility status also affects the Editor view, and is exactly the same as toggling the V checkbox in the Tracks and Busses panel of the Editor List. +

    + +

    + Dragging and dropping tracks inside the Strips List allows to reorganise the tracks in the session, both in the Mixer and the Editor. +

    + +

    + It is possible, by right clicking, to act on multiple tracks at once: +

    + + + +

    + The + button under the list is a shortcut to create a new track, bus or VCA, as in clicking Track > Add Track, Bus or VCA…. +

    --- title: The Mixer - The Groups list part: subchapter --- -

    add content

    +

    + The Goups List allows to quickly manage the groups of the session, and make use of them. +

    + +

    + Each group has a Show checkbox to quickly toggle their visibility. Clicking an already selected group allows to rename it. +

    + +

    + The context menu, reached by right clicking a group, allows for multiple mixing actions: +

    + +
    +
    Create New Group From...
    Creates a new group based on some track properties. The choice is : +
      +
    • Selection... to create a group of all selected tracks
    • +
    • Record Enabled... to create a group of all the tracks that are record enabled
    • +
    • Soloed... to create a group of all the soloed tracks
    • +
    +
    Create New Group with Master From...
    Acts exactly as the previous choice, but also creates a Control Master tied to these tracks.
    +
    Assign Selection to Control Master...
    Allows to link all the selected tracks to a chosen Control Master, whether or not they belong to a group.
    +
    Assign Record Enabled to Control Master...
    Allows to link all the record armed tracks to a chosen Control Master.
    +
    Assign Soloed to Control Master...
    Allows to link all the soloed tracks to a chosen Control Master.
    +
    Enable All Groups
    Enable all the groups, i.e. their selected properties are synchronized.
    +
    Disable All Groups
    Disable all the groups, i.e. changing a property in a track won't affect the others.
    +
    + +

    + When a group is selected, right clicking it adds the following menu entries : +

    + +
    +
    Create New Group with Master From...
    Acts exactly as the previous choice, but also creates a Control Master tied to these tracks.
    +
    Edit Group...
    Shows the Track/bus Group window.
    +
    Collect Group
    Rearranges the tracks/busses order to visualy group together the tracks belonging to the same group.
    +
    Remove Group
    Deletes the group (but not the tracks/busses belongidng to this group).
    +
    Assign Group to Control Master...
    Allows to link all the tracks in the group to a chosen VCA.
    +
    Add/Remove Subgroup Bus
    Creates/removes a new bus connected to the Master, and send the output of all the tracks in the group to this new bus.
    +
    Add New Aux Bus (pre/post-fader)
    Creates a new bus connected to the Master, and create Aux Sends (pre or post-fader) in all the tracks in the group to this new bus.
    +
    + +

    + The + button under the list allows the creation of an (empty) group, while the button deletes the selected group (but not the tracks in this group). +

    --- title: The Mixer - The Master Strip @@ -8098,7 +5540,6 @@ part: subchapter

    add content

    - --- title: The Mixer - The Monitor Section part: subchapter @@ -8107,9 +5548,6 @@ part: subchapter

    add content

    - - - --- title: Sessions & Tracks part: part @@ -8126,6 +5564,7 @@ part: chapter title: New/Open Session Dialog part: subchapter --- +

    Info is out of date, image needs updating

    @@ -9374,37 +6813,13 @@ part: subchapter ---

    - Every track and bus in Ardour is assigned a remote control ID. - When a control surface or any other - remote control is used to control Ardour, these IDs are used to identify - which track(s) or buss(es) are the intended target of incoming commands. -

    - -

    - By default, remote IDs will be assigned to tracks and busses in the order - that they are created, starting from 1. The master bus and monitor section - have their own unique IDs (318 and 319). + Every track and bus in Ardour is assigned a remote control ID. When a control surface or any other remote control is used to control Ardour, these IDs are used to identify which track(s) or buss(es) are the intended target of incoming commands.

    - Ardour provides two methods to control remote control IDs, which can be - chosen via Edit > Preferences > Control Surfaces - > Control surface remote ID: + Remote IDs will be assigned to tracks and buses in the order that they appear in the mixer window from left to right, starting from 1. Manual assignment of remote IDs is not possible. The master bus and monitor section can be accessed by name.

    -
    -
    follows order of mixer
    -
    This will reset the remote control IDs to match the mixer and editor - track order order, starting with rcID 1. Manual assignment of rcIDs is - not possible.
    -
    assigned by user
    -
    When enabled, the remote control ID is completely independent of the - ordering in either window, and may be changed manually by the user via the - trackname > Remote Control ID... - dialog in each mixer strip. -
    -
    - --- title: Bus Controls part: subchapter @@ -9815,8 +7230,6 @@ part: chapter --- - - --- title: Playback & Recording part: part @@ -9829,43 +7242,19 @@ part: chapter --- - - --- -title: Looping the Transport +title: Controlling Playback part: subchapter --- -

    - When the loop transport button is pressed, the playhead will - jump the start of the loop range, and continue to the end of that range - before returning to the start and repeating. - While looping, a light green area is displayed in the time ruler over - the tracks to show the loop range. -

    - -

    - By default, looping is bound to the l key. -

    - -

    - For more information on defining and altering the loop range see - Loop Range Markers. -

    - -

    Broken link

    - ---- -title: Positioning the Playhead -part: subchapter ---- +

    Positioning the Playhead

    The playhead is a vertical line with two arrows at each end that indicates the current position of playback.

    -

    Positioning the playhead at the current pointer position

    +

    Positioning the playhead at the current pointer position

    Pressing P will set the playhead to the current position of @@ -9879,7 +7268,7 @@ part: subchapter will move the playhead to that position.

    -

    Positioning the playhead with the transport clocks

    +

    Positioning the playhead with the transport clocks

    Click on either the primary or secondary transport clock and @@ -9887,7 +7276,7 @@ part: subchapter to move the playhead to a specific position.

    -

    Positioning the playhead at a marker

    +

    Positioning the playhead at a marker

    Click Right on the marker and select either @@ -9902,6 +7291,22 @@ part: subchapter markers start and end, respectively.

    +

    Looping the Transport

    + +

    + When the loop transport button is pressed, the playhead will jump the start of the loop range, and continue to the end of that range before returning to the start and repeating. While looping, a light green area is displayed in the time ruler over the tracks to show the loop range. +

    + +

    + By default, looping is bound to the l key. +

    + +

    + For more information on defining and altering the loop range see Loop Range Markers. +

    + +

    Broken link

    + --- title: Using Key Bindings part: subchapter @@ -12978,7 +10383,7 @@ part: subchapter

    Audio Busses vs MIDI Busses

    - Ardour supports 2 types of busses: Audio and MIDI. A MIDI bus differs from an audio bus just by its input (which is 1 midi input instead of n audio), the fact that you can put an instrument on it at creation time, whereas you can't easily add an instrument to an audio bus. + Ardour supports 2 types of busses: Audio and MIDI. A MIDI bus differs from an audio bus just by its input (which is 1 midi input instead of n audio), the fact that you can put an instrument on it at creation time, whereas you can't easily add an instrument to an audio bus.

    @@ -13019,6 +10424,10 @@ part: subchapter

    VCAs

    +

    + Reword this section to Control MAster, separate from Busses, Detail the fact a track can have multiple VCA attached +

    + VCAs strips

    @@ -16121,6 +13530,146 @@ part: subchapter

    +--- +title: Open Sound Control (OSC) +part: part +--- + + +--- +title: Controlling Ardour with OSC +include: controlling-ardour-with-osc.html +part: chapter +--- + +--- +title: OSC: Controlling Ardour with OSC +include: osc-control.html +part: subchapter +--- + +--- +title: OSC: Using the Setup Dialog +include: osc-setup-dialog.html +part: subchapter +--- + +--- +title: OSC: Querying Ardour +include: querying-ardour-with-osc.html +part: subchapter +--- + +--- +title: OSC: Feedback +include: feedback-in-osc.html +part: subchapter +--- + +--- +title: OSC: Feedback and Strip-types Values +include: calculating-feedback-and-strip-types-values.html +part: subchapter +--- + +--- +title: OSC: Personal Monitoring Control +include: osc-personal-monitoring.html +part: subchapter +--- + +--- +title: OSC: Parameter Types +include: parameter-types-in-osc.html +part: subchapter +--- + +--- +title: OSC: Selection and Expansion Considerations +include: selection-considerations-in-osc.html +part: subchapter +--- + +--- +title: OSC control for Ardour 4.7 and Prior +include: osc-control-in-ardour-4.7-and-prior.html +part: subchapter +--- + + +--- +title: Devices using Mackie/Logic Control Protocol +include: devices-using-mackielogic-control-protocol.html +part: chapter +--- + +--- +title: Behringer devices in Mackie/Logic Control Mode +menu_title: Behringer devices +include: behringer-devices-in-mackielogic-control-mode.html +part: subchapter +--- + +--- +title: SSL Nucleus +include: ssl-nucleus.html +part: subchapter +--- + +--- +title: Mackie Control Setup on Linux +include: mackie-control-setup-on-linux.html +part: subchapter +--- + +--- +title: What to do if your Device is not Listed +menu_title: Unlisted devices +include: devices-not-listed.html +part: subchapter +--- + +--- +title: Working With Extenders +menu_title: Working With Extenders +include: working-with-extenders.html +part: subchapter +--- + + +--- +title: MIDI Binding Maps +include: midi-binding-maps.html +part: chapter +--- + +--- +title: Working With Encoders in Ardour +menu_title: Working With Encoders +include: working-with-encoders.html +part: subchapter +--- + + +--- +title: MIDI Learn +include: midi-learn.html +part: chapter +--- + +--- +title: Using the Presonus Faderport +menu_title: Presonus Faderport +include: presonus-faderport.html +part: chapter +--- + +--- +title: Using the Ableton Push 2 +menu_title: Ableton Push 2 +include: ableton-push2.html +part: chapter +--- --- @@ -16608,3 +14157,16 @@ exclude: yes part: subchapter --- + +--- +title: Appendix +part: part +--- + + +--- +title: List of Menu Actions +part: chapter +include: menu-actions-list.html +--- + diff --git a/source/css/app.css b/source/css/app.css index 11dc86f..4a9fb5d 100644 --- a/source/css/app.css +++ b/source/css/app.css @@ -184,6 +184,18 @@ caption-side: top ; } +#content figure.right { + margin: 0 0 1em 1em; + float:right; + clear:right; +} + +#content figure.left { + margin: 0 1em 1em 0; + float:left; + clear:left; +} + .multicol2 { width: 48%; float:left; diff --git a/source/images/detailed-editor-window.png b/source/images/detailed-editor-window.png new file mode 100644 index 0000000000000000000000000000000000000000..4edaf4ede736bc7f515d2261efe66db5b99ddb46 GIT binary patch literal 24066 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 z z_sCJ9WJs;LUZL+CxT6^Qz@F##_y>BX{Xt(}-*o>Zocc9%V872lAK1Bn7he+)pnrDi z)T4OA+^|3zdlB^Vb4ipBEtAr#ysb%|gYKD|Q)+S8+ozvv*2)tkE7#7<8MR0vmOx|; zgMNOeIP{%G)pzp-7`*5CN1xxbbN`;_pMUhxN5KwUWIxb>H1tzEa!{q;Nj0v+h2z}O zqB~q_nFg%1KfPI1o$~Kxo14=MfyTM!^z2eIbEpucY#?-T9SHVV*WY$qN4mb=9)7;q z;6UDs{afKr0yNk^`+$FLAapX3h|$H+%PpAR+*~%a6#871KbM)AY&(5;+qSobz_+(& zPM_PJ4w@+)IWq%(9M=Q%13^RAbinP~&<M%FZ-ZrPxV3n0yC&!c<94fgMUe(TNy zujOqGgiZzHrO*|+QUU1YLT_g1YxYzPy$V6-KRK|6|J!rmwVjQG9!lXQ&=G!pZ=KGW z=QYKKwD!{An;g2hKmxD9;L&p+uix_;AP)b2vU5-4nruWoNt6tt&_XZi2on!EH7x7I zd9SHsP{lh>1FS0u7Z+Fap*J`5=NAgS;EtAa>5^d2{-3}sfk43G ziUmTp5Cy%aj=^4jA~1{39|)&xA%^#*HU>J@yDZSxJufa;ixbtJe1k{N0rC%mzh{IW z!O!u=O#KaqOT}XhSqxnTy`;8e%xANOBNiJ4y{3*q8GKTQk}-eK7Kj^oU+T>b{m~kj zmNm#b{`sQ^^V9u<5W1~F&~>R$qGU9z5Y8e42=oM9IvTdz?5?IkeVNc4bSK6; z*B*Om>2=GtZF7$;N147*=!GhR{wNjm^=)4MHCzDnG`s@n!}>B_Qxlxxt3(;-=FVx0 zH|R=^FQ4L%i!1i{LJh{_iz%k?axp_BWSQ3m}#bG1%((WZK!)A3-0t_0nIdOR3b1RcX1Mw18AJMy8M$BLn^S)(utbCf9M zN7p@8hc*rt49YVhYw~q|^*V9=@Vu148VQ5*5ndqvkvHv(eCbAoT142KVzpZOc_0`p6GsVq4EWdEtD(AE{z;vcBPIpd)_+Y~>}B!oV5(o=i(9%Jq0p*NWvT#_b=Qo6}RF$BYs zB$Z#Lm-^lzbU7a342)f-e`4R2D@VZJ)hk!7?E|~3`ws6r{8fp+eTTRGIA6;H{rvg! zYZeXqnspoB|K!c@rS;yMfPFsnxUa8{rL?g=ey!`Ylr8tJwPP1hKEqhyQ%_DgEf|?A!33>Z2toTtHsLJS?DpAxjEG2 z1HEGIzH#Gh1~SGrk6XuRSbrbeRC7wF8L*Xw zKAgE-Ei;8X1`a_WhE)lD4Jq873Xb?^M4{LScJL2witIl9D11VS?{X#AEGhJ0M+(j( z-`k3Sr_rc+;C!Y`uc+A!?wMHt9G2D3@xZ_Fjc>p|K|JSg-C2*~x4D?m2U_Z;Kr)gBUyXf>;I3

    JA3xi=4SNLrdPmy7cMUOJ~nw zO95SpRB*k^v`Yzn^<=jLBy@k*kSzd`dXu~3aVh9WA#n-d`Rt2Q`Zwx?Zn9Y;AgPaH z4%lK#nESArp(|*HsuenR_R{IvplhgBxUYgaVboQSLSG2|y*I`6?3=Y1Jlj5hX7Ap; zpHKQWJpgA*zOUm?Z-NH3gx;$Xcsj)wTGk1@skhr49~E3PtD<9L&N|$%^`vyH`O?|b zwPf$f@YiXajngSTgW>N5AxI9aeGJ=Ew0-8E#XrsaC;tQv zp8UMyPgR_BXSKk;QCO_=<$S%+n{;hfzsB_AA2%Vk_DR-LJ9H`*t2w1tTan8tk?0?6q}#e&=&v5?2+eS%6*0oG<0;ugJmmH|Ndmo4e+_JFVR{_pS2I8F#R?TIi_4 zVN%osy){CGM?&F1%1ujV@0fx}g}mONC2Sb686p8&n6LRqk={jyUTE;#kIb*^-FqhB zUmNg&eE#C*$@e6oe@QesXMO-BCw(d1X4BMvTN9QDY@VF#pXZD<&oRa~*<7&0rAFvj z^QW*XSA9yy*U&TtH|a7RLliEG3Xb?(TqFd3D2A{T4(`!wl}if!&Occ#5cUHn?uH5d zKI?xxCkefzG%sE6#4?j z$jPW+Do9rc-FQ}je(5Y|qGMpUG)*=mYAi2QyQI+Xe6Pivy2vBH_-u>$Pj^-aT|ion zcozDdi|dA6IP_X7azpuL`e|&boHNP_>#Y|#XBHj$bIkI$Rb3 zI_-9Y?44YJF0|tQ^dJB6AAfo_9Z_vcuZaD*>l8Yfz)95#^gQr+hgE0q6(p6?8#5_^ zOqi)}1$ue+%|fAzr*t@SW~y-$0?Skd69QKO9Rn4))A`VQR-o6K(w&W(lt3oT{oO08 zDWzXJefsR_!VZ@f3a;elz_ODPXqH%az4x5Bq~fIwo|AIqO8#oZ4Bl+mqy)Y2W;U%# zC9ArfZoCBjGT7Nmmteno2D-U(s>_#(#F=E0VIBwD((A;1_a())6XMa(;64UCSNcox z&tjW&d}WK|iCB74f(G2GtaG^|xV9STm;+6FFn&*o+Ca8iQquE0phmReCY zve~>o%a+ZJnUp}mrAj9R7R%m^AeN$pI%D$vRwjAwM&I#^b>XQHT8+tM@omp>}9 zZJueKJ9PLv;yQ9n%HUQBgVj9rE^nX&epkQ`q5FM()&DB|G5%?jzl(q6572=|Rpc}g zH(nmPu?V_Ynci+5E1Hy`)|o#+#sPI{+Z=Ql$z;m8ZL|D=Yi<>_+pUw-AMH*qYZ*zi=Gr!r9r`^oZx#IjwL&mM*(F ztB_R>{qQw-cl5Pmbu6Xb)d%E@1Q;$JH!u-bBxV_5lCdD;W|&yey~V=$phaI-xjlGn z+0vJjKgK_WSSDg)V)3|(a?dx$Ig zDi+w(5I3xxO$Dn=>AT-CLg@N;J_Jeq!+(CK67-j@`QEzq*s-fu4<9-9(xGG5s)T<0 zcR&z25#7Z4aaUncG=CUv-iVO9b+S3U%h(V-)a5Pv09;9AfwRzIy1;wPV$0?-}Uws6XIm_+>Xq#>UFE3xIxjLx*LJP#UeC?kJ*O1@uB6T8U4s zD{~k~{}m}`0OU&+M*1kuHb2#vN&Y#5uIh>$pS@=)as_32UVr+nhmRe(cJ;{BYuBzF zdFj}d!_}tr-~R4*zXi~n5!%hh$N6P96#1=6`LMcCQl(%)wTe2@KUMBBkkl4Lc!&Y{nmvll+rZVD+)RDY(ck}GYzTCXn!A+N+zedw zx3^a|Gl%jAz52Pjp{6>8{-CeWz~@gN zc%d~@bavyQYYBz6j*1+3`9FV;E*|vlv!{8@ZqF>hxh=B*=iA%shTh$N9$et-V~JV* zN?*5LsSP@0=&QW-brdeJ+tD8I`FviG-ACYGB;p0RzRef#rUI!{AjIV^29FvDok-wL zq_&FOhcoGv-n@9wYh0qMI_SsxTQ-7^7#Q;pMBq>9y!l79K_BsnDbQK6etMhRZLkgW z_qTz+ma+Cb?zqG14~9bB8@5c_Y+S+FBZkH;(G_*WN&b;K%5=0snZE7qYL%TeK0h&M zP6sJnIGC$Dr623*fzbN~&bvBSL+I@_LJy62MdUM=K)<7s1Sr5zN)Ql=iU= zov^(Y*fP6j64vArHD>SQU43He9;;59Tj0K>&sK1D*Hq)6>$pVelw#FE|EMhV?K4Dm z(vjH@GLZ*;ro;_f|N7}ytdRBBdlHYg!NT2E*k+T2{zLJ4TsK_Aq+m0f`OeZpjfMK5 zp~V|3INRIZIOxJ+P1QiZ_z{YjK$-s0M;GCXixr`hRi<>(lhJ5Cbb_F46hX|+sR)hB z#+CKRRSErwc>q+~-+tU@gSq>fp2@?tW$!7Qm_nU*6ld?9!BC`c3@&J6He0P7u%c%T zxeeVd)0T*vEjT-s!W#zN&M}O->XdHErSvluviI#Xit0oVri==plO!|Gk>t#rj7->A zmO$!aM+M2T%;?~IOtm1 z1`73hpkKbYXwW@*(3`a+<4ls;nK`{y!MGWP?Ck}ts(fV3IxxQO=*IK0%^gL|tAOqf zf|Of%OBvk3sj04!O;c8o%G-SLB76A5$jKGuV}%FU42^@XaivD^dZ1tYO@-Qfv#L5N z2uDT*(9_Y)bLkZyl?#D>>yd72$7Fv`XNUPmhimOxJs)w43Zz~G$jW2MxIbhIGOptI z2%rr1=|?PD80%_WnT`h;8mXlsXG~Y*E`LH5 z!2x31(>t;KE$OG4-LR@#6|>se0d%}R86poh)Kkc z|Bw++>G6271~F{$$zlIM+gKx@x5lbX=^%UOp$la?Ozs7f5{$JC%=<#&pnFACDQNTh z`=%N(DS@n4rG>Lg)egPr{&cgsvt{!@pT!?oQI)cEZK-pC-Gz>v5oQ|d)h-k|oRpxY zZA16Ka%qe3C-RVruja9onx5KR?^4~I!c$MFtA_&6Xit>|OBC1#J7S{v!OBg)+tc1Z`yB-wRYZCDf z{zNSD#du@N^u>hkar7z_iuZ4?Pdi=}1PSxn@zhi4pdGjGcANp*?%Q#SqHwJSj+Rs@ zov+*_s$2X`GjxAklH9K7c%IX(E=S0p5A@FLd*s4u&7 zrbg(PNISjVjq(?(6Z#IN&W>mmYMt?&KMMN&tC?l_^gA-p?F6C56>texl|OLzefQsg zpU8INbMg55Pn?i2SbOhJpw1mUx9i-wubkVu_1s7CH{a zbj<^82t*~)>D^KZ`GE%{4Bp@RHK?s$-nDD%xpP~0?fTl64+=qozVh1F#3gR3Gbqr1 z|L4Dah$cr2I#0tcH!IwJ%Ik_|MSN`|M`#q=RZHh5QKJzbx01n zTCLXM2o4f_Yrwa5xoYo~wZPgt74dDlL7)q-KKiJzYc&sgT@^V@rPM3+GSwLXo!6f~ zgv;{bcC8A_rF00La02%7xa$>h=&vk2bjc>$JvTh`iysM1wvS*UFCGHDQ0PygdcEEV z{&s)(m;aB~A3rpv7i2SLn`{(prwdKCKp^q#1ERX`!~+rr_emJMvQX#DGol7JQc52Z zZdt9Iz1Nr2cMIC_)Q4&1f^IJ;)73O&KOaau!28`QJnp{x{`3KofGTm-hTctFa<+q7YH+QIksCR$NfH?T(%pPt3#}d zlB4-4U9(`1+zF^^JaQ-2-uuimKM~tt?p?pZO$A+9aUKGlz9MuKAx3BtL9pF2g!2ZX zh;lcE$lWd*i{zm56}g3Z^$qlmoLF0pbLQNa#r2v*{5=nf#okoV_1a3}p*zZK z0J;`|(_Cq>-AXN`p>VB!HwI2%I6{kMp@Syd!aQ=XoR~Ium^;DWz=>Cu9{QKRIMC6G zlTQ#zM_HL1JJJ)u%Fx|<;mG(ZCM*Nni#=6PrZ2!F_iU)sJP@Z^srZ1o({@7ABe!)S zVgp8g6zG}BUei^`~jPFl0o^O8OltW zeNyf8yS6T*yIiVk^`1Z6M9^=4YDcZ&J#v|&r*;$`L5~~;pkwKZT>T!o`&&8_nV+45 z?d&`uReL|Tz}ovg4~oRyds9JQeC0vcEx;q^?+9WJhZcNF1an~F4u2IX{aYd%?}imM zc&2jv*Z%&7gMN{}b+rM|HF$!br>oC*_x;a`>b?_20Vi5oh%;yOTYCCiy0vG{yg$}* zpZFD4%Jd@WB3-MsXYb<5L2qqsb>a%xWYdLgH8`pjM-rSHAS_or7(=|-WSWYGjWT+-0_u2qtNL!bkJnmuwM zYlv?Rpph`&!0=ja;#XL^YawGK%8j!4%HQYdW@@sbpfOEHL6cgL#;IPQ^g9a5bc$o+ zF4sWqL!eKXEqvWw(WT()@AKySq-yVr?UCF1PdU9w-%QZ?eiDktsi+3*SdPYtx}_pX zm2pQw_8#l93~b(9N0aS=mL3&^9W?Olk)D>jml%49M~=;d{!cd(bWBd9IF})i3faP7 z=k~dy^17u>B(!KQr9+RLp?i9|ySp3I-fQhH@3R^}uKxb~`$8t)(I?fPzUa00zyHTP zMQ?(LjQwpWW?)cg}L{*wKccXPfSkI4u_sN1ATJQ z$@b4B+v(pD)%RcfmW07GVzD<#bSF79%<{T!S*KURfD zPHOs*2Nqg;m-M~gdo$GDtAkG1;~eddxl*wNXJ244hhu1S9=W8;74e7KHgB%WBUk$n zXaIee$OfSA5;ypYSoDnt{Y-PE{&bWiLVnx4FT@6eE^>iVMWd>mM=owKxGgrJoi6E- zyYGaQ%TCJRl@}$PFOtrg2X6xBOb+_R-&E{n!xVCN&}Q@5qLHvmu|Oeqd!9$m>-Sr_ zq8tlk@vXgEe0$)234>>)3|gg}GdF+N>cz`vAawNdBmy~7{D znF>udbdi;9vaJmm3~`Q4M59r1pWe&TpjFt)5-}aqs*(X)M1|X_rsxwkApF_b)Box?ZmItC2SxkS6QTL*XhPuOp`3=B zi@P*+*luUA=;tJL^9A_8~svyu{kh+NEQhAaFOfoL6SbPC;8Nz{0 z*U!}7j{Nzdltt8s_4(bN*qY2F|D7!xHd%ZjTWUpB$rkeY`#?g!UMBf>DDpZsk-{cg z^N=dP+Y=+Q>#|MuY?$urnxD6x(_u?J&r7CbA9q3e-on05!f-Wa1m969LL_Rh&MfPF>PX>4q= z(+ny@*9&x|R;xuQ#Hj|)`eNutErDw(Ho@XiM4N?f-P}Dru&J-FYeiM5udA=Gr}H{m zfze^iyVsy-$TRGA$-5E3k*U2;M)}){fz*V3MU|z=R)X=amdWd91;*x~yosNNireY= zk)}*L-8xAr(j%Od@;|gTTsQ(dWsUD#LK`9D|E$=*tktZm0XHXb^y;hlNM&ng=s**||+F%HQN|I^sE0P5FEldV}_^$@mn_TFx8 zq2%d*ruVvl-YSDSepc29_5SmRm7?;X>)e*<{_E2@Bd&Clt-Za6%3Ny&x;XUAH?Gpf ze0?CPw_HcgnL^=7C!PHN+dG?>G_p8=OGv31@dH=npqc1^W(IT+!9)mOI);T>nw4d& zxQX-wi0grDn{?B-$zJ#FrRha4Rg+Cj*2LCibq{XI8ZKtjJ-BJpi}BFL^x(xb+itS& z4KRW*I1H2-y8MO%%mXsv=X>w(d;j-lhRQo%SbD4IP_4{eA=Y+!#h~dZ!C90gJ>W6K zn6Y2OSoriSIu=J!~ zxnbtZ_11Ig2;!%E5JXmqK<@sJLU{P%oQIID#fQTAUO4anwWV$Do|iRZSr%LoSj!ujhJSBV-(w@gx$x zWAAC{h*|@smmkQrIrfFH%s#ulzYIA&T^7!O@Q;4vEV0U&0Qjopq?@nu9-L8Xa->5l zGB~qxTL{Y+Pn@3K7R>&#@XvnS=PGf_GryD6q|4bkA$2f7<<1hR)!DCFBqe>nF1?Jw z8Fs{tUcKX|{h+V(2Ld!jgRXYO8VnBSkI3anFMk5kCuov-g?%<|Sb?0qUJ;H%_($J! zmINd#y_r2d61Y0!bGRHPkH_V)>%Df9-RtoUv*iV)S0IqPY?(n3uFbeteIpOzknQbw z5tjNcV<|3-cfWC!Xe29L#{T$z)2!9)@%m;xGj6TPK4+crxkskj*mCnHYTkd{5=inn zfsrIe{*&BYTwFXkSu8^I(utGkqA*_Wa+Ta-rK=<+J!?eH;#W_CfKAgmtZvmzc7hI_ zq9}R65xF$7pJ;#CoF#>ENMgok>+7C*RQG&qV&ddvq6j>sPYC1XE?3Dd$=38f-W#`? zztCo+XDYue@uuv(iHptuE*B^dk^L@U|l5XyTzol`&-xUh@2WOw`HWWGscOx zePweH6~Y-2`8M+nYfkJ%^!T{g+Ydg`WkjR@a+btZP3hlB)g~$FvR>YDnk-h=n2nLH zN;O>arbMEY?S7Se!eXU^0zAXC%FRtC7j1KM&4w==A0HGWo_m~sckW98fgEQ5xg<}w z?tQ~U_b&01Zf106U4q_a74rAnWu z6iM9_a2+39U-)_tKEcuAeflS(XrF$bBPSi{B;GL)hRaVcUw>*cd8S;3K^x58&PtaO zP5L3W0A0^7e3c63y2)K}q!*3eB{iQ8I%gx4PDG5;^W%mMKBQJ&q6A6gNG~O1Q{9SI zioeNgeZ9SFtB&dJI82a>p|6jlqEIA|D>gn5U3>`x z1JgFRN`uUmo~XvP7g$K3#b|{>aku}jIs~7XyN!E0`F~|a7Aai#X5rU%^pvZp@1pcb zCMhI@+D@c&E-&80xP8nsRfOHKy zD(w{Ll=Mj0WwOo&m>qAc3mpIv*>ng<2iAc@0LtqCwH(8Am?WgP+Ct3=MX$qSryD?x z_hMS9O9%BVf`@E_2AAFBW$sN=J-l9%9Ykct2mz#b>40|L=rA21Exk=6s`O?n>F8G| z`dj+%0_RkuyHm2#dsyi>3ay6?8+vDz(Qg>SgCHU!8ydS9?Ii%;&qzm*Nm_#-vP42D z67o@U)vQR-ZbND1A3NeKU_5%lxqvYzT?$Gk2s{L0sF+B5VW0%o&g0PKl3`R)ftX!IF*}zZ4+@>TWolM10X!U`S8wtAS@}#Hc)5Vl7lhaNcj)%sq z?NVL9m_4Q_ zDQApVKzf&`G&WX7dW%#LDUeeZ59IQsH;T(=(7b0;8_j!N`u|2cOpMgWJ`?FO=}2#q zcuiledFh#iza}XKaw2UhcEr7<*m+`PTfnpt3)QUjE{yD;GSh=HRkLK8_hykU<;f7| z70EMGoT|=QyJ0#+V6`hfqz!&ENm<&|b@(;apWEXy z#5!=YMx`^II!vwGa5@}Qb@m7cQB%nlMH%#E!-cs!Ww z!Y=Wh3zeQpvcl?=l3%Ekgmb~t(-~H}`ccA>p4k+g{{Wz{m%%3DlwJS;002ovPDHLk FV1lLOPvigq literal 0 HcmV?d00001 diff --git a/source/images/detailed-mixer-window.png b/source/images/detailed-mixer-window.png new file mode 100644 index 0000000000000000000000000000000000000000..6af460b7708af12222d72c100751810afadb8503 GIT binary patch literal 34159 zcmV){Kz+Z7P)00ANh0{{R3IB(F300004XF*Lt006O% z3;baP00001b5ch_0Itp)=>Px%`cO<%MHm&IXO8mFfc_$Mg08yLqkIq6%{QlEio}MBqbsx zCMEs-{X#-QE-x@ED=Qrx9VjR%^Yio1&(AF^D}jN5CnqPv!^8Ue`XM4AL_|bSPfr^g z8|dihA0Hp@@9%qidnYnO7#bfM9U>trI7>@Q85$WfJx|`>-x(PhKR`mv%*@-{+lq>c zva+%;G%80(NMmDTot>Q{EIZ=j;%{$ny1Ke|cXvEOH4_sPYHDjFDKX{c_*z<8$;ru5Qc@}^DHInR_V)Ibm6fQcr$0tH)z#I8hJ|KkW+EggS65e;mzNwM zCz_g?Hb`M8E;hHfw{vrIuCA^jCMyUC2*AL;C@U`D;Nace-5ebs%gV_sI7@zheYLf< zB_}FXP)}Z7T_-9eR#a0(Og=F)HY_eDF+o=}HZnd;U^F={EHOAtWQa&$f<{wjH$E{j zH9G9<>`_=sG(%ZDPi;z4LpC@w*x1-HH$e>y3_?FWqobp3ZEQeQbd!^lj*W~sM_gH8 zQcqiLSwccDH9c`NF%=dVMO%79N;_t8fLUdBar zU_cF0O-xm5i(`GHg@b`HASPu?OG6$X*VorMIzC84LtjQlVrW}SM@2t0NLzA~8ZjDN zUSmE+QlOxqWG^#5H!os&n^!9|%LP#A#9zi`j%4C{65*J<&5_5ZrN5o|zCb`mYMeoWGE=2KH*G4DaFbuV zN7;e^=ZgS0$&MBP0D==qL_t(|+U&gxd=tmL_iafnGP6134 zPg_oNo|88%O)oi3`?NjheLtUfW>>Z@yRv04gr}eLlP&Ge&W=|4YG!Bt^PicVZ$RDk z&0DCuzLBo4eIpBH6>0MGzIHQd-L$^;RV6avIXN`)`yK?EbqfU3y^qHJwWLSNPNqk8 zu{h4-*uBA|ZvHVniA?t!1Ly$xtm3U(=iU-+-C8^gV84-!{F0~!4rf7cm(st~7GI82z+ zzxm)|iZ7UcDdc=UUnUdyM;0x(d+V%ke&fHDrn|D%biZ@XeY5VR_`>OyKq!*%gaWZv zjQUp1d1me`ScShU>z3j8=Y(h6_jjat6Bhi@pXY*P1tYJpKMlf zcA7PdKIJa@`@6aKzK>}~<=j_%H^KMELYP{LNTq5iN)l2lPwEPgxD-KDC}EXK3vLKH zcm~ihXUn?T_kyY%^C`Dxqhh+5$9yrjs44kXDc*#AaPgW)pIN?q_T*Z={GPd6>96BH z@cnJQ+4rVP4F)>VOp*b&*X=Z$&CLTIA63vi95#o@&~U&P2%DqG)S>eguy_a1J&g-z zuPJ`8c=m$(=ge81otD#|^TCBKS76xuccs9B#aoLXd~gkgqF9#lF28p!IAv>#D{yn) zMr`?F@U;T!0Q#cGr@1_>e%GdFr#nnJE&SHTTHSAq(>Trb8# zg9{g|DW0_)6N?quD)7u2(7K-$()|5MuT;Vp$*Sdd&n+%~29sy4$ZB}Xth-U=O$uB6 z-Fvq}n+XFQ4I-om^QGOd34Bp1v0A`xHFGH3Rhxm#yj+dEePb+%6~+p0Os!58?9 z?PhD&s#W(dr(4eqbkM{CHSX~z`USqCPC^(DotkLqJXpNPp>JIvvScrO;T%w=&BZIG zBD+N?5lm+jM9eoCE2c?yy+n?H8=k@iKic921uK=%n4w)cV^U$&3-7;Y@!aL;O?)^| zE9VIdTGl;w4`@i;#Xy%#yTmEb@1DE$eq~Pfij1sVaL>K>Qd2l3r!rqO`Gb|;Xyn-|{y%$hm#EuN6y=60@_9Qu57^~1C8Uc3O+zWnV>IxJCY zKgcALLWodgfshvl3Ef*9hpw5XPnINII`lbHfsVNbR?mL)o~b~ukY`iO4aVHQkQt@C z&H(NWtFkEKb<+l228(xz*9U&jj{@kvMZ@Mrjg~B+gGMhX_ZFazQN% zMIaA0z(UQiPW|9F?@Z{{z{sN6_uNBFC8H~{fgbgfAvf*;Ih{m99(5LHC@ZH6x&}69 zYg=^0qAtDrhb3*%{RYz_03no|C_JA$>ekZ9cF6GJ0E#{ zK90>tg7fFU{yL7rz|Q!6PY@bh#R0ttkBBJ01(iC2{sw~3RiYxTt@8FmR}W7ax=tXx zCF0wst$3G$tS-Uh(AN@Hu~VREv=~`YngNz>o_JkxTo`kViE3&L)XwPxwSK<0{tbZ zH?KDRc6gw1__qsVjlUfZ(_x4C4SIOBXdvKonX5e`fmnFN95V-DU;?@?19T@A!^D)$ zPX_#+s6FZqxkBz3<-$Xzn}jaiv9}d!?~Wb4tz7EeF&@LlK=*d^)dXnut=yn}j~U zq!;G0?$#y5zjEq7&vdlX8L@R7dapYT3X3Pfq>E$sPe6LwQJJ zQP2sS%69*+G@VI@?#Rw$;V4T$Kg{|eQ^T*)uZ4V*DWhFz66iUVl{ppmipmOlqr#p8 z?&p;i6_wzr@@DVp^XpZp)oS&NYX0+obL(o21VybVD(M}AUJq_GY7FOoK zahpnI!wWC|8#na-d2+oJM8PrT28|^c#H=W(E&V@}LAOX%SxIereGIz1@Ngy-DwHcS zsz^LB^jlbapI=WnDHUnvm1lxZ*6<@?@Zh(OLnm57Hgn_ra%YB~nP`m+3xhToA3(P@ zhi##jNEOKGoR6PXDb*p5IVgnCeXa=E90kz1Bmba(xh8{cMlTWyimJZ=<= zdb$q%>%Vd8Kdy9%@F?Ly8a8Ow;vPRJBJ`#Ef0Cwj=#G@W3aM{oz}ylT4mg_!W44q- zNyU3+i`;}dtjGd-7aMR*b^)m?s-`^)>c=K#T=B#3Gf&?N<+VyDvAkiX>?Rb${G zd>*0!(6uTMS1qb~>1W*fX;p)`fUi)?0rYlE#OEW@r8_dkEotLh`64SHK-XbnK3|M= z9s1Az;MBif>5{1>e6<2XM-V<=gcX(U{>e}NPvQ?eSkP0tDtO@6=o$(8+@3+RN1Sq~ zXdL*Nq_(D@jvk2zazb! zo@zP}@&!_>R4ssRN~uS5Nzl{t@SCwO0Mu8nUi|`E=V%+H~nDlDnr?WKn zjy=l`YT8O4fGR61V>ZTATB=WnZZc#ihcL||m!wx04qyEu9Q)mG*TsgxBM|e&uEwrr z3EeItA@dx4*d+*tG!$hvhsXdP4hLhTHxzY-DWB@5b9zTjeRirDhhEZ}rQNJ`hw@<6 zhU}z01lsA@8stj0Y~L==E?s%gLCuVY3|=c*Ik$0Ua;;3a$R+7&({FvlO~bz(_^s=A z;ol9n{H`(f+u`B#ScRF|>5P%JfuwTmHqwSiY?#z-_M?S38l(s+g4;AVeNS%{tFse- zym)UFTC)>ur;Df)tKM(!!x}MxPp_CU8uOqG~Biu$`V36d_S5 zr=W2L8Q;UmU_3f~sr>XNn|flS46=4cJ)%YnUT>SoBFEONaT{HdPKdH^vQ<`2GjwrE z`;&BGDvS(AY*N%^OF5EcoROp)aE}l{+}z@Iqbhee?G$B|97z?mD%|9Ac>=DqZ~=s# z8WeGbsGw)iP2$niOQDT3sUesv6mt_HGKz=L)FaS1BN*Q!Mj9!?OCe5AEJ_A(-UP-O zD{8f21vV9$WS>FSwh4tn&wTNgap>9;hqKT-Y;)aLX^~5DXX3eZT| zB;$-soFv586bm;6R#gv^QZp_{J_L<3N^z=)L7&eTpj@uBa1m^>rA0M|o1IN9-q?Vv zAoU0|&ZLH5fyjU}?D91=2k_J*2GC@aB+_hbj0Kv*0uSZ$dCkqL35+w|g_IeOjF79M zNk7fC?E;(E9TdG@kg&+zkZndI`YMexvScr3l{p-XHM^=~fuPEVr#L_-8E538BuVjL z$m|J+-A)vZQHtb4dH`J`N)<{-K`k^)kZIvE2t73jaXZOy*c)|v@U+OVot_$^Aj94u zHR3Y6DO>6h*iPps-rnqXn>}s`ZYFWm=|m++5H_IyXa{pO(8n6fO7Iupj3w$2qZ;7TX~l0wt*&F zPZv9lq6Utzs)L%9nR-a`l@l9h1Y*7@B|u&}?GR{m8wS&=;apO!z_0`5B^c@&8&Schjx(VYsjGiT0hn>kN;NIP*{ zZS930|M>Lj(?9+(bfTCf-QJFwGq-_+pPad6L(jy+0{A_B@pLa7(yY{rGDyZU&ODH= z(quDUX<1p>%9Y?R(N5Q1c|2WLXdhsa=X|=hd{s4x!3xk-HuOg)4 zhKTkijWfbY+ywx^GngMe^W-@6df_B?oc1M8o;goo*qM2g8fO$$KmH-0^Wz`?@U*;F zJ4w2V5^yQD;Q2F8ZkfzDqh5c3N%zM;2JLidrW9GmnFdylY$#i4U%M4X?0ejK`pmm*tCl^W2#1{>xBXkrZ%H@Kq^FB?0q8%Z6W*Y4h*Q(S{78I@&uyGhQIsDg;uguZMa-)@ zhzC*JpYA!M*@a&GJTKtx&Ku??6Ms1d+26WClkKu3o&wp^9+c+Z@t6W%WK_!ghrIOBG$3J@(SX2-6J8wh)rF!+; zt<~}=K$oZ1fP&5b)PS}n=U)%{(Jikhplj3YEuJ)cNavC>A7D1Dcm6zhJMfuiuW|*j6|qN4d}WMPxpr@#+gYfa*p`my2e2> z;<7S3_I&1*9Ei23yiR83mxSkxMselJF1c*il}I@1#;-sr80gw7C!HRzmkN19ux{2Z|R-ZqPWx=PM9JYCzkPGxN8+ zzNPnk;-0RV%yzQm$@6=ATX(>UoMGY-4w|YT0xm$m0nj@qo<&V=02R5{ds}No79^Y!emHGKpT9{V^wFwYEDoXR55gAymd4{JzGtsbPlTwgP@otFPhP_Ta z>UD77G!7P%apr)!uh?5TO~#p;jwOtaBpGLFCQ%6^=sB~juV(`F)jn~ck5=sg`Hqe( z(=A!DW&42%)9vXy@I)<>@Bwb)Od0f-C}TnAn1G|w!4YT~hb|B+(rg5ZvHml~1cn5K zAS>fch$LOO8}){`aN|CG{S|KrPGSIRe4C6 zHk|PAxwHWN!DZXU3i0-X^4{(&)3vsDZ`fd94^=#Tu87==;IUXs9bT=wfDeWHC?iMRzv8IxF3w%pm7GuPeoL$z>JhdC zcCtNJBmlbZfz)F4#A~T#?E{vBhlD(_K(U==oPi3O%@mjC%m!`VWtKkq=u=i$o#v3n z!FbMK9&^Yaj$dYxoy$1Wpo9G|RbS?39L2W&%P!bcW0;?8kwY&+8{4?a?G3$50Jb9; zc%KwN%dPC@n{2VUie%{ceZ-A<&Oq6GgH0GKG^6JXZPFQxE#x{yd8qxNO`A6D-;`1P zod*x`#1aJ!os|OOGOu&9LjiQUa4-;zkkLrw=;M*2cr(>VK2CVS z-qANcegBi~(_)beZ$*=#duI7FKo^29IJ4&rEovlI&7K1!$#aH1RWY$J+-PNm$|3aK zoA!5<&)oFXQ%?cJPqCoyuLscK1Wy2ZJ1Yg@NVCh!o+hgeLVy1GbDz9BDfM#z`dSHn zmU~s$B{fHwB=RfZGYk3>`Z}MQOb;bN--TYxegEB@H$2VFgUy~8ZIP4l(O`?y=^Gq& z#e(i;ihQ{7;l^m=!r>MY<-h;`eU?8h7P(-t2Ugy9I_KEoy?xc)qKwcL6L`+hq80|s zLRM(9=M1YZ8u7VEc3o9TL*L(V;V-8jI(6;ir#2k}|7qNJ1Lz7+0~SH(tQ3T1Us%nq z`qI$Po~!uVm!F*d`OnY({P&;#oYwR7^B3R&Hb4L3d9Y7IXL{uDMpw|*9Ad81Qb~8l zr9tm}a?_?GE0^|fI(F=-v7hKu9Dn^u&@Z06Qt`><{5L`|V%SMGMxaGbCO?TrN1Dt{ zgM%?VI)dY|fNx;9xv{w^dh+5YpS@q0rA5wevKKKSc1zJ%UCwBUn_M-s@3#Qj$jE9O zRNr}vn;aRSgLXt}PG?W;hoBK2hZ!XSU76+F5*i4-e|OE_{_Db$Q`bhXUBA8#{BPR7 zJL%C6pu_1ZWB__+wv$$@V4$D=ufKeH_UiAyxcd9wfByTczyJK|=byu^-@~V$1L$z~ zRS2D9`a(+%JriL%^dtNG*Z$>iOZQ*@_|&mu*GG>XJGLKcQ`&QKPFGyHa#5q*b%h|V zP?4j*0PS469Te}5RdXYmj57j>C>6Rs%lRS=ij9enYic;DNW?d+cQTLAQP=T4kH z{n}Z;7t)1)%+v42pwoH@LTC4lYSxw(YBb99!492Ec0Y9buYXy(``X7JU%P&7-L-4S zcGEx3#1s9J3>{kJuB2Mz^b=d-=-63V>WX%;oiljD*kYj)r1xuR9zF;UHTZ z))hM|8QY9*yrE$mX;yjgsD}tShodCjCKoR%UKli0*p=SLid#(Cd(P}AnM@rWjCpMg`i@=> zZP~&RxC1oV#+{tv+R;&x{3u^B4t?+5Y}4JlWrOz9cVDCRF7x#6Yw`WD9k6>C?0gEK zw=i6>R@Wpct5U*>}6 zT+mK$cfhkwe_6r0LQQ(@y=-ZDd3kGZ!VJBXDSgW0kEP}Gv9bhoF^7*_l4VhD;GXl! zFin#Z7z>=MR<9n3W}ak?3%c>sRDJ(M>VBSK$zDVt79_^9?On0tA(l3>gF03~==l?S zMs_7ZZ!do+n}oNuLFh}jv5#`>l|$$=W^$*r=Yw?UdAUHRzs$|3iZAQniz&$>cQjqQ z67yv8wFtM*4x&*^(_n|n3Zt=NYVJ~dPfXU(h0qleaT4@a*l6kBKUrgTe?5R+)VFL| zUsYei6n-GpGG41og5D2K>fb$SEBVP*a8G{{#_gZ9N&OIjZYX&QUNAfErq?;4Pp-P8 zirmS^A3wV5O0wDYq&_jVB|npUUZLo#8{q<>pZny~*C5}Y!-g&VV?pN$1u4)s9XWlv zeE+eJkAX((u}sFcIP}`8iqjQ6U;psgWwo`n%f9vDx8Q4B%WC`blb}DeslV;?%7>mB z9R;UnOn1`}8v3UF<)=>{*)%!|TF%Fw$`qG@zG;8S>C+|qPr(aLio1V0phF+I%el&< zM+0t8i`hBuBga6OOGCaW^r|aRsZ~<&4_~dS0;%CEg?{$zr+@oP1*io>bH?vK|KjQw zuKC z0V?-vcXO$qhF;azb>T0k zho1Ef#sbYh>iZEDbA1>diNylG4`FwAPcrmvySJVG%Y}|j*I=9e+M;XM_j4xP0ilBy zwdHSL*6hAMdL1;US6{ofi8Jmt2)$-^|I)wxt*sy6UU%*KqJ^;aO=~)!Up#rG@{><3 zZ$z7#d}i-pWXwm7fvyn_d;G4bd9Z~TX>>O`n;ShXjYK0Zo&>r>B{M1l{;1HP^4mQ5 zQL?}wQDHV{OCs%_0|t4=K8|Ao{G z{$LuQi?3V}8Z^7EkU=sOIqGtrydqA9uAo#x9P_wIx7S03yH~ z>GHdy{_r5_u?RyUx7X=*M$J*_G(i6}!Iw63oICsTtKc~Sy@3V2?a7C-(M-Db-ZeA? zD(Un@uJKo}HU2b2*WST3(a=k>O8231J%C=5UEC5_duM9;4`o|>pBi-9B9~&4<0nCH zh!2%y)}Nstd^mDaHVJguu+uK1jAY2;G>1YKTZo9EcmxMO0%RJX8$V&`MDot3?40h{ z#~%E1!NCgKXMxajbCY}2bJJSsxw#g)YgIx+&ts+W!08L@uzj$}Mqk6H?jC zKIKUX?54`;tGyd{K6GkaA739mHG1m!DBNzH3Up2}&`Xk%zjjPpXetoU>F!K|uE+?T zO9|*%ripws6>>4H6;e6mIEj)I;OoKw7J&Z0SMisuA#{_db}8@Es$`}i8&|2YbGrVIMg zge7eB`g=GQ#QFa>K+ki}ea54&+gYdd+%wmm_jd+8cj+Ezm!=<^H*bCp{6j1Co-(@l z-3g&15|QMFq1P=_%@2Ng;0NhbhtuJ zmssU?hlt87p|9+CGDUm#r0mWtze(srwG%4EICBRtNz}By4wp~8HofvHm`?| z21pO-4trx>JY)-nQNlub$cTXSxNQ;KOA;jRpbT0P{5~i*o;~zUN6Jo@>_0XNyUf_V zRsAh&K%?I zg>AjEF3G+ONT3Zn&V(i6ZtD(#h(FqV(E|L&D^ zm)Z5vQM$`)G_9NJCTs6KeU87uUbg1gaNtJ)^M^kO!~#EZHOFE<@IC!(;H?kuOz8Qu z7s5e-%E6HZu$a$XI6Hp==u(?iC@kO!g*+5RI95-lS3W{OH0%az?+&}&GM%;e`rZ9Y zzx<1(|Ksbh%WM&=%j{;MSM?2@zF@3+Hs)$^xkiRv!>(rY;D9gI;%j{R>2UZCg>Jlm zbsgQf$PL_|19JN6iE=tG8X!UV{uegAa2m+fdAe5Cv2zNa2pYfL?{#?D2xc&DDWT>t3zAyV8jn| zJRYP7|0KnG)W&4?ipm^2N=hm!D=NT0{ajhWJaQ^4iY#y!#HqMJi(INMTu2L;hMazQ z{dmq^UzL>0hq}5f0J>7E)#^9gVHP=R?rMJAHp5>%m$+>fIWOZSVIgdVSg4RsMMyVk zBO`bOM}s!PW}||XMMZ_9;O9e8gcKJ}2lTqrKozIKFRLOi4!xHrRw!gQ+GGPwv%cD8 z2QmmY*|c)GTzjXPVRJ%rm%AJ4a_bu0%jbr2ZX0yBo1Pm?<8c*Gp?rcG9uAQKDr_cV z-e}Yv3R8oa-S2VZgPxFo(Blb4ZxDLjyB~d$+!0-In$d;R4D?omp|G&whK)1O85G8}-<%M;EPH^ysX|sBC-LcnHGFL^s2+bm#;#Gnghs z<`{#~pqC2Tuuy=ADBU*7i+d?Ap{+pOew?KIdYr^oB-mnNBjog9I;m_Wpv*bKELU~} zDc>IGDnIhJ*NeYR1m_EFX$8F1h6KIf2k~}LrLd`{1ikWBK=0rfkG^Edk`C7R^peEn zf$V7l=55@#aS1yZKp$G4u0yB|m9m4k%lES9Bq-UlapNBL90+iMT~-2BDw_@4zz)7W z(0M2}pXN&VQ8|jG)YEwwijd4PTQ`<^EMqU5!=6*<1hsQgcMF#2VpZSvoq6Gf7v}9_ zg(oHtWPb-|-h1!8Gj*)+R%I1CaPO((qnp`ZZkN1wA1ko_h4W<| zLob*=cC1^NT~1e;U3|Y;Txomfg0_gTMNB$dtp4X6izq0`7r`prj zJ*d20(0Q0uLJ%G|;5y%+O1p2XFn*A5d;B)^yhe>>bx$`@!JHy8sKBG5+XDT})S;gT zr|ifC-H~R?KXv?g+7BeJCUDehMrsh;(O1n%$*AK+|n~IoOvKOJLq{k zj%`e%kP&)a?~Bj1XC*l^Skw`v=ST?0~p^n z2&#JBngZ+&XtHq-%xycv!F)pKxet`=%gqFx)uq##4k1sM0Xm2~BR3OtU3$?ngLP&3 zIa7l^*@_3_>SP;dq?pR4(&`N|726Oi#V{0ADh*mS%Mg1Tpvy#jzD$`4y%esRurhg$ zwVJZz+3?}feJRlE>Y;aZNy=&t$xARmuj+YA>j3l(E6!}*e8!UcU9U`~o3mr%=8dfl z5PBJNW>Qi$^4Bx%e8WOD)h45aBSh8q;&?%%9D5c!O>$IA4rD2 z^cbj&9p9LA1KhVX>HFW;59-mQPt5?(#h@Jp>TNj_L7z7|I(q!nd;oo4KTP*na^{|q zd`GVt1?ireR|lYvg~v-g zv-;RF9h(4pMSj8?(tg9g2AzbSB{ijZuj?3v2shScBDnkbsr{!;)g(c$n>V`YRO%^t z$*1J?AAf4&{?QTu9XmC;AAD;oCV-yz-0}VWPaS^_Kwo+6)Ke2cud5jy-Pk|6dtcd> z?JpjG3RVawg1&e3)W+ST$D|sLb$dIZR&;7v(Cg9`USS%7Y3r}#a6_Mt{&XHmkg!9& zqR5z|54$xwhr?kkG8Xxz#_5FqHYhU!JH1EgG-ns zrytwB`xMCO;Fg}3wus$kkbigNRB%C0ttaGc1b3&ktTsUcxyMoRw}gqHgIn)Y zZ2-F9#pB109p7I$0ra{v;GTZ!)Oi5?f&S5BrzXCqpBg>&By&#(moVBp5%e|?VRUq} z0zxlJH4B^j!Pq=T_uS0G+QhC~h!;XBDPa+iW0G zguoKV5Yr@PSX7l`;cNM*Oe-?j_%fMaJB`JAZrMgSU%9dM{~IbC~i+qil2#uXFR-Ye&A-n@A)U3*^%r!d-f#5RAv>+Ot-D}&H;Vj17&oRElD%V zQ}&=hTc&q{Ubdx6Ii~~Pt2{*abfx*aE7JpDlpgtB&UCq^125mQp{k3W?vRor-JwG? z^fXi3j#I~9T)}R#tv&PHi_gv5H{nld@8%bu+c+Zu-6TX^K{NbUxf-iS1{rIdK;V_i zO+`YfcX%M?8}J8R)lJpTcmrNSs`y_e^m!$%>8j~iQo`=TE=jDwsDJI>FaK=RocE-%r=~m&teRIFX+2Ynmk;@37K+r(?_Z+A3DMRm%>r(|y18AQ$w! z9k9@5K?iplSOiRX(>MigF~>J2W|uN4q^>|H=n6!wu~@S!W@VN?;mi4QlTIO4kpoee zi${PTgn4Y06cNBs^c6zid+B>Dz1H!I&sch8+=)WZKI40rN?!SAmOk5}+`wnA@V32= zBkn(cU*5}cDc@^-hbu0~>1tNG(kiaFuYlsc&fe}wqrR_=!#JaU?l|2Rova}Usvg)l zbRD0M1^pBj6!M{GIyyGTl#H)8<-^rcYy}u5Qurf&q9AchuKNm&Gbg_HQo7Dws`=~} z|B|lH6j@sCwm1CWdu9u9}8^ zHZ5ID^}Q3{|7UjG_q*kV9P0(HAB(FVk8AzKD;qQ`V6|j(s#!2^B{%eJ8iG&mNrEoY z>6J<)_)^(w(9p*?RcN?<(D`D8LZVH9&id{k^nZ!3g=ZU^pZrQHbVgQde1nG0L?m%k zHGYaxD^aD#h0uS-#7Ek{(2>m5iTmbzuCIae2$Cms1EE#$tE`T17D-GMw0%i+B zKMzfQDUFQ@pzofvA$STj7LTdM+v##$KDTs*Vt!GEWBCn=Y@k;JQObtdZ??k)wW30K z3Up=}%7Tj*FYZ#qE!8;)ooP*m!cLso+Vz<>0sRWhLR08h0%(!iL~R z`kw+EoVa*8`_|);uSwQDlbDLRon-w@| zPL~n{t6yD3`c|!L3Q*Flp%+TTT7ms$YwzHe&esYsXUn?TYZ&P8%X^;rqM2`+hR)P7 zB??J=>eF{#Q6`{YL=eFrm@~ff$FrdDhtR+OPP!m;IXF7T=G9lXaW9=H(X-Okmu!)DfrE;}ua4(*G1%{_u6Da-#nA{$nw4D8EgWlUIZ93KEKLqQU4dEVioCoEYSkb=FVE66 z7iU4g>%LiA@BQwAIja{v{P4PI*251kS~O?D@-=gdi?>4P&`vyFkvl9=C=P#A&a5V; z!mL)c+RA)(NoxW+sLhMc#eXP&I1Ki{DRTJBP*XUHTGck@ccN%jR%z%pwc}a+C3;U& zrJ)Z8aT}^CuvzIHWIcdRC-sN1(j5-31JLQiHavo11t`WO44@aml;rVW)0>B7aJOrS zZn~j3fuRN9kCt+SM#n6gM&L(-CSGF9m6 zMfU*MdA7$0J1pXZ#m&5Q=->F}gMj)y%V*DCa0@hh_VQ-{^I5ZK=&-aqJl166!yP~n zep+nM<;GE)TSb3-eiC%LfIR!>Kf)H<;rJ<9SbtWvIAd;#as^dzj}M{K4W~lToCfXb zLK)oCR29Ob1+lO%gi`?ugL^_6I*dzS%OC%ImX3SrL>p}z@&tS#l5%=&^j>GTTt}y? zdvPtnedb%;j-Y?odPu_cR+c`6#_GqPdBpa1syFJB8fP;Ti5Gautrc z!x5?g?yfDRZ!km?cmy#5rSC8+vVhJ5znk&NC(wHqfg8GgWHlAZ2hg?mJY2wne%E~u z7H?gA_dWMK^WEv!Gxt2YX7Scpap-i5>@aPdIY%!r0|`Q778XNWTt3f;hc=qYlc3Y5 z$Pb@={`qr<`SDZeRR^s;X-nfscvXPDW61$@1Jl8v(H=g0Si`JeQ&`nN-}GFltGU`W z(n1gUP&7d3Ok(GrfBx)YX3cW|o&IV(l)JiR(AUIF&C~{jhs{2a1ifeAh7Qkgw~P!lhFW|rBXlKfZE5!hKzK{_ zNVB=x`dyIGAG?40 z_1J<1%kLe}>CAFMasWjur#B%%c#BjGQjLSY!F9t3+|wpOkDnsf#?OGKXkeeAwAmSO zxf-hjYPhF`&}H$+<8ft%ss?ye=rX&^ftE&}jqZu0p(oDn&Z;7VQ|K%$LTx;&4O6Sd za8CoEn^?)qO;ts7T$LZ(KT&l7LYEs|5IQU2OQsogCYJhD2x+Pnu3R@n z7Y{reD#Soss|fBv=)0}}okUL_C4!G1JqdTN6mdg`pAy>Yaf-zR})KC;W+g6ORur?Q4I%OL#uLwNz0O{r;8m| z5ANyjvJ<{k-^M|=ZOeu(B`aNJSCxhxw`jY@BG{F#i#kr|Yx!*18R)5+47%EnVQ@$~ zfhuhD9Kp!I)(9xyrA@JcNKRf(xHv52fc{-fB%FTn72rcEv{Gu_96){XocX;Uv2~)O zjbk8BVkQcfgUh?`wl1k*n=0!&lm~~{y^2Ezdb-$MjkWTy1*~q!;pm(*75Au1Q@R{W{ zt|r^^ROn*f^gtI1MBx4`4GyeZaL?k!&|Rv$ygv0&(=oGyWd$ow7-!~{)TCP9YRcg$ zH7u3PQ!cAzFPUEZ#4=8c+zyZgNGs*9M0_RTxU0`!N zNjTpKrjL(SM<1TG3Nz9(fX|-D@ja0B1|?|Nfm+uwYs~eJ2|jGAeMsK zTOR3IRkA$hMhEf~b*mDi`3#}EY%Jhykt4Qas$bfTz2Qm;%1u1pIm za?;eeFu15x0{uDCps##@HB=Fl3G88w`zGmdK`=Bn;G^doIjL_-pKV*)Li}W>_^wEo?j1# z(T@27xKd3>p~lkQI^$FEzIw=+i~l{O3sq?8{96i}Fy=h&I62kC6kIC$}3 zD1m)v9r!r9Qob}ur04X~JXUvfUfD`^U{2}8(0OOhV8LL}??hjqgvVJIY z-u-B&j0Y`pa$YdtBts!+;F08h^ieLKC$BQ_R6ZmaCPPl27cpM`=yD-X44`XxSS%Fv zI&C1Xpb`Y@d6M!rp45e+POsb3990#8Knsrtq4N-z+k=M*XgJCT!8#tVYe>TLP^wUf z^bC4zN^oVB0-gpy7xO$GC*>p&5VsJ-H41sUQaO)wX9c~C1A65oU8`sIY*B;eHj2$} z7bXo?FRj{fpT z@8&3k?d3`#;Vf_knw`TZlRN7PzKS0Oe4=n`?rJUHly6@a*U_`4B{Eu~8FErkC1wr$-XsIc=NwDU15 zFFPMO8aiK*EOGn=QQU+C?UN%RTmT2avL@(g=u+l9txk%>g@3hgkXsyjkw{P5-ck2(I2^XZ zxN?U>3vKURBAzSkb-B$Ur(4L^84V(l3_v%DkdP&MoBrBc$7rdJY9D_MsmV6O( z60)u#Wg;#=eq}`fx;*uQMPS2HYJkhv1L$zXNho=#VL@*-uv=&KCG3`|-Zb8yUeak|ITh4*)U!Pe+IA=p zHKYylFDf!M)K(R-)X*p2%TB`7SyIDJx3gx;c8(;9diokzVWy!&nw1tEOKVp;bh;v~ zgwKQh#HrAYnxL2Bd%fBu=*B`#G#H}zHZM_;4Rm3)H{mqsCT2#d%F4=V8|}b`K94=} zu)Jd?#~8(A;|$w@X~|5syHt5c2II`vx!k3mkndQ+PNHNchr3kCkuBRflIVHj>lutQ zNwcZM1sY;y;91X^({pkhpe<+6R-_c~4!J|5!1DR|IoUxM-URde5_VwCIP{WUmVLUrbxAARYTdd+S^GYRmi4gX$`8r+wsy0EdpkR(%J;J^|Z8^uKD_XfNa*VpmW$Zv`k^9xZv-GP}i(K4%wm!`w z7atClW|3pmK0d4|MeBzUcAzrdBF89$MXr>Mcg75kz)Ti7J)id1QUyu0zz_ZlP$EjG zY1bpIJZtC`e9{<)?jS*X)#DC@!)~ub=0Yo{1-g*!1F0{Uu>(^qa#E?EhypgT3u$Rl!#SV`>cpa zYLjWE0KLKv*Ic7>x~0NW)Zj4aEGA2iL!+CXoDSW}P?s%CNmW6$m3AxBGY)Uoa2U1v zsRA{^IJ}KRmw;W{D!kf*1g-HxTo273Qjue|c>e+T^G z&aeNy#{iE?1LjCD7)FCuxF>+nVW`U$8u6nc((i}CigLzB&K;xt5vPrLGw35nk8p91 z;7tVP9ecm7Aq9M)21#2aL_|;|?jz@b<7$XiRFfB@!Zzmpbfs_@1~>Gw@t!zZD=c&$ z%i0qwCWo%k3j7`{fMKo(<_ZQdS74;M85Jnhgs3ok=+i3>=n@`}=U?Yq=%dW5JTVGd zHQN~3=D@oW;E4Dt{&c;(1GfKk!Y+bFyMi06FuW2hd5n86P44B_Z?=(3u z2V4WR?;L;*4U}BaAIPoC%Y*HveGK*2J~CxbkMV7#RSmx3bDXHLYk{7 z+!^yC!#^sF#BtxCFEBh}RzsKh@;2JzhcJ)0VvRAgSqS&q7{7P1H%hr$Tme@z zZ4su;us}9vbz`8>7jRkOo?(M#tpvOVom9Bl<%-3cp+%TB!-C|wpx4#G)ys`WM^0Hh z=W8YV48pZDW}LWm;&1l@tC z$7_y2V{Lof%h3}i!=%UKp=VK1CZNkD5{VF#fJzGLM}ru2IX9FW;EOmCR1uipAEbx6 zDgpFg|35%~0)M}Ty#ECEe%(Vmtt-I&KZx3FL4;l^2117$7*Bvkf>^{K5kt@R@-}+V zEJlG;Q5&J6_uArq?`o+8^AlJE4e}VjciR13N}%AX{6UnCOPgWAE25I9PzsHpgc=50 zN}&(_)S-XxwF#lib%sK28HyxRG0xcSmA4SOe5^q$q96RY8I}$aB?Ts#VU_G=wyC^< z9jFg$5aiSOcE*LGAQFSF(K|JGmSq4GHKR?uVV_9FCENnV{>~ zah1^a&JNa;&){%dn*pG61a}STIUFMaboLN8xudjU%s4Xz=u;S~d@~j~or*H+;?Skd zNP$@DH4_n4MNtIjfNCt#D)a4AGR|<=-rG2B@4ZR3cb4iq>bZO=m4|-yYnFbsY^aDG zdAocsR}v*P?04>2MEcDC+6sNEh1P^I0Z&-P$roQ4wp#$V|{h`wRjG`U+5)yYmU znM*j<`kJSNt2?G^+1C&Bu~Z9f?;J_YJi-p7ZSS=lNj$+0>^lG*BQtrvDW?W~#fcS{ zPF%XQ;#NbiH2Cdf#u-XLhCH|@1kfANSo$hHmFiW+i&r47t7Z&;SAa#!EiIb4-{pf~JNRuVNcmz1Z!+l+GP4a@eet~&5U z4=Zpz-QmLJ`Bs**uTq~4^b_yW&_8|c#B1L>@!G@{x#@up*D)V6&e$vMMu**Dv^(rM z;3W+xI(zP*ASXB1j;)%tPM#4us1v8;^p&hHB&X)cQno8#TVlpYwplV~>CBbvz_JeI zK?^(Ba$txZSWzqAv2-8X-npcN9k>s6xNv;B+FFiT*oF>jIE?3cr87XfQ-xmi+6p)T z5J&>W}C;66opkmF8cJkZ5O zOumETcT?F>!$GWO%l09T;J#Xpbh|jA=aj<03jGb-(@&h3ai>7H$BNxMABn53xfs83 z===T~dS>XirS_h!_|Gh=eB_ax(oh%y?3Ir`Y{>*2&fvg?ZkH71=md_GoL(W*IOIm~ z%nd!Cve^|lKLxrYXp=`Q_J}AAI%3PoCv5gK=tjO#M;OwfS7KB{KH;|~L$5?AtxcRG z3s$5-m*9N6pRlAs*XoQatTG+C0k>9Ial@^GP7kwBOerQ!EZBlbla_BmvNFyXjae9H zs9A21#Wi!N;m3*|c_g>`UU7C6Ifh_`PEC^e1ZhixUYRd(yFsYN?Y3}0w+kW>vVlUW zBnr_O8gxFHgG5MEDs-*Y9rCzL5&Mj zP~65W(I<6ds8x+j0zE&(i#OSVVg+TxNvWD$22_S;Spjq->A)UUfDLzXWGc{&809B5 zI7%czx2vRN!0cA(@L?SnbS*|kB?K8shOX2Eol$pCM-cY3obFLdNpF5C^ajL?JMo+} z=tUwg=||#`UG!lyN{83xVHy$v z6G_qudEf)1wseRIVxy)-(AWXdjFM>77BeI&jSuX=rR|<%!sE8xhMMu{sqw~Yonjm{ zp6W7F=VZ?98WYQ^ba&mU@>I5drM zjApB(A-DDZSuQ{Q7KxwUl*>=QklRo1D`DoRm#oVPz2s^xKmEcILdX2{pCCBHGzD6| zwsy_&q^%xoY33e zBKh!QT~n6ST|Bq5Jo{kN?HlN4IjY!Lx@Tb!btR0*4KAo+@WzeX3l5g=geyia+%_|h zh}_Bz81&`nr&l+--#Y#|eEHV#O$Uc9OvA7XBCajlhc{1}osaCb&F{u@hG9!@Es)aE zTn7R473Xeb$+;CP79PBD?i~7A?s{__{p8bgIjYE6?~32b`baa~%EbzawN$OyetU% zAyVjkH9oQ@6LUC18J0UCle0NIr42i*LO2{QafwQ}B$+d!+UA40@{%o;o)c9gs*-%5 z@A&{*BX`4wzCGUWs}AnkzyEV6>mTjj=O=-FX8-%JmE6*>ejUMPrBbO}xhEI&8+Gr) zUUgGLLo3c9al5>(ylyZ7s7FK5Ks1mB{R3Dp_}15dKv4fcrc_q0%L%;|uH^x9N6T^Q z(NG<%I22v6A`l2fqtVbj^bK#l|Nh%wVu|bo$~swtByZ?<4}DEO%BEuBskS^Bhs(v6 zsr)?~;m8pp<5$f~T_RG8Df{%grevqSiE>*PVNYXo_leq5Rhz48O7eof?ya}CY=R%N zq1}IP?H54H-)i7CeZGIa{lNDm(C2U2NI>t08H+ig?*z;N@im}_CA80GD+doqDiH!~ z(xBhkpS*TGQP&524hPK*y*!DhVJBYi)yi`4xC;44Ly15lP1E0jj>HIGQPSMk|3$;5j# zm%@5)sH|osXSf(Gbq$pUq^YT)E*JhLgZFW+ywr~CZN z{a ze+%jjL=(|KfCBp6e^rw~=fLGX*DC}hh6O6bq==KVQQdQJuXK|h3ko@hZHv`}jL zzhKb+C8J^z=rw;=GlYJq34`8r7l%H0A={9vA9LW*mU3c=MlOJk{t*|kgri1@;}v{% z@)8~u^i56jWD-S*+A}0@4CyRGZBn$Pn9z?LuC`t?H%Wp(1q$do5jdn-6X`CoBCBpj8JI1ZsF({U@f%!4zF%Z6syy!VZ5 zKRDbg#+vv4b2CYhx=+7p1JG?ZZ-STCpU^w`CnRBuDtM%zqBrZo{|b;X<|tw2aypAlA>~s zOie6aTp?yBFF`B#uWqtKZbR;Wza<0B`+xrDXWMH3Cqw8DAoR+Aet>KG6DH7KzGR^3 z59XnlKA?gA{96qAx6neQ)ASm~&~IPBp?`ZD76!j1hb~Xu{1Fji2xeud~ z&5 zLx1_lZ8GSHjfk;wIc$_z&`Zwdh?8rQp!1icrZeWW-q%R<#I&X@I-?P-sk7BpuBoXg z5W0{n=5rAV1@uzie>9)m?r?f0YOA`(y%>nRHJ!#~%hdGeFPUpPjmws)=`WuziKc)1 z7YzE~KfZ;fioZaEE;n?W0AJgLrQ#s`U*X$A{aMJ75L-(tK>wb+q)bg=$f>n@3*oY@ zF)2M^huLLuTTHI<0ySMJm&oOm&`TrJwT;a{y8o}=3wzOgXbib%2!jq|@8GBOlG2b{xq+#s50+!ln=W9TdEa0D zF_;~O^?1sNFf1KTt@9-mt#~`Aara3 zr<@Wx!0s{X?W3#*4>14h3G~BgHT}t50R8Thn;Ex|K);S@`dtjl_3PBoZ+;D-fAa)$ z*`D0Y!)3cp?Xvw_fqi=4f>Ac9pb5@ACtSAY^uZatz6VckE?IEq zKMRCD^`b8u`eYBji)IDU%wu6#A|l5I(38WcH2`|DE2zvTI8#4Vw-`f?5p=H?w$=R+ zZ$<}A2|ehC>qzwbgT&}MWuG3E)YMhh$)X_!hMfNkgvXOV_NCWL20d`DrW`!Z1sE7| z{m*1PX3!r##GuzrJ;VwRUp&kX!&Z;t`ze+aOYkCTVOTy4!xG0~L@v2ZZw>dS^V1nY z5Bg+~pf8wVic>-dzY}oFfY-~!dJowkblVCh)_deAg#KBOiS-`Zi9!EehynDzJ{3dg zQ&TeGmzDg7-%Y{7!>I+(S@nXlB@M&A66nDHf-AdZ4Vh6x4`P}g^b$V-O6Y+L5V|VF z9Qqkzgx5_~-m&@UzG{kEOn+p0S zuA1=EYvg!}>l(RjQ=!l$*jgWSn!X2XtBDTOKka7@-RCX!`XUkH78>XfP9P9)N9m!% zA7IcIjE^&c4vmFSAT&Ey4Cvo|M;?Y{o4BX=P`^TxE zhh{&9&?U18EUzg#M*-a%dkUfZ;t|;7_^6>r0~qwc4EQw#5&=r+pXii%_UTi2pZ;G9 z`t&6a!>a9vHAz2RYd4ymE|X2_6jf`@8dJ61WY)^^({z?pRK{D7Be$il9JEB0mF4Yt z&)I@oWkIa7j*UlhK!-alaQR{}nrs{f;4Oq1;KO?c>OS2@biJABQb$k(?x8IfCryeE zAao*gCgS&{LmyNU*V>3a{loM=Jrqq(ms)QFe=xjOmI}@=wcazKzbHQR2Hiwm61vN5 za=RQ8yfT;B(KckP9v$_xRSWWj?lC$SLPrg73QoNO!J!8ucw6lyO5PmM<sup8{QbMi^H1hhLEi7eFUHDa;LB$P*Pu zcyyZX-P11?i<512#OI}l4tfN*s%(T&L@uBntgES01#*R9v!VMgA!4zlC6X&5mkmAe zVMRH3e3&Z?n+<)JQYB^#9sRO~d%6#X@m@^5crld${jbEx%7l5;jm>HK6>;GA2qODK z^0jA7?=Zu&NkMZ%M_5II&XUk;Iwa_)3d8>Qfj;#e2L0iSsfXY7O)Y@_YdpXG_al>& zBNG$$u*v4dLAy| zSAX;8;TjfC)3e5C-aP0F3^^GaH^=|z`qhwjV#4Gw*-d}M4*}?ZPFm|u(7fA6O~#?* zfki`q`uOtSegk*>V<>dcOV2=p)B`SA&`b9W4EJx!&V!bCM5PI(M z^la$<&mi>2ekRbPAq+Z}E=33Z=zZDJXu9yvWTHl72`$7U$My!_)2KVAtk zy_~jr_j+@6(A1iK2GjICd1!hiBTX;eg=u;zBTc`Uho+xi8cpY_YDlC~!sgn@PS%i& zvN4CwzW>$Ve)){~<#aAv%QrSa@NRP6v6lh#r%&#}Td-+wkzkPU@^V9ee*J3*{VtX! z6$*s{RM4M%4WWMn)1twegt6*5&YVoiJ3Ep(A|`MI$?@O;0ShX91nxh z^yx8Z@GIl72zaD!Ast$U&?U2p5O^eJupw45=&`2|x-TB_`-AY;6r_yEVbBA!foL=| z2YyWh6T1CxTPPE z@df?*#M=c_diqf zPv-$0Av5H7^#w^zmu;;9ZkJRPK~RBi0s!1hYRI)ff_Ro=B$7K_DmQe@;P-mH5ib+y z#JG2e(oe^s`)~s@5@Z4$GZI2X#bnUWtCj}3xU3*q=(4Ta3!w|qA_*eW=toX;pX?wD z&Jb#whs)*-V!snc5jkwYWssQRLT9~4EOImiJ&7n$2aN^x;n$UA-l(-$vpsK%K^QraofK4Cdcg6Znt)c z#qF-vcOBgE?zY{#Ystc}d24zw=Pe|f4ktUzH}7=883_Hck5L$QMOyPt7o1t5KAmLW zTt(0J$q|?S;KWE+l=FgxGh9}KPQ9bM_UysQ?L9@1?IXQA_TB4fB!lj~1qt?f^9as( zZ!HH+{~ZSXYVkC^@5OiDy%@}d&dVhN`%qh#zB63iW8~z#AQyC?>LD9>&O+X>3t6$V$hqW9`;SGoOd%&Tv`1>YW2s!yVi1b+0XobYI)Nd$_r|ky6tK^3n9tJ-N&P(%=k) zK8Ppc{rY~Gj3dY4qn3X&QzDfC95>_rerokG)-e!4&655{B6vSH&& zE|)7If_OC9urTkvrcN>wU|`6_pQ2o@%s=jn`GeyT>TKAA1%n<TDrqnKKaj8DB6$ABGL#nKQo)F$&I9GKQ{}lS5y+87@H6_wEz$ixzwr*X!?XZX|Wt zO3w@cg1A){3?@5hnuy#02A$bdWg8BiiOUu_ib2mgRe1sQ-!g|ju>7C{JFb?)=M+nL z0&VTuZKM&oh+hT>=I65cpr(`L$Tg{CN{IwT<%9FFcg8t#UqI+B%v`n`81x%Vf;0W+ zRm%?g-l`Ls(Ai51-S{5(l$%dbYWl7Ga^zBt!vg4PxQ3QOAQBIzYkFmXQRd7C5IQrL zEuZEcxNOT0dh-r8UnCWzVt70jt4zvTGU$%UvmaeMMLwR6sV!_wgWlW|7#HNo^(Pw# zuixj3Mbe>5h-(Q=56yfGq06udjL|^m1jdCf8-$MK$N{r5Mrpk#q8M~+0weGV5|l36 z{bi@=?;HTo#bR4Oo(2^0zuk2PdB=?rBCfuPK=So%DHXRNojdmAIsYx`lD%IEEXL1PgAB#B|I2(k2{b^gyy0XRM78xl*<$Pkb6X{ zA2ZoUCc`WqYt&tRc+_s%Ufnh3_AD0qkbQE;+G{)Lpo0cAMUZa51zPX7yg+=}E?c&y zhj2|l7g`a5o2^h!V8k^&2rG{H#$yaL9UpK>1Txl~SrD9AuA1&NdaO>1L)YdU0)4u| z;c)7P%tNE*!{)L@L!Y34?%h)f+v-xhPiH!TF=f3+f?1g}+0Y3;JrGLUYlYfR$7Z+y z92WJ56V0=6) z8_;idq?>z-Q6bQ_^sWts5W9U;;7<4#Qc?v?$98b>)y;>jcvD)3HcPBo3PQAS0Iz+;Rw;?BMfd&2Y(X-p>s}==fxZK!AFN zOX&v?dOJQ26r`Tvvf?5J{bI7-5M^+th9UI6hZyuVQxE$dJ_O8P4AMe3YBbvFYHeG! z7Pwn(CnsO%TefVfYj}0g^N7eLp)ZWcQ9)-AkxN2nkVG*LojxL0Q$X_$my7J9H{?Vt zmPjBFi3H$Zg@~0e^evmVNVGCym4Amr(y(bu!zTDp^4<{WG}e3J&_kin(nBx0^^QRo zI^7;(-_0hw(bDELSTt=;hg0i$L!c+3v(aKe4u&uW@YEE)8`4GcQ&rzd7#C3MkafBX)Rxc{*zf9P9O z{1O8C8Y@rd7}9yHW+%rmD*b7o!$??Zo`zf`LT$*ULk~rxlsR(w7;@>*>2lEHWXn%y$OYr^c)r#g^N+`AR*WpZA;$>1$afjQ zj>mw+0sPB8)@$Ih1tXZ#4PCDw49-ND1ZSXYPh?odW7K~7EDE8^W|<^W#GXRvzPQit zkBoyqhI%d=20g%JF54$MRk5J6e0KnHP5o9NWg39}4h8jP1Kk(L2#&{mG2b-9962BM zJMn|xiEo+)`iiI;Z{8VAYx+WtAnF!BXxV|D$7!Z2W6&99&QvmnZUfL!=FlHs{?i@n zR)ghH+arr+tH^)nPnRFRF2NbBtq#WgjHW7=?m3id-Xp3U*88D+UADZTzp~&=e$ah)?)XKI zMgjCT0Nvu0^8I)2_i+2IzbP5y}|sTd;PwMKgbk% zG!USi%a#V+=g->1g>sZFnz@I|BA{xz+J(dkSO_Mn@_bG%fnVW^#ui^9Ofv^t1aDJHke@rCoo3h<22c@c;<{P5rBJc%p~Rllyli2^fNwh zFcPE7kxORIL_?uaVlFX9nGM@tq~MJ2%9W=qf;s5WH2}JdYtSiPgXUc*6yj|)?4Z4j zn)l=_^oCr(hQ;0)PHU0~g$xb3z=vrAF7$?+kSX*^<=c5!?^muo7CJ2$a-8{n6-%cR z6%BfMnL}&xu$z_+dLGt0bLi(P^0D5TL(kKC&lh^%`J>N{KI^CT(=Y$#*;Xe+jxm>R zRm$si23C=vuW_Dje5a~vZ^uaerk|lNJ@iZFX9k_~DQ!gV$`zm7fFlRYpPq+`URI=t zT)Dk*bB{-AaP&5AGq3p>dcn}yM6GpM(2rWSI`3QW)5qQ~fAv_t6+>=#y7jz`Zy;Cn zMM7_~H=kvHejLbK*0qgoTV50Bz?+T+iUA!|8!ZU>hPsLhxZ!ov`XdDNhSTqFY5H>I z%7I;%cJ=qskFs3>)X$&4|5W;P>nHs(o>XTL6ls*r()eD*aY8t2yE(6mrbnZ*#etqk zB=Uy70m^z@j-;%%BbaPRlOxpQ=~pga@!v<4DwRqm6aYO}6e)?K{Mbn`z+GZ12ipF* zWw^89^?)9jjV7YSfSyQ1^M+oRw%odMLx#D&a)WUG9QV+D%4toHfibt0!-jjMa|~2^ zzDVeX#<91KAD2(s&l&;sk`vv^*F@7pMe5U&%NXSaJ#B4nR_2Vwl}(DYld}8NiIGqJ zsR0&&RKzJ3bXT(zC_2~lc6i6z;Dx3FKXkY#x24V52A+6XntocOFq`0N-cp@F zprV1!VX+pG_s&@KjV#!km%DdZpf%Taz_Mh}y?H|S(q_(NXgb}rrg`XeQpFg z&wFdYvty~C`Fk5BuVLQl-mZQPTB9+{>I!)6S)&`e+?pv#m%BuVH^aDC>{ zYPShIA?vfCi$!+FXm!tFmzKq=A%iYglL~j~p^r9u0Be@@xbu_@ywDFD3Wx6X4xlL7 z2XoRQ)6-0+DuY}4W3fogKRr!5Rk<8MS0xgmM08?ej%KQ|5=B*y;l@4j?`Z~HqMEvL z@Cd<;duGBjG*gu;(bE#K99x|?3H>xI7|KLC@FdTI-hl8m96_6J=j~=)X-a2u$6lS1g3S;dDbv zP9MpHekAQ&!v+xv^h%L5>~b6Qu4;j!XR@cW4BNYd!}kc#B0w*(?mi()24@W0)*>ZK z0zD7wJq4YC^)-coJQTP6(Q>h0k! z9lqWRSHlxl76JMi({Qa0X!-HaH?>_mY1#5K^!%aM@kES-Gr%E%Ucu)X!)Avu?BQs` z_D;6|H{H2P@W#a$aA`7iH1@ij9_^0iwU&mGC4%ntGIiOK(7p3R@C={_0{AA#44_B+ zv@21}Lk~m?Xx{6X?y5!>oZ(jp5iU<);PMcJ&jXL-Mh-$mQWWSV4Z6u~Rn5)K-JQHG zB})W7GM-u#jwy8DS<$R6l?FX9LA%##3i|js?Ov<%&}U}o_FByaJ!9)MtJ~=|)Jt_9 zXPLBKnz^eQ33Og1snnoFN}^bU44EAo3GH$vbQ2hTm4M)Y51*LEY_HWgX1&7+jJ`OX z%QlN**86NCkO<7u=EyE1!wLFx_30=9Qk~JK`y+78jabB=ZoPk) zgf2-fN&ulJ7bOTJsP|8Y&|7?dP^~{XSDt`=o0YvN0R}y}C_&~zL)@%I2|mfuryn`p z#7Isbc>|!!z&9sEC9*^7h*hBLWHQ-G;BkYm+2{4=(DXgKluB8Df91f+bwu-iWME+6 z$R5xNM}k3bM)Q8-HmFUlvei^1S9mM0YXXmC_#}PX&C>RMSa1KpA)?zT{ov5RK;631 zAgtIM%<$8%swFa+%4Vy%aD!O-yPZfGdqvcP&5 zDHw^M@-=VXZvk1i5tnthaM=S3?YByA%}W~eGwYyWH?*JGgO}E=Ylo%MJ?rM>41oUO zRVb~PTqR0ZcV2A0cyZ^4H+Ei4$xZ-$PqH3R)4DTz=Ie!j*O|0>Z+-G9e(y!BUQiWY z)6T1{7hA9H%&7MUfR1Or?T4~{Ln_&A|NadW!5OJRT0n3nl|!MiC^#Y!zIx=cgMQ}d zu9O@-vnQ>zYu%pqv{L(-B=mKc=9iN`-+m^ogtVVInzq)o@-xZrL=xX(jY3 z`bGM^N6#EZ(o5}WrSq3Q`S@a58QppD$%ucv#B~`caNFC5m0`y!leu(RTiP zNy@#HgnpEh_LJ{#=YfCg>yssZ+Bx1)Nh>$4jJ6_aC1I;Dtt7aOUXrJkx$Vld62HAa zUC;W@qw4f*w$=-2e}m}uh4gGT`Ny(4!F*BCbXo*2Cf+3*Ix8t2yTW6i7&{zxk9Fy_ zou;t8*By4IPSZ8-R<~uu)Z?zUA9inFe$aQZKo?c7tJlGS-(4Ho3We0F!#l42cCo@> zHNcnPB==|%`Ys;S1c$B-MkaS{A4Q4g*F{p|?&x6Fc<_yD>PmfLh~I`AxMMWv&T zdR&vNXscYHGkO%TP$m#vKrbob36Irc1y90_{bdfb0lT)$iM01)aZw#!@xXc12A`c4 zD|};iD=b-z8tf$J_632WZ4_QA1@}t;bP;$B{)9HDsi#kKKt)C;b}b^70S634Gcso| zv4)*mZBLipz1?l^8aZq?g}WSG=G1Ar;EcfKHdmWW;R(}(t8Mu~hvP~^la3w(c<$TC z7YRn~X6KMaClc-2h=|OcrXlN)RcjCl=b>}KPu<#UKWG5Y0~-;RNUJrPjP5oTtG^uu z$IA3ZtrR>90dzTdmX7Fqp_0g2<+`3uqt;<^JM?ZztAyq3=`@>M<}rte2cXNqHKNY3 z5hHk(1L$L&E^V91ZFY~L8~dSt8BJ~ve1_2BvkB0E*=)B5Su8`?W!Adf8kYF>AV&}$ zbD4}LSGb-f`&ib*gR0xB-(JRIaZaBWvlMoh8T`Q(7Q#niqVjx1F4ZgWJSLB^&0`sI z3|TxLBlvYW%r0x{G_&B0s7<;o4Y^$io6WXP_KZovbKgdUEwYd5J572wn?0}*WgELp z_RgNs9s?Vlhb{y^bxqi=mxAZMjVO<;b&YkJ?RFk-V50;a6NK${D|ki$bR~FJ==$(Qgb#MP^bWgT zzHtERmr;*pukrfMql0+a4$H#Zpk&aS4x8NiHXd?&P%P3Ljn&(+Y&O-$veSHUkwtH} z3wS*7>GcRtWOsGxjdm>$;Ufl(Mv=;fJ)O4KHA1-&b_zNVrPw-ILV8BYeU;ErKA*2M zYFu#O7ZBu&+w69eqss_O628Y$R&Ce2s&#zjJalM|37kA92k!2(QNraKj1G&Z(+Nv5 zOiP^3GHA#F=&;Oo@~p6IYgLP!7LOSyj=^P7wW_#^A-=`va9Est;UIbm?iR!!66kc` zSq3mWt)5Yfv8{g8A=}so^-E(J8iLP<0CcQuP{1;J8^8#}OmydFZnFUp(5^PHY-qufa;HG<8rNm3(YV zyViEmhLV(o641O4q?K*$eQ70CMhWfv1E09(o3?8lH_AydcCOZ3#B~0bX1=Hrk^14w6gM3RFYo$ zSdv~bU#?24SW;Oz|F%L@jB>&6T1Y@woaZwXBn4f~733CR2x)-9A|*MkdUenRLNr|{ zO9XTy_YD#@*1~Zd1ayRH>nxs!j*z5O89Fs)<4~uLtX`lT{QVl}IW$ zGe!%2tM6}@x8?}uisiX3hQgwPZh+G>#mxEvFa*#0bSK<>8(8oBWhs(8`*ewz&*vtg zk9PLf-rHPTCOOYgnL)>{xqp_q#gYB3mey zcKg}29nA+;C80081aSP}#~*)le_`_}&w25WBo~)iu(tYy4x2^KY$s;VSZ{6j$&+Ev zkVYr1SG+M&Ce^tokG*@Ub^?Eyv==Gi35AImIxp8>+wc7V4JMD#j8*aC~bMn1?+ZwB= zp!2vbKm3N9!zALPxh{r&Lyn6<^KPvM9rUS_*WTT6aC=v0IIO3ZaCod|SgS}@@00kIs9zNM!d-mXDq2ESN&*Z_g z;9CV<`f36?H&`-nQ);t!&%2c{ltn_8w?%+%$mAKkHe^Qmn#a_ZFPle-&-!N=SSzM5h1V|kOL5d-+nJJ@FfAC5+b zK~K<}cE_T=jK*P56JVZ#o{tNX*Tr0g2N;d_;LjV*Z60PK#K&9(KInm}DtOzQBH+`2 zPqu2+DhLrOJl&%TT(lRvgZMTU^WLDUcUG^)p*Qak%kvR5ud6w2!2g0qBaj0OWiLd& zYSn7+-MjJD50)1qkpnYk_B4wRctiAM+P)GVx#J^}uden)m(%fWG>j zy;Z{}udUrj>ogW5(9hi5h%0)YpEB=n=Jj|KuIfwk-cZv4b>I*;o;=0CX)HjtZ9BPp z81oJb_(}fa4OR44rRqdwC74wRy(xO9u`n400DOh0{{R3WGqR}00004XF*Lt006O% z3;baP00001b5ch_0Itp)=>Px&08mU+MHmJB(so;Dfnaf$mzUAe(HR^db8~Z#kB=T7AGf!*R%KkcxVU>=Y>aDsFE1}{ zRbq#Qe_mi;SyxX%Ks!s0s*;kD5)~3_Y-?n5Yf(=}+S=MdK|w@AJ@>cuXLf8xML*!+ z;7Lb8Vq;}oYGHwAbZKa2NLX%OZ-`M}Rw5=Xhi7+rd3bhqbtNu0e_L)UI87d1K!b#X zT40hBOcsA;hQ^!BEi*nGASQi9V;?aglW>7ZSx<>dYlm%)hKGhSH!ZuA!L*IJ6FVU$ zDliyUIu9chZ(enYiiu4*I$=miKtxHaiLh8fLPbnuM>I6*>gu1Mo-8sc_`dcgJPr>J z4@!ibkaCt89urJsg?C|oZCYcrw6Q@-R}eB7hGKOyH#uQwqNIPPl8uKO85d+vWHvZO zn0TJV#ltWsBrJDFLw1aejEg)&HeGd?J&jEYY!V(Q5+X4WKuA1uL|j2&TX=Y_db ziyBW_TqtEvIB!%uEG$!jY6qSaG7k@$o0mB_8;gyQnVFkOPDR$%){T&imrrz^my$gl zAy^a_Egm5?h(vcmKw?Q%XNjcKpVTx`7Byc*STr>&Ml(ov8GmW_&~J^`I;Prjc3k%Iv3=x`HUFv1sY$ zrTE6dsFwhxy|0dpP1*say#N4d(n&-?RCwC#y?t=o)}8N7BTN_(00}5)NXfe(BWj=^ zOjUv)BN34}9Z4i~y;s-BE`_alXR7c9c0Hu)aP8Q2vt}K+4sFM=7vN$Ei;D9KWUzZZyGefO^w*#lnQ zREkS_u0YRwS3>RINnY_J|0$75 zvLJN%1TRJ1?U|nJtO@_6ZxkH>AUYmBPn@xa(6_|29qhpqpS{Id2m@vP^_n~HuS_dzxmBiA@#lA{3a(! z(gR@o0r1Iv6AI;}yT5sx^Znx>*%S*KEkOwZ~GjBJqO2E$ilz zAn;19F56d{+r~#aSNTJ^wAZtQ<<Aoea>4N%} z@KG+kv)1eP4W8;(jqjTE-ITwt+SNYNKh?5oaNqBW1~oxv>ykLox%{R@ z`{K#L?o<6E+I=>ax=G9E5c=p$f9KSxQ!R_FQ=OyZU0vg&on?n|>eSR!XI@iF;W+2~ zyQaYDU4*ZNXRd!{WHf(M{VNbUyu~&Gfw#1DuNqu*b&i9sL}%wnTl4r-iTA1&aNr}O zP&0sd_fk02#M&S^Uu5n)gi^t>CjU;}st*z7N9~@~OkJ5|q{os6IG~Y7Xu2MItt+=dZ zsYvMT@>+XTS-oAILNO!)>!q%?wzjSbhxG;%wW@7U2>0}uoROKXoO5BnJS;+mtvJ>S z&tP-22E8k@RG3r#wv4++mpjw!rwT#xc zF1y|C!oyZ-qD8x_Zi0REuC#rLh;MIk0Nf&hb$}1Ysdl~qJ)sW-xB;OD+x+g8x(<*t zGuT3Yxk#W;X3mXe}}%%aSA(SKXK%B~Io; z16+XA(y^!k7===WT`3H1lVv;DNz4Kgp|9K2YgH;GV(ef?96@a5`xL&s zdfV1AY6rBPd;&QDJ|k^u9HipJEoSw=^sm}F%lA2*PDkZII_wDUwBpX%KfuA@L*O8B z26qq+tB6o$2NMU-E#8SiXn}7oK&NvNnx$xzW)n1xa*#agIhSDR0LId20EPkY6b<~j zP>@b|Q!=C^=h7$$VkMSESr}+hCL$b&jdIBVye_1O2gw3WBQ&Sm(uQ7EecsQEI#;k#Hf6vO5j#ZvmCj;`jbEMmb zdm<@tUb0Ef3=@S1Hl{_c5*CTXoghYO5bI6y0)i=KvlAR1`~lzvcGfN&Dr2KPyqU}p zQYwLqjPuYR4w-GD)t>5WRSk10^mYIpO?y1&Qn6q(70qU%xd_arf=BiSL#bRY1@>N=b`sRB$+)o5rPy`pC2|G-jFAurU!gt-efc*bdQ+T>O8AKH;=B07n*qK3DED+p*v%;98+=; z&Z(Z$YZN^)v2VRd(2w0ZI#<1fVHE~>}uzMqo;es;_xs@ z#VdtU0*mX=t@(?xLU`0eV(K+rlpvv*Oh!4U(02Hn;dKwW>j#S`%|qS<=Zsk7V8$t$ z#sBBu{$O>AR#!0QD~FCLA%CBo$)!X7T&7R(#7i?Yx=q+~qj zLTQ+hBk4@GFO`Y*P9!HHDrGDqd6kJ+mY;~hO)}e;@bw0>6FzvoSiCV$Uur^*<#Hi# z;hgiU>1BjaZ_bmArukK)Oeu6`bg8hT*o^0qp>_O_0mzx3KjZTc^(60jGWFSy-F$- zRgzRjA+0)S?I_?Cu(33!gT#_ul3JS|Nc6*;e!$m`I?}wCQ=&P-i9zUF)$0bPR1F>V zrUOJpkdTs7S#QQ4q!_p>C?V9#T`TCUNRGyo2#RDmS2Bo;HvH%R*J-B;J?cAEgzj;< z;)w*Oa0w|P@scFaoC^r!0yM7(tRN}56broLJoLwugrG=50t0TA7C42Kdlfzb;*r3| zBA^_t2)x7#C`^PCXgerBhkYFQy66Nm-ltO2_{DtD3 z^Y#vE&_lQtN3E_vKtSUTYrYJI)gm}`V_NmN6}nVfcC$_3AoQ*91?ptNi~f2g+TR}TcR-sd^ z(lGdJnjED-DshrWQL7`aLLY-sYgg+Qf+ zNHoLQtfCVca@Y_DfG+1Mpw|~jr%ouT$dv1vg-R}0vMpzV#k#*A1ZV9usnn+H+13CK;a zYHnrGf)a&(x}PRNd1bcUFrxe0rJg2DVqfzFvls_qCIZENI<&~mw6yl-yvax;5?pL~ zTiV+FGS3Hn?QJcdh^`dqVihcMBd1y?qUq$~A8W(v8*k5%4jjjwTx(mucQFnj67gjE ze7Z$WwY|5`Obz;aL$T-*P;9Whxw);axp{OjRP+q>`gPkoINFh^RlbS7*pfKh#?;#0 zJTu`yFSvA?}^DlL2g;Xmn#r(_4pOj9R8OC8|=x(ilVtoCj zBWIe^mSx?bQisEg!&ob5wLA9Y@1z$xG<=(0HQoG z##Z`m_6B;c2t1^#75Eb5YWHObaD3*46Jsws_a$QN+F3NK!Dc%+EEndVf35)P|hiWrNTe8=}kU0-G);Qk0XiScaJV7UN`!fkRAV0Y?jWosOC<7W2Mc zc@2SYvzZY?IT^&=GkkUG5eak0@YU`db~&3?E}RZHh@s-?Db+r+%{nwRF&RWe*^+yf{($-M2$#;Dgo(HMr>ofbP@+;lpKf}3@f;aT=G zF|X}awfotJcJJMNW%u5^95yE$Zsp@0(TKdJ$pEEwNCK}8BB65yEC zyY}8f0HQ-5J~Z6abm)){q4U^M8%pPc>h z(CM>hFKJvqJp0M;Q)kaUrEZ-8-oWSVX?5$;*|TR(!|)>XLUiEx@KDp4Pt;hafe(mv z>5`T>@VPYnq4q86&UK)h5*+UhvR*|>CS*C7R5}`lZt^G+?U930DrK&QzDtGt(3@{Q z_vM$*tzNA$-vyw%TrNVy;T=gGx_*;fgRVcF9Q398V!qbi>6|abYhIUMW?z-ZaW-5 zs(=ozW9^ry(20T~IVBzSOefR4#}oB=vsgaBtU*6>_VkCBKKbO#*+avZ&NN;6@X*;a zXP>(CVbh^YhlW4A^wilyrw@Tk;Pj>8;j?EheK>sjv~~$-(4YG7^x3D1vCe?q&YtqF;)N-&Y|NC`oZ<%rBTUixX{i=;wXioG#fxI7={X1z@87V;Sl=pQy&h0@(Cbw_B4e4$)%>Vm(BvR z!-qaOG<+6%pZ)}32GCER1t{S~a;OOXlTVsHyae(;@PiivfPUsI$oT;FhiXm-7tbe` zhA)Bg0%USEryCUS2b`h_7e(A{6|L@Y*ln6a#on>9#}PKU@vv#Q68iHx=rZZqz_I<=f$gsxK5paXR9f>5D@e5w}q8uZh8$zKWm(1)OYC_q2+ ziI&qf=udqDN{BOOL4ojzQBI#10qFZ`3*>ZI=!t5{Xl24x&|j&P6rE}78U+o#aUW-| z1)U@Tbdn?;Ds%@)T71)pw-Y5v6*@_t>JCng3#7`{747oLqgfYV%Y>S{DVH*y)u4A5 z0!T~u`1q+H3HSKXPha|fp+3@~@7kqyLiVZ9ZHGbM+<@mN zu!%Mdy$^v5J6x-H|L{W)zgWD3RP^Ey&tE9^vY&5sKa~8CnYCs1kpYEL2T>!ep;>vcS{0wKYm?3nFz0W^> zdz%1yhz^^D$lZR&OmB){0QA^+3bCLwJ{VxY{8K@}y#hMJltCvdpX_u_ zx3v=LfgA{Dx;nizpxf;LI_L}N(7|Twj7R7U5_T23-QL|AYwr?3X90XYl56hF^k)#j zmPn4v2*J09Tp+;3cNYTe5c*6MCG1tuckL_7=?z)rD!XjZQL>fqr0wS-*=!0GVb=@% zm*(_Bbj=?^*JA;10KK%!HeAtVV-$M^1-;0K(gfh`+&R2+XH)StJgmL|bls7M4q7c& zu4rxVhN0K7$U*4HY|w{TzFg6+K}6K$_O_jhRzWwrTozA)fGq?F9W)mBuD0>fwh-d7 zLFg{m)D*${10aH9$c3b$DBG1q%(&G>_s?X#Q=>cq0ziydA%N&^ACw4~E2$dGjq8;)Ku)ersIvtNH`w`!4dz_Te@)pJ@6oz;yqk(OACKbDRiQ;gRZDh0x`VfLpgC3>`-PJPM-`_to$}<{tkhhsK=w>^^45`qO;?=-d zm_h)<)Pt@!YE_FInGOY`x!#O7nhS;eSqyCELcP9ZuS}W`{oB7CGUqLF_3OD)Ru#IHL3njG=!8py&J<+D9R;@&Zz!M= zI>_Yv)ISY6;Y#srE*p*JqS=(cH|a`dgV9hdmds>GB>aazgps^OuKsP6nNA#J@}`dA zl`yZ5c8k{+y4$Tjh&YEXTS<@mwT8QF&?2|@xrg42J@@8wU%vU~>Mz0PLtj@da&@8O zXh4$`WP{mkrln1Ch;GSG`djhYpy$mXI`k65hyy||ZiaEZXfweZ3aEl!(DRx_E^bHQ zqwwH}EhtJNs6Yoe6y-P+G&9U*B5#qaFZfXKSHDWcV!i;R9vTl^SLp5ti-$!aT!2^I z4l8YtK{bg5^)wD0TIBZb0u}n+ci)9ox_YBcwaC?nUfv$2W6g<<4l&!^Ix^}7m%nYa zx_Ecw2WaTfONMOV5PESFur0V9ctZi8Ay)^wfklpCiWa%LbSByvz&eo$`&tix0-kI0 zltAxbd1p^gM@NszG~5Audpn_q)lcw_I#_py$<_lOpj7MLo%uF)5qeq(27@U_X@jhy z9hPsQ<)P2LUN}(KA_t)}dFbNMP#JWmtNd{x8B}&XCIDr^7d9Q}k=m*nayDz;24ICF zm&)3Iv@ukq{8w@6A0M}{Ht<0$4e2}sy4`K zx5Ek@_Ia|%l|y$r%b*j^a)TCfYLq+xm5G5W$-1h|UkTlA%iF#X{Z?jiZ<`%l1%(tH zh}~Qg)L6jxw&wLcHL?8l;Dq1Sutl!J?RHz8VN=*7TH%Z<70|mo)n*(X>Gpt}zS7n{ zT?*ZnhzJ}V;AMCpLe1$A_plCKk`zhCBs$0n9Zl-xaCGBvMV%fFn|j>g19dEN!}DyB zQ`=0URc$9h=wcako3mWOu1Oq14})WNr>l%JcH`4t7m1#s4PvQ(Rbm>q$kCk4p+Pg1 z3M5gG?MPGE`7-%N9e_11t_;pt0erM8Q(C9Ht!8If4C4|bB4G$>=g#5$UsIFSWDO%> zXPCjmuyA_i%x?SPS}a(=5gNYkOCJ{mSI(=e~SsZWg&K4}D!5WU~9p zyZWbUk;4IPa{;=;A(mU@_`c~Ngq_al)DxkR=C1b9@wWD9)?N)=Y)ujVAR-}Qo)-n) z>EO+F+1FU+-MACJHwfL<=jlx+TN73r?<9C+!VRF46gMdgtQ_JM0gGj`d_vAiEUzSF zfg*Z-_OqU%MGl-+lg_%Qr{dh3deuG~IN9*xinS$&uM_khsmF$qv@Ia>5qkK5T8Tq) zJM)fV-2vL|dcB}S-}UTsAgjN*+Ou~~7P*JMeCXM)@BXtZSDyRwxo4qk_3CG#MXo+{ zmiI-Yp>!zInu}#Kxo9-qm+ourA03&QkX_Y-D8#QGNcnlc(iikg{+K)&2~GI?zF_M- zK=1KSgeJMkjK}YrnDj;c5W3wWx5mgyq9MO`+Mfw!<-TY(o1x52fA~XFV-~q4 zq_bTf)=Cg}wr$dSy)1G)iLl2Tk-bWWlNGC$V~@g&3g1C1AAklKbxiHDjSYiW5&ACB zgoC32=Vp-u(7*IQ=X>+b=X}q-x!SjSwP)}lXpyTAJs|j!%5=sT?e(@!PbVjP`_lgD zMC(M_A7q(Y&`rTZGv0VQ=#6C)xoj?!iYQ(Z5f2>_8?(qYHKCndJ}zuBIi&8kLFT#*fo_sOQAx-7 zj3Ur+@qmV{kki#FS@jq`synXLBKP%&_P+U?=gZ`CAg90iCWQW_2U_G*z zFdkK*?`#lykLiGWWygV@1I~^frwMej!0{s}fuRB#K)E=A*-?}uSsI+*IHjPU(3(=>Ppq3x$`P_7hR26=y>de0IhGA9>&6nx3TbtoF!(H6MoI9(tQ1*JNc+`w z7~zy+cQkj6_ILZHm-s?_%c`}|UMAYB&fMRoE~hx?4`tJ{MvYCho>JFg)FvfpAL;CF z_4oFLmUTm^Z@Smt+TE$mx;3sYr#LYS#lGnY-(-unB%cPot9_>PRQKSGw!Yo6S|?Yv zbk2;9>yvKvPt68#a&mB0%apos&mH;_U2WPdT~jyS3U`0(g3GPtCmMn?gwj2yw6)`?#KEP}rZ2{)FT2?uq-k_nH>UK5Rc8%P zOwDLhP!*Ql)UtXzZ=1^$NH+7bZW!6v?#`Kt1$J-Op|4vJhFY=CSUZNGadcTXgv>VD z*HXEZwhDbzux%koD16HbL#-QvQ?t#wrkfySV_X1DY@33J6*xFOg6qpG$tc?)qN zlEa)&%7NsEV-C6Wahi@|e3zx6c=ZILR}Ip0Ac&(P6h61hI2uW9?xP6{-&RNPrw(c6 z_8|h%E%9c%Q*1!y8qni8IGI>A^bx@(rqVo`%-I`+Zf0g}I519Ug^$@ercWp~=5%RZ zh|`gud&w)k9PM7GbFV((p3T(IW4rch=%jaI5E@`Bpm#y&>8WU@brsPd^dV%{gGL;c z=awl&F+=FDLg-^~MkBah45H3C2Ir-6fZ`NRV1`+6 zYa9k~v<ramhBD*MDnAOx zDO#XV9)_}>RKk-&t#&(ZoSJ@+a}xYE!$^z2KD(<1ZKyr zBpS%2l$04C0z2B}7y_V6l7uFFFsIw-?vc(36i$DU>Yw&`5GU@Wa{kFA3*yKp@Z+#jKTvFt@qozCAk-1*^f-H4cmUl>#W}cOUm+fbRxWox1P&4d z$Cm$*6w4(71}hW6Z==`*ryVC<`#9nCy>IW{-MK4!cd5{`a5gRo{pi^6Q8)rmADagp zV@G#xgafH}j_m}m+R*K(*lf@T)Tbhb!VR|Ghs>lf9Z3hJV44>wGB3nMn}-}Y$@j^8 zLSlJ=OXMVwBRBpOLjUPc$8cLNhzU7?aah@0T5jUwc&WxNs*( zD;XjgD~^yZ7cEmZa3&nyQg995~JZ=M9#fKNb4! z=#{-1bd~yR0Q&I8qenN6!2v5{V@Jm}4#Ow2HXa4gj}F6acp21$9+?&Tih&NO2AFHm zZ5GsnR=>od5-c!(vJLxx%;tLO~I$m74ZV zw)!Ffda(0U%P9@Ig#vldV8ZWf7YL#@UX?ySP2$07Sz|9_V>zuuiw*`$i^e7 zdZQS$ZzC+pX-`^-#WLPpG&JE4#$wrAr0o1b=)06C94hC);q&d&59}&HKMDs+k3s4? z;jsCQJCBYv4L6M)-MA4r<_dj_*sxYW=uQGn0j?97X}>pKob!>ffp)o-2qb&^lBwLZ zKf`C>K%O7{^dH-9?|SK{8*yinM_7fk;Z`;!1bn@jFlhI!^2&6A0Wg)sv;r8y*~tVm z1E(}0f{_%B5Kai4_xUDbJjm(hOska6*g;OGBT@#HoK~D6WSNTOdZ%Td3_hZf-ib^m zReoSNP7oHV=!e)CfWhp-Xqtq5so<32%Crb!0G+UVBq`eKPiH2gk-lj;2e{J3JMO2|9B+mr| znrAtod?XWqf>1mMr-K#*nxt89K7aJnxBqkIKi`JXl_7?q10WK^AcUL-+0{w;TD?v< zIT6E{Q98kc^KTu(8Fh9GGn0v#6Osd*38ziUWF&VOK(|LyDXhne<2E*xmf$mLW(12P zn80&V5;PBK9_2ZdN6QWjBwIB+2^6>t8E`uT0HRgt4spI#7C;Xp1WLMSfv3GO7Dag) z{?f|S9EeNc<8TdOloNO!1+{>|U?}))2udNSz_W=6XeR`~ak3RD>(F#ki% zWtR@UY4)je^r6>tgdVPFL#m6~*KUGB=uXG1hCc^xt?~iY`P*;5{Zj}XDV?gqY=aY6 z*a#P5hV#@wFB^iu$6hr9iW@0GJ$6yn(m@#?Aiz`&l?{0Qt~D1_cfYWUo5epnlr6BYi{*Yd-j z^Ak8c@0=It<#BmmuiqQXCi^_0XjCW*A|P~-L1&ZIT;;=T)TboaZ?jfKGUt;Taunj{ zy&OXYFALL1yn3?MI%ub}Ix&moYEv^bu{s+`*up%o&)Hye=4WqU#0HoTTkUg$Uf${u zJfKhH_vVtpiHz4?-XMX{EsS$EF&3iQXTPfNx$I`m%WTg_DkNpLyY%Pk5euR@Y%aSk zpM<5Mc=g2OqnF6$a@i_EhX`20avaB^ z0hTRqz#wJ-9U+!=V~D8-eW2ly5l(Sv!B>J-|Fk!Cv*4Ul5?8x#F^&AbX4^F+v%sp? zWpj5lsDTv=p3$W^kMX#JkMkCh=4c^o<0;;3nuGAteJzq07HBTuou&-HkW6_%%%I1oX9{Mf;fi++=cHAFf{F8ois=hX>@Npv9L=sGB&e5y2(tC zb#l7h;AVj(ykf-;62)BW<`+7Z@_QnZ#POWK3p|&RdCC%@!Is%9Z~}@4z`N5f2m&z| z=#J8T2?@u6i#5&V$-=_-QnNp;QMcrxVaY2Gf$_;anu<~&GklFq!QooI{ThPf)Cg%^9!A%NOf&D zILHE{&^St3Qh4~<#M0N8fK$Gfy{#0%`cgUBBYD#v2&w{lI$4Cy`;>e@JR8@br@c9t z!Ks`ln~Tsc0LVK5m&heO9#(}e<@ihhUKWwG6jLxYrz?s?89{dyWoH9)ED`gA`m4lO zTw%9J{B3)j_W6ZgLm7{Uud75ZST|gfb8`I@cyHYZQq-F^NFZJ37+HeNrTrd%+8fLC z_D0BZ=vb}~&AUm@M3k(Ao|#BN2NmrN3YiFi9?PVYYE|g*s?bq67K6|&fn+uj;~{h^ z9g|eM3fZu629;TgE5Catt~h4i6WHTq%<~AH#Nv4erk(@!{6w6nL6uEV1`$w$@>!J3 zbsO(eSTLw#aIU9L@lHp$s5cZ*QgS3GRaV_{D$m&xk8sKS6+or(#XApNFdy@&WL5&u zQ*i;72c(=+ROmv+18M~jBaus{Gpq_-PV+|42Mmoe;))$E$BHesWAoX1=lU`%jRpcV zAIfn7G{7q~O#9Ci+V_v&#ywC6Hje7f% zNuNJD;W-yOm&?QfbgX_`T|})0-E7hzLdQ_u2<`-h4A(D9Fxzk)=&sr#W^orcW^)ub zi!OWK#n=L#w5%9GuW6jwvZa>id_os`&z;2e*im?%iY&Jm}<#eR_AsO3%)m80l-ZGES;~X2{0vH$II1Uv80?lzO zSq0rzfyh-^qcaur{!*@rtHf40?_foZ9(Ec)w^l$7^Oc-S^S$fNA1*nly7@I<=d&M9g-ChDs~7)D|Sd$ zM2KW7B9v_ld;Vf}Jq@?W!@th{6oUDPfdB1e7$G(~LKo^o*{Xd_Cx2xZPIjKK%k%=XMh| zW9l#e>HSat#nT@Ey{snj{qKMO3oYP1=mBy%nKW*_>&6*A78_(e5p9F$acT}Bl^mQ>cbpRQHd317MwO$4=+A!+O7~jOKL9=-JgpY* zK@Z!YMb3_)E&@fhnK5lW`ap449JLpG%?kpZ4WN92hYRYk76^Uc`F-!de}3N$3>}o{ zKm6g#`Sx`wbkSiIH|x-Mgq`9R!<_!7k3OxI<$9g|G_2Fron8e#@2Su+Z#tn)flAJ8 zxRkReTywb8g16pb0}fQ@s`k|w5Jc$VXrhFl|_UmaarKihWB|ZQ;A;Gl_>qD<)ksH`DP|J74g16px=bLeR-+AZ# zq6$M+8Ka@12xAa|FdK|BMU4ic+UteJ_x$kbh13z7K5(Xf@xHFslZxxs)qH?){-M+G z_Ha>G-l?Te3pa!?)Zlp{6f=rI)epDx1_{^$b(24~enDj`j9oo;XC3Gc^_De$X@8x& z!df8iTma~AWD^m^la!MQDMeep^Vi?mwfj4J-`~CK{qOu_*RI|0_5OE$@nl|W);w8X zh7oQxig5W!qZH}|2F&#aVZ!02wKuL(9ZrI9+3gn4-F@YmJL^DKpHg1;!MZxnD1Wd6 zyloK|0JuJ8Ws0_x&5 z?fnXbE~?<&ZphRvmN6HH+(qOLYXx=j{ZHSypt?@{>}MxbNBH^YPnb@e0Xhx$g0nd7 zR09s3J_O!v@Xj4Yp%}X6>3YyNKhvPrF9dX+mpnm5$@I#K7xdGA|2OZx`|W){dH3C2 z-~P$Fd-uM(3%vg37k`!4-~R1i)t7OEYfYej3Qq#)?g%ZqMUfMnR<{X_6sdQ(-HDV~ za1Z6ka_A@C|IKfH^Qn4O{7i=){`t>;?lv8QT{ac^7<^(~jeF+wnG-5>3x?83l&lLK z-|);cPp)70#S(#@zrC)G1Ow22@spqY_3oei;wRtv$zT8EJHOCgzqnpV8VJ9}2)6;~ z&S-=~6LQ8AlvxvA0^OaEV@{oOhdGi?xGQq{rvUozFK8KEr7i;IKQ~oCAA?a(KXnHB zK3d2AAkJuGi#u#-scB8Enr1A ziqiS#9JCB?0j(0d`lil{sBIL5(grgr(x^d%fI$RGGDv{p>V-n+6i(3!D}DLut@?PmZ=2K;OJ(&E~CJ*FX8u zi!TD;gRRpS*J%2p;(cDAQ|WVFo|E7ru^j1rBbt#oDXqYXC3v1xq1T%n^M-(~GM%mQ zUf|qOtM%@_pjQSbfV7Xo=83YsbRQKu?DiT#2R(};M_}(}&E;D!U%q@R=!1L#|JIbg zgSYvCp7mvVd(Tar^SAb)Ucdj`L~k_ai}@zfZ$vR8==K{1`a%gp_xQ6$&>br_+_GT< z_=oQsbQk!$rTiUyY?%+}WGa<87foiOzH?qQC`r+CQ8}2&hB8v>4fN*8=?e*6%E_b= zbkhN#LzfO6IM8%JS5wgmw}vmBh9B;EsngY`8z?lHrZG6QGmgRs9^z=6jANGNoPIUX zK|cXAgszU`JydVVrxxg*$JRSpY`m4V@(gZq5iWxWE&{xLkEvYIv*aOeq<#X7(IGH( z@8ec*Kvy1gbGK4Cg>8VGuH>^yq(=s>w~#v%*B zKts?QdT950LMN%b3&T*d;6xvH44<`dOczgAQ_saEZFbkk;2x?1IyBC_Q)ZkI8!*l&zTOD6B%z~860ZA8 z2dHEw6hYAdjdEU=ltW1t_@V(ANLmDg2WnZ)AOgpNw^v_!>D5;O>Q@V|k_dtN380F> zH=umoPyii|$}}lR*`%akrm(~nGqNDWkbIYINJ<68hKw^OYC%5@py!P<*(A0!b2^=+ zv$0TYBC2Gw6ESb}Tr3*tjj~B!EC;+}pgI3WCVu^(zx3*R`(J(U1338LgN24pN25VL zom6rmK{mOP&LZ?ct5WEvThl&gM-Avz#u>4uMXtm+laS>25{2I9?d$99^TpDUq#}eS za&MdqX1ziro9ms(WzYG2p==*|9ihMU-hM!Q>(&ppLh1_&J;1PhN=l>>QZU|;@RB9P zJLxD`Dx~Ljw>RIHHp$xi2>vTAU6)j|WAplzH97oeE_@_WQ z54;1BKDhEPc|D=O0BG<3VE=x=eSvd&(Kyp#V4SJ6y_>}6FO(T$PPnz?4gqP#nSp@; z%{T+SwBlVzaMaR-uA^tE+TNVjwqsrOCnCa7gPDp@IMVaI7ohY;9LVVJy;n>Yjn_|r z6b!zBr0ahF_3E;nXuQitp(MGKp&Q<8BMq8^v{5aBs&{YlGeLki7u>9fP|u9O8`&Ay zx(B%M{d6)CO)t^bdj(vN9Pvt|0z{Eig4HQm1cQmGIim;yXB2@oSmsbMS_hG@8@dS4 zQ+@sry7Zw_X@$!wZ_sIoAG+7n;bgmo4dt)ICSe>Hn&9}H19%i{!WYO zd;k2;V$nEbQXeNa>6N-(ya#)Ej=TY&dyapqtC_rL%9{#yNXcyCpQj>0PI z1}NUq1TQHp3EJ4+$ zQ!(g&;r#jY7f$4jGdlDC{d_Ixht8Znqqp8s7MdAv+=iS$mkGVPE?eCQ23ckACY7bledr^YG!F2@+Q^b;wzWS{{d9A?R`hI#Uy;N=QD)gun3$@Cg)>zhmZo>Zt>*KF=bkY48?qwS|ewEAFdcV6E+$-BlQKBVoo1$ zX+}!hmf4{@d(1aUPB*7yCFx0}lyo*>D=Xeb#a=MZxJgBpNQ8T7NW(Ntt;uFwh0-#Zba zY|GH+qo1BuP;x$?C-(%>xe)()FqKWpx6QeDXQ*h>ld(9Lq0hs}nYem0avtjRW9!!4 zw`b3Nd(7bf*p4~($ILE;#1ce3=#Czn`zEQ=>&-J%^HJrnGi)li$rK%`ai;oFWqs)6 z5TVXAWH`~#BDCH+hV*6P7a#fp$BF^Kqn&!g|t}+260eBWrHXjxHpkE z&WH{)YSRW$L|dj>(q)4vV4v-f&b+R11}`qVi7YYbE4GxZ;(F6VmjZamn~*(;oE!<3 zS>%-Iv{;yEC^ms=C3V=}-`+W0bL0%1TTW(@AteYXNxK;7EEDmd#b=}<|x{DJHxy2K@ zaVE?wyr|t$yC9w@HO_>e4{OGmGiS~m%1<7s8E3SqhX8can-TbVfsRm(skl^mPg6;k zjnvGr$N-M14$Qjc=7p}x%9`h;k5*xw0njbUj6}>2bh0tgVn<#*r53q3CUNmNGhmI! z*Vhi`W13naX-vco(;XBvGXSuD&PUJ9LnOT|*8dB94>vq=RdtD)mP&YQiTK0nYc z$%x^~4p#@=>}pJOxF&SO&if`%`%p*Nj)tVDU>6q)`l9A^!+GRtJ-&LPIIUduUa%pT z^(N*Ax{YW|bU1(OybQXT2+C=WaCU?VBACgt#LWy{v|06fJ?|)T4wJ=Mpxubmkot+R zI{irXjFGx=2Dc%oH^a>j^q~gFI~AdeCD1!;3`LMG#?c|dh0Rcese=p8o)^nfSg z5Un`wR)P`p5H8}jA*Wk2$cTlGdxsk?(bdra^SToa;WjLp^+@vr-8y7zL_<{VoQ`XY zU4#cjec6kF6^jIY0qS%inpSAp%ZUmjc_TqO<;^7#%{Y_J<)?V>VBiv6M$lE`Oznw= zo;vf?88xTV9(jI>_Z0&jjj1GFX>=*mME;Sya2&<{c5jN8CCW0Ae{(~z5Y-AvG(T-?TCH05@27N>*ZC^KQhHRFs` zESUuwcN^yP(<<}Ql^p=|E#<};eTlAR=u5cuZkkK${X_#@HqsMO;>*zgxccd?L@I5x zl(wVTzBZ6`Ij7$c#+hK+u=TzUZ(Iuq-PFb?bJl+p*)7BlY#lHAhJN?(w?%UF>m#2-`}x62B{#0PnJe zMZJLz@2bJE&W$e7RjZ?3e~B*b)~exJtDs6BuF#GbFJ4?5uJmnc8qlGyzhwdRcW}Ld z%j#MpPtNwX=2oK!mv1$QaO8g$(}%q7CMU;dwEdK}IT>y@o;F&q{X&ID_HaI{!1OYkWKSwBE^acDX0YHq~wjrctcBcRps+Kvp{Q0 zbOGp;$D1V$p%3E~^^Tg;trfGBTCW}Y`CqAeYx4#(f*b>X>o=@tpbKHDlU!%FuUiP{ z$5mL5A3yxWw&Mr49em>C!R?QnJbC=F;|Cu<_{72ER|Wl-+qXY<{ISQtRr3P~T~2zW zWH2a_y_`2AMT5P(HWjqd5?$4*xkT4kxp9V4WFBb%dQW-ZY|G_~7jJc!``bi_G+vgJD@FTx0)8h-?PcN*WPSk3>Omh^d-2vaYhOHatqr-?%*c03Qz6t-#V9Uh8C+b`vD)jOu-l9Nf2-4sQmo*ok zdFJB9%N_Ngi)$|)dGgj5pS(us=ik!gSntrrSm2x2X@fC_7O!|e_!!`*y-Giycr5P> zO`nX7wB3G3GdO2=jGR3FL@nrf&&PG>+qW+kbcUc=DS;S5zxBn7mrVxHpImdz&~Mp% zLDh~8x2#{MYV$1{G{=q&iwFIQ`tr4px3t|}&}isnc{pgKYYuQZJn_WikCnIXo?Uq8 zb|vDK4WNVS`qs5CKG{2dsT@&qA7ELBYQipdTN-y+TtEF6`QEJGpJsrft(c z|G{m*>*V$)Ku1l7{>X2C`&-x!eC*l9827I5oWZ#F6>HY6UAtyQ{nq<>aQ4<7Sy6z# zVaK`#RTwWdu;G@?`puLL8`f)%^+m5mgT4(Aoc-^3%U3F)cLCtrGA$!rGt*P;J8Y{jQE2R4{7jHWRxzHU8SU=_tMWc?0I z^Q(rw0ygOvzzlm3w$5SItbV9(upOtC;ZHoVeY8sLqa)Rxt2*I(|6|*pfbF{Nzt!^k zs#C#*hmO4wOBh0LT&2((ewMB9gv-E&A&Q=kN))wjy^F%4GDR`#cTkiZO`_Dg#e#mh zbvyWL9bB~vT4K}<;CO8ND&QF0zWulDjcIBXd>?JuHn{zfRjYpc+bIotOJou1bR`8x zOEGn!*BBTDhbGtZEh*mZjj0T}(}Mc5ip9QeJz`<~Im%*Nzr%utqzG+UH0Vb*ovf$h z?N!D5?IR=Ou={rV9e3Q3_i77;y4u>>R-OF8akbFMcij4u3lBY>lnsYVZK0|cp&$lC zvf9@bEWOJ^|f@*jEs+Wjkg{=81=QbZaevdldvJ6LErww@omDwL#Gs8p$wphYpgLu z4TxB^Z@dJ$ZSIdX0qBTDy#`n8Fe5z5)0#z&O$MnN7P+MX{p7*!ie}tM@4=HNw;cxB zwrvyq_}%Y3kAp-&7jDx*9lCnw4s_g)pZvih^wT~56m0~(#&R>30Wn_fOO>?Voej=J zftEtor>`)tTc4j@YW+HWR-DDl>4y&*sI?hn_B-?p-`sk5TSfTE(hUe5atAHJlZynM zloNtc@h+;3>>!%pDTPxXfRN)FOak2<~!wPF-8Y=eF!KI?N2RCn6XN3;y zjtvE`B@6xJw%7ZnTBkFeGtde76#o3eLr1;QsAL2kP8h+ZP$d`3 zW<8;Z9c(fK0|fNugJ>|5%XotV+(H%>y4k!WphKpcj3UemeGzgxmCbl~Bj_-kAQ3x- z#wpNzgPZ0Kw^}Q>NW?wbky)Q|1m;`<6{jji_#6YqEJ`_=!o8qtNU1!xmwPF4qLVF&`k;b2b(}$ zt^NP5>_h+G2Hy{FDtndvZz{SEZwdg%e=S@B|8>*5i(rQ36A9X22(&ggZ@I)R12ufZ zTW(6|hwJKh+YTE<*i^a|P%neO$-g!&f<+GVdNZ;C^jg!rZmBu>Ysp=<1<)3UW6KhN ze%J{5;WFqn*#4U$_QQ*i)5&Be%^N|lyq6Adr?05#yP(iFuV26UmbGi@>+DG?&z+>oQ6z{M~pFijTiv>|z_O3hcJa%;|>mVGfAkW`bU$@1Z~GQKY8m_XwCYSWwI_g=z+OG z-+XLy>HlKn^praNNJG%WLcr~mEFERgah^o^u$51QXMxTj+HF_Tx%tJb(wcJUJvV$# z-wZN%{(n(&I+;`&%;|21;}r+bDPjq95#i(@>9x6C5pfpiW(G}ibc(Y(0Q8Fh;>C;l z$HkijdSf~LuJ>Me`-S)3`|(|Q@|z*{&5HpYv0I47pol`SD^!{fUEkN z_4COaJE!M?-}5z9_uO+2VE=ZJ{h~DFcsYR(b8g6)${KQ_d-jH$*=dO+1P^Lo2 z@rxf9^x`vXpMft`vwc4Eb==X6jf`!?&knT{ZM$xc2<1V`%-FtLd`cx}m&ych4*IJ-5B`%58h*2K}xb z1>oy;sMLS_-rH&wuI2EW&>sd;9g6^+;AI6dfWD&U11>dvYe2u#jB8`zDA)R{Qu(m^ zFfotN_e5G}-~$QS+vWg$a|!TuJJx@o=I|E^Mf$_=?_nKuIdm2Lp2c|BAt@L_znUjp ziqPj**Au$5s;jHh=WA(i>rdU;F!c3hz~6rR?H5$0-!B*7t-V)3e|QmcI+j$FhM;eO zPbv@V_gbLNpLY-RbciS3IuAB3Tv&0zdOe|AoQ_#kk<(wfe$W&BZ9djIFd$koqvPp2 z8-=cB^aAio*hT6Of4@Ne;fD**zrP4M-5!ZHmeU6g^mMr0B`d9*zrY|p4$Fn}=U1G! zp8wTbzk2I>LLaiDwS_t6E2rN!)#VZOwuvy)9xOn=um1g%9mc@R*q7=1ivb<;%4|c> zJ1U{C7*L^yx2!n-tMeD&oFRtL=>!k&i|uIuy2An=T1AV`Q52kbdBj&=x?cK^wl}sO zJ$iKOpWY8X{>OM{A>eIez0eTwQt02$|1CUp1WPwqr`LfFa{8~{I^RG}PsHRPFUNuj zSulj|qLdid%hOnZ2Ji!PkfkUJA?-vtboA91>I=518jA3bqn#h@+`03E3E!`e?%a9w zT=PdSG^TsL_Hbjgzh6?RKfH*=dpwfONY@M<*6G#;>hwrDI1x(w{2?!G2pzFRe6iMK zEEtV?5=n0+!@|+_2@a{a%l7I$_4R6_5k6|p0OnhL{{1_l9_{*1J;FcS^R>FFf&5{; zCHHWJ*TYMqAxCgtS-B3-8*9BQtdfgly_pDaT)Z=`pvRMowPwB1K2L1gmw^N85j#SZ zL&vTg^#5r77Gyp8>;Lj&2z~!d=RY(C{cHEsU|t@fly({P#p$Qp)zzBpR}EcX4HM+^ z^VhZY?l2=9i%7CZ;w8nSq#}|!I^V|3TTcIvuKNM&U$?*R>wgqx`Kg-sq&Kh#IQ z^o%o@2d>s+xhCj<_gkP&zi?fl56$wBt9jmXdfT5s=>7Y*PQ3x4_xCpn{ndQF)vE5V zH3a=@dc21hC8zW3)j>ahUWI<)t@EJue*UcsZ(Y|e+cA8$r(Bu&s?+cIHDLX%nICUG z1uOR-w|C#uIP`Lm4MERq;i2pE0bdRD3u-^z9zK6z1^5Hd&tF%I968G(%=SCyDX0JA z_^PcSgZKKgKG=%)G=DUA=wF*V^o7sq>I|G_vl(HCYpc^?wZ1rJ*y{%UAO5rJ|Axi- z{r3a*JO6%W+ks+upe6Ce7*pe|u*i z+qQYg4zlz0wqEclSv^Mt83q# zbhCj|(j~F9Kdm;yh5!v90|A`#;nw!xCb4^M0sk|gZLU}@hYr{+aBkPGZP2Y-Z}*VY z3n`nVP06C9=u286`Fm(3`uKVKJrAFsUX@?)T?I8L^y=kwP^-_s@G;X#pMG*r*Z;lw zbd%-_DAWV$eTmqx%OjObwATxt5%G2n_RQM^+&NM`ZQ zK+o6dLcVu-5g0!@`*MDj(X%g|g_r~AtYRU$2C}rm1707thLLt(%I@e$#C_?tc+Bpz z2eMfzkrfm8v*3tuFmGfyy%I_hL?Eh!8y1U7E(p90=t8Y`IT08ypXWwk6j|@RM$mmM zbVoQGCcPv86%V+mAeD<@gqKQCjv>2U6nge3_r%LUcLjs?I1x^SDYs(Kq3T1w#6;z~ zbm}f0hw;vxZHDOj#Vw; zz40|75m+JE6oSffPrNSrbtUJEQ-qzsa<$LtsD-e5ssUZ|!TV*SY^PjzPu)Fr^FMCV z5g0GsytMNOjH!S`1jZT#?g=v|3H0ZU-gI;vbunV(iHr}a*b7oGb`#`5FMqr$K`7d5# zkIpI=mo47g+Y8VNY`y8OvS=Pp>{%NaShG_Ug^?5)#~d!uI?45}*wem1Z*SDs%aa1o zwF!Gv9`tLp8&-!Lx~2mspKq8RY*YbyT}EKEuZZgKrno&_=|sGDd47I=wR?X4;6eHu zU3H~W2UZUpSQ`k2cy}ih=%*t#*eDPB#ybr3YYgnqH!>T1=r7I9o!QQIX0Esh;So;o zhGGQ9mkJRWUsen{HZU*%x)K8Nt!|Fi)CIoB@&J7uJ&%9qi6;)M1lM?X4^av%KLQ&K z71ZfEq)?}4HZo;#*^E1nz*qu$RxKTYu~u=}9OA<%2M%vb%ggNBz!3N5>~dI%MgF(3 zOz3u?Zw|&MBLX8Ax>jo`L|}w%HU%RvzGnA{$u-};N!>4WA1u2xKj4^e@9N5~MFZTs z6Gs&Y#urKCQo(9KFK@`nionQ$ZZ&Fs-h2c`Z-7!T0^@7cnwU~U!9(SZJsxjpf`4{_TDx){*mS4YHu?2HA$3M#on1Wp%o&2#g%)klIN{ zi_xFe(GeIak6O79T|`P$WR{Qo@p(ra^xR3W*GqvPf*>&WbEu21WgekH=-PLZ$eb5^Z`1^W_uwn+a7`{ zOOcDm;%E#4@qU<5{QTvUk^LFBRt zd!l!>z5QTEn%I;e$3637e5(>et5JKpDs_6>bXh}AP6S3y@y=st6~{nnPHj$*;+{E4zEz3hJ(7qTssVla`Xs-fzTLHn=1PGfxc&4qd21m8W1Dgj z7{j1Owu|gJEH9F&y|FSoW=}BJ@|%<7p4l-4pj)HyUU^-%+1DB9)04CG$!s}vIUyMN z9$D!Kj5Uhk5(7AecMMBm<>K41IM-&Q_(_!r(S;FVSSED6if+9#(5Gi-H$iWjz&%k? zL=;IT*f)0H!cN+`7d!;tu0-ITwNwm}S-dmQi^cnNThl_P2ny_5Z$NSOjeXt1PGJ;B z7BBaVA{2nGCP*73u^{laptm(I^dLbHpu4@bfWgkZd5f>*c7o(yu!Q+`C7_4tQ8sJk z&}Xkt*BW}QLUaYa;=&~C1jRjr!+fh>k+oqdSQhkronC0jO>*k=efw${qU$d!jKFnD zGDMdU)MYdo&0;4r)M{eZ zQ$SQto)*`M`%(!`NF>mXPtdwDaplUD{(kU2!Tc08dT&BpqcdVw1-fj;FzK!i^!(83 zQznC2KJ;XUS@buvxbzOI&zBYpmpU`LLtsmGdTchEMN3c4MIrs)NN9Mt(gf&uKdtlQ z=hxRSUR+-v?;k&ZuD_%!_xiyfgV;VJX7wvE8`fK0=o+h9KJ-Nu3~P-rY|MQA;5UrE zNRH(vQDizZCKkFj5}}jPD@gj{!_SH99Nn7{ z*FDh$ZUt7CLahjnR}6i6c6yR&y_;3)JoMoH{lVcAv19x9?*w`TxqKN{M@;YhCaRP-qzFwD3NB|2gplr=Pno@f+a2QCc96UtPaAeqnvQumAkW zC`b3e&xF{1Z&X+lekInNp~o{22$2aLVxfa(9NUo7BYEhzUEfW)LMvnl^X>q;9=Uws z!bKbf&>wyQ^7+HxBuz$RFyz%5OVDj}@t!-dyu5s1Idu9-ah*6(X@bc36=))J~wA@rxHOT)2$rK7aV|3m_W0S{)2UjcOe~r{~^a6dFDut`}ddG=ZmYR8%wf zMk`5B>*C$SW=lpphJI#{&FM_59rV_(&oa;r1?Z{a6KiX}@2*iV?gYB(Jb?Zdr2G8a zZ|Pe7+lNV=)oSq$z}7P8Zjz!XGRqY2VtVemN)z0cfIcb(eRM{wcwcWM=)B^+*pMqi z@7&*cd;hUx!TrxazXRwd+&^t5iqQAPu#eA1-V=0-xl{2-L}<`uO8Y6FfO0 z)g_y$B!T;phu*o!2;9C@b_5Q1#d|D7>y4VU-Yd-M6OT?#Urg>;OPx#X0YIF;eX(!} zS}Hx-RJ!z(=W^A?L_~2h{Ez^?T%FKm_l1P5qynZo>Fb7DfcxU?Q z3HGs|z=;=k+au?174O@IjtD-;WYGxxdj=O(`GGW324xQ*#v@0^=Q1r7eD6&0?x&bJ z2=3Fvr^WWu_wS3_housnhQ}p*FOB7#*;VMmk2S%%eOqgAQ6GUR$`&!2GKPpY=8r`1 zq&X6CQeik!2A%Q9Eid~Tp?Du{qT+o_F9sb~3klXewY3Hp$52Z;;YCqh20>v*+=!}@ zCRCdvVlb*JgI+t2+_=QZX=OvJO$A+L6%uR`gl;y#4$Nk->N1ca=y1UXeNt!8`hp?9 zp#`1BfV8Whl?35nS0H9>V572=IzPQ;wlAxJot@F1EZ zbkKIUSZe5zTOSeEjD)>^LfF9~^GCYH40~kCbaHb# zTtkoCu8y)z9BWwU#qsna^rd8Gr%KW;nZi;2V6pIvz$H$dZnM-$>9WXBp_zlgxPf^}=|1g>G0;$2_m~UOSH*DBeYx&WPJZi}!Pl1%3K; zHmA?dw#`mo-;~pL8#?Qe+Y>sm`*Y-WcRc-ABiHHEZ8e1+aRT`rHOT2pyW5a!rq=sX zvdSve>9*n&XrrCl{Vtnzy-!plGkp>XCd8}_)_OPVpVi=k&KWCORaukV)_cCohNJ^h z&YAm?&YAlX31A5~?8zAkH|)t~a>I&2UovT{tTNww#E3?;k&e)b`@8Rkm3V0Bp43xK zGi4WIUw{4eukzd1O$9v?abgr)SQyggjL4T!Z7`rE=*-L+!WVEHJzA3~&{g-y{nxKb z`nrjV_az+~NqJ*#EJ|TPEK1rb(l5Vk$K6hqjtkuar;cX#Fas_UPomwwUugpEdbJyJ z%?sUN3`7HISI%d5ffsK_SZk0i$f8B^&^5{1Zdyc|SvZ?i-Xpj3F585X&!_JubPa?A zQwbszCSw?Qaix=jokwn=!twN` znnWQAeYc!5n&dGT9s0yyJCB@H@jfb5yq|njoHK=q>($ayX94?+wrAii{@9(99*x735k-NH!GiMsk_s)U7X*_)?!!96EHEA=2hTQ%{ zAmDS^=xNb4^2qh~pA_3>BsR@mH7&}Uy~p)*6Pv-H?%xf>Rgz@XX<+ANkTx?$Pk zJ?_dKrL|n6*84)A@K4{UguT2@UnssVG+LcLIm-*0QBc63`@9f6{bMfz#~^_KfOsCa!hvTd*sx{P&$37n*A(kDLxc6TxWC7oq}`7pYV#6;gzL%+=A6 zbubU9!;XORt@niqsn&b{Bhq?b(m;^MV71Y8x)z2i6^^rRST?685&?%(3(9?jBzC_} zH?A*;s&8~bBEd-!V^ek6ii;RkNqSvp9{TW}<>j6MCj$N!RE~if47gNOynnc*nzMNC zT+|(^s&tD*=w7{E=ZrHUiEH6|H`2v>pUBQQXN0Vu{pVKttT~-CyE8G8f$s46>@^&4 zp`kAn_P$NWeKhpGan5z#E(m=gzqO!CEJ%}Y$hlm-snF3Opgp0+EZ+N@vv}V<=*$x? zHlvMxbA(Rs`m=0krLFgck!EVWk3FkVZG!F$hok7OLTCN5%zz6dn!iecKSKwkn4^dyqs7MDsnotgK}47j*z@qD_3N3QSD8d}`~IQ@X_D9ZG~{qP5a*MLOzG#NSty9Pl#^!?^l|@=?2~DsPMiJW;)!0=4if0 z9$ny{=Z~5Jx-r5Gk3@`Ww0Q)+9svh2Z9+wijM<15&I&&UW2Eps!A(%S7Z#O*#=f>F zE)UGiw7T}b*`$EX8ykW)$dLb@aAU(l=d1!8LYTGPR5(})8R(5LB`J=d>KPO?L*gB`6b29*3i{+E1D#pqfA;#nUBBLf-u%${#rrH9 zl#d79sJLJoQ<=Z@kur7qg9jpYdgDVcHRP-X=wqK%Jc^E3{;4wk`qx)!-T38IMfBl^ zLY8%;S)o^6JpcOpKdw;UXSDbGis(;&60-at(y-9Y0Qyr?ZThjFfNF{Zo$k0+2l|g& z(CZWWT=dmv9(&AvrU)JN+gi}K0UfoV^$s1+L)UMD?zTMks>h#)ju;FULTfMp=#@9b zuKq}le)x|?{osd;e)~iD`q58i>zn@(viyVEYCzqDUu~#s=u?Nxpb4zgX$Ftvq3;_! z^z2ibeN%07b3akd&9xPwqd^-3-CD6clq``2VfJtgsPC6C`HITF_0NA6vbe1Px=m|C z>lgae5nAk;>_>_XH*l5SStF|{2D$+?GSDk8-o1ZY9sRC?dk@IJ^^boPvJ4rmh4mKd z6#A689wLZK}RFbsE1AgtSAq936>q z{7kg&q0??~TMQ0Iz$a>$35T znkkj4uwDrMKv%IY|9y4zshIH8301iu@7qfAcHy_2rjBmK#Xnt5<33)H$Qs zE;>z{sxaZtYW`#=lT4s@_wJ(puvZa@74K;NdqNt)IU_32PcJO;A>p^Z~HOZjC37y8Z`au=#srB|m;-&Ds} zwNAIzJ@hSHWp+R5jz`KbBl4lkl;EU9uHO3S+D;}kZfd>D)dS(LpzbF|4sM>Y7#$#^ zzPPdcGCo+EBe%2SeOJ|*0xj1$!xIX_YONM3zpQFOZx-lBOy+G$H$_9&TA10ebpsu* zQ|R>bxb-_nj_ZFB)e&aqj5g*0)w}tDre1XIqic$M?t={>iw?3HjBcm9ey2-K4Q_V{ zs3~UVj4{T{k*i5VZd;8#09}y}7Hh~^4F+4-(;zcv#GNx!G<4XbrlGg$bg|-{9#BW? zdb(6mu*U<7tkle#F4d~jrJ&dKczS6fdMt+l>>iH=wt48OiylkNX@N`2HPObu>RZF4HT zI5BdgUYs+!Yws)LoY@fm3ZT-&NPMuS;zBoKx3XJ6?*chpwS(wsdes;!Jr3b@BZdAc zknras`R_@uGD2hKT1v$k71hSmM-OiSz55pFjk^6#r>&(XlhYpyIrgk}ck!V=(cU$G z{6LT6Rv;0#x71vUCvpR>p#v|>^Pw}9diUybPlv1Mn?1pB`tC7nm2JvqgMM%_kAnUmh1G=+(WdMR00000NkvXXu0mjfXG{et literal 0 HcmV?d00001 diff --git a/source/images/global-mixer-window-split.png b/source/images/global-mixer-window-split.png new file mode 100644 index 0000000000000000000000000000000000000000..7be88bb3060611a2fa86e6d1cab9f7e52536e08c GIT binary patch literal 39369 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 JjiwXw{{eAkFBAX( literal 0 HcmV?d00001 diff --git a/source/images/summary.png b/source/images/summary.png new file mode 100644 index 0000000000000000000000000000000000000000..1289dc8a6565fb300882023c8d644f89180bfba9 GIT binary patch literal 3293 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 literal 0 HcmV?d00001 -- 2.37.2