Staff spacing in orchestral scores

General notation questions, including advanced notation, formatting, etc., go here.

Moderators: Peter Thomsen, miker

Post Reply
jbearch
Posts: 19
Joined: Mon Feb 13, 2012 1:43 pm
Finale Version: Finale 26
Operating System: Windows

Post by jbearch » Mon Sep 03, 2018 2:02 pm

Hi,

Finale 25, 64 bit Win 10

Is there any way to space staves (ie an easy way) so that the top of the top staff and the bottom of the bottom staff line up with the top and bottom margins of the page? And preferably the spacing of the staves evenly distributed on the page?

In my orchestra scores the top staff is always correctly placed right on the margin. but the bottom varies on every single page and that does not give a very professional look. I have tried all the staff spacing elements in the program but it is always trial and error and never very exact. And on top of that if you have a score of 100 pages the amount of extra work is just not possible when the work load is high. The spacing of the staves themselves is very haphazard no matter which method I use. Surely there must be an algorhythm for something like this.

In my opinion this has to do with finding elements and computing the distance between them so they don't collide and the white space between them calculated to an even amount. On system spacing this works very well. In instrument parts there are handles on every staff (separate system) and these are then placed in an even spacing on the page. Top and bottom aligned perfectly with the margins. Why can't this be done on full scores?

Maybe there is a 3rd party plugin I don't know about, or is there just something basic I don't know?

Thanks for any advice.
Jeffrey


User avatar
Peter Thomsen
Posts: 6589
Joined: Fri Jul 25, 2003 6:47 pm
Finale Version: Finale v27.4
Operating System: Mac

Post by Peter Thomsen » Mon Sep 03, 2018 2:14 pm

Jeffrey,

The better we understand, the better we can help you.

To understand we need a little more info from you:

1) Do all score systems include all staves (including empty staves with only rest measures) - or is the score optimized?

2) Are the score systems so tall that there is only room for one system per page?
Mac OS X 12.6.9 (Monterey), Finale user since 1996

jbearch
Posts: 19
Joined: Mon Feb 13, 2012 1:43 pm
Finale Version: Finale 26
Operating System: Windows

Post by jbearch » Mon Sep 03, 2018 3:58 pm

The score is optimised. Some empty staves are hidden. I didn't hide all the empty staves because I tried using that to get the bottom staff to line up with the margin. If they were not the score would be too tall for an A3 page at the size I use. There is usually only one system per page. In the few pages where I can put 2 systems, there is no problem of course, because "Space systems evenly" does the trick.

Staffsize 4.87
Resize system 10%
Resulting system 57%

Jeffrey

Nick Mazuk
Posts: 181
Joined: Tue Jul 03, 2018 12:29 am
Finale Version: Finale 26
Operating System: Mac

Post by Nick Mazuk » Mon Sep 03, 2018 4:47 pm

Hi Jeffrey,

A couple of years ago I was running into the same problem. So I wrote a JW Lua script to take care of it. You can find it here:

https://nickmazuk.com/Resources/JWLua#s ... pageheight

Here's what it does:
  • Resizes systems to take up full height of page
  • Checks if there is more than one system on the page. If so, it does nothing
  • Resizes each system uniquely depending on how large the stave is
  • End result is that each system is the exact same height
Hope this helps! And if you have any questions on how to use the script, feel free to ask.
Nick

User avatar
Harpsi
Posts: 107
Joined: Mon Dec 19, 2016 2:36 pm
Finale Version: 25
Operating System: Windows

Post by Harpsi » Tue Sep 04, 2018 6:32 am

Thank you Nick, very interesting!

Jeffrey, as a side remark on hiding staves: only do it if it makes two or more systems fit on the page. Otherwise there is no real benefit from hiding the staves.

If I understand you correctly, that you are hiding staves because you cannot fit all staves on the page at all? Then maybe you have to combine staves or change the staff size.
Finale 2014.5, Finale 25, Dorico 4, Musescore 4
Windows 11

jbearch
Posts: 19
Joined: Mon Feb 13, 2012 1:43 pm
Finale Version: Finale 26
Operating System: Windows

Post by jbearch » Wed Sep 05, 2018 1:38 pm

Thank you Nick, very much. This looks just like what I need. Except for one problem: I have never used a script in my life. I have no idea how to use it. The file has a lua ending and I used Editor to look into it. So I vaguely know what is in it. But what do I do?

The reason I hide staves is because conductors complain about the small staff size of large orchestral works. They want it bigger, so I increase it enough to be readable, and by hiding staves I can usually get the system on one page. But that always runs afoul of the bottom margin (too far or too short). A short macro or script, as they seem to be called, would do the trick. Now I just have to figure out how to use it.

Could you give some instructions to an old guy who (I hope) is not too old to learn new tricks?
Thanks.
Jeffrey

