99
99
package.preload [" library.clef" ] = package.preload [" library.clef" ] or function ()
100
100
101
101
local clef = {}
102
-
103
102
local client = require (" library.client" )
104
-
105
103
local clef_map = {
106
104
treble = 0 ,
107
105
alto = 1 ,
@@ -128,16 +126,12 @@ package.preload["library.clef"] = package.preload["library.clef"] or function()
128
126
tab_serif = 17
129
127
}
130
128
131
-
132
-
133
129
function clef .get_cell_clef (measure , staff_number )
134
130
local cell_clef = - 1
135
131
local cell = finale .FCCell (measure , staff_number )
136
132
local cell_frame_hold = finale .FCCellFrameHold ()
137
-
138
133
cell_frame_hold :ConnectCell (cell )
139
134
if cell_frame_hold :Load () then
140
-
141
135
if cell_frame_hold .IsClefList then
142
136
cell_clef = cell_frame_hold :CreateFirstCellClefChange ().ClefIndex
143
137
else
@@ -147,7 +141,6 @@ package.preload["library.clef"] = package.preload["library.clef"] or function()
147
141
return cell_clef
148
142
end
149
143
150
-
151
144
function clef .get_default_clef (first_measure , last_measure , staff_number )
152
145
local staff = finale .FCStaff ()
153
146
local cell_clef = clef .get_cell_clef (first_measure - 1 , staff_number )
@@ -160,10 +153,8 @@ package.preload["library.clef"] = package.preload["library.clef"] or function()
160
153
return cell_clef
161
154
end
162
155
163
-
164
156
function clef .set_measure_clef (first_measure , last_measure , staff_number , clef_index )
165
157
client .assert_supports (" clef_change" )
166
-
167
158
for measure = first_measure , last_measure do
168
159
local cell = finale .FCCell (measure , staff_number )
169
160
local cell_frame_hold = finale .FCCellFrameHold ()
@@ -182,32 +173,25 @@ package.preload["library.clef"] = package.preload["library.clef"] or function()
182
173
end
183
174
end
184
175
185
-
186
176
function clef .restore_default_clef (first_measure , last_measure , staff_number )
187
177
client .assert_supports (" clef_change" )
188
-
189
178
local default_clef = clef .get_default_clef (first_measure , last_measure , staff_number )
190
-
191
179
clef .set_measure_clef (first_measure , last_measure , staff_number , default_clef )
192
180
193
-
194
181
end
195
182
196
-
197
183
function clef .process_clefs (mid_clefs )
198
184
local clefs = {}
199
185
local new_mid_clefs = finale .FCCellClefChanges ()
200
186
for mid_clef in each (mid_clefs ) do
201
187
table.insert (clefs , mid_clef )
202
188
end
203
189
table.sort (clefs , function (k1 , k2 ) return k1 .MeasurePos < k2 .MeasurePos end )
204
-
205
190
for k , mid_clef in ipairs (clefs ) do
206
191
new_mid_clefs :InsertCellClefChange (mid_clef )
207
192
new_mid_clefs :SaveAllAsNew ()
208
193
end
209
194
210
-
211
195
for i = new_mid_clefs .Count - 1 , 1 , - 1 do
212
196
local later_clef_change = new_mid_clefs :GetItemAt (i )
213
197
local earlier_clef_change = new_mid_clefs :GetItemAt (i - 1 )
@@ -222,17 +206,14 @@ package.preload["library.clef"] = package.preload["library.clef"] or function()
222
206
end
223
207
:: continue::
224
208
end
225
-
226
209
return new_mid_clefs
227
210
end
228
211
229
-
230
212
function clef .clef_change (clef_type , region )
231
213
local clef_index = clef_map [clef_type ]
232
214
local cell_frame_hold = finale .FCCellFrameHold ()
233
215
local last_clef
234
216
local last_staff = - 1
235
-
236
217
for cell_measure , cell_staff in eachcell (region ) do
237
218
local cell = finale .FCCell (region .EndMeasure , cell_staff )
238
219
if cell_staff ~= last_staff then
@@ -243,7 +224,6 @@ package.preload["library.clef"] = package.preload["library.clef"] or function()
243
224
cell_frame_hold :ConnectCell (cell )
244
225
if cell_frame_hold :Load () then
245
226
end
246
-
247
227
if region :IsFullMeasureIncluded (cell_measure ) then
248
228
clef .set_measure_clef (cell_measure , cell_measure , cell_staff , clef_index )
249
229
if not region :IsLastEndMeasure () then
@@ -257,13 +237,10 @@ package.preload["library.clef"] = package.preload["library.clef"] or function()
257
237
cell_frame_hold :SaveNew ()
258
238
end
259
239
end
260
-
261
-
262
240
else
263
241
local mid_measure_clefs = cell_frame_hold :CreateCellClefChanges ()
264
242
local new_mid_measure_clefs = finale .FCCellClefChanges ()
265
243
local mid_measure_clef = finale .FCCellClefChange ()
266
-
267
244
if not mid_measure_clefs then
268
245
mid_measure_clefs = finale .FCCellClefChanges ()
269
246
mid_measure_clef :SetClefIndex (cell_frame_hold .ClefIndex )
@@ -272,7 +249,6 @@ package.preload["library.clef"] = package.preload["library.clef"] or function()
272
249
mid_measure_clefs :InsertCellClefChange (mid_measure_clef )
273
250
mid_measure_clefs :SaveAllAsNew ()
274
251
end
275
-
276
252
if cell_frame_hold .Measure == region .StartMeasure and region .StartMeasure ~= region .EndMeasure then
277
253
278
254
for mid_clef in each (mid_measure_clefs ) do
@@ -288,10 +264,8 @@ package.preload["library.clef"] = package.preload["library.clef"] or function()
288
264
new_mid_measure_clefs :InsertCellClefChange (mid_measure_clef )
289
265
new_mid_measure_clefs :SaveAllAsNew ()
290
266
end
291
-
292
267
if cell_frame_hold .Measure == region .EndMeasure and region .StartMeasure ~= region .EndMeasure then
293
268
294
-
295
269
for mid_clef in each (mid_measure_clefs ) do
296
270
if mid_clef .MeasurePos == 0 then
297
271
mid_clef :SetClefIndex (clef_index )
@@ -304,17 +278,14 @@ package.preload["library.clef"] = package.preload["library.clef"] or function()
304
278
end
305
279
end
306
280
307
-
308
281
mid_measure_clef :SetClefIndex (last_clef )
309
282
mid_measure_clef :SetMeasurePos (region .EndMeasurePos )
310
283
mid_measure_clef :Save ()
311
284
new_mid_measure_clefs :InsertCellClefChange (mid_measure_clef )
312
285
new_mid_measure_clefs :SaveAllAsNew ()
313
286
end
314
-
315
287
if cell_frame_hold .Measure == region .StartMeasure and region .StartMeasure == region .EndMeasure then
316
288
local last_clef = cell :CalcClefIndexAt (region .EndMeasurePos )
317
-
318
289
for mid_clef in each (mid_measure_clefs ) do
319
290
if mid_clef .MeasurePos == 0 then
320
291
if region .StartMeasurePos == 0 then
@@ -355,7 +326,6 @@ package.preload["library.clef"] = package.preload["library.clef"] or function()
355
326
end
356
327
end
357
328
end
358
-
359
329
return clef
360
330
end
361
331
function plugindef ()
@@ -366,7 +336,6 @@ function plugindef()
366
336
finaleplugin .Version = " 1.0.1"
367
337
finaleplugin .Date = " 2022-08-30"
368
338
finaleplugin .RequireSelection = true
369
-
370
339
finaleplugin .
AuthorEmail = " [email protected] "
371
340
finaleplugin .AdditionalMenuOptions = [[
372
341
Clef 2: Bass
@@ -395,14 +364,12 @@ function plugindef()
395
364
clef_type = "tenor"
396
365
clef_type = "tenor_voice"
397
366
clef_type = "percussion"
398
- ]] finaleplugin .HashURL = " https://raw.githubusercontent.com/finale-lua/lua-scripts/master/hash/clef_change.hash"
367
+ ]]
368
+ finaleplugin .HashURL = " https://raw.githubusercontent.com/finale-lua/lua-scripts/master/hash/clef_change.hash"
399
369
return " Clef 1: Treble" , " Clef 1: Treble" , " Changes the selected region to treble clef"
400
370
end
401
-
402
371
clef_type = clef_type or " treble"
403
-
404
372
local clef = require (" library.clef" )
405
-
406
373
local region = finenv .Region ()
407
374
region :SetCurrentSelection ()
408
375
clef .clef_change (clef_type , region )
0 commit comments