Skip to main content
Topic: TremoloSingle.ms (2.1) (Read 9440 times) previous topic - next topic

TremoloSingle.ms (2.1)

This object implements a single note tremolo, as described in various texts. It draws the tremolo markings, and will optionally play the notes in tremolo style.

To create the tremolo, insert the object immediately before the note to receive the tremolo, and the marking will be drawn on the note's stem, or above/below a whole (semibreve) note. The note can be any chord or RestChord.

The following parameters control the appearance and playback of the tremolo:

Number of Beams: Specifies the number of beams to be drawn, between 1 and 4. The default value is 3. The number of beams for a tremolo can also be modified by highlighting the object and pressing the + or - keys.
Vertical Offset: Specifies an optional offset distance for the location of the beam(s). For stemmed notes, positive values move the beams away from the stem tip and toward the note head. For unstemmed (whole) notes, positive values move the beams away from the note head. The default value is 0.
Play Notes: Enables playback of the tremolo. Default value is checked. Note that the notes/chords should be muted for proper playback.
Triplet Playback: Specifies that the playback notes should be in triplet rhythm. This will generally be used when the tremolo notes are dotted. Default value is unchecked.
Split Chord Member: Specifies which split chord member (top or bottom) should receive the tremolo marking and be played. This parameter is ignored for non-split chords and rest chords. The default value is "top".

For eighth through 64th notes, the tremolo beams will be auto-positioned to avoid collision with the note's beam or flag.  If additional space is needed to accommodate a larger number of beams, increase the note's stem length, and/or specify an Offset value if desired.

The following sample clip will get you started. The screen shot demonstrates various types of tremolos, with the bottom staff indicating the actual notes that are played.

Code: (nwc) [Select · Download]
!NoteWorthyComposer(2.75)
|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
|TimeSig|Signature:4/4
|User|TremoloSingle.ms|Pos:0|Beams:3|Offset:0|Play:Y
|Note|Dur:4th|Pos:0|Opts:Stem=Down,Muted
|User|TremoloSingle.ms|Pos:0|Beams:2|Offset:0|Play:Y
|Note|Dur:8th|Pos:1|Opts:Stem=Down,StemLength=8,Beam=First,Muted
|User|TremoloSingle.ms|Pos:0|Beams:2|Offset:0|Play:Y
|Note|Dur:8th|Pos:3|Opts:Stem=Down,StemLength=8,Beam=End,Muted
|User|TremoloSingle.ms|Pos:0|Beams:2|Offset:0|Play:Y
|Note|Dur:Half|Pos:-2|Opts:Stem=Up,Muted
|Bar
|User|TremoloSingle.ms|Pos:0|Offset:0|Beams:2|Play:Y
|Chord|Dur:Whole|Pos:1,2|Opts:Stem=Down,StemLength=6,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:Treble
|TimeSig|Signature:4/4
|Note|Dur:32nd|Pos:2|Opts:Stem=Down,Beam=First
|Note|Dur:32nd|Pos:2|Opts:Stem=Down,Beam
|Note|Dur:32nd|Pos:2|Opts:Stem=Down,Beam
|Note|Dur:32nd|Pos:2|Opts:Stem=Down,Beam
|Note|Dur:32nd|Pos:2|Opts:Stem=Down,Beam
|Note|Dur:32nd|Pos:2|Opts:Stem=Down,Beam
|Note|Dur:32nd|Pos:2|Opts:Stem=Down,Beam
|Note|Dur:32nd|Pos:2|Opts:Stem=Down,Beam=End
|Note|Dur:16th|Pos:1|Opts:Stem=Down,Beam=First
|Note|Dur:16th|Pos:1|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:3|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:3|Opts:Stem=Down,Beam=End
|Note|Dur:16th|Pos:-2|Opts:Stem=Up,Beam=First
|Note|Dur:16th|Pos:-2|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-2|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-2|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-2|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-2|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-2|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-2|Opts:Stem=Up,Beam=End
|Bar
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam=First
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam
|Chord|Dur:16th|Pos:1,2|Opts:Stem=Down,Beam=End
!NoteWorthyComposer-End

Re: TremoloSingle.ms (version 0.95)

