[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.htm>
-------------- 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.obj>
More information about the JWLua
mailing list