<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
I have just noticed a severe issue which can mess up the expression
definitions.<br>
I wrote a "Clone" function to copy&paste properties from one
expression definition to another and used the seemingly undangerous
ExecutableShapeID property like this:<br>
<br>
DestinationExprDef.ExecutableShapeID=SourceExprDef.ExecutableShapeID<br>
<br>
But this will not only copy the ExecutableShapeID, but also reset
all other playback values in that expression defintion - like key
velocity, tempo, etc.<br>
<br>
So, for example, if your source and destination expressions were
dynamic expressions with the Key Velocity playback type and the
destination used "Key Velocity: 75", it will change to "Key
Velocity: 0". But the code line above will have no effect on the
ExecutableShapeID as it is 0 in both cases.<br>
<br>
Robert, could you update this in the documentation?<br>
Currently it only says:<br>
"Setting the shape to 0 can be used to clear the use of executable
shape."<br>
But it seems to me like:<br>
"Setting the shape to 0 clears ANY playback value - even if the
executable shape was not used at all."<br>
<br>
And maybe add one line that assigning 0 to ExecutableShapeID will
not change the "Value" field, if UseExecutableShape is not
activated.<br>
<br>
Test code:<br>
local textexprdef=finale.FCTextExpressionDef()<br>
textexprdef:Load(1)<br>
local textexprdef2=finale.FCTextExpressionDef()<br>
textexprdef2:Load(2)<br>
textexprdef2.ExecutableShapeID=textexprdef.ExecutableShapeID<br>
textexprdef2:Save()<br>
<br>
A few other things that I noticed that affect expression definitions
and playback and which might need attention:<br>
1.) Get/SetPlaybackType() is listed as "Lua supported in 0.55", but
it's not supported yet.<br>
2.) SetPlaybackController is supported, but GetPlaybackController is
not<br>
3.) Get/SetPlaybackKeyVelocity() are in Jari's framework, but not in
JW Lua (probably not needed if you use SetPlaybackController with
the key velocity type, but GetPlaybackController() isn't supported
yet either)<br>
4.) The documentation for SetPlaybackTempo doesn't mention very
clearly that it turns a non-tempo playback expression into a tempo
playback expression. <br>
So it not only changes the tempo/duration value, but it seems to set
a flag internally that the new playback is a "EXPPLAYTYPE_TEMPO"
type. I had expected that I would have to call SetPlaybackType()
additionally to change this behaviour.<br>
<br>
Jan<br>
</body>
</html>