Creating a Sparkling Christmas Tree in Finale From Scratch

It’s the holiday season, so what better way is there to celebrate than by creating a sparkling Christmas tree directly in Finale. And yes, this tree sparkles and the lights twinkle as well. Even if you aren’t planning on recreating the tree, learning the process will give you lots of insights into Finale.

So let’s see how to do it.

Overview

Here’s an overview of the general process.

  1. Create the tree-shaped layout
  2. Add lights to the tree
  3. Coloring the tree
  4. Resizing the lights
  5. Adding the “Merry Christmas” text
  6. Animating the lights.

Also, here’s a video you can watch to visually see what’s happening. All the specific details are below. And if you want to get and use the original source files, check out the post on Scoring Notes.

Creating the Tree-Shaped Layout

You’re going to want to delete all the text on the page and reset the page margins. This will let us work with a clean slate. We also need to make the staff sizes smaller and remove the spacing between staves. Here’s how we’re going to do that.

Go to Document > Page Format > Score. That should allow you to remove system margins, reset the page margins, and change the staff size. Use these settings.

Next, we need to create a bunch of measures and move them all onto one page. Create 729 measures total. Then, group 27 measures onto each system. The fast way to lock the measures into each system is to highlight the entire score, then go to Utilities > Fit Measures… and use these settings.

To get rid of the default whole rests, go to the staff tool, double click on any measure, and deselect “Display Rests in Empty Measures.”

The last step to creating the tree shape is to hide measures not apart of the tree. We’re going to use the “Force Hideaway Staff (Cutaway)” staff style (keyboard shortcut “H”).

So using the Staff tool, select the measures you need to hide and hit “H”. Then, you should have something that resembles the outline of a tree.

Add Lights to the Tree

So for the lights, we are going to use noteheads. This is going to be a 3-step process.

  1. Turn off automatic spacing
  2. Add notes
  3. Create a custom staff style to eliminate all extra features

Note: we will update a few Finale preferences. These are global, so keep track of all those changes so you can revert back to your preferred setup.

First, let’s turn off automatic spacing. If we were to insert notes without this step, our tree shape will become distorted.

Go to your preferences (Finale > Preferences), then find the “Edit” tab. Make sure “Automatic Music Spacing” is deselected. Then hit “OK”.

Second, we are going to add notes to several systems. I used eighth notes, though any note value with a filled-in notehead works. Make sure you alternate between all four layers for each note. This will allow us to use different colors for the lights. You can even make the notes descend over the system to give the illusion that they are spiraling up the tree.

Because we turned off automatic spacing, it will appear very squished. But that’s perfectly fine.

Third, we are going to create a custom staff style to remove rests, flags, stems, and other unneeded musical elements.

With the staff tool, go to Staff > Define Staff Styles. Under “Items to Display”, deselect everything except for “Staff Lines.”

Lastly, select the entire score and apply your new staff style. Each system should roughly look like this now:

Coloring the Tree

Coloring music in Finale is not as easy as it might seem. True, we can change the colors for layers, but there isn’t a setting to change the color of the staff lines. However, we can get around that by creating ossia measures instead because you can change their color.

Creating the Ossia Measures

Let’s do it. Click on the ossia tool and double click the first measure at the top of the tree. Then, use these settings. Make sure the ossia is attached to the measure and only includes the staff and time signature. Why the time signature? Without it, the measures will be too short.

Hit “OK.” On the next popup, clear out the distances to 0. Hit “OK.”

Unfortunately, Finale won’t let you create ossias for multiple measures. So you’ll have to manually create an ossia staff for every single measure. This can be quite cumbersome. Luckily, if you’re on a Mac, you can speed up the process dramatically with Keyboard Maestro.

Create this script in Keyboard Maestro, or you can download it.

This macro will create the ossia for you. To use it, hover the left-most measure in a system. Then hit the hotkey trigger. Then it will create the ossia and move your mouse to the next measure on the right. That way, you can repeatedly hit the hotkey to quickly create ossias for the entire system without touching your mouse.

Note: you may have to adjust some of the mouse positions in the scripts depending on your specific setup.

Once you’ve created an ossia measure for every single measure, we can start coloring the tree.

Coloring the Tree

To color the tree, we are going to use the Finale display color preferences. Keep track of your existing preferences so you can revert back to your preferred color scheme.

Go to Finale > Preferences > Display Colors. You should see a window like this.

Change these settings to their appropriate colors:

  • Layer 1: #009800, rgb(0, 152, 0)
  • Layer 2: #E53B28, rgb(229, 59, 41)
  • Layer 3: #F8E42C, rgb(248, 228, 44)
  • Layer 4: #60D9FD, rgb(96, 217, 253)
  • Ossia Measures: #009800, rgb(0, 152, 0)
  • Page Text Blocks: #E93929, rgb(233, 57, 41)

