<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;}
span.EmailStyle22
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Hi Jan,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Good to hear from you. Long story, but it turned out that Perfect Layout, while no doubt excellent for most production projects, was not suited to this one. We need very tight control over a limited number of things, but I found Perfect Layout to be a bit too broad-brush for what we are trying to do on this rather odd project. We are not trying to produce a visually attractive or perfect score in Finale, but rather, we are doing “smart explosion” of conductor scores and then parsing the objects so that they will look good when imported somewhere else via XML. This often means making things look fairly crappy in Finale, to get the desired result at the other end. (Once the XML transfer process has been completed, the Finale files could just as well be thrown away.)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>After three weeks of coding I now have two large JW Lua scripts that have automated the majority of tasks, cutting time spent by at least 75% on most files. This is a similar approach to what we’d been doing for the past couple of decades with very large Sibelius projects, but it is the first time I have done deep automation on the Finale side of things. In retrospect I wish we’d started earlier!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The main issue with super-automation of this kind is that you have to be able to justify the time spent on development. In this case it was three weeks of coding, but I think it is going to cut what might have been a six-month project down to six weeks. The trouble is that when you start coding a project, you are never quite sure how long it is going to take or even whether it will be possible to achieve your automation goals!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks for the tip about controlling the endpoints in JW Lua, I will play around with it. We’ve already automated the placement of most common objects, hairpins are really the one remaining item that is wasting too much time in human editing.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Merry Christmas everyone, and fervent wishes for a better 2021!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Martin<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> JWLua <jwlua-bounces@jwmusic.nu> <b>On Behalf Of </b>Jan Angermüller<br><b>Sent:</b> Thursday, December 24, 2020 10:38<br><b>To:</b> The JW Lua script plug-in. <jwlua@jwmusic.nu><br><b>Subject:</b> Re: [JW Lua] Hairpins<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'>Hi Martin,<br><br>as you own Perfect Layout, why don't you use it for hairpins?<br>The plug-in has this barline collision algorithm.<br>Hairpins can be controlled through JW Lua, except for hairpins that span more than two systems: then only the first and the last hairpin part can be adjusted.<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-bottom:12.0pt'>>1. You will almost certainly need to call SetCustomShaped(true). (What has me confused is that in Finale each endpoint has its >own customized bit, so I am not sure how the PDK Framework is doing this without specifying the left or right endpoint.<br>SetCustomOffset uses the boolean value to determine the start/end segment.<o:p></o:p></p><table class=MsoNormalTable border=0 cellpadding=0><tr><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>void FCSmartShapeSegment::SetCustomOffset <o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>(<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>bool <o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal><em><span style='font-family:"Calibri",sans-serif'>rightside</span></em><o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>)<o:p></o:p></p></td><td style='padding:.75pt .75pt .75pt .75pt'></td></tr></table></div><p class=MsoNormal style='margin-bottom:12.0pt'><br><br>Best.<br>Jan<o:p></o:p></p><div><p class=MsoNormal>Am 24.12.2020 um 07:51 schrieb Martin Marris:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal>Thanks Robert. I am giving up on this one for the time being. We will use the JW Change plugin manually. It has a whole set of commands specifically for Hairpins. We have found that we can get more or less what we are looking for by setting all the horizontal positions to zero or something close to zero. This can be relative to the note entries, or relative to the measure borders. The very existence of all these options makes me think there must be some way to do the same in JW Lua although of course these may be calls that have not been implemented yet.<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>The JW Change plugin can cope with most of these issues, but cannot always fix sloppily attached hairpins, even though it has options that try to do this. That is one of the reasons I was hoping to achieve this programmatically in JW Lua (by using the “find nearest” stuff, which I am already using to fix the attachment of text dynamics). We are not looking for subtlety. All of the source material is at the elementary level and, for most instruments, hairpins should always start on a note entry and end at the rhythmic conclusion of another note entry (but without colliding with group barlines, so pulled back slightly at the right hand end at the end of a measure). In theory we should use a different algorithm for pianos and other instruments that cannot change dynamic through a sustained note, but I have more or less given up on that one and perhaps it is only engravers and other notation geeks who care.<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>Martin<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> JWLua <a href="mailto:jwlua-bounces@jwmusic.nu"><jwlua-bounces@jwmusic.nu></a> <b>On Behalf Of </b>Robert Patterson<br><b>Sent:</b> Thursday, December 24, 2020 00:29<br><b>To:</b> The JW Lua script plug-in. <a href="mailto:jwlua@jwmusic.nu"><jwlua@jwmusic.nu></a><br><b>Subject:</b> Re: [JW Lua] Hairpins<o:p></o:p></p></div><p class=MsoNormal> <o:p></o:p></p><div><div><p class=MsoNormal>I've never used the PDK Framework support for Smart Shapes. It's complicated even with direct PDK access. That said:<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>1. You will almost certainly need to call SetCustomShaped(true). (What has me confused is that in Finale each endpoint has its own customized bit, so I am not sure how the PDK Framework is doing this without specifying the left or right endpoint.<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>2. It's possible you are correct that FCSmartShapeCtrlPointAdjust is not what you want. But if it isn't, then what you *do* want is not hooked up through the PDK Framework. So it's worth fiddling further, I'd say.<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>Good luck.<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div></div><p class=MsoNormal> <o:p></o:p></p><div><div><p class=MsoNormal>On Wed, Dec 23, 2020 at 6:14 PM Martin Marris <<a href="mailto:mmarris@notecraft.com">mmarris@notecraft.com</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I’ve been trying to adjust the right end-point of hairpins. In the source Finale material I am working with, these routinely collide with or cross the group barlines in conductor scores, but I want them to stop a bit before the barline (this issue gets even more exaggerated if the file is brought into another environment via MusicXML). <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>From Google searches it seems like this is a known issue for Finale users, with all sorts of manual and semi-automated solutions. Indeed if I create a totally vanilla Finale document without using any special settings, that is exactly the behavior that I get when placing a slur. If you create a hairpin that spans a measure, it snaps to end exactly on the group barline.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>There is a sample script on the JW Lua website that loads FCSmartshape objects, filters for hairpins, and changes the hairpin opening size by changing the FCSmartShapeCtrlPointAdjust setting for ControlPoint1OffsetY.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>So far, so good. But when I try to change the “X” horizontal settings, nothing happens. I am beginning to think that these “control point adjust” settings have nothing to do with what I am trying to achieve, namely changing the X-offset (relative to the beat, or relative to the measure) of the SmartShape object.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Martin<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div></div><p class=MsoNormal>_______________________________________________<br>JWLua mailing list<br><a href="mailto:JWLua@jwmusic.nu" target="_blank">JWLua@jwmusic.nu</a><br><a href="http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu" target="_blank">http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu</a><o:p></o:p></p></blockquote></div><p class=MsoNormal><br><br><o:p></o:p></p><pre>_______________________________________________<o:p></o:p></pre><pre>JWLua mailing list<o:p></o:p></pre><pre><a href="mailto:JWLua@jwmusic.nu">JWLua@jwmusic.nu</a><o:p></o:p></pre><pre><a href="http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu">http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu</a><o:p></o:p></pre></blockquote><p class=MsoNormal><br><br><o:p></o:p></p><pre>-- <o:p></o:p></pre><pre>Jan Angermüller<o:p></o:p></pre><pre>Dipl.-Ing.(FH) Dipl.-Jur. <o:p></o:p></pre><pre>Orchideenstieg 13<o:p></o:p></pre><pre>22297 Hamburg<o:p></o:p></pre><pre>Tel. 040 - 28 94 84 82<o:p></o:p></pre><pre>Mobil 0173 - 99 33 904<o:p></o:p></pre><pre><a href="http://www.elbsound.studio">www.elbsound.studio</a><o:p></o:p></pre></div></body></html>