Nick Mazuk
Posts: 181
Joined: Tue Jul 03, 2018 12:29 am
Finale Version: Finale 26
Operating System: Mac

Post by Nick Mazuk » Wed Sep 05, 2018 4:46 pm

Hi Jeffery,

So you will need to download JW Lua to use this script. It is a third-party plugin. You can follow this link:

http://finaletips.nu/index.php/download ... it-windows

To install the plug-in:
  • Find out where your plug-ins folder is located by looking in the Edit/Preferences... (Program Options in earlier Finale versions) at the Folders page.
  • Unzip the the plug-in .fxt file to that folder (or to a subfolder if you want it in a submenu to the Plug-ins menu)
  • Restart Finale
Now you are able to run any JW Lua script for Finale. Here's how to get the script up and running:

Download my script: https://nickmazuk.com/Resources/JWLua#s ... pageheight

You can save it anywhere you want on your computer, but I like to save it in the plug-ins folder that you saved the JW Lua plug-in earlier.

Once you have saved this script, there are a few more steps to get it up and running. Once you finish these steps, you'll never have to do this process again.
  • Open the JW Lua plugin from the plugins menu
  • Click the "Manager" tab
  • Select "Menu" from the "Plug-in Groups"
  • Click "New" (the one next to "Items in Group")
  • Find wherever you saved the script
  • Select the script and hit "Open"
  • Close JW Lua
  • Restart Finale
After all that, the script will be in the plug-in menu for you to access any time. It will take some time to get setup initially. I can do it in about 3 minutes, but it will probably be longer for your first time. But once you do this, you'll have access to the script in any score.

If you need it, here's the official JW Lua plugin page: http://jwmusic.nu/jwplugins/wiki/doku.php?id=jw_lua

Hope this helps,

Nick
Nick

jbearch
Posts: 19
Joined: Mon Feb 13, 2012 1:43 pm
Finale Version: Finale 26
Operating System: Windows

Post by jbearch » Thu Sep 06, 2018 10:34 am

Hi Nick, I followed your instructions and everything was very clear. I think I did everything correctly. The plugin shows in the menu but when I invoke it, nothing happens. It thinks for a second or 2 and but then nothing changes. As a control I tried the jwnotespacing plugin that I had also downloaded and that worked fine. All the variations did their bit as they were supposed to. Others were also no problem.

I wonder: The staffheight plugin has an ending of .lua whereas all the others are .fxt. Is that right? Does that make a difference somehow? Also I have a 64bit system. Might also be a problem. I can't think of anything else, but I suppose I could have done something else wrong. I have saved all your plugins to a subfolder JWPlugins within the plugins folder. Like I said everything shows correctly in the menu.

I also wonder if I invoked the plugin correctly. Do I highlight the system handle, all the measures in the system, or all the staff handles? I tried all 3 but nothing worked as far as I could tell. Maybe I need to do something else.

Thanks for your help.
Jeffrey

Nick Mazuk
Posts: 181
Joined: Tue Jul 03, 2018 12:29 am
Finale Version: Finale 26
Operating System: Mac

Post by Nick Mazuk » Thu Sep 06, 2018 7:02 pm

Hi Jeffery,

To be honest, I'm not 100% sure why it isn't working. I'm currently running Finale 25.5 (64 bit) on a Mac. Maybe it's because of that? I checked the docs and that shouldn't be a problem, though I don't have a Windows computer to test it on. It shouldn't be that you have some staves hidden. I've used it correctly in that situation.

It should have the .lua extension while the rest have .fxt. Basically, I just wrote lua code that is run by the JW Lua plugin. Lua is a programming language.

And if you are seeing it in the menu, then you did do everything right.

Would you mind sending me either that document to see if it works on my computer? That could help me know if it is the document, my code, or the operating system. If not, I'll try to figure out some other way fixing it.

You shouldn't need to highlight anything.

If anyone else on the forum knows how to code in LW Lua, here's the code if you want to help debug it.

Code: Select all

function plugindef()
   -- This function and the 'finaleplugin' namespace
   -- are both reserved for the plug-in definition.
   finaleplugin.RequireScore = true
   return "Set System to Page Height", "Set System to Page Height", "If there is only 1 system on a page, it makes that system\'s height the same height as a page"
end

local systems = finale.FCStaffSystems()
systems:LoadAll()
for page in loadall(finale.FCPages()) do
    page:UpdateLayout()
    local system = page:CalcLastSystem()
    if system == page:GetFirstSystem() then --if there is only one system on the page (i.e. the first and last system are the same)
        local sys = systems:GetItemAt(system - 1)
        local sysheight = sys:CalcHeight(true)
        local pageheight = page:CalcInteriorHeight()
        if sysheight / pageheight > 0.6 then
            local resize = sys:GetResize()
            sysheight = sysheight + 60
            sys:SetResize(resize * pageheight / sysheight)
            sys:Save()
        end
    end
end
Nick

