Skip to main content

Topic: Repeat all (Read 411 times) previous topic - next topic

Repeat all
I think someone already asked this and someone (else  :) ) solved the problem, but I can't find the relevant thread.

Simply stated: I want to repeat a big part of a score from the beginning, including the repeats with special endings, up to Fine.
In symbols: A ||: B | B1 :|| B2 || C (Fine) | D (DC al Fine),
where B1 and B2 are special endings of B.
What I want is: A | B | B1 | B | B2 | C | D | A | B | B1 | B | B2 | C,

Someone has a good idea?

Re: Repeat all
Reply #1
Code: (nwc) [Select · Download]
!NoteWorthyComposer(2.751)
|Editor|ActiveStaff:1|CaretIndex:21|SelectIndex:1|CaretPos:-13
|AddStaff|Name:"Staff"
|StaffProperties|EndingBar:Open (hidden)|BoundaryBottom:24
|Lyrics|Align:Standard Rules
|Lyric1|Text:"A B B1 B2 C D\n"
|Lyric2|Text:"A B B1 B2 C D\n"
|Lyric3|Text:"A B B1 B2 C D\n"
|Ending|Endings:1,3|Visibility:Never
|Note|Dur:Half|Pos:-1
|Bar
|Ending|Endings:1,2,3,4|Visibility:Never
|Note|Dur:Half|Pos:b0
|Bar
|Ending|Endings:1,3|Visibility:Never
|Note|Dur:Half|Pos:0
|Bar
|Ending|Endings:2,4|Visibility:Never
|Note|Dur:Half|Pos:0
|Bar
|Ending|Endings:2,4|Visibility:Never
|Note|Dur:Half|Pos:1
|Bar
|Ending|Endings:2|Visibility:Never
|Note|Dur:Half|Pos:2
|Ending|Endings:1,2,3|Visibility:Never
|Bar|Style:MasterRepeatClose|Visibility:Never
|Bar|Style:SectionClose
Midi2Txt says the Lyrics come out like this:
Quote
0 Meta Lyric "A "
384 Meta Lyric "B "
768 Meta Lyric "B1 "
1152 Meta Lyric "B "
1536 Meta Lyric "B2 "
1920 Meta Lyric "C "
2304 Meta Lyric "D "
2304 Meta Lyric "\r"
2304 Meta Lyric "\n"
2688 Meta Lyric "A "
3072 Meta Lyric "B "
3456 Meta Lyric "B1 "
3840 Meta Lyric "B "
4224 Meta Lyric "B2 "
4608 Meta Lyric "C "
Registered user since 1996

Re: Repeat all
Reply #2
Thanks, Rick, that's perfect for the sound, but what's wrong is the appearance.
How can a poor musician read that?  :)

Re: Repeat all
Reply #3
This is my general opinion about NWC's method of controlling flow. In short, except for simple and straight-forward cases, I've never been able to get the hang of flow control. Rick and others have demonstrated that you can achieve almost any conceivable flow (and even some inconceivable ones) by just using special endings and repeats.  One would think that using actual "DC al Fine" or similar directives would be part of these solutions, but for some reason, they have other behaviors or side effects, so it's easier to just use special endings for everything.  But that doesn't give easily readable music, as Flurmy points out.

I've been told that a way to visualize things is to think of the special endings as "if/then/else" and repeats as loops or "goto" statements. In other words, think of them a programming statements. It's funny to me that I have been able to create user tools and plugins, but that NWC's flow control directives still baffle me.

Re: Repeat all
Reply #4
Most probably, NWC's flow control is Turing complete  ;) - so there's no way to decide whether it does what you want or not ...
Seems like an exercise for a course in formal languages - which I took, decades ago, and was quite good at it. But not at ... well, you know.

Ok - not a helpful answer, I know.

H.M.

Re: Repeat all
Reply #5
Haven't tried it with this particular problem, but the standard NWC way to deal with something like this would be to do it Rick's way on hidden staves and do it the human musician's way on visible but muted staves. It can be annoying, especially a few years later when you go to edit the music and forget the hidden staves are there. But it does usually work.