Reply #1
The TremoloSingle.ms object has been updated, with the following changes:

  • Help text is added
  • Minor rendering adjustments

Please refer to the parent post for a description of the available parameters and a sample clip.

As always, feedback and suggestions are greatly appreciated.

Mike

Re: TremoloSingle.ms (version 0.96)

Reply #2
The TremoloSingle.ms object has been updated, with the following changes:

  • Change beam positioning logic for whole notes, for correct "stem side" detection
  • Help text is updated

Please refer to the parent post for a description of the available parameters and a sample clip.

As always, feedback and suggestions are greatly appreciated.

Mike


Re: TremoloSingle.ms (version 1.0)

Reply #3
I have a split chord with tremolo.
I put the "tremolo single" object before the chords and one part is OK.
My idea was to put a second "tremolo single" object before the chords and then forcing it on the other side using the "offset" parameter, but it doesn't work.
Of course I solved putting the two chord on two layered staves, but why not to have the possibility to choose which stem (up or down) will receive the tremolo?

Re: TremoloSingle.ms (version 1.0)

Reply #4
The TremoloSingle object does not work correctly for split voice chords whose durations are different. From what I can tell, it will play all of the notes in tremolo style, but only for the duration of the shorter of the notes/chords. And as you have noticed, it will add the ornament only to the "main" stem.

I will look into adding a way to ornament both stems of a split voice chord.

Re: TremoloSingle.ms (1.1)

Reply #5
The TremoloSingle.ms object has been updated, with the following changes:

  • New parameter added to allow marking and playback of either top or bottom portion of split chords

Please refer to the parent post for a description of the available parameters and a sample clip.

Re: TremoloSingle.ms (1.1)

Reply #6
Thank you, Mike.
By the way: in my case the duration of the notes is the same.
The fact that the chord is splitted is because of... the number of fingers. The lower part is to be played with the left hand while the upper with the right.

Re: TremoloSingle.ms (1.1)

Reply #7
Hi Mike,

This is a slight problem when using tremolo single on a rest chord if the stem direction is set to allow stem down on the note portion of the rest chord. The playback does not play! I don't recall this happening on initial testing but there may have been later changes that have caused this to happen.

Thanks
Rich.

Re: TremoloSingle.ms (1.2)

Reply #8
The TremoloSingle.ms object has been updated, with the following changes:

  • The Split Chord Member parameter is now ignored for rest chord playback - the chord portion will always be used.

Please refer to the parent post for a description of the available parameters and a sample clip.

Re: TremoloSingle.ms (1.2)

Reply #9
How can I select which side of the chord the tremolo marker is shown?
For example, I would like to have the second tremolo marker too above the chord:
Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.75,Single)
|User|TremoloSingle.ms|Pos:-7|Beams:2
|Chord|Dur:Whole|Pos:-3,0,2|Opts:Muted
|Bar
|User|TremoloSingle.ms|Pos:-2.5|Beams:2
|Chord|Dur:Whole|Pos:-2,1,3|Opts:Muted
!NoteWorthyComposerClip-End
No parameter seems to be of help. Vertical offset stops at -5.
I'm overlooking something?

Re: TremoloSingle.ms (1.2)

Reply #10
It uses the stem direction, which can be set on those whole notes. Just flip the stem direction...

Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.75,Single)
|User|TremoloSingle.ms|Pos:-7|Beams:2
|Chord|Dur:Whole|Pos:-3,0,2|Opts:Muted
|Bar
|User|TremoloSingle.ms|Pos:-2.5|Beams:2
|Chord|Dur:Whole|Pos:-2,1,3|Opts:Stem=Up,Muted
!NoteWorthyComposerClip-End

Re: TremoloSingle.ms (1.2)

Reply #11
But... it was the first thing I tried!
Or, at least, it was the first thing I though to try...  :-[

A strong need of holidays, perhaps...

Re: TremoloSingle.ms (1.2)

Reply #12
Ops!
Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.75,Single)
|User|TremoloSingle.ms|Pos:1.5
|Note|Dur:8th|Pos:0|Opts:Stem=Up,Muted
!NoteWorthyComposerClip-End

Re: TremoloSingle.ms (1.2)

Reply #13
That's not technically an "oops"; you have to make sure your note stem is long enough to accommodate the number of bars for the tremolo.

