How can I set the Frame Attributes in Finale?

Hello.

I'm a musician trying to construct 5 headers for a piece of sheet music. I could do it manually, but I have to put the same headers on over 100 music sheets. So I'd like to create a macro to do it for me.

I constructed many Macros for this same program many years ago, but I'm stumped on how to do this.
I've already spent many hours experimenting ... I can get it started but can't get it beyond 2 or three steps.

I'm willing to pay for someone's time. We can do this over the phone and it shouldn't take too long because once we get a header working for one of the elements, I can just repeat it (changing a few thing) for the other 4.

If you can help. please call me at ***

Thanks!

Don

If you're willing to post what you've done so far, or at least provide full details on the task you're trying to accomplish (which apps are involved, what exactly needs to happen in those apps), then I think we'd be able to help you out and you wouldn't have to pay anyone.

-rob.

2 Likes

That's how we all learned. :grin:

Hi Rob,

Thank you for the quick reply and the suggestion.
I work on a Mac, so if you're not familiar with the labels, write what you know and I'll figure it out.


The music program is called "Finale."

I've already set up the trigger to start the macro. What should happen then is this:

  1. Click anywhere on the page.

  2. From the Tools menu select Text

  3. Type Othello Symphony (or whatever) into that text box

  4. Press command-A to highlight the text in the newly created Text Box.

  5. Go to the Text menu, scroll down to Size and in the sub-menu that appears click on Other

  6. In the box that appears in Other type 20 (or whatever size)

  7. Click anywhere outside the Text Box and a little box appears at the upper left of the Text Box.

  8. Click in that box holding down the Control key

  9. Slide the cursor down to Edit Frame Attributes

  10. Next to Horizontal there's a scroll, select Left

  11. Next to Left there's a box, input 0

  12. Under that option is Vertical, scroll to Top Header and type -21

  13. Click on OK (which is highlighted)

  14. Double click anywhere on the page, and repeat #2-#12 4 more times, changing some of the variables in some of the options.

That's it.

Is this clear?

If you can guide me to create this Macro you will save me countless hours. I really appreciate the help.

Don

I don't have Finale, and for what you want to do, you really have to have it to write something usable. The good news is that they offer a demo version, so I installed that, and came up with a functional macro.

This macro doesn't do any repeating; you'd just call it as many times as you need to. (You could, if you want, wrap the whole thing in a repeat block, and add the double-click action to it between the repeats.) You'll need to edit the first action, which activates the demo, to activate the real app.

I wrote it so that you input the values you want—title, font size, left frame, and top frame—first, then those are populated into Finale. Here's how it looks in action:

GIF of Finale macro

https://robservatory.com/movies/_onetime/finale3.gif

Note: Some of the Finale boxes popped up outside the recording area, so you don't actually see everything that's happening. And I used a smaller top location as -21 was off my page :).

This probably isn't a full solution, but hopefully it's enough to get you going. Here's the macro:

Download Macro(s): Finale macro.kmmacros (14 KB)

Macro screenshot

Macro notes
  • Macros are always disabled when imported into the Keyboard Maestro Editor.
    • The user must ensure the macro is enabled.
    • The user must also ensure the macro's parent macro-group is enabled.
System information
  • macOS 14.4.1
  • Keyboard Maestro v11.0.2

IMPORTANT NOTE: For this to work, you must have keyboard navigation enabled in System Settings:

Let me know if you have any questions.

-rob.

1 Like

OMG, thank you so much!

I'm deeply appreciative.

I'll test it later tonight and let you know the results

Don

Hey Rob, I just saw this email reply.

No problem to repeat it as many times as I need, no need for the code to be 3x longer.