Re: Repeat all
Reply #6
I stand to be corrected on this, but my understanding is that NWC's repeats (excluding "local repeats") follow the classic approach:
All repeats are active, using the appropriate n-time bar (special ending) based on the count of how many repeats have occurred for each repeated section UNTIL a D.C. or D.S. are reached, in which case all repeats are ignored and the n-time bar that has a "D" directive is used for each otherwise repeated section.  This is a departure from normal notation in that a "D" repeat doesn't actually exist but is used by NWC to denote the n-time bar (special ending) that should be used after the D.C. or D.S.  Also note that n-time bars (special endings) are terminated by ANY decorated barline.

The repeat counter becomes active again when you enter a CODA.

This approach is fine if all you notate are classical style works that fit this model.  Not so good for, say, jazz where repeats are usually (but not always - just to confuse things) active after a D.C. or D.S.

I once proposed a change to allow for a setting of some kind that allowed for n-time bars to be active AFTER a D.C. or D.S. but nothing eventuated.  I seem to recall a comment about it taking a major re-write of the playback engine to implement.  Anyhow, this would have allowed Flurmy's dilemma to be easily resolved.

I recall someone (I think RickG) also asking that double barlines NOT terminate n-time bars.  I think this would be more useful if it could be done with a flag of some kind, say as a barline property, that optionally prevented this behaviour.

I've also suggested that a double D.S. and Codetta (double Coda) would also be useful.  I see these things about once or twice a year in works that I play and sometimes need to transpose.  For display purposes they are easily enough entered as text, but playback would be nice, however not nice enough to make me want to notate around it  ;)
  • Last Edit: 2020-04-14 12:07 am by Lawrie Pardy
I plays 'Bones, crumpets, coronets, floosgals 'n youfonymums - gonna lern tubies next

Re: Repeat all
Reply #7
I recall someone (I think RickG) also asking that double barlines NOT terminate n-time bars.  I think this would be more useful if it could be done with a flag of some kind, say as a barline property, that optionally prevented this behaviour.

There was this post I made a few years back, that suggested adding a new property for bars to disable their flow behavior. This would also allow a "decorative" repeat bar line. It seems to me that a new property that allowed any bar line type to behave like a single bar line would not be too difficult to implement.

Re: Repeat all
Reply #8
... "decorative" repeat bar line. ...

For the time being, we could provide a decorative bar object - see my start to write such a thingy in the attachment. Together with Rick's "behind the scenes control flow", this could be helpful in some cases ...

H.M.

Re: Repeat all
Reply #9
A double bar line can easily be simulated by using two single ones and a spacer. Tedious but workable.
And the bar count is unaffected.

Re: Repeat all
Reply #10
For the time being, we could provide a decorative bar object - see my start to write such a thingy in the attachment. Together with Rick's "behind the scenes control flow", this could be helpful in some cases ...

H.M.
I've experimented with the preliminary object a bit, and I have a couple observations:
  • The object doesn't seem to render the broken (dashed) bar lines. This does not appear to be the fault of the object's code, but rather the plugin API function that is used for drawing bar lines.
  • I notice that there is logic for extending the bar lines when a staff has "connect bar lines" specified. However, the current logic is incorrect; the staff setting controls whether bar lines should be connected to the following staff, and the current code connects both upward and downward. In order to know whether a bar line should be extended upward, you would need to examine the "connect bar lines" setting for the prior staff. I'm not sure how to do this, except perhaps to employ a global variable (which sounds a bit dodgy to me). Alternately, a "connect to previous" property could be added
Aside from these issues, this looks like a promising approach.

Re: Repeat all
Reply #11
I'd have thought that in most cases you would want the decorated bar line on each stave, so to my simple mind you'd need an object on each stave to draw the line downwards only, just as 'bars connected' does at present.