For NWC 2.75a, there will be an embedded user tool that applies (or removes) tremolos from one or more notes. It is possible for the tool to automatically set the stem length when a tremolo is added, but the calculation can be a bit tricky; it depends on whether the note is beamed or flagged, as well as the note's duration. Personally I would rather let the note stem length be adjusted by the user to meet their preference. With the new version of NWC, that is easy to do, using Alt+Up/Down (or using filtered properties if you are adjusting multiple notes).

Re: TremoloSingle.ms (1.2)

Reply #14
Stupid as usual, since the stem length of the 1/4 is long enough I assumed that the same length is OK also for 1/8...
Sorry.

Re: TremoloSingle.ms (2.0d)

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

  • An embedded user tool has been added, which allows tremolo markings to be added or removed for selected notes.
  • Interactive editing of the object's parameters has been added, using the numeric keypad. Please see this post for more information.

Please refer to the parent post for a description of the available parameters and a sample clip.

Re: TremoloSingle.ms (2.0d)

Reply #16
A couple of observations:
  • If you insert a dynamic between the object and the note then it is ignored. Easy not to do it but it can happen accidently.
  • Playback ignores crescendos.

Re: TremoloSingle.ms (2.0d)

Reply #17
A couple of observations:
  • If you insert a dynamic between the object and the note then it is ignored. Easy not to do it but it can happen accidently.
  • Playback ignores crescendos.
The object determines the score's current dynamic variance at the location where the object is placed, and then it will play the tremolo at that volume. If you place the dynamic to the right of the object, it isn't seen, and it will play at the previous volume.

If you want to effect a crescendo/diminuendo for a tremolo, please refer to this discussion for the two-note tremolo object.

Re: TremoloSingle.ms (2.03)

Reply #18
The TremoloSingle.ms object has been updated with the following changes:

  • The range of permissable values for the Offset parameter has been increased from ±5 to ±10.

Please refer to the parent post for a description of the available parameters and a sample clip.


Re: TremoloSingle.ms (2.0e)

Reply #19
Reviving an old question with a slightly different request: how can I use two TremoloSingle objects on the same split chord?
The best a could get (except, of course, using layering) is cheating using text and MusicDingSans as "User 1" font as in the second bar but, of course, no sound.
Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|Text|Text:"o"|Font:User1|Pos:-10.5|Justify:Center|Placement:AtNextNote
!NoteWorthyComposer(2.751)
|Editor|ActiveStaff:1|CaretIndex:1|CaretPos:-1
|SongInfo|Title:""|Author:"<Name>"|Lyricist:""|Copyright1:"Copyright © 2023 <Name>"|Copyright2:"All Rights Reserved"
|PgSetup|StaffSize:16|Zoom:4|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:"MusikDingsSans"|Size:16|Bold:N|Italic:N|CharSet:1
|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
|User|TremoloSingle.ms|Pos:-5.5|Which:bottom
|User|TremoloSingle.ms|Pos:-5|Beams:3
|Chord|Dur:4th|Pos:0|Opts:Stem=Up,Muted|Dur2:Half|Pos2:-3
|User|TremoloSingle.ms|Pos:0|Beams:3
|Note|Dur:4th|Pos:1|Opts:Stem=Up,Muted
|Bar
|Text|Text:"o"|Font:User1|Scale:70|Pos:-10.5|Justify:Center|Placement:AtNextNote
|User|TremoloSingle.ms|Pos:0
|Chord|Dur:4th|Pos:0|Opts:Stem=Up,Muted|Dur2:Half|Pos2:-3
|User|TremoloSingle.ms|Pos:0
|Note|Dur:4th|Pos:1|Opts:Stem=Up,Muted
!NoteWorthyComposer-End
!NoteWorthyComposerClip-End

Re: TremoloSingle.ms (2.0e)

Reply #20
It has taken me a while to refresh my memory on this object I haven't touched in the last 5 years :-)

The first thing I thought of is that it should be possible to include two objects, with "Split Chord Member" set to "top" and "bottom". But there is a bit of code that prevents this from working. I temporarily commented out that bit of code, and then NWC will draw and play the tremolo for both members.

