324
Here's a poor-man's demo:
!NoteWorthyComposerClip(2.751,Single)
|Text|Text:""|Font:StaffSymbols|Pos:0|Justify:Right
|Note|Dur:Half|Pos:0z
|Text|Text:""|Font:StaffSymbols|Pos:1|Justify:Right
|Note|Dur:Half|Pos:1z
|Text|Text:""|Font:StaffSymbols|Pos:-4|Justify:Right|Placement:AtNextNote
|Note|Dur:Half|Pos:-4z
|Text|Text:""|Font:StaffSymbols|Pos:-3|Justify:Right|Placement:AtNextNote
|Note|Dur:Half|Pos:-3z
!NoteWorthyComposerClip-End
326
The symbols you mention are present in the NWC staff symbols font. Here is an example:
!NoteWorthyComposerClip(2.751,Single)
|Text|Text:""|Font:StaffSymbols|Pos:7|Justify:Center|Placement:AtNextNote
|Note|Dur:4th|Pos:2
|Text|Text:""|Font:StaffSymbols|Pos:7|Justify:Center|Placement:AtNextNote
|Note|Dur:4th|Pos:2
!NoteWorthyComposerClip-End
327
In addition to what @hmmueller has said, there are additional things you can do, if you also insert a Marker object before the third triplet note. When both markers are present, you can change the angle of the triplet bracket. Building on Rick's example:
!NoteWorthyComposerClip(2.751,Single)
|Note|Dur:4th,Triplet=First|Pos:0
|Note|Dur:4th,Triplet|Pos:0
|Note|Dur:4th,Triplet=End|Pos:0
|Marker|Pos:0|Target:Triplet
|Note|Dur:4th,Triplet=First|Pos:0
|Note|Dur:4th,Triplet|Pos:0
|Note|Dur:4th,Triplet=End|Pos:0
|Marker|Pos:7.5|Target:Triplet
|Note|Dur:4th,Triplet=First|Pos:4
|Note|Dur:4th,Triplet|Pos:6
|Marker|Pos:11|Target:Triplet
|Note|Dur:4th,Triplet=End|Pos:8
!NoteWorthyComposerClip-End
329
As you observed, when you have two consecutive arpeggios which have the same notes, and the second arpeggio is anticipated, some of the "note on" events for arpeggio #2 are inserted before the corresponding "note off" event for arpeggio #1. Sort of like the following picture, where 1 represents a "note on", and 0 represents a "note off":
1 0|1 0
1 10| 0
1 1 0| 0
1 1 0| 0
The net result is that the "note off" events for the 2nd arpeggio are making the 1st arpeggio notes end early for all but the top (final) note, so that note "sticks out".
I can't think of an easy way to fix this. As has been noted previously, anticipated arpeggios (and guitar chords) are sort of primitive time travel devices, since they place MIDI events in the past, relative to the location of the object. In the above example, I guess what you are hearing is the result of the causality violation that I refer to in the documentation
One workaround to get normal playback would be to create a second layered staff and alternate the like chords between the two staves, making sure to use a different MIDI channel for each staff. Something like this:
!NoteWorthyComposer(2.751)
|AddStaff|Name:"Staff"|Group:"Standard"
|StaffProperties|EndingBar:Section Close|Visible:Y|BoundaryTop:12|BoundaryBottom:12|Lines:5|WithNextStaff:Layer|Color:Default
|StaffProperties|Muted:N|Volume:127|StereoPan:64|Device:0|Channel:1
|StaffInstrument|Trans:0|DynVel:10,30,45,60,75,92,108,127
|Clef|Type:Treble
|Key|Signature:Bb|Tonic:F
|TimeSig|Signature:4/4
|Rest|Dur:4th|Opts:Stem=Up
|Bar
|User|Arpeggio.ms|Pos:-3|Anticipated:Y
|Chord|Dur:Whole|Pos:-6,-3,-1,1,4|Opts:Muted
|Bar
|Rest|Dur:Whole|Visibility:Never
|Bar
|User|Arpeggio.ms|Pos:-3|Offset:0|Anticipated:Y
|Chord|Dur:Whole|Pos:-6,-3,-1,1,4|Opts:Muted
|Bar
|User|Arpeggio.ms|Pos:-3|Offset:0|Anticipated:Y
|Chord|Dur:Whole|Pos:-7,-5,-3,0,2|Opts:Muted
|Bar
|User|Arpeggio.ms|Pos:-3|Offset:0|Anticipated:Y
|Chord|Dur:Whole|Pos:-6,-3,-1,1,4|Opts:Muted
|Bar
|Rest|Dur:Whole|Visibility:Never
|AddStaff|Name:"Staff-1"|Group:"Standard"
|StaffProperties|EndingBar:Section Close|Visible:Y|BoundaryTop:10|BoundaryBottom:10|Lines:5|Color:Default
|StaffProperties|Muted:N|Volume:127|StereoPan:64|Device:0|Channel:2
|StaffInstrument|Trans:0|DynVel:10,30,45,60,75,92,108,127
|Clef|Type:Treble
|Key|Signature:Bb|Tonic:F
|TimeSig|Signature:4/4
|Rest|Dur:4th|Opts:Stem=Up
|Bar
|Rest|Dur:Whole|Visibility:Never
|Bar
|User|Arpeggio.ms|Pos:-3|Offset:0|Anticipated:Y
|Chord|Dur:Whole|Pos:-6,-3,-1,1,4|Opts:Muted
|Bar
|Rest|Dur:Whole|Visibility:Never
|Bar
|Rest|Dur:Whole|Visibility:Never
|Bar
|Rest|Dur:Whole|Visibility:Never
|Bar
|User|Arpeggio.ms|Pos:-3|Offset:0|Anticipated:Y
|Chord|Dur:Whole|Pos:-6,-3,-1,1,4|Opts:Muted
!NoteWorthyComposer-End
337
Hello Bart,
That's a very nice tool. I have one suggestion that will help it deal with multi-staff scores a bit better. Currently, if you have a staff which has a collapse section which is not followed by an end collapse, then the coloring will wrap around to the next staff. This is obviously not desirable. Adding a single line of code, at the top of the for loop, will address this:
-- $NWCUT$CONFIG: FileText $
nwcut.setlevel(2)
nwcut.status = nwcut.const.rc_Succes
--nwcut.status = nwcut.const.rc_Report
local progname = 'change_collapse_color'
local HelpMsg = [[
This tool changes the color of items in a collapse boundery
]]
--------------------------------------
-- Main processing -------------------
--------------------------------------
assert(nwcut.getprop('Mode') == nwcut.const.mode_FileText, "Input type must be 'File Text'")
assert(nwcut.getprop('ReturnMode') == nwcut.const.mode_FileText, "Under 'Options', check 'Returns File Text'")
collapse_color = nwcut.prompt("collapse_color N ", "#",0,5)
collapse = 0
for item in nwcut.items() do
if item:Is('AddStaff') then collapse = 0 end--if
if collapse == 1 then item.Opts.Color = collapse_color ; end--if
if item:Is('Boundary') then
if item.Opts.Style == 'Collapse' then collapse = 1 end--if
if item.Opts.Style == 'EndCollapse' then collapse = 0 end--if
end--if
nwcut.writeline(item)
end--for
339
I thought that I had implemented the same beam spacing for tremolos as NWC did for regular beams, but I now see that I did not. It is fairly easy to change this. If you don't mind tweaking code, the spacing you desire (as specified by Behind Bars) can be done by changing the line 121 of Tremolo.ms.nwcuser.lua from:
local beamHeight, beamSpacing, beamOffset = .8, 1.8, .6
to:
local beamHeight, beamSpacing, beamOffset = 1, 1.5, .6
It would be nice if there was an easy method of specifying global "configuration" settings that would apply to all instances of a plugin. so that an additional parameter would not be needed for this under normal conditions.
346
!NoteWorthyComposerClip(2.751,Single)
|Note|Dur:4th,Slur|Pos:b0|Opts:StemLength=0
|User|Glissando.ms|Pos:-1|Class:Span|Weight:4|Text:|StartOffsetY:0.3|EndOffsetY:0.3|ap:2|StartOffsetX:0.2|EndOffsetX:-0.3
|Spacer|Width:1000
|Note|Dur:4th,Slur|Pos:b-1|Opts:Stem=Down,StemLength=0
|User|Glissando.ms|Pos:-1|Weight:4|Text:|StartOffsetY:0.4|EndOffsetY:0.4|ap:1|StartOffsetX:0.2|EndOffsetX:-0.2
|Spacer|Width:225
|Note|Dur:4th,Slur|Pos:b-2|Opts:Stem=Down,StemLength=0
|Spacer|Width:50
|Note|Dur:4th,Slur|Pos:-4|Opts:Stem=Down,StemLength=0
|Spacer|Width:50
|Note|Dur:4th,Slur|Pos:-3|Opts:Stem=Down,StemLength=0
|User|Glissando.ms|Pos:-1|Weight:4|Text:|ap:2|EndOffsetY:-1.5|StartOffsetY:-0.6|StartOffsetX:0.1|EndOffsetX:0.9
|Spacer|Width:450
|Marker|Pos:6
|Chord|Dur:4th|Pos:b-1,b3|Opts:StemLength=0
|Spacer|Width:475
|User|Glissando.ms|Pos:-1|Weight:4|Text:|StartOffsetY:4|EndOffsetY:4|StartOffsetX:0.2|EndOffsetX:-0.2|ap:2
|User|Glissando.ms|Pos:-1|Weight:4|Text:|StartOffsetY:0.1|EndOffsetY:0.1|StartOffsetX:0.2|EndOffsetX:-0.2
|Rest|Dur:4th|Visibility:Never
!NoteWorthyComposerClip-End