Ta-da! It’s starting to look like a tree now!

Filling in the Tree Color

The final step to filling in the tree color is increasing the staff line thickness so there aren’t any gaps in greenery.

Go to Document > Document Options > Lines & Curves. Then, set the staff line thickness to 7 spaces. Hit “OK” and see how your tree looks colorful.

Sizing the Lights

To me, the lights at this step look a bit small. To fix that, all we have to do is increase the notehead font size.

Go to Document > Document Options… > Fonts. Then, next to Notation, select “Noteheads” in the dropdown.

Click “Set Font…” next to the Noteheads dropdown and change the size to 36, or whatever size you prefer. Then click “OK.”

Adding “Merry Christmas”

The last step before animating the lights is adding the text “Merry Christmas.”

Use the text tool and double click in the middle of the page. Type “Merry Christmas” or whatever message you prefer. You’ll notice that it’s already red. That’s because when we worked on the colors, we already changed the page text blocks color.

Then, give the text an appropriate font and size. I used 72pt type with the Lobster 2 Italic font. Finally, position it on the page where you see fit.

Animating the Lights

To animate the lights, we are going to use some clever JW Lua and Keyboard Maestro scripts.

Before we do, let’s walk through the process conceptually. You may remember that each layer of notes has a different color. So we want the noteheads to change color, we can either change the colors of the layers or change the layers of the notes. In JW Lua, it’s fairly easy to swap notes between layers. So we are going to use that option.

Next, to give the appearance that some lights occasionally turn off, the layer 1 color is the same as the tree color. So we aren’t going to hide any notes. Instead, they are going to blend in automatically.

Finally, the JW Lua script only runs once. So we are going to use a simple Keyboard Maestro macro to run the Lua script multiple times. Let’s get started!

Switching Notehead Layers with JW Lua

Here’s the script. You can either copy-paste it yourself, or download the finished script. You will need to save the script into the menu bar. If you don’t know how to do that, check out this previous OF NOTE post.

function plugindef()
    finaleplugin.Author = "Nick Mazuk"
    finaleplugin.Copyright = "CC0 https://creativecommons.org/publicdomain/zero/1.0/"
    finaleplugin.Version = "1.0"
    finaleplugin.Date = "December 25, 2019"
    finaleplugin.NoStore = false
    finaleplugin.AuthorURL = "https://nickmazuk.com"
    return "Christmas Fun", "Christmas Fun", "Christmas Fun"
end

function swap_layers()
    local region = finenv.Region()
    region:SetFullDocument()
    local start = region.StartMeasure
    local stop = region.EndMeasure
    local sysstaves = finale.FCSystemStaves()
    sysstaves:LoadAllForRegion(region)

    for sysstave in each(sysstaves) do
        staffNum = sysstave.staff

        local noteentrylayer1 = finale.FCNoteEntryLayer(0, staffNum, start, stop)
        noteentrylayer1:Load()
        noteentrylayer1.LayerIndex = 1

        local noteentrylayer2 = finale.FCNoteEntryLayer(1, staffNum, start, stop)
        noteentrylayer2:Load()
        noteentrylayer2.LayerIndex = 2

        local noteentrylayer3 = finale.FCNoteEntryLayer(2, staffNum, start, stop)
        noteentrylayer3:Load()
        noteentrylayer3.LayerIndex = 3

        local noteentrylayer4 = finale.FCNoteEntryLayer(3, staffNum, start, stop)
        noteentrylayer4:Load()
        noteentrylayer4.LayerIndex = 0

        noteentrylayer1:Save()
        noteentrylayer2:Save()
        noteentrylayer3:Save()
        noteentrylayer4:Save()
    end
end

swap_layers()

Animating the Tree with Keyboard Maestro

Next, just create a simple Keyboard Maestro macro to run the JW Lua script multiple times. Depending on where you saved the Lua script, you may have to change the menu item location in this macro.

Congratulations! You’re all done! Just go to your Finale document and hit the hotkey for the Keyboard Maestro macro, sit back, and enjoy your very own sparkling Christmas tree.

Happy holidays,

Nick Mazuk


Nick Mazuk is a composer and trombonist in Los Angeles. He mainly freelances by creating arrangements and original compositions for orchestra. In Finale, he specializes in automating tasks so he can achieve great results fast. Nick’s YouTube channel provides more tips and tricks for speeding up your Finale workflow.

2 Replies to “Creating a Sparkling Christmas Tree in Finale From Scratch”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.