But then I discovered a bug, which is actually mentioned earlier in this thread: when there is a split chord with different note lengths, the tremolo duration will always be the shorter note length.  This bug can be fixed, but there are few things worth discussing first.
  • When there is a split chord with a tremolo on one member, you would expect the tremolo to play on that note, and the other note to play normally. Unfortunately, this doesn't happen because part of using the tremolo object is muting the note/chord. Thus, the non-tremolo note does not currently play.
  • If there is a reasonable expectation that a tremolo would be applied to both members of a split chord, then perhaps it would make sense to have a third choice for the Split Chord Member parameter, of "both". Then only a single object would be needed.
My own general feeling is that split chords are the red-headed stepchild of NWC, and have a number of limitations, such as the inability of having beams on both members and the inability to independently control stem length and articulations on each member. (I am sure there are more). I am reminded of many comments by dearly departed member Rick G. who stated that separate layers were the proper way to handle multiple parts on the same staff, since all of those shortcomings could be avoided. With that said, perhaps it is not worth reworking the tremolo code to deal with the split chord anomalies.  Comments? Suggestions?

Re: TremoloSingle.ms (2.0e)

Reply #21
Not only are split chords stepchilds (but still useful; even more so with rest chords with invisible rests) and hence tremolos on them of medium importance, I don't know of any instrument that would (more or less easily) be able to play differently long tremolos - yes, of course one can do this with two hands on a piano or harp, and with very versatile fingers maybe even with one hand ... but ... who, when, where? I'd suggest to live with the limitations.

H.M.

Re: TremoloSingle.ms (2.0e)

Reply #22
<snip>
I don't know of any instrument that would (more or less easily) be able to play differently long tremolos
<snip>
Limited use case, but I can imagine it for divisi parts...

Layering is still the best answer (generally) IMHO
I plays 'Bones, crumpets, coronets, floosgals, youfonymums 'n tubies.

Re: TremoloSingle.ms (2.0e)

Reply #23
Limited use case, but I can imagine it for divisi parts...
Yes indeed. See attachment (violas).

Since it seems that the big problem is in the sound, is should be simple to have at least the gliph.

Re: TremoloSingle.ms (2.0e)

Reply #24
Since it seems that the big problem is in the sound, is should be simple to have at least the gliph.
If you aren't concerned about playback, you can make a small code change in the plugin to allow two user objects to precede a split chord. Go to line 98:
Code: (lua) [Select · Download]
if (idx:userType() == userObjTypeName) then return false end
Add "--" to the start of the line to comment it out (or, if you are brave, you can delete it)
It will now display and play a tremolo for both sides of the chord, but as previously noted, the longer duration note will play too short.
I haven't thoroughly tested this change to know if there are any side effects, but I suspect that it will work fine.

EDIT: You can disregard this hack, I went ahead and made an update.

Re: TremoloSingle.ms (2.1)

Reply #25
The TremoloSingle.ms object has been updated to version 2.1, with the following changes:

  • Enable multiple objects to ornament and play for both ends of a split chord.
  • Correct tremolo duration for the longer side of a split chord.

Re: TremoloSingle.ms (2.1)

Reply #26
Wow! Thank you, Mike.

For the records: in the score I attached I simply switched the soundfont to "tremolo strings".  :D
That's why I wasn't concerned with the sound.

Re: TremoloSingle.ms (2.1)

Reply #27
Hi Mike,
I just played back an old score that uses TremoloSingle.ms and got the following error from the updated version:
157: attempt to perform arithmetic on a nil value
and the object was suspended

The old version worked perfectly

This is a sample of a section of the score where the object is used.  Instrument is a Glockenspiel and is the only staff with this object in use - it appears 19 times.
Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|Note|Dur:8th|Pos:-1|Opts:Stem=Up,Beam=First
|Note|Dur:8th|Pos:0|Opts:Stem=Up,Beam=End
|Note|Dur:4th,Staccato|Pos:1
|Note|Dur:8th,Accent|Pos:-2|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:3|Opts:Stem=Down,Beam=End
|Rest|Dur:8th
|Note|Dur:8th,Slur,Accent|Pos:2^
|Bar
|User|TremoloSingle.ms|Pos:0
|Note|Dur:Whole,Slur,Accent|Pos:2|Opts:Muted
!NoteWorthyComposerClip-End
I plays 'Bones, crumpets, coronets, floosgals, youfonymums 'n tubies.

