@@ -5,6 +5,14 @@ const kSceneModeRun = "run";
5
5
const kSelectorSceneMode = 'input[type=radio][name=selectMode]' ;
6
6
const kSelectorConnectingSpinner = "label[for=btnConnect] .spinner" ;
7
7
const kLockGMFader = false ; //Should the Grand Master fader be lockable?
8
+ /**
9
+ * @brief Does the QLC+ application support the grand master fader?
10
+ *
11
+ * If true, then the grand master fader value will be sent directly to QLC+.
12
+ * If false, the values of all faders will be internally scaled by the grand
13
+ * master and sent to QLC+.
14
+ */
15
+ const kQLCHasGrandMaster = false ;
8
16
9
17
//Globals
10
18
var qlc = new QLCPlus ( autoReconnect = true ) ;
@@ -125,10 +133,53 @@ function confirmModal(title, message, callback)
125
133
//-----[ FUNCTION: sendAllFaders ]----------------------------------------------
126
134
function sendAllFaders ( )
127
135
{
128
- qlc . setGrandMaster ( gmFader . value ) ;
129
- for ( let i = 0 ; i < faders . length ; i ++ )
136
+ if ( kQLCHasGrandMaster )
137
+ {
138
+ qlc . setGrandMaster ( gmFader . value ) ;
139
+ for ( let i = 0 ; i < faders . length ; i ++ )
140
+ {
141
+ qlc . setSimpleDeskChannel ( faders [ i ] . channel , faders [ i ] . value ) ;
142
+ }
143
+ }
144
+ else
130
145
{
131
- qlc . setSimpleDeskChannel ( faders [ i ] . channel , faders [ i ] . value ) ;
146
+ const gmValPercent = gmFader . valueToPercent ( gmFader . value ) ;
147
+ for ( let i = 0 ; i < faders . length ; i ++ )
148
+ {
149
+ qlc . setSimpleDeskChannel ( faders [ i ] . channel , Math . trunc ( faders [ i ] . value * gmValPercent ) ) ;
150
+ }
151
+ }
152
+
153
+ }
154
+
155
+ //-----[ FUNCTION: onGMChannelInput ]-------------------------------------------
156
+ function onGMChannelInput ( self )
157
+ {
158
+ const val = self . value ;
159
+ const valPercent = self . valueToPercent ( self . value ) ;
160
+
161
+ try
162
+ {
163
+ if ( kQLCHasGrandMaster ) //We can let QLC+ handle the grand master
164
+ {
165
+ qlc . setGrandMaster ( val ) ;
166
+ }
167
+ else //We need to manually perform grand master calculations
168
+ {
169
+ //Scale all fader values by the grand master
170
+ for ( let i = 0 ; i < faders . length ; i ++ )
171
+ {
172
+ const channel = faders [ i ] . channel ;
173
+ const faderVal = faders [ i ] . value ;
174
+ const scaledFaderVal = Math . trunc ( faderVal * valPercent ) ;
175
+
176
+ qlc . setSimpleDeskChannel ( channel , scaledFaderVal ) ;
177
+ }
178
+ }
179
+ }
180
+ catch ( e )
181
+ {
182
+ console . log ( e ) ; //Do nothing
132
183
}
133
184
}
134
185
@@ -138,20 +189,23 @@ function sendAllFaders()
138
189
*/
139
190
function onChannelInput ( self )
140
191
{
141
- var channel = self . channel ;
142
- var val = self . value ;
192
+ const channel = self . channel ;
193
+ const val = self . value ;
143
194
144
195
try
145
196
{
146
- if ( channel == 0 )
197
+ if ( kQLCHasGrandMaster )
147
198
{
148
- qlc . setGrandMaster ( val ) ;
199
+ qlc . setSimpleDeskChannel ( channel , val ) ;
149
200
}
150
201
else
151
202
{
152
- qlc . setSimpleDeskChannel ( channel , val ) ;
203
+ //Scale the value actually sent to QLC+ by the current grand master value
204
+ const gmValPercent = gmFader . valueToPercent ( gmFader . value ) ;
205
+ const scaledVal = Math . trunc ( val * gmValPercent ) ;
206
+
207
+ qlc . setSimpleDeskChannel ( channel , scaledVal ) ;
153
208
}
154
-
155
209
}
156
210
catch ( e )
157
211
{
0 commit comments