It worked perfectly for the first Header. The 2nd header is the mirror image of the first (shows up on the right side.

The 3rd and 4th Headers are both in the center.

I hope this is easy for you to figure out. I hate that I've taken so much of your time. But I'm learning more about KM, so that's very helpful.

I guess the easiest solution would be either to make "left" a variable (the box appears in the top right corner of the new Text Box, and for the two in the center, the box appears on the top of the Text Box, in the center.

The easiest solution might be to make three different Header Macros (one for left, one for right and one for the center, instead of you writing more code. I can make three different triggers.

What do you think?

[By the way, I only have OS 10.13.6. That's the highest my three computers can take. They're all from 10 or more years ago and they do everything I need them to do for my work. I would LOVE to have 3 new computers with the newest operating system, but I don't have $10,000 to buy them.]

Humbly,
Don

I will admit, knowing nothing about Finale, that I don't fully understand what you're doing. However, I don't think designing the macro to solve a very specific set of layouts is the right way to do this. Instead, I think it makes more sense to just enable the macro to do whatever you need it to do.

The version attached below changes things a bit from the first one. First, and actually most importantly, I found a more-reliable way to activate the frame setup window—it's got a keyboard shortcut that works when the frame is active.

Second, the input prompt at the start now looks like this:

Each time it runs, you control the settings for the Horizontal and Vertical framing options. If you need center, select center, bottom, select bottom, etc. This should, in theory, let you do whatever you need to do every time you run the macro.

You'll see three green boxes in the macro; the first sets a timer value that's used in the other two green boxes. This is required because macOS is slow to switch the text in pop-up menus when you switch via the keyboard. The value in the green box worked for me, but if you find that the macro isn't changing those values properly based on your input, try increasing this number.

(It may also be too long on your Mac; I'm working in a virtual machine, so if you see the selection change from Left to Center, for instance, and then do nothing for about a second, you can lower the value.)

Here's rev 2:

Download Macro(s): Finale macro rev 2.kmmacros (21 KB)

Macro screenshot

Macro notes
  • Macros are always disabled when imported into the Keyboard Maestro Editor.
    • The user must ensure the macro is enabled.
    • The user must also ensure the macro's parent macro-group is enabled.
System information
  • macOS 14.4.1
  • Keyboard Maestro v11.0.2

Does that solve the issue, or is it something else?

-rob.

I'm on to something else right now. I'll play with it tomorrow.
Thank you so much. If it doesn't do everything I'll do it manually.

Actually this macro will be very helpful in the future for other projects.
Each musical project needs headers!

I'm so appreciatve

Don

The way it works now, it's basically a remote entry macro for the frame layout stuff. You could instead duplicate it a number of times, and hard code the settings you want to use (so replace the Prompt for User Input bit with just a bunch of Set Variable commands to set those same variables). Then you could have one pre-made for each location you typically use.

-rob.

Hi.

I'm astounded at the expertise and generosity you guys showed me.
I'm beyond grateful.

However, I have to admit that I don't understand some of the more "technical" language in the macro. (Like what is a "frame layout"? But that's a good thing because now I will take it apart to study the pieces and maybe I won't have to ask for help the next time I get the bright idea to automate something!

My deepest thanks. i'm not used to people being nice to me. I live in New York.

LOL

Don

1 Like

I wonder whether FinaleScript wouldn't be the natural instrument here ?

That's a suggestion that might be an option if I want to do anything else in the future. Problem is, I am a successful music copyist who has been using Finale since around 1992. I learned Finale because I got a job requiring the music digitally, rather than with a pen and ink

So I learned it task by task. And now, 30 years later, I do beautiful work and have worked on some high-profile projects, but I never needed to lean Finale Script! Maybe one day, when I don't have work I'll have time to explore it.

Thank you for that idea.

Don

2 Likes

That's that thing that appears in Finale when you control-click on the small square near the text box—the one that lets you set the Horizontal and Vertical positions...this one:

I just typed something in when I was writing the macro, as I assumed it would be obvious what it related to in Finale—sorry for making that assumption.

-rob.

Wow, that's really cool—looks like a very understandable language even for non-programmers. However, in glancing through their list of terms, I didn't see a single one that addressed the Frame Attributes panel. I assume it must be possible somehow, but it doesn't seem to be listed on the reference page.

-rob.

1 Like