HOME       ARCHIVE       MUSIC       ALBUMS       PUBLISHERS       BIOGRAPHY   
   
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 Explode
This 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 Creator
This 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 Focus
These 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 Chooser
Change 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 Offset
When 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 Overlay
This 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 Diatonic
Notes 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 Levels
Make 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 Playback
Change 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 Slash
This 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 Palettes
This 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 Actions
Perform 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 Selective
Swap 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 Span
Select 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 Numeric
This 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 Values
Change 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 Options
Quickly change music spacing options (with optional hotkeys). These options are otherwise only available using the messy combined menu/dialog/menu process of DocumentDocument OptionsMusic SpacingAvoid Collision of...

It also offers easy access to the Automatic Music Spacing option which is otherwise only available at FinaleSettingsEditAutomatic Music Spacing.

 
music_spacing_options.lua
v0.14 (2024/07/21)
16. Note Ends Quarters/Eighths
This 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 Change
Change 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-Staff
Selected 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/Untie
The 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 Maker
Copy 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 EditPaste 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 FinaleSettings...EditAutomatic 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-Delete
Select 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 Changer
This 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 Changer
Change 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 Offsets
This 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 Slider
Slide 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 Reducer
This 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 Breaks
A 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 Refiner
The selected score area can be refined in Finale by measure and either beat or EDU at EditSelect 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 Changer
Change 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 Selection
A 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 NotationSlurs) or TGTools (→ MusicCreate Slurs...).
 
slur_selection.lua
v0.58 (2024/01/29)
31. String Harmonics
This 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 Beginning
The 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 Diatonic
Notes 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 Chooser
This 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)
Utilities
Some 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)
Search for:    
search hints

HOME | ARCHIVE | MUSIC | ALBUMS | PUBLISHERS | BIOGRAPHY