Can you take the property from the current staff? In which case just use that. And I'm not sure how to handle the bottommost staff - we don't want lines drawn downwards from it :-[

Re: Repeat all
Reply #12
A double bar line can easily be simulated by using two single ones and a spacer.
To give to Caesar what belongs to Caesar, long ago Lloyd proposed this:
Code: (nwc) [Select · Download]
!NoteWorthyComposer(2.751)
|Editor|ActiveStaff:1|CaretIndex:1|CaretPos:-4
|SongInfo|Title:"Fake master repeat"|Author:"Lloyd"|Lyricist:""|Copyright1:""|Copyright2:""
|PgSetup|StaffSize:16|Zoom:5|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:Open (hidden)|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
|Text|Text:"  "|Font:StaffSymbols|Pos:0|Justify:Center|Placement:AtNextNote
|Bar|Style:SectionOpen
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:0
|Text|Text:"  "|Font:StaffSymbols|Pos:0|Justify:Center|Placement:AtNextNote
|Bar|Style:SectionClose
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-4
|Bar
|Text|Text:""|Font:StaffSymbols|Pos:-3|Placement:AtNextNote
|Text|Text:""|Font:StaffSymbols|Pos:-1|Placement:AtNextNote
|Text|Text:""|Font:StaffSymbols|Pos:1|Placement:AtNextNote
|Text|Text:""|Font:StaffSymbols|Pos:3|Placement:AtNextNote
|Text|Text:" "|Font:StaffSymbols|Scale:90|Pos:-3.5|Placement:AtNextNote
|Text|Text:" "|Font:StaffSymbols|Scale:90|Pos:-2|Placement:AtNextNote
|Text|Text:" "|Font:StaffSymbols|Scale:90|Pos:0|Placement:AtNextNote
|Text|Text:" "|Font:StaffSymbols|Scale:90|Pos:2|Placement:AtNextNote
|Text|Text:"   "|Font:StaffSymbols|Scale:90|Pos:0|Justify:Center|Placement:AtNextNote
|Bar
|Spacer|Width:300
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:0
|Spacer|Width:300
|Text|Text:""|Font:StaffSymbols|Pos:-3|Justify:Right|Placement:AtNextNote
|Text|Text:""|Font:StaffSymbols|Pos:-1|Justify:Right|Placement:AtNextNote
|Text|Text:""|Font:StaffSymbols|Pos:1|Justify:Right|Placement:AtNextNote
|Text|Text:""|Font:StaffSymbols|Pos:3|Justify:Right|Placement:AtNextNote
|Text|Text:" "|Font:StaffSymbols|Scale:90|Pos:-3.5|Justify:Right|Placement:AtNextNote
|Text|Text:" "|Font:StaffSymbols|Scale:90|Pos:-2|Justify:Right|Placement:AtNextNote
|Text|Text:" "|Font:StaffSymbols|Scale:90|Pos:0|Justify:Right|Placement:AtNextNote
|Text|Text:" "|Font:StaffSymbols|Scale:90|Pos:2|Justify:Right|Placement:AtNextNote
|Text|Text:"   "|Font:StaffSymbols|Scale:90|Pos:0|Justify:Center|Placement:AtNextNote
|Bar
!NoteWorthyComposer-End

Re: Repeat all
Reply #13
I've experimented with the preliminary object a bit, and I have a couple observations: ... Aside from these issues, this looks like a promising approach.
Thanks for reply ... it seems this will become even "kludgier" than I intended. Still, I'll try to complete it - will take a few days, as work (in a healthcare sector) is more than ever ...

H.M.

Re: Repeat all
Reply #14
A "decorative" object for repeat and double bar lines is now available in this thread.

H.M.

Re: Repeat all
Reply #15
   Something - especially for Rick - to help you all while away the Lock-down.  [:-)]

   I have a string of (meaningless) notes (Les Moutons de Panurge) -

   https://www.youtube.com/watch?v=oR7KOncoYOc

They are to be played as a sequence - 1 - 1,2 - 1,2,3 - 1,2,3,4 - which keeps repeating going back to the start and playing up to the next note, and so on.  Much like the attached.

   I can see how to do it with special endings, but ... we're limited, are we not, to 7 of them, and I need ... 140-odd.  The best I can do is include a duplication of the notes (green) in batches of 7, 14, 21, and so on, each followed by another 7 special endings.  Can you think of a better way?

       MusicJohn, 24/Apr/20

Re: Repeat all
Reply #16
Les Moutons de Panurge remembers me Clapping Music by Steve Reich.
Every time I tried to "play" Clapping with my daughter we got lost, but there it's not contemplated!