Lua Scripts for Finale
|
These free scripts use Robert Patterson's free RGP Lua user-scripting environment to enhance the native abilities of Finale music software. They can be tweaked to personal taste using any plain text editor and are provided "as is" without warranty. Many of them require recent versions of the software, but since it's all free that shouldn't be a problem!
The largest public collection of free Lua scripts for Finale is at
finalelua.com including comprehensive
installation instructions.
I use the commercial Keyboard Maestro automation system on Mac
to invoke these scripts as menu items instantly with memorable keystroke combinations.
Visit Nick Mazuck on YouTube for clever hints on using KM with Finale. Some
scripts use the option or shift key to trigger optional behaviour.
Getting KM to detect these modifier keys is tricky in Finale on Mac, so if you
need that refer to these instructions. |
|
Staff ExplodeThis first script resurrects Jari Williamsson's original (retired and unsupported) QuickExplode plug-in. Finale's built-in Explode command defaults to creating a new staff for the expanded material, and I resent the extra mouse clicks needed to override the default behaviour. Jari's subsequent JWPolyphony plug-in includes a wealth of
other options but is hard to implement as a one-click utility.
A set of chords on one staff is exploded into successive staves
either as single notes or pairs of notes.
If the selected chords contain different numbers of notes,
missing notes will be replaced by rests in the destination.
It can also explode chords in one layer on each staff into
different layers on the same staff, and explode multiple layers
from one staff onto successive staves.
Six menu items are created:
- Staff Explode Singles (single notes onto successive staves)
- Staff Explode Pairs (note pairs, odd notes omitted from bottom staff)
- Staff Explode Pairs Up (not pairs, odd notes omitted from top staff)
- Staff Explode Split Pairs (pairs split: 1-3/2-4 | 1-4/2-5/3-6 ... etc)
- Staff Explode From Layers (multiple layers on one staff to single layers on consecutive staves)
- Staff Explode To Layers (chords on each staff split into layers on the same staff)
Staff Explode To Layers works on one or more staves at once.
All other options require a single staff selection.
As a special case, if a staff contains only single-note entries,
Explode To Layers duplicates them in unison on layer 2 to
create standard two-voice unison notation.
Your choice at Finale → Settings... → Edit → [Automatic Music Spacing]
determines whether or not the notes are respaced after each explosion. |
staff_explode.lua v1.70 (2024/01/26) |
Hairpin CreatorThis script creates hairpins spanning the currently selected music region. It produces five menu items:
- Hairpin Create Crescendo
- Hairpin Create Diminuendo
- Hairpin Create Swell (messa di voce)
- Hairpin Create Unswell (inverse messa di voce)
- Hairpin Creator Configuration
Hairpins are shifted vertically to avoid colliding with the lowest notes,
down-stem tails, articulations and dynamics on each staff in the selection.
Dynamics are shifted to match the hairpin vertical.
Dynamics in the middle of a hairpin will also be levelled, so
give them an opaque background to sit "above" the hairpin.
The script also considers trailing notes and dynamics, just beyond
the end of the selected music, since a hairpin is normally expected
to end just before the note with the destination dynamic.
For more information use the ? button in the dialog window. |
hairpin_creator.lua v0.84 (2024/02/05) |
Keyboard FocusThese scripts are designed for quick keyboard control using simple dialog windows for numeric entry. Note that the dialogs open with keyboard focus on the first entry field and it is much quicker to move between fields using the 'Tab' key than by moving
and clicking the mouse.
Most of these scripts, if they use confirmation dialogs, provide explanatory notes
through an Information button marked: ? |
|
1. Barline ChooserChange all barlines in the selection to one of seven styles by keystroke.
To repeat the same barline change as last time without a confirmation dialog,
select the "Barline Chooser Repeat" menu or hold down the SHIFT key when
starting the script. |
barline_chooser.lua v0.12 (2023/10/13) |
2. CrossStaff OffsetWhen crossing notes to adjacent staves the stems of crossed notes can be reversed
(on the wrong side of the notehead) and look too far
to the right (if shifting downwards) by the width of a notehead, around 24 EVPUs.
This script shifts cross-staffed notes horizontally,
with a different offset for non-crossed notes, acting on one or all layers.
It is also a quick way to reset the horizontal position of all notes to zero.
To repeat your last settings without a confirmation dialog
hold down [Shift] when starting the script.
Use the ? button in the dialog window for more information. |
cross_staff_offset.lua v1.66 (2024/08/10) |
3. Cue Notes OverlayThis script takes music from a nominated layer in the selected staff
and creates a Cue version on one or more other staves.
It is intended to create cue notes above or below existing
played material in the destination.
If the destination measure is empty a whole-measure rest
will be created as a reminder that the cue isn't played.
For more information use the ? button in the dialog window. |
cue_notes_overlay.lua v0.32 (2024/07/12) |
4. Deletion Chooser...This script presents an alphabetical list of 24 individual types
of data to delete, each line beginning with a configurable hotkey.
Call the script, type the hotkey and hit [Enter] or [Return].
Half of the datatypes can be filtered by layer.
Delete independently:
Articulations* | Articulations on Rests* | Cross Staff Entries*
Custom Lines | Dynamics* | Expressions (Not Dynamics)*
Expressions (All)* | Expressions (Measure-Attached) | Glissandos
Hairpins | Lyrics* | MIDI Continuous Data | MIDI Note Data*
Note Position Offsets* | Notehead Modifications* | Secondary Beam Breaks*
Slurs | Smart Shapes (Note Attached) | Smart Shapes (Measure Attached)
Smart Shapes (Beat Attached) | Smart Shapes (All) | Staff Styles
Tuplets* | User Selected...
(* = filter by layer)
For more information use the ? button in the dialog window. |
deletion_chooser.lua v0.99c (2024/05/14) |
5. Double DiatonicNotes and chords in the current music selection are doubled
(duplicated) either up or down by the chosen diatonic interval.
Affect all layers or just one.
To repeat the last action without a confirmation dialog use
the Repeat menu or hold down [Shift] when starting the script.
(NOTE that this functionality is also incorporated in
Transpose Diatonic below). |
pitch_entry_diatonic_double.lua v0.15 (2024/03/01) |
6. Dynamic LevelsMake dynamic marks in the selection louder or softer by stages.
This functionality is buried within the JW Change plugin
but is useful enough to make it accessible more easily.
This script works similarly but allows jumping up to 9 levels at once.
Dynamics range from pppppp to ffffff, though scores using
older (non-SMuFL) fonts are restricted to the range pppp-ffff. |
dynamic_levels.lua v0.12 (2024/07/20) |
7. Expression PlaybackChange the assigned playback layer and position for all expressions
in the current selection.
Layers 1-4 are the standard playback layers.
Layer numbers 0, 5 and 6 are interpreted respectively
as Current, Chord and Expression Layers for playback.
Hold down [Shift] when starting the script to repeat the same action
as last time without a confirmation dialog. |
expression_playback.lua v0.08 (2024/07/28) |
8. Gracenote SlashThis script duplicates Jari Williamsson's original 2017
JWGraceNoteSlash plug-in so it can be
incorporated into modern operating systems through RGPLua.
A Configuration menu item is provided to change the script's parameters.
They can also be changed by holding [Shift] when opening the script. |
gracenote_slash.lua v0.84 (2024/02/08) |
9. Hotkey Script PalettesThis script helps navigate the many scripts crowding your RGP Lua menu.
It provides access to Lua scripts and Finale menu items through a set of
easily configurable palettes (dialog windows) organised by type of activity
and triggered by simple hotkey keystrokes.
The "Hotkey Palettes" principle is demonstrated expertly by
Nick Mazuck on YouTube.
Scripts are grouped into primary categories like Intervals, Layers,
Notes & Chords, Measure Items and so on as
a set of palettes triggered by keystroke.
Primary palettes call up a second layer of palettes containg scripts in related areas,
also triggered by keystroke.
Reach hundreds of scripts in your collection using
just two keystrokes with the actual hotkeys presented as a visual reminder.
Actions you repeat often will link to muscle memory and become easier to recall.
See more information using the ? button in the dialog window. |
hotkey_script_palettes.lua v0.66 (2024/02/23) |
10. Layer ActionsPerform specific actions on individual note layers in the current selection.
Each action in the list begins with a configurable hotkey.
Open the script, type the hotkey and hit [Return] or [Enter].
To repeat the same action as last time without a confirmation dialog
hold down [Shift] when opening the script.
Actions:
- Erase Layer
- Playback Enable
- Playback Mute
- Visible
- Invisible
- Stems Up
- Stems Down
- Stems Default
|
layer_actions.lua v0.12 (2024/04/22) |
11. Layers Swap SelectiveSwap notes in the selected region between two nominated layers.
To repeat the same action as last time without a confirmation dialog
hold down [Shift] when opening the script. |
layers_swap_selective.lua 0.71 (2024/02/27) |
12. Measure SpanSelect any number of measures and this script changes their span by
manipulating the time signatures, either dividing each one into two or combining
pairs of measures together.
- Measure Span Join
- Measure Span Divide
- Measure Span Options...
To configure script settings either select the Measure Span Options... menu item,
or hold down the shift key when invoking Join or Divide.
Full documentation is provided through the ? button in the Options dialog window. |
measure_span.lua v0.95b (2024/07/29) |
13. Meter Set NumericThis script provides rapid creation of simple or complex
time signatures with a few keystrokes.
It supports composite numerators like [3+2+3/16] and joins easily
with extra composites (e.g. [3+2+3/16]+[1/4]+[5+4/8]).
Display Only time signatures can be equally complex and set without mouse action.
At startup the time signature of the first selected measure is shown.
To revert to a simple 4/4 with no other options click the
Clear All button or type x.
To read these script notes click the ? button or type q.
To respace notes on completion click the Respace button or type r.
All measures in the current selection will be assigned the new time signature.
Use this feature to quickly copy the initial meter across the selection.
If just one measure is selected only it will be changed.
See more information using the ? button in the dialog window. |
meter_set_numeric.lua v0.84 (2024/04/16) |
14. MIDI Note ValuesChange the playback MIDI Velocity and Duration (Start/Stop times) of every note in the current music selection on one or all layers. Choose the MIDI Note Values
menu item to change both at once or set them independently with the
MIDI Note Duration or MIDI Note Velocity menu items.
Holding down [Shift] when opening the script will repeat your
last choices without a confirmation dialog. |
midi_note_values.lua v0.22 (2024/02/03) |
15. Music Spacing OptionsQuickly change music spacing options (with optional hotkeys).
These options are otherwise only available using the messy combined
menu/dialog/menu process of
Document → Document Options → Music Spacing → Avoid Collision of...
It also offers easy access to the Automatic Music Spacing option
which is otherwise only available at Finale → Settings
→ Edit → Automatic Music Spacing. |
music_spacing_options.lua v0.14 (2024/07/21) |
16. Note Ends Quarters/EighthsThis script aligns the ends of notes followed by a rest to
a specific duration boundary,
making too-short notes longer and greatly improving readability where lots of short notes are followed by rests. It creates two menu items, Note Ends Quarters and Note Ends Eighths.
(Also see Rhythm Reducer below). |
note_ends.lua v0.56 (2022/08/04) |
17. Noteheads ChangeChange notehead shapes on a specific layer of the current
selection to one of these options:
Circled | Default | Diamond | Guitar Diamond |
Hidden | Number | Round | Slash | Square |
Strikethrough | Triangle | Wedge | X |
This script produces an ordered list of notehead types,
each line beginning with a configurable hotkey.
Call the script, type the hotkey and hit [Enter] or [Return].
For more information click the ? button in the dialog window. |
noteheads_change.lua v0.39 (2024/06/09) |
18. Notes Cross-StaffSelected notes are crossed to the next staff above or below the selection.
This mimics Finale's inbuilt TG Tools Cross-Staff plugin, which in my
experience malfunctions periodically.
This script doesn't, but also offers options for layer filtering,
stem reversal, horizontal note shift (to counteract stem reversal),
note pattern matching and beam height adjustment.
Hold [Shift] when starting the script to quickly cross staves
without a confirmation dialog, with the settings last used.
Select Modeless Dialog if you want the dialog window to persist
on-screen for repeated use until you click Cancel [Escape].
For more information use the ? button in the configuration window. |
notes_cross_staff.lua v0.95l (2024/08/10) |
19. Notes Tie/UntieThe primary menu item, Tie Notes, works ties adjacent entries
if the matching pitches are available.
A second menu item, Untie Notes is provided to untie them. |
notes_tie.lua v0.76 (2022/08/01) |
20. Ostinato MakerCopy the current selection and paste it consecutively
to the right a nominated number of times.
The replicas can span barlines ignoring time signatures.
The same effect can be achieved with Edit → Paste Multiple,
but this script is simpler to use and works intuitively
on the current music selection in a single step.
To repeat the last action without a confirmation
dialog hold down [Shift] when starting the script.
Independently include or remove articulations,
expressions, smartshapes, lyrics or chords from the repeats.
Your choice at Finale → Settings... →
Edit → Automatic Music Spacing
determines whether or not the music is respaced on completion. |
ostinato_maker.lua v0.31 (2024/05/27) |
21. Pitch: Chord Notes Keep-DeleteSelect a note within each chord to either keep or delete,
numbered from either the top or bottom of each chord.
[1] deletes (or keeps) the top (or bottom) note
[2] deletes (or keeps) the 2nd note from the top (or bottom)
... (etc.) |
pitch_entry_keep_delete.lua v1.36 (2024/04/17) |
22. Pitch ChangerThis script revives Jari Williamsson's JW Change Pitches
2017 plug-in to work on Macs with non-Intel processors.
Identify from and to pitches by note name (a-g or A-G)
followed by accidental
(b/bb/bbb/#/##/###) as required.
Matching pitches will be changed in every octave.
For transposing instruments on transposing scores select
Written Pitch to affect the pitch you see on screen.
To repeat the last change without a confirmation dialog use
the Pitch Changer Repeat menu or hold down [Shift] when opening the script. |
pitch_changer.lua v0.39 (2024/07/05) |
23. Pitch Singles ChangerChange up to four specific pitches to other specific pitches.
Pitch specification is exact and immutable:
- First character: note name A-G
(Lower case will be replaced by upper case)
- Last character: octave number 0-9
- In between: accidentals if needed.
b / bb / bbb / # / ## / ###
(you can use s instead of #). |
pitch_singles_changer.lua v0.19 (2024/07/01) |
24. Rest OffsetsThis script alters the vertical position of rests.
It duplicates Finale's inbuilt Move Rests... plug-in but with less mouse activity.
It is also a quick way to reset rest positions in every layer, the default setting.
New rests are floating and will avoid entries in other layers (if present)
using the setting for Adjust Floating Rests by... at
Finale → Document → Document Options → Layers.
This script can stop them floating, instead fixing them
to a specific offset from the default position.
On transposing staves these fixed rests will behave like notes
and change position if Display in Concert Pitch is selected.
Note that Rest Slider
(immediately below) offers this facility with extra functionality. |
rest_offsets.lua v1.58 (2023/11/22) |
25. Rest SliderSlide rests up and down on the nominated layer with continuous visual feedback.
This was designed especially to help align rests midway
between staves with cross-staff notes.
The Mid-Staff Above and Mid-Staff Below buttons achieve this with one click.
Cancel the script to leave rests unchanged. |
rest_slider.lua v0.45 (2024/08/06) |
26. Rhythm ReducerThis script adjusts the rhythm of the selection to conform
to conventional notation rules and Finale's inbuilt quantization rules.
This may not always be exactly what you want but is
a great expedient for eliminating multiple (unwanted) rests
and as a quick check on the suitability of your rhyhthmic choices. |
rhythm_reducer.lua v0.12 (2024/03/10) |
27. Secondary Beam BreaksA stream of many short beamed notes (say 32nd notes) are easier to read
if the secondary beam is broken in the middle of each beat.
This script breaks secondary beams in simple meters (2/4, 3/4, 4/4 etc)
in the middle of each beat.
If the meter is compound (6/8, 9/8 etc) then the main beat is divided into three.
Two menus are created: Break Secondary Beams and
Clear Secondary Beam Breaks. |
secondary_beam_breaks.lua v1.22 (2022/11/02) |
28. Selection RefinerThe selected score area can be refined in Finale by measure and
either beat or EDU at Edit → Select Region....
This script offers a more organic option for precise positioning with
slider controls to change the beat and EDU position in each measure,
updating the score highlighting as the selection changes.
For more information use the ? button in the dialog window. |
selection_refiner.lua v0.58 (2024/04/17) |
29. Slur ChangerChange the characteristics of every slur in the current selection.
Type the programmable hotkey and click Apply [Return/Enter].
If slurs are Note-Attached you can isolate them by Layer Number.
Use this script to change a whole set of slurs at once instead of
individually by right-clicking with the SmartShape tool. |
slur_changer.lua v0.09 (2024/07/26) |
30. Slur SelectionA good trick in Sibelius is hitting the S key to create a slur
across currently selected notes. Activate this script in Finale with
a macro hotkey utility to do the same thing.
Each layer will be slurred independently, and if there are
several runs of notes separated by rests, each run will be slurred separately.
If you want to automate slurs on specific rhythmic patterns then try
JW Pattern (→ Performance Notation → Slurs)
or TGTools (→ Music → Create Slurs...). |
slur_selection.lua v0.58 (2024/01/29) |
31. String HarmonicsThis script converts the upper note of allowable string harmonic
dyads (two-note chords) into diamond noteheads.
The first twelve harmonics of the lower root pitch are recognised.
Three other scripts currently in the
FinaleLua.com repository
(String harmonics X sounding pitch) take single-pitch
sounding notes and create an equivalent played string harmonic by adding a
diamond-headed harmonic note, and transposing the resulting dyad
downwards by the interval of the harmonic. |
string_harmonics.lua v0.63 (2024/07/21) |
32. Tempo From BeginningThe default setting for new Tempo expressions is that their playback effect starts at their alignment point in the measure. In some circumstances (it's hard to say precisely which) this creates erratic elapsed time results. (Metatool 3 with the Selection Tool). To avoid this, select the Tempo expression, control-click to Edit Expression Assignment then set playback to start from Beginning of Measure. Which is six exacting mouse clicks. Or else just run this script over the measures concerned. |
tempo_from_beginning.lua v0.53 (2022/05/23) |
33. Transpose DiatonicNotes and chords in the current music selection are transposed up or down by the chosen diatonic interval. Affect all layers or just one. To repeat the last action without a confirmation dialog hold down [Shift] when starting the script.
Select Modeless if you prefer the dialog window to float above your score and you can change the score selection while the script remains active. In this mode click Apply [Return] to transpose and Cancel [Escape] to close the window. Cancelling Modeless will apply the next time you use the script.
These key commands are available
if a numeric field is highlighted:
- 1-8: interval (unison, 2nd, 3rd, .. 8ve)
- 0-8: extra octave
- 0-4: layer number (0 = all layers)
(delete key not needed in numeric fields)
- q: show this script information
- z: toggle Up/Down
- x: toggle Preserve Existing Notes
- c: toggle Modeless
(Note that this script includes the functionality of
Double Diatonic listed above). |
transpose_diatonic.lua v0.18 (2024/07/29) |
34. Tuplet ChooserThis script changes tuplets in the current selection in
24 ways on all or nominated layers.
It provides an ordered list of options,
each line starting with a configurable hotkey.
Start the script, type the hotkey and hit [Return].
To repeat the same tuplet change as last time without a
confirmation dialog, select the Tuplet Chooser Repeat menu
or hold down [Shift] when starting the script. |
tuplet_chooser.lua v0.74 (2024/04/17) |
UtilitiesSome simple utility scripts:
I found an old script by Jari Williamsson that expands the selected staff systems in page view to fill the whole page. Although there are many ways to respace, expand and shrink staff systems, I really like the simplicity of this
(only slightly modified) venerable script:
|
v1.0 (2021-24) |