[JW Lua] Enharmonic Flip Bit

Jan Angermüller jan at angermueller.com
Thu Feb 23 10:04:58 CET 2023


Robert,

I have recently had a document that included seemingly "empty" 
FCNoteheadMods.
I.e. all options from the NoteheadMod dialog were set to the default value.

So I deleted it with nh:DeleteData(), because I thought it was an 
unnecessary/corrupt FCNoteheadMod.
This lead to a problem:
When you do the CreateRawDataDump and list the 11th value, it may 
include a "4", and 13th value may include a "13".

local nu=nh:CreateRawDataDump()
print(nu:GetItemAt(10).Int)

If this returns 4, then the "Enharmonic" bit is activated. Otherwise it 
returns 0.
If you delete the FCNoteheadMod in this case, the enharmonic flip 
disappears.
nu:GetItemAt(12).Int sometimes returns "13". I didn't find out what this is.

As Perfect Layout wants to delete corrupt/empty FCNoteheadMods by 
default, it's difficult to find out when looking at the score only:
If the enharmonic flip is only in a linked part and you load the 
FCNoteheadMod in the score, you won't recognize that there may be a flip 
in a part.
Or in other words: if you analyze the DataDump in the score, it looks 
like the FCNoteheadMod doesn't make sense, because all values are set to 
0 (except the 100 resize value).

My questions:
- Maybe you could add the GetEnharmonic() to FCNoteheadMod?
- Maybe you know what the 13 is?
- Do you know if there is a simple way to decide when looking at the 
FCNoteheadMod in the score whether this is a "false/empty" FCNoteheadMod 
or if this is actually an unlinked FCNoteheadMod?
According to my documentation there have been situations (maybe in 
corrupt documents?) where false/empty FCNoteheadMods should be deleted.
Until now I did when all values where set to the default values in the 
score. And I don't want to switch through all parts at that point, if 
possible.

Here is a test script for the attached document:
local reg=finale.FCMusicRegion()
reg:SetFullDocument()
local parts=finale.FCParts()
parts:LoadAll()
for p in each(parts) do
     p:SwitchTo()
     for e in eachentry(reg) do
         if e.NoteDetailFlag then
             local nhmods=e:CreateNoteheadMods()
             for nh in each(nhmods) do
                 local nu=nh:CreateRawDataDump()
                 if nu then
print(p.ID,e.Measure,e.MeasurePos,nu:GetItemAt(10).Int,nu:GetItemAt(12).Int)
                 end
             end
         end
     end
     p:SwitchBack()
end

Running [Unnamed Script] ======>
0 1 0 0 0  --> Score: Measure 1, Pos 0, all default values (=0)
0 1 2048 0 0
0 2 0 0 13  -->  13 is set
0 3 2560 4 13  --> 4 and 13 is set
9 1 0 4 0   --> 4 is set
9 1 2048 4 0   --> 4 is set
9 2 0 4 13   --> 4 and 13 is set
9 3 2560 0 13   --> 13 is set
<======= [Unnamed Script] succeeded (Processing time: 0.000 s).

Four notes have enharmonic flips and two also have the "13" value.
Three notes have the "4" in the linked part, one note has it in the score.

Jan


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://jwmusic.nu/pipermail/jwlua_jwmusic.nu/attachments/20230223/4468252b/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: enharmonicflip.musx
Type: application/octet-stream
Size: 79339 bytes
Desc: not available
URL: <http://jwmusic.nu/pipermail/jwlua_jwmusic.nu/attachments/20230223/4468252b/attachment-0001.obj>


More information about the JWLua mailing list