User avatar
motet
Posts: 8195
Joined: Tue Dec 06, 2016 8:33 pm
Finale Version: 2014.5,2011,2005,27
Operating System: Windows

Post by motet » Thu Sep 06, 2018 8:04 pm

The script works for me with Finale 2014.5 on Windows, though it leaves a small gap between the bottom system and the page margin.

I'm afraid I don't know that resizing the system to fill the page is the best solution, though. As notes get bigger, the measure width may need to change and the music may no longer fit if systems are locked. If your systems are unlocked, then measures can flow to the next page, but that can interfere with optimization.

It might work better to fill the page by leaving scaling alone and instead increasing the space between staves. Is that possible? Rather than spacing them all equally, I think it would be best to divide up the new space and add it to the spacing that's already there, in case things have already been manually respaced to avoid a collision, say. Even sexier would be to distribute the new space in such a way as to maintain the existing ratios.

Sorry to be critical. I am impressed you were able to write this considering the dearth of documentation, and am grateful you shared it.
0705.png
0706.png

jbearch
Posts: 19
Joined: Mon Feb 13, 2012 1:43 pm
Finale Version: Finale 26
Operating System: Windows

Post by jbearch » Fri Sep 07, 2018 8:56 am

I do all the resizing and music spacing before I hide anything. The resizing is necessary for some scores because conductors have complained about not being able to read the small size notes from their podium. It shouldn't really a problem as such since I usually put larger orchestra scores on A3 paper which allows me to expand to a readable size. Then and only then, when the layout is finished and I am satisfied that no collisions occur, do I hide unused staves, usually percussion or seldom used instruments. This makes it possible (usually) to put everything on the page.

The problem is simply getting the bottom of the system to align with the page margin. Otherwise you have systems that are too short or too long. I was hoping for an easier solution rather than having to adjust each individual staff on every page to get those margins to align. It does make things much more professional looking. I am not savvy enough in computer things to figure out what exactly needs to be programmed to make this happen. But in the page layout menu there is a "Space systems evenly" option that works wonderfully when there is more than one system on the page. There should be the same thing for staves in one system on one page. (Finale programmers, are you listening?)

I just finished a 75 page score where I had to laboriously move each staff up or down to get even system margins. That is what prompted me to write to the forum to see if anybody knew of a solution. (Easier solution, I mean.)

Incidently I found by accident a method that helps a little bit. In the STAFF menu there is a "respace staves" option that I tried out. On each system I either expanded using scale to: 101% or reduced by using 99% and repeated it until the bottom of the system was very close to the page margin. Then I only had to adjust maybe 1 or 2 staves to get the margins perfectly aligned. That is the fastest I have found so far. Could that not be automated somehow?

Anyway it is an interesting problem for Finale. Maybe there is a solution lurking out there somewhere. I hope I can get the JW plugin to work. Sorry to be so verbose about all this.

Jeffrey

User avatar
Harpsi
Posts: 107
Joined: Mon Dec 19, 2016 2:36 pm
Finale Version: 25
Operating System: Windows

Post by Harpsi » Sat Sep 08, 2018 11:33 am

In TGtools there is a function for copying staff spacing from one page to another or to a range of others. If you have that, it might save you some time at least.
Finale 2014.5, Finale 25, Dorico 4, Musescore 4
Windows 11

User avatar
elbsound
Posts: 196
Joined: Wed Aug 03, 2016 10:06 am
Finale Version: Finale 2014.5
Operating System: Windows

Post by elbsound » Fri Sep 14, 2018 6:56 am

Jeffrey,

visually balanced staff spacing and snapping to the bottom margin of the page will be features of the Perfect Layout plugin.
Here is the demo video of this feature:
https://www.youtube.com/embed/astrM66Ity0
visually balanced score with snap to bottom margin.jpg
More infos: https://elbsound.studio/perfect-layout-demos.php

Jan

jbearch
Posts: 19
Joined: Mon Feb 13, 2012 1:43 pm
Finale Version: Finale 26
Operating System: Windows

Post by jbearch » Fri Sep 14, 2018 9:57 am

This would be wonderful. Can I buy this plugin? Where?
Jeffrey

Nick Mazuk
Posts: 181
Joined: Tue Jul 03, 2018 12:29 am
Finale Version: Finale 26
Operating System: Mac

Post by Nick Mazuk » Fri Sep 14, 2018 4:00 pm

Hi Jan,

I've been watching this plug-in for years now. When are you finally going to release it? Even if it's buggy, it literally solves almost every pain point with Finale.
Nick

User avatar
elbsound
Posts: 196
Joined: Wed Aug 03, 2016 10:06 am
Finale Version: Finale 2014.5
Operating System: Windows

Post by elbsound » Fri Aug 16, 2019 7:38 pm

The plug-in is now available for Finale/Windows (2014, 2014.5, v25 and v26):
https://elbsound.studio/perfect-layout/

Post Reply