]> Shamusworld >> Repos - ardour-manual/blob - include/osc58-linking-surfaces.html
Correct a double anchor name for the PDF
[ardour-manual] / include / osc58-linking-surfaces.html
1
2 <p>
3         As of Ardour 6.0, Ardour provides the possibility of linking two or
4         more surface to work as one surface. This means that two surfaces,
5         one with 8 strips and one with 6 strips would look like a single 14
6         strip surface. A <code>/bank_up</code> or down on either surface with bank the two
7         so that they bank in 14 strip increments.
8 </p>
9 <p class="note">
10         Ardour 5.0 to 5.12 can use two surfaces as shown in <a href="#example3">Example 3</a>.
11 </p>
12 <h2>Surface Linking Concepts</h2>
13 <p>
14         <ul>
15           <li>A group of surfaces linked together are called a <code>Link Set</code>. A
16           <code>Link Set</code> is called by a positive integer number.</li>
17           <li>There may be more than one <code>Link Set</code> at a time used
18           with Ardour.</li>
19           <li>Each surface inside a <code>Link Set</code> has a <code>Link Id</code>.</li>
20           <li>The <code>Link ID</code> is a positive integer numbering consecutive
21           surfaces starting from 1 for the left most and going up to the right. So
22           if there are three surfaces in a <code>Link Set</code>, The left surface
23           will have a <code>Link Id</code> of <em>1</em>, the middle surface will
24           have a <code>Link Id</code> of <em>2</em> and the right surface will
25           have a <code>Link Id</code> of <em>3</em>.</li>
26           <li>There may not be skipped <code>Link Ids</code>. If there are a
27           surface 1 and 3, there must also be a surface 2. Surface 1 must always
28           exist. If any surface is missing, the track names will indicate the
29           <code>Link Id</code> of the first device missing.</li>
30           <li>In most things, surfaces are separate and can do things independently.
31                 <ul>
32                   <li>Each surface can have a different <code>Gain Mode</code></li>
33                   <li>Each surface has it's own <code>Bank Size</code></li>
34                   <li>Each surface has it's own <code>Feedback</code></li>
35                   <li>Each surface has it's own <em>Expanded Strip</em></li>
36                 </ul>
37                 However, some things are shared by all surfaces in a <code>Link Set</code>:
38                 <ul>
39                   <li>Banking is done as a unit and each surface bank start is
40                   determined by the <code>Link Set</code>. Any surface can
41                   <em>Bank Up</em> or <em>Bank Down</em>.</li>
42                   <li>All surfaces share the same <em>strip types</em>. Setting
43                   <em>Strip Types</em> in any one surface sets it for the whole
44                   <code>Link Set</code>.</li>
45                 </ul>
46         </li>
47         </ul>
48 </p>
49 <h2>Setting Up a Link Set</h2>
50 <p>
51         There are only two OSC commands needed to set up a <code>Link Set</code>:
52 </p>
53 <table class="dl">
54   <tr><th><kbd class="osc">/link/set <em>linkset</em> <em>linkid</em></kbd></th>
55   <td>Where <em>linkset</em> is the Link Set this surface will be added to and
56   <em>linkid</em> is the Link Id of this surface.</td></tr>
57   <tr><th><kbd class="osc">/link/bank_size <em>linkset</em> <em>banksize</em></kbd></th>
58   <td>Where <em>linkset</em> is the Link Set this surface will be added to and
59   <em>banksize</em> is the target bank size for this Link Set. This Link Set
60   will not operate unless the total strip numbers is <em>banksize</em>.</td></tr>
61 </table>
62 <p>
63         It is also possible to send link set and ID values as part of a
64         <code>/set_surface</code> command.
65
66   <kbd class="osc">/set_surface <em>bank_size</em> <em>strip_types</em>
67   <em>feedback</em> <em>fadermode</em> <em>send_page_size</em> <em>plugin_page_size</em>
68   <em>port</em> <em>linkset</em> <em>linkid</em></kbd>
69
70 </p>
71 <p> The <code>/link/bank_size</code> command is optional. Ardour defaults
72         to linking with auto sizing banks where the <code>Link Set</code>
73         bank size is determined by adding the available surface bank sizes
74         together. So long as the <code>Link Ids</code> are consecutive, the
75         <code>Link Set</code> is considered ready. If the surface wants to make
76         sure all surfaces are present before the <code>Link Set</code> is
77         ready, the <code>/link/bank_size</code> command will not allow the
78         <code>Link Set</code> to be ready until the surface bank sizes add up
79         to the <code>Link Set's</code> bank size.
80 </p>
81 <p>
82         Setting up a linked set of surfaces is a simple as choosing a number
83         for the <code>Link Set</code>, <em>1</em> will work fine if there is
84         only one linked set of surfaces, and giving each surface a <code>
85         Link Id</code>. This can be done with the same method as the <code>
86         /set_surface</code> command is sent or by having each surface send
87         the <code>/link/set</code> command. As with other commands, the first
88         parameter (linkset) may be sent inline: <code>/link/set/1 <em>linkid</em></code>
89         for those surfaces unable to send multi parameter OSC messages.
90 </p>
91 <h2>Example Multi Device Surfaces</h2>
92 <h3>Example 1</h3>
93 <p>
94         Assuming two devices, the left device has 8 strips and very little
95         else on it's main page or tab. It may have secondary pages or tabs or
96         a physical control section to access the extra selected strip controls
97         like send levels or plugin controls. The right device has only 6
98         strips because it also has Master and Monitor channel as well as
99         transport controls. It also has a select section. As part of it's
100         Global controls it has a Bank up and a bank down button. (there is
101         nothing stopping the left surface from also having banking buttons)
102         The left surface will be linkid <em>1</em> and the right surface will be
103         linkid <em>2</em>. For this example the linkset will be <em>1</em>.
104 </p>
105 <p>
106         Device <em>1</em> will have a "Connect" button that will send:
107         <code>/set_surface iiiiiiiii 8 159 8323 0 0 0 0 1 1</code> and the second
108         device will have two buttons. One will be a "Connect" button that
109         sends: <code>/set_surface iiii 6 159 8403 0</code> and the other
110         will be a "Link" button that will send: <code>/link/set ii 1 2</code>.
111         These devices use two different methods of setup both to illustrate
112         their use and because this will allow them to be used unlinked. Device
113         <em>1</em> even as a linked device will operate on it's own as a one
114         device <code>Link Set</code>. However, device <em>2</em> would show
115         an error condition if device <em>1</em> is not present so we have a
116         seperate "Link" button. This is an optional way of doing things and
117         both could use just one "Connect" button or both could have a separate
118         "Link" button. Device <em>2</em> could also have an "Unlink" button
119         that sends: <code>/link/set ii 0 0</code> if desired.
120 </p>
121 <p>
122         To use these two devices as one, the "Connect" button on both devices and
123         the "Link" button on the second device are pressed in any order. The two
124         surfaces will now act as one surface with 14 bankable strips.
125 </p>
126 <h3>Example 2</h3>
127 <p>
128         This example will be more complex and use a total of five devices. The
129         first three devices will form Link Set <em>1</em> and have 8 strips each.
130         They are similar to the left device above, but will only show "input"
131         strips. The last two devices will form Link Set <em>2</em>. Device <em>1</em>
132         will be similar to the first three devices with 8 strips and the other
133         will be similar to the 6 strip device in example 1 having Master and
134         transport controls as well. The devices in Link Set 2 will be set up
135         to only use bus and VCA strips and so don't need to include record
136         enable buttons etc. It is expected that all devices have
137         banking buttons, but at least one surface in each Link Set would have
138         to have them.
139 </p>
140 <p>
141         Devices 1 to 3 (from left to right) would each have a "Connect"
142         button that sends: <code>/set_surface iiiiiiiii 8 3 8323 0 0 0 0 1 n</code>
143         where <em>n</em> is the position or Link Id of that surface from 1 to
144         3, left to right. Device 4 would use: <code>/set_surface iiiiiiiii 8
145         156 8323 0 0 0 0 2 1</code> and device 5 would use: <code>/set_surface
146         iiiiiiiii 6 156 8403 0 0 0 0 2 2</code>.
147 </p>
148 <p>
149         As before, the "Connect" on each surface is pressed in any order and
150         the resulting surface would have 24 input strips where the banking
151         buttons on any of the first three surfaces would bank those three
152         surfaces 24 strips at a time through the input strips (assuming more
153         than 24 input strips are available). The last two strips would form
154         a master and bus section with 14 bus only strips that will bank through
155         the bus strips (assuming more than 14 bus strips). This combined
156         surface would have 38 strips (plus Master) all together.
157 </p>
158 <h2 id="example3">Example 3</h2>
159 <p>
160         In this example there are two devices as in example 1. However, the
161         goal is to have only input strips on the left device and only bus strips,
162         Master and transport controls on the right device. In this case linking
163         is not needed. The left device would use a "Connect" button that sent:
164         <code>/set_surface iiii 8 3 8323 0</code> and the right device would
165         use a "Connect" button that sent: <code>/set_surface iiii 6 156 8403 0</code>.
166         The banking buttons on the left surface would bank through the input
167         channels and the banking buttons on the right surface would bank
168         through the buses and VCAs. As this example does not use Ardours OSC
169         linking commands, it will also work with Ardour versions 5.0 to 5.12.
170 </p>