Re: TremoloSingle.ms (2.1)

Reply #28
Hi Mike,
I just played back an old score that uses TremoloSingle.ms and got the following error from the updated version:
157: attempt to perform arithmetic on a nil value
and the object was suspended

The old version worked perfectly

This is a sample of a section of the score where the object is used.  Instrument is a Glockenspiel and is the only staff with this object in use - it appears 19 times.
Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|Note|Dur:8th|Pos:-1|Opts:Stem=Up,Beam=First
|Note|Dur:8th|Pos:0|Opts:Stem=Up,Beam=End
|Note|Dur:4th,Staccato|Pos:1
|Note|Dur:8th,Accent|Pos:-2|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:3|Opts:Stem=Down,Beam=End
|Rest|Dur:8th
|Note|Dur:8th,Slur,Accent|Pos:2^
|Bar
|User|TremoloSingle.ms|Pos:0
|Note|Dur:Whole,Slur,Accent|Pos:2|Opts:Muted
!NoteWorthyComposerClip-End

I am reverting the object back to version 2.0f (basically the same as 2.0e but it will allow multiple tremolo ornaments on a split chord). My latest change,  which was to correct playback for split chords, has introduced a bug when the tremolo note has duration modifiers such as dots, slurs, articulations and possibly other attributes (basically, anything that can show up in the "Dur" or "Dur2" properties).  I apologize for not testing this change more thoroughly.

Re: TremoloSingle.ms (2.1)

Reply #29
Thanks for the quick followup.
I plays 'Bones, crumpets, coronets, floosgals, youfonymums 'n tubies.

Re: TremoloSingle.ms (2.0f)

Reply #30
The TremoloSingle.ms object has been rolled back from 2.1, to 2.0f, with the following change:

  • Original tremolo duration logic is restored for split chords. The function I was attempting to use for split chord durations has "issues" and will required additional investigation.

Note that the reverted version still has the fix to allow separate tremolo ornaments for both sides of a split chord. Playback is the only thing that doesn't work correctly, but I assume this is better than having an object that crashes.

Re: TremoloSingle.ms (2.1)

Reply #31
Would something like the following work, for line 157?
Code: [Select · Download]
	local fini = idx:sppOffset() + nwcplay.calcDurLength(idx:durationBase(t.Which == 'bottom' and 1 or idx:noteCount())) - 1
At least, it seems to play both the attached scores correctly ...

H.M.

Re: TremoloSingle.ms (2.1)

Reply #32
Would something like the following work, for line 157?
Code: [Select · Download]
	local fini = idx:sppOffset() + nwcplay.calcDurLength(idx:durationBase(t.Which == 'bottom' and 1 or idx:noteCount())) - 1
At least, it seems to play both the attached scores correctly ...

H.M.
That will indeed work for many notes and chords, but not all. The problem with the nwcplay.calcDurLength() method is that it requires a "plain" note duration type, such as Half, 4th, 8th, etc.  If the note happens to be dotted, then the calculated duration will be too short. The older (current) code gets the sppOffset() before and after the tremolo note/chord, which takes the dotted duration into account. But alas, the problem with using the before/after calculation is that a split chord or RestChord with different durations will "take up" the shorter of the two durations, so if the tremolo happens to be for the longer duration of the two, it will play too short. Using CalcDurLength() would have solved this problem, if returned durations of "Half,Dotted", "Half,DblDotted", etc. had been acceptable parameter values. (It gets messier... I'll elaborate if you are interested.)

Let me know if the above makes sense.

Re: TremoloSingle.ms (2.1a)

Reply #33
The TremoloSingle.ms object has been updated to 2.1a, with the following change:

  • Tremolo playback duration is now correct for both members of split chords.

Thank you to @hmmueller for putting me on the right track toward getting this annoying issue fixed. :)

Re: TremoloSingle.ms (2.1)

Reply #34
Let me know if the above makes sense.
Unfortunately, it does  :'( Dot lengthened could be added, with a call to idx:isDotted() - but there's more? - ah, I posted in the same second as your 2.1a message  :D

... edit: Looks good!

H.M.