<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>