Skip to main content
Topic: Arpeggio.ms (2.3) (Read 53764 times) previous topic - next topic

Re: Arpeggio.ms (1.3)

Reply #50
the final notes of each arpeggio will actually occur after the start of the next note.
No, they don't.
One problem is that 'Anticipated playback' is checked for the first two, but not the last one. Still, playback is:
Code: (mtx) [Select · Download]
768 On ch=1 n=74 v=110
784 On ch=1 n=77 v=110
800 On ch=1 n=82 v=110
816 On ch=1 n=74 v=0
816 On ch=1 n=77 v=0
816 On ch=1 n=82 v=0
816 On ch=1 n=82 v=110
1120 On ch=1 n=82 v=0
for the last one. If you slow it down, playback sounds better. As it is, 16 clicks between Note On's for the B flat is barely audible at a fast tempo. If you make the 'Arpeggio rate' 128, there is 36 clicks between the Note On's for the B flat. That sounds better.

IMO, you are running into the limits of the synth's knowledge of what to do.
Registered user since 1996

Re: Arpeggio.ms (1.3)

Reply #51
Your comments are correct; you quoted my message shortly before I replaced it with a more accurate statement. I didn't notice the anticipated setting on two of the arpeggios, but that might also explain some of the playback oddities.

Re: Arpeggio.ms (1.3)

Reply #52
Ah, timing overflow! I'm used to check it on grace notes. I overlooked it in this case.
Thanks, Mike.


Re: Arpeggio.ms (1.3)

Reply #54
Yes, ok, no time overflow. Simply time full.
Quote
816 On ch=1 n=82 v=0
816 On ch=1 n=82 v=110
There is no break at all, so the second B flat is not heard at that speed, at least with my synth.
It seems simply a continuation of the first B flat, hence the effect "missing note".

Re: Arpeggio.ms (1.3)

Reply #55
There is no break at all, so the second B flat is not heard at that speed, at least with my synth.
Even with a slight break I can't hear the second B flat at fast tempos. I would think that this varies by instrument and by synth.
Registered user since 1996

Re: Arpeggio.ms (2.0c)

Reply #56
The Arpeggio.ms object has been updated for version 2.75a, with the following changes:

  • An embedded user tool has been added, which allows an arpeggio to be added or removed from a selected chord.

Please refer to the parent post for additional information.

Re: Arpeggio.ms (2.0c)

Reply #57
Good  morning

I am re-reading this thread and finally realizing that I can notate arpeggios to extend across both staves, but I am having trouble doing it. Of course I am.

Would someone be willing to walk me through the process step by step? I like to think that this might help someone else down the road...

As always, many thanks for your help!

Re: Arpeggio.ms (2.0c)

Reply #58
Good  morning

I am re-reading this thread and finally realizing that I can notate arpeggios to extend across both staves, but I am having trouble doing it. Of course I am.

Would someone be willing to walk me through the process step by step? I like to think that this might help someone else down the road...

As always, many thanks for your help!
There are two aspects to making a cross-staff arpeggio. One is getting the right appearance, and another is getting it to play correctly. If you just want the correct visual appearance, and are not concerned with playback, that's the easier case, so I'll describe that first.

Normally, the Arpeggio.ms object will automatically size itself for the chord it is applied to. However, there is a special parameter labeled "Extend Arpeggio with Marker" which, when checked, will allow you to "stretch" an arpeggio above or below the top or bottom note of the chord. So if you want to extend an arpeggio across two staves, you would add the object on one staff, check the aforementioned Extend Arpeggio with Marker box, and then highlight and move the Arpeggio object's marker downward until it covers the notes in the staff below.

Here's a quick example if my description above does not make sense:
Code: (nwc) [Select · Download]
!NoteWorthyComposer(2.751)
|PgMargins|Left:1.27|Top:1.27|Right:1.27|Bottom:1.27|Mirror:N
|AddStaff|Name:"Staff"|Group:"Standard"
|StaffProperties|EndingBar:Section Close|Visible:Y|BoundaryTop:12|BoundaryBottom:12|Lines:5|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
|User|Arpeggio.ms|Pos:-23.5|MarkerExtend:Y
|Chord|Dur:4th|Pos:-6,-4,-1|Opts:Muted
|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:Bass
|Chord|Dur:4th|Pos:-2,0,2
!NoteWorthyComposer-End

Re: Arpeggio.ms (2.0c)

Reply #59
Regarding the playing:

There is a way to do this, approximately, if you don't mind the entire arpeggio being "anticipated". Add objects to each staff, and set the starting one to anticipated, and the ending one to non-anticipated (the middle notes will overlap, but it shouldn't be too noticable.)

One trick you can try, that might be less noticable, would be to insert an extra note in the starting chord, that is the same note as the first note of the following chord, and then change it to a blank space notehead.

I forgot to mention that there was another "cheat" method of doing this, courtesy of @Richard Woodroffe. It won't work in every circumstance, but you can try this: Put all of the arpeggio notes (for both staves) on the upper staff, and change the noteheads for the lower staff notes to blank noteheads. Then mute the chord on the lower staff and don't put an arpeggio on it. You might need to hide leger lines on the upper staff chord as well.

I should also mention that I tried a quick & dirty addition to the object to add a "start delay" to the entire arpeggio, but it was buggy. I might look at this further, as a way to "merge" arpeggios on separate staves (until/unless NWC gives us a way to see notes on other staves.)

Re: Arpeggio.ms (2.0c)

Reply #60
Thank you @Flurmy for the reminder. I remembered giving that advice before but was too lazy to look it up this morning :) I also recall playing with the "start delay" parameter. Had there been demand/requests for it, I'd have added it by now.

Re: Arpeggio.ms (2.0c)

Reply #61
Another solution, courtesy of Rick the Wizard:
Code: (nwc) [Select · Download]
!NoteWorthyComposer(2.751)
|Editor|ActiveStaff:1|CaretIndex:1|CaretPos:1
|SongInfo|Title:""|Author:"<Name>"|Lyricist:""|Copyright1:"Copyright © 2018 <Name>"|Copyright2:"All Rights Reserved"
|PgSetup|StaffSize:16|Zoom:7|TitlePage:Y|JustifyVertically:Y|PrintSystemSepMark:N|ExtendLastSystem:N|DurationPadding:Y|PageNumbers:0|StaffLabels:None|BarNumbers:None|StartingBar:1
|Font|Style:StaffItalic|Typeface:"Times New Roman"|Size:10|Bold:Y|Italic:Y|CharSet:0
|Font|Style:StaffBold|Typeface:"Times New Roman"|Size:8|Bold:Y|Italic:N|CharSet:0
|Font|Style:StaffLyric|Typeface:"Times New Roman"|Size:7.2|Bold:N|Italic:N|CharSet:0
|Font|Style:PageTitleText|Typeface:"Times New Roman"|Size:24|Bold:Y|Italic:N|CharSet:0
|Font|Style:PageText|Typeface:"Times New Roman"|Size:12|Bold:N|Italic:N|CharSet:0
|Font|Style:PageSmallText|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User1|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User2|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User3|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User4|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User5|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User6|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|PgMargins|Left:1.27|Top:1.27|Right:1.27|Bottom:1.27|Mirror:N
|AddStaff|Name:"Staff"|Group:"Standard"
|StaffProperties|EndingBar:Section Close|Visible:Y|BoundaryTop:12|BoundaryBottom:12|Lines:5|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
|Tempo|Tempo:30|Pos:8.5
|Spacer|Width:50
|Note|Dur:Whole,Grace|Pos:-5x^|Opts:Muted|Visibility:Never
|Note|Dur:Whole,Grace|Pos:-5y^|Visibility:Never
|Note|Dur:Whole,Grace|Pos:-5y^|Visibility:Never
|Note|Dur:Whole,Grace|Pos:-5y|Visibility:Never
|Note|Dur:8th,Grace|Pos:-6^|Opts:Stem=Up,Beam=First|Visibility:Never
|Note|Dur:8th,Grace|Pos:-4^|Opts:Stem=Up,Beam=End|Visibility:Never
|User|Arpeggio.ms|Pos:-23.5|MarkerExtend:Y|Play:N
|Chord|Dur:4th|Pos:-6,-4,-1
|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:Bass
|Note|Dur:8th,Grace|Pos:-1^|Opts:Stem=Up,Beam=First|Visibility:Never
|Note|Dur:8th,Grace|Pos:1^|Opts:Stem=Up,Beam|Visibility:Never
|Note|Dur:8th,Grace|Pos:3^|Opts:Stem=Up,Beam=End|Visibility:Never
|Note|Dur:Whole,Grace|Pos:-4x^|Opts:Muted|Visibility:Never
|Note|Dur:Whole,Grace|Pos:-4y^|Visibility:Never
|Note|Dur:Whole,Grace|Pos:-4y^|Visibility:Never
|Note|Dur:Whole,Grace|Pos:-4y|Visibility:Never
|Chord|Dur:4th|Pos:-1,1,3
!NoteWorthyComposer-End

Re: Arpeggio.ms (2.0c)

Reply #62
Mike,
I normally use my slightly imperfect user tool to make arpeggios instead of the one embedded for one reason: I can arpeggiate a whole sequence at once (all the chords in the selection) without having to apply the tool to each chord singularily.
Of course the single notes and the tied chords are excluded.
Is it possible to have such a feature in the embedded tool?
You know, playing harp the arpeggios are so many...  :D

Re: Arpeggio.ms (2.0c)

Reply #63
Because the embedded user tool is part of the plugin file, my goal was to "keep it simple". You know, the 80-20 rule. Plus, user tools are really not my forte (yet). Unfortunately, you are clearly in the 20%, but fortunately, there is your tool (and NWC's) for the more complex behavior.

I'll keep it in mind, though, as I learn more about how user tools work.

Re: Arpeggio.ms (2.0c)

Reply #64
Flurmy

Do you really play the harp or just the computer harp?

Re: Arpeggio.ms (2.0c)

Reply #65
Thanks again, Mike. My problem was that I was using the wrong method to try and move the marker, and it wouldn't budge (highlight and stretch with the mouse). Now I know to use the up or down arrow.  What Child is This, verse 2 is looking much better!

Thanks for taking time to explain it to me and for the example. I am not too worried about playback at this point. I am still figuring out how to make these scores look correct!


Re: Arpeggio.ms (2.0c)

Reply #66
Flurmy
Do you really play the harp or just the computer harp?
Well, "play" is a sort of overstatement.  ;)
I just strum harp like many other instruments, mainly keyboards, recorders, quena, tin whistle, mandolin, guitar, violin...
It's my daughter that plays harp, both celtic (lever) and classic (pedal), so I often have to arrange musics for harp or harp and recorder (and play with her).

Re: Arpeggio.ms (2.0c)

Reply #67
Mike, can you spot a reason why the arpeggio fails to cut off in this clip? (It's the arpeggio: if you remove it, the clip sounds properly.)

Code: [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|Clef|Type:Treble
|Instrument|Name:"Acoustic Grand Piano"|Patch:0|Trans:0|DynVel:10,30,45,60,75,92,108,127|Pos:15.5
|TimeSig|Signature:3/4
|User|Arpeggio.ms|Pos:-1
|Dynamic|Style:p|Pos:-8
|Chord|Dur:Half,Dotted|Pos:b5^,b7^,b10^|Opts:Muted
|Bar
|Chord|Dur:Half,Dotted|Pos:5,7,10|Opts:Muted
|Bar
|TimeSig|Signature:4/4
|Rest|Dur:Half
|Note|Dur:Half|Pos:15
!NoteWorthyComposerClip-End

Re: Arpeggio.ms (2.0c)

Reply #68
You need to unmuted the 2nd (tied) chord.  The following is from the help text for the "Play" parameter:

Quote
Note that the chord which follows the arpeggio marking should be muted for proper playback. When this chord is tied to subsequent chords, those chords should *NOT* be muted. This will allow the arpeggiated chord to play through the tie.

When you mute a note in NWC, it will suppress that note's "note on" and "note off" events. We don't want to suppress the "note off" on the tied chord since that will cause a hanging note.

 

Re: Arpeggio.ms (2.0c)

Reply #69
Thanks.

What the Hell...

Reply #70
I don't understand what's going on.
Try "staff play" (<shift><F5>) on the top staff...

Code: (nwc) [Select · Download]
!NoteWorthyComposer(2.751)
|Editor|ActiveStaff:1|CaretIndex:1|CaretPos:0
|SongInfo|Title:"Lascia ch\'io pianga"|Author:""|Lyricist:""|Copyright1:""|Copyright2:""
|PgSetup|StaffSize:20|Zoom:4|TitlePage:Y|JustifyVertically:Y|PrintSystemSepMark:N|ExtendLastSystem:N|DurationPadding:Y|PageNumbers:0|StaffLabels:None|BarNumbers:Plain|StartingBar:1
|Font|Style:StaffItalic|Typeface:"Times New Roman"|Size:12.31|Bold:Y|Italic:Y|CharSet:0
|Font|Style:StaffBold|Typeface:"Times New Roman"|Size:10|Bold:Y|Italic:N|CharSet:0
|Font|Style:StaffLyric|Typeface:"Times New Roman"|Size:9.23|Bold:N|Italic:N|CharSet:0
|Font|Style:PageTitleText|Typeface:"Times New Roman"|Size:24|Bold:Y|Italic:N|CharSet:0
|Font|Style:PageText|Typeface:"Times New Roman"|Size:12|Bold:N|Italic:N|CharSet:0
|Font|Style:PageSmallText|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User1|Typeface:"Boxmarks"|Size:24|Bold:N|Italic:N|CharSet:0
|Font|Style:User2|Typeface:"Times New Roman"|Size:13|Bold:N|Italic:N|CharSet:0
|Font|Style:User3|Typeface:"Times New Roman"|Size:13|Bold:N|Italic:N|CharSet:0
|Font|Style:User4|Typeface:"Times New Roman"|Size:13|Bold:N|Italic:N|CharSet:0
|Font|Style:User5|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User6|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|PgMargins|Left:0.51|Top:0.00|Right:0.51|Bottom:0.51|Mirror:N
|AddStaff|Name:"Vocal"|Label:"Vocal"|Group:"Standard"
|StaffProperties|EndingBar:Open (hidden)|Visible:Y|BoundaryTop:18|BoundaryBottom:10|Lines:5|Color:Default
|StaffProperties|Muted:N|Volume:127|StereoPan:64|Device:0|Channel:1
|StaffInstrument|Patch:54|Trans:0|DynVel:10,30,45,60,75,92,108,127
|Clef|Type:Treble
|Key|Signature:C|Tonic:C
|TimeSig|Signature:Common
|Tempo|Tempo:90|Pos:10
|Rest|Dur:4th
|Dynamic|Style:f|Pos:-8
|Note|Dur:8th|Pos:n3
|Rest|Dur:16th
|Note|Dur:16th|Pos:3
|Note|Dur:8th|Pos:4
|Note|Dur:8th|Pos:5
|Note|Dur:8th|Pos:5
|Note|Dur:8th|Pos:b2
|Rest|Dur:4th
|Bar
|Note|Dur:4th|Pos:b2
|Note|Dur:8th|Pos:2
|Note|Dur:8th|Pos:1
|Note|Dur:8th|Pos:b-1
|Note|Dur:8th|Pos:-1
|Rest|Dur:8th
|Note|Dur:8th|Pos:1
|Bar
|AddStaff|Name:"Right Hand"|Label:"Keyboard"|Group:"Keyboard"
|StaffProperties|EndingBar:Open (hidden)|Visible:Y|BoundaryTop:13|BoundaryBottom:10|Lines:5|WithNextStaff:Brace,ConnectBars,Layer|Color:Default
|StaffProperties|Muted:N|Volume:127|StereoPan:64|Device:0|Channel:2
|StaffInstrument|Name:"Harpsichord"|Patch:6|Trans:0|DynVel:10,30,45,60,75,92,108,127
|Clef|Type:Treble
|Key|Signature:C|Tonic:C
|TimeSig|Signature:Common
|Rest|Dur:4th
|Dynamic|Style:mp|Pos:-8
|User|Arpeggio.ms|Pos:-3|Offset:0|Anticipated:Y
|Chord|Dur:Half|Pos:-2,b2,n3|Opts:Muted
|User|Arpeggio.ms|Pos:-3|Offset:0|Anticipated:Y
|Chord|Dur:Half|Pos:0^,b2^,5^|Opts:Muted
|Bar
|Chord|Dur:Half|Pos:0,2,5
|User|Arpeggio.ms|Pos:-3|Offset:0|Anticipated:Y
|Chord|Dur:Half|Pos:b-1,1,b6|Opts:Muted
|Bar
!NoteWorthyComposer-End

Re: What the Hell...

Reply #71
I don't understand what's going on.
Nor do I, but if you remove the ties from the bottom staff, the anomaly goes away.
NWC 2.75a.2 seems to have some bugs when translating the effect of ties into MIDI
Registered user since 1996

Re: Arpeggio.ms (2.0c)

Reply #72
I think I know "what" is happening, but I don't know "why".  I'm going to post some technical details here, in the hopes that @NoteWorthy Online will see this and perhaps be able to comment.

The Arpeggio.ms object normally use the function nwcplay.note() to play its notes. However, because the second chord is tied, that arpeggio instead uses the nwcplay.midi() function to play the note, so that it only generates a "noteOn" MIDI event (the following tied chord will supply the "noteOff" events to end the arpeggio).  The API documentation for nwcplay.note() and nwcplay.midi() each say "The channel and port are set by the current staff environment."

It appears that the nwcplay.midi() on the bottom staff is sounding when you are playing just the top staff (via Shift-F5), when it should be muted along with the other notes. Interestingly, if you mute the lower staff and then just click F5 (Play), it does the same thing. For added fun, mute both staves and click Play, and you will hear just the lower arpeggio.

If I remove the tie on the second arpeggio, the playback artifact goes away (which I suspect is because it is no longer using the nwcplay.midi() function for playback).

All of the above long-winded technobabble is trying to say that perhaps it is a bug in NWC. I can't see that I am doing anything incorrect in the plugin that would cause this behavior; I assume that nwcplay.midi() calls should respect the "muteness" of a staff.

EDIT: @Rick G. posted a reply while I was entering mine, and he made some of the same observations.

Re: Arpeggio.ms (2.0c)

Reply #73
Hi Mike -
Small problem with the Arpeggio object, shown in this clip from the accompaniment to a song I'm working on:

Code: [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|Clef|Type:Treble
|Instrument|Name:"Acoustic Grand Piano"|Patch:0|Trans:0|DynVel:10,30,45,60,75,92,108,127|Pos:16.5
|Note|Dur:Half,Dotted,Slur|Pos:8^|Opts:Stem=Down
|Bar
|Dynamic|Style:p|Pos:-9|Justify:Center|Placement:AtNextNote
|User|Arpeggio.ms|Pos:-4
|Chord|Dur:Half,Dotted|Pos:8^|Opts:Stem=Up,Muted|Dur2:Half,Dotted|Pos2:-3^,-1^,1^,b3^
|Bar
|TimeSig|Signature:12/8
|TempoVariance|Style:Fermata|Pause:0|Pos:14.5|Justify:Center|Placement:AtNextNote
|Chord|Dur:Whole,Dotted|Pos:8|Opts:Stem=Up|Dur2:Whole,Dotted|Pos2:-3,-1,1,3
!NoteWorthyComposerClip-End

The arpeggio should only apply  to the new notes in the second measure (the F4 through the Eb5); it shouldn't extend to the tied C6 from the previous measure. I can fix this with a layer, of course, but I don't think I should need to. A fix would be appreciated.

Thanks,

Bill

Re: Arpeggio.ms (2.0c)

Reply #74
I think see what is happening. The Arpeggio object does not recognize/respect a tie-in from a previous note. It would be possible to tell it to skip the playback of tied-in notes, and for the above example (where the final note of the arpeggio is the one we want to skip) this would play as expected. However, if there were other tied-in notes within an arpeggio chord, with the current code, there would be "gaps" in the playback where the tied notes occur.  It might make more sense to have the Arpeggio object only play one of the halves of a split stem chord, via a new option parameter.

I'm currently on vacation and won't have time to fix this for a while. I would suggest that you put the upper and lower sets of notes on their own staff, as you proposed.

Re: Arpeggio.ms (2.0c)

Reply #75
Thanks for the response, Mike. I'll look forward to an eventual fix - playing only half of a split-stem chord as an option would probably handle most circumstances. In the meantime, there is still the layers option.

Re: Arpeggio.ms (2.0c)

Reply #76
A related problem: the object doesn't mute when the staff it's on is muted. If the notes of the arpeggiated chord are tied, the object doesn't send a noteOff command, and because the staff is muted, the end of the chord doesn't send one either. As a result, NWC thinks the chord is still playing all the way to the end of the piece, and will sound it if you start play at any later time - a little ghost piano chord that sounds off even if every staff related to the piano part is muted - even if the piano staves are incomplete and you've started play well beyond the place where they end. Took me a while to figure out where that ghost was coming from.

And related to THAT is the fact that the note with the incoming tie (in yesterday's example) doesn't receive a noteOff until the next time a note is sounded at that pitch, even if the staff isn't muted.  In that case, I get a bright little ghost note instead of a ghost chord when I start play after the arpeggio. Apparently the object depends on NWC to send a noteOff, and NWC thinks it doesn't need to send one because the note has been muted.

I was postponing the creation of the second layer, but I guess I'd better get to that right now....

EDIT: the new layer didn't help. The ghost chord still sounds. Evidently no noteOff is being sent with the ties present, whether or not anything is muted.

EDIT 2: removing the ties from the arpeggiated chord on the new layer has eliminated the ghost chord. The ties from the muted chord in the original layer still work to carry the sound over, even though they are on a different layer from the sounded chord (well, they're assigned to the same MIDI channel). Crisis averted for now.

Re: Arpeggio.ms (2.0c)

Reply #77
A related problem: the object doesn't mute when the staff it's on is muted.
It is probably possible for the object to detect this, but IMO, NoteWorthy should.
NoteWorthy would be improved if it did not generate any MIDI events from a muted staff.

If you really want to stop a staff from producing sound, assign playback to a non-existent device.
That should supress everything except tempo changes.
Registered user since 1996

Re: Arpeggio.ms (2.0c)

Reply #78
It is probably possible for the object to detect this, but IMO, NoteWorthy should.
NoteWorthy would be improved if it did not generate any MIDI events from a muted staff.

If you really want to stop a staff from producing sound, assign playback to a non-existent device.
That should supress everything except tempo changes.
Just a short note: it seems that this issue was already discussed earlier in this thread, here and here. I tend to agree with Rick that this is a NWC "bug", but as he says above, perhaps it's possible to check the staff properties to see if it is muted, and suppress the MIDI events under that condition.

EDIT: There is a method available for checking staff properties. For example:
Code: (lua) [Select · Download]
print (nwcdraw.getStaffProp("Muted"))
will return true/false based on the Muted checkbox for staff properties. Unfortunately, I cannot invoke nwcdraw() methods in the Play event handler, so there does not seem to be a reliable way to check for this, outside of something kludgy like checking for mute during the Draw event, storing that value in a global variable, and then checking that variable during the Play event.

Re: Arpeggio.ms (2.0c)

Reply #79
It occurred to me this morning - struggling once again with the arpeggio object and ties - that a handy user object to have would be one that simply sent an "All Notes Off" command.

Re: Arpeggio.ms (2.0c)

Reply #80
It occurred to me this morning - struggling once again with the arpeggio object and ties
I assume that "It" is a stuck note. This will produce a "note off" to stop it:
Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|Note|Dur:Whole,Grace|Pos:0^|Opts:Muted|Visibility:Never
|Note|Dur:Whole,Grace|Pos:0|Visibility:Never
|Rest|Dur:64th
!NoteWorthyComposerClip-End
The above produces this MIDI output:
Code: (mtx) [Select · Download]
1 On ch=1 n=71 v=0
The rest will be mostly unneeded. It is there only because grace notes at the end of the song are ignored by NoteWorthy.
Registered user since 1996

Re: Arpeggio.ms (2.0c)

Reply #81
Rick, I haven't tried your kludge yet, but I'm assuming from what I'm seeing in it that it only stops notes on specific pitches. That's helpful. But what I'm looking for is something generic that can simply be placed anywhere in the score you want everything to stop playing.

Re: Arpeggio.ms (2.0c)

Reply #82
I'm looking for is something generic that can simply be placed anywhere in the score you want everything to stop playing.
What you wanted was obvious. I just added what you might do.
Registered user since 1996

Re: Arpeggio.ms (2.0c)

Reply #83
I can fix this with a layer, of course, but I don't think I should need to.
This seems to work:
Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|Clef|Type:Treble
|Instrument|Name:"Acoustic Grand Piano"|Patch:0|Trans:0|DynVel:10,30,45,60,75,92,108,127|Pos:16.5
|Note|Dur:Half,Dotted,Slur|Pos:8^|Opts:Stem=Down
|Bar
|Dynamic|Style:p|Pos:-9|Justify:Center|Placement:AtNextNote
|Note|Dur:4th,Grace|Pos:-3^|Visibility:Never
|Note|Dur:4th,Grace|Pos:-1^|Visibility:Never
|Note|Dur:4th,Grace|Pos:1^|Visibility:Never
|User|Arpeggio.ms|Pos:-4|Play:N
|Chord|Dur:4th,Grace|Pos:-3^,b3^|Visibility:Never
|Chord|Dur:Half,Dotted|Pos:8^|Opts:Stem=Up|Dur2:Half,Dotted|Pos2:-3^,-1^,1^,b3^
|Bar
|TimeSig|Signature:12/8
|TempoVariance|Style:Fermata|Pause:0|Pos:14.5|Justify:Center|Placement:AtNextNote
|Chord|Dur:Whole,Dotted|Pos:8|Opts:Stem=Up|Dur2:Whole,Dotted|Pos2:-3,-1,1,3
!NoteWorthyComposerClip-End
Registered user since 1996

Re: Arpeggio.ms (2.0c)

Reply #84
All,

I've been back from vacation for a while, but I got side-tracked on this issue. In the meanwhile, there are some other developments that "tie into" this issue (pun intended).  Namely, the issue of NWC playing MIDI events on a muted staff has been addressed as of version 2.8 beta 1.

Therefore, I will skip the above kludge to check for a muted staff, but I will implement the change to suppress arpeggio playback on notes that have a "tie in" from a previous note. I previously commented that this approach could cause a slight gap in the playback of an arpeggio if there were tied-in notes in the interior of the chord. However, I don't think this would occur that often in scores, so I am opting for the KISS principle and going for the less complicated approach, that doesn't require yet another object setting.

Thank you all for your support and feedback.

Mike

Re: Arpeggio.ms (2.1)

Reply #85
The Arpeggio.ms object has been updated, with the following changes:

  • Suppress playback of notes that are tied in from a prior note.

Please refer to the parent post for additional information.


Side effects

Reply #86
When there is a suite of arpeggios on the same notes and the arpeggios must be played anticipated, then the note off of the previous notes arrive after the note on of the anticipated following arpeggio, leaving only the topmost note with an awful effect.
Try this:
Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|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
|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:-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
|User|Arpeggio.ms|Pos:-3|Offset:0|Anticipated:Y
|Chord|Dur:Whole|Pos:-6,-3,-1,1,4|Opts:Muted
!NoteWorthyComposerClip-End
Any idea on how to circumvent this without big impact on the visible score (beside using a playing hidden layer, of course)?

Re: Side effects

Reply #87
When there is a suite of arpeggios on the same notes and the arpeggios must be played anticipated, then the note off of the previous notes arrive after the note on of the anticipated following arpeggio, leaving only the topmost note with an awful effect.
Try this:
{snip}
Any idea on how to circumvent this without big impact on the visible score (beside using a playing hidden layer, of course)?
Congratulations! You've found a bug that has been in the plugin almost forever! I'm trying to figure out how the best way to fix this.

As a side note, the same bug is present in the GuitarChord.ms object, when you select consecutive chords with the same final note and anticipated playback (which is not surprising since the code is almost identical for strum playback).

Thanks,
Mike

Re: Arpeggio.ms (2.1)

Reply #88
Mike, it's hard to call it a bug.
I would be a bug if the arpeggios where a built-in feature, but being an extra (i.e. a plugin) I think it's hard to modify what happens "elsewere" in the score, out of the control of the plugin.
Of course I'll be glad to be disproved...  :)

Re: Side effects

Reply #89
When there is a suite of arpeggios on the same notes and the arpeggios must be played anticipated, then the note off of the previous notes arrive after the note on of the anticipated following arpeggio ...
Any idea on how to circumvent this without big impact on the visible score (beside using a playing hidden layer, of course)?
Perhaps:
Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|Bar
|User|Arpeggio.ms|Pos:-3|Anticipated:Y
|RestChord|Dur:Half,DblDotted|Opts:Stem=Up,Muted,HideRest|Dur2:Whole|Pos2:-6,-3,-1,1,4
|Rest|Dur:8th|Opts:Stem=Up|Visibility:Never
!NoteWorthyComposerClip-End
It appears that Arpeggio.ms uses Dur to time the note off and ignores Dur2
Registered user since 1996

Re: Arpeggio.ms (2.1)

Reply #90
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":
Code: [Select · Download]
       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:
Code: (nwc) [Select · Download]
!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

Re: Arpeggio.ms (2.1)

Reply #91
Rick the wizard strikes again.
How to exploit a "bug" for something useful.  :)
Rick, you're incredible!
Thank you.

Quote
I can't think of an easy way to fix this.
Alas, so do I.

Re: Arpeggio.ms (2.2)

Reply #92
The Arpeggio.ms object has been updated, with the following changes:

  • Inserting a new arpeggio will now copy parameter values from a previous instance in the current staff.

Please refer to the parent post for additional information.


Re: Arpeggio.ms (2.2)

Reply #93
Talk about "Service with a smile"...  Thanks Mike, I'm sure Joel will be very appreciative!
I plays 'Bones, crumpets, coronets, floosgals, youfonymums 'n tubies.


Re: Arpeggio.ms (2.2a)

Reply #95
The Arpeggio.ms object has been updated, with the following changes:

  • The embedded "Toggle" user tool will now clone parameter values from a prior arpeggio. Those preferring the original tool behavior can use "Toggle (old)".

Please refer to the parent post for additional information.

Re: Arpeggio.ms (2.3)

Reply #96
The Arpeggio.ms object has been updated to version 2.3, with the following change:

  • The embedded "Toggle" and "Toggle (old)" user tools have been updated, courtesy of @Flurmy, so that they will insert arpeggios on multiple chords in a selection. My thanks to him for making this addition available.