About Lua scripts

Real speed.
Unlimited power.

Use Finale faster than the blink of an eye. Simplify workflows to just one click. All for free, forever.

Create advanced notation in a second

String harmonics, jeté, and microtonal transpositions are notoriously difficult in Finale. Now, create this advanced notation in just a second. Literally.

Fix those annoying Finale bugs

No more colliding hairpins and dynamics. No more manually adjusting measure numbers. No more tempo marks that are wider than the multimeasure rest. Fix each of these in just one click.

Before RGP Lua

After RGP Lua

…and do so much more

Lua hooks directly into Finale. That means you can do almost anything with Lua—fix playback, generate parts, or even see how many notes you wrote. Anything is possible! And as more people write Lua scripts, we all benefit.

Before RGP Lua

After RGP Lua

By Finale users, for Finale users

These Lua scripts are created by the Finale community. And they are free and open source, meaning you can view the source code, modify them, and add your own.


What is Lua?

Lua is a programming language used to write scripts for Finale.

The popularity of Lua has exploded over the last few years. Popular Finale tools like the JetStream Finale Controller and the Perfect Layout plugin are created with Lua.

And because Lua hooks directly into Finale, pretty much anything is possible. If you can do something in Finale, Lua can probably do it as well.

What is RGP Lua and JW Lua?

JW Lua is a plugin created by Jari Williams that allows other Finale users to create scripts for Finale using Lua. RGP Lua is the successor to JW Lua, and it is created by Robert Patterson.

Finale users create scripts in Lua, then RGP Lua and JW Lua will run these scripts.

Should I use RGP Lua or JW Lua?

Choose RGP Lua unless you have a specific reason to use JW Lua. Use JW Lua if you are using Finale 2014.5 or earlier, or a developer wanting to create a quick ad hoc script. Otherwise, choose RGP Lua.

What is a RGP/JW Lua script?

JW Lua and RGP Lua are plugins for Finale. These plugins can run code created by Finale users called Lua scripts.

Why should I use Lua?

Lua is fast. Insanely fast. Most scripts run in less than 0.01 seconds. That's 10x faster than the blink of an eye, and about 100x faster than FinaleScript.

If there's something that normally takes you several minutes to do, Lua can do it in just a single click.

Do I need to know how to code?

Absolutely not! You don't need to write any code to use a Lua script.

Though if you want to create your own Lua script, you will need to learn how to code. Luckily, there's a YouTube playlist on learning to code in Lua .

What version of Finale will I need?

Lua scripts work best on Finale v25 or later. However, many scripts will also work on earlier versions of Finale. Most scripts are only checked with the most recent version of Finale (this is community-run, after all), though there's no reason to believe they won't work on earlier versions.

Who wrote these scripts?

Many people in the Finale community contribute to these scripts. Prominent contributors include:

  • Robert Patterson, the creator of the Patterson plugins
  • Nick Mazuk, the creator of Finale Superuser
  • CJ Garcia, prominent member of the JetStream Finale Controler team
  • Jacob Winkler, prominent member of the JetStream Finale Controler team

Because these scripts are open source, can find a complete list of contributors in the GitHub repository.

But rest assured, all scripts and edits are peer-reviewed before they are published to this site. That helps to keep them high-quality.

How can I get help?

There are a few ways:

  • Check out the help docs. The most common questions are answered in there.
  • Check out the Facebook group. This is a group for Lua in general (and not just these scripts), but you should be able to get help there
  • Report bugs to the GitHub repository. That is where all the developers keep track of all the code, so that's the best place to report bugs.

Get started

Start speeding up your Finale workflow with Lua