[JW Lua] Percussion midi map
Jan Angermüller
jan at angermueller.com
Mon Jan 20 12:23:41 CET 2014
Hi Jari,
thanks for the many answers !
Only the percussion MIDI map thing behaves strange.
If you load the attached file in Finale2014,
where the percussion is on staff 7,
i.e. staff:Load(7) should be the solution to load the percussion map.
But actually it works only if you write:
staff:Load(5).
Below is the full code. You need to load the attached musx file
and select the percussion staff on the bottom, then run the script.
The code first checks if only one staff was selected
and the staff is a percussion staff. Then it loads the
staff (which is staff 7) and tries "CreatePercussionMapNotes()" which
returns nil.
Then it loads staff 5 and suddenly CreatePercussionMapNotes() works.
Any idea ?
My idea is: although there are 7 staves in the file, in Score Manager are
only 5 different playback definitions. Two staves share the same
playback channel.
So maybe there is some wrong mapping somewhere.
I don't know if you need the following hint:
the musx file was created by importing a MIDI file to Finale2014a.
If you require the MIDI file, I can send it to you.
Best regards,
Jan
--Display FCUI alert message
region = finale.FCMusicRegion()
region:SetCurrentSelection()
if not (region.StartStaff==region.EndStaff) then
local ui = finenv.UI()
ui:AlertError("Please select one staff only.","Error: Multiple
staves selected")
return
end
local staff=finale.FCStaff()
staff:Load(region.StartStaff)
print("Staff number in region:", region.StartStaff)
if not staff:IsPercussion() then
local ui = finenv.UI()
ui:AlertError("Please select a percussion staff only.\r\nPlease make
sure that in ScoreManager\r\nnotation style is set to
percussion.","Error: No percussion staff selected")
return
end
local instrumentdef = staff:CreateInstrumentDef()
local mapnotes = instrumentdef:CreatePercussionMapNotes()
if not (mapnotes == nil) then
for mapnote in each(mapnotes) do
print (mapnote.NoteType, "= MIDI", mapnote.MidiNote)
end
else
print("CreatePercussionMapNotes() returns nil")
end
--Now load staff 5 instead and try the same code again
print("Loading staff 5")
staff:Load(5)
local instrumentdef = staff:CreateInstrumentDef()
local mapnotes = instrumentdef:CreatePercussionMapNotes()
if not (mapnotes == nil) then
for mapnote in each(mapnotes) do
print (mapnote.NoteType, "= MIDI", mapnote.MidiNote)
end
end
Am 20.01.2014 09:16, schrieb Jari Williamsson:
> Although percussion and instrument mapping in JW Lua is at a
> development phase right now, the functionality you're seeking is
> actually implemented in the beta you're using.
>
> Here's some skeleton code to get the percussion midi map for a
> percussion staff.
>
> Since FCInstrumentDef:CreatePercussionMapNotes() will parse the XML
> file information for the percussion MIDI map, make sure to put it
> outside any loops for performance.
>
> ---
> local staff = finale.FCStaff()
> staff:Load(1) -- Or whatever staff ID with percussion
>
> local instrumentdef = staff:CreateInstrumentDef()
>
> local mapnotes = instrumentdef:CreatePercussionMapNotes()
> for mapnote in each(mapnotes) do
> print (mapnote.NoteType, "= MIDI", mapnote.MidiNote)
> end
> ---
>
> Best regards,
>
> Jari Williamsson
>
>
> On 2014-01-19 20:09, Jan Angermüller wrote:
>> Hi Jari,
>>
>> I am now working on a remapping plugin for
>> drum staves that were imported from MIDI files
>> and that need remapping.
>> E.g. if MIDI bass drum 35 needs to become MIDI
>> bass drum 36 for correct playback on a certain drum sampl map.
>>
>> What works fine so far:
>> reading the percussion staves, reassiging the new note pitch,
>> reading the percussion layouts and matching the note types
>> from FCPercussionNoteMod and FCPercussionLayoutNote.
>>
>> Only one final thing does not work yet:
>> How do I get the note type for a certain MIDI note ?
>> So that I can assign the correct note type for the new pitch.
>> Probably it has to do with FCPercussionMapNote which has the
>> properties MidiNote and NoteType. But it isn't implemented yet, is it ?
>>
>> Would be great to have that class !
>> And very happy if the plugin is finally working.
>> That saves hours and hours when importing MIDI.
>>
>> I must say again - JW Lua is really fun to program with. Great job !
>>
>> Thanks a lot,
>> Jan
>>
>>
>> _______________________________________________
>> JWLua mailing list
>> JWLua at jwmusic.nu
>> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu
>>
>>
>
>
>
> _______________________________________________
> JWLua mailing list
> JWLua at jwmusic.nu
> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test staff id.musx
Type: application/octet-stream
Size: 86520 bytes
Desc: not available
URL: <http://jwmusic.nu/pipermail/jwlua_jwmusic.nu/attachments/20140120/bd7ec0d8/attachment.obj>
More information about the JWLua
mailing list