Skip to main content
Topic: Another flow control issue (Read 5528 times) previous topic - next topic

Another flow control issue

Reckon I've got a bug here:
Code: [Select · Download]
!NoteWorthyComposerClip(2.0,Single)
|Clef|Type:Treble
|Key|Signature:C
|TimeSig|Signature:Common
|Bar|Style:MasterRepeatOpen
|Note|Dur:4th|Pos:-6
|Note|Dur:4th|Pos:-5
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-3
|Bar
|Note|Dur:4th|Pos:-2
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:1
|Bar|Style:MasterRepeatClose
|Note|Dur:4th|Pos:4
|Note|Dur:4th|Pos:3
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Bar
|Ending|Endings:1
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Flow|Style:DaCapo|Pos:7|Justify:Right|Placement:AtNextNote
|Bar
|Ending|Endings:2,D
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar|Style:Double
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-5
|Note|Dur:4th|Pos:-6
!NoteWorthyComposerClip-End

The n time bars never play - doesn't matter whether there is a Master repeat close at the end of the 1st time bar or not...

BTW, this is a real world example - except for the "tune" of course.
I plays 'Bones, crumpets, coronets, floosgals, youfonymums 'n tubies.

Re: Another flow control issue

Reply #1
You'd better do like this:
Code: [Select · Download]
!NoteWorthyComposerClip(2.0,Single)
|Clef|Type:Treble
|Key|Signature:C
|TimeSig|Signature:Common
|Bar|Style:LocalRepeatOpen
|Note|Dur:4th|Pos:-6
|Note|Dur:4th|Pos:-5
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-3
|Bar
|Note|Dur:4th|Pos:-2
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:1
|Bar|Style:LocalRepeatClose|Repeat:2
|Note|Dur:4th|Pos:4
|Note|Dur:4th|Pos:3
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Bar
|Ending|Endings:1
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Flow|Style:DaCapo|Pos:7|Justify:Right|Placement:AtNextNote
|Bar
|Ending|Endings:2,D
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar|Style:Double
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-5
|Note|Dur:4th|Pos:-6
!NoteWorthyComposerClip-End
NWC User since 2008

Re: Another flow control issue

Reply #2
Thanks Sesirine,
but I want the normal repeat signs, AND, I believe the structure should be possible.

Basically I'm reporting a shortcoming in the software, not looking for a work around in this case.

Nevertheless, I appreciate your suggestion, thank you.
I plays 'Bones, crumpets, coronets, floosgals, youfonymums 'n tubies.

Re: Another flow control issue

Reply #3
Lawrie

Here's a solution - but since I'm not exactly sure of the requirement - I can't be sure .


Code: [Select · Download]
!NoteWorthyComposerClip(2.0,Single)
|Clef|Type:Treble
|Key|Signature:C
|TimeSig|Signature:Common
|Bar|Style:MasterRepeatOpen
|Note|Dur:4th|Pos:-6
|Note|Dur:4th|Pos:-5
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-3
|Bar
|Note|Dur:4th|Pos:-2
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:1
|Bar|Style:MasterRepeatClose
|Bar|Style:MasterRepeatOpen|Visibility:Never
|Note|Dur:4th|Pos:4
|Note|Dur:4th|Pos:3
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Bar
|Ending|Endings:1
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Flow|Style:DaCapo|Pos:7|Justify:Right|Placement:AtNextNote
|Bar|Style:MasterRepeatClose|Visibility:Never
|Bar
|Ending|Endings:2,D
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar|Style:Double
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-5
|Note|Dur:4th|Pos:-6
!NoteWorthyComposerClip-End
Rich.

Re: Another flow control issue

Reply #4
Of course!

Thanks Rich.  Still, as I said to Sesirine, this structure should be possible.  Poor Eric, I can be so demanding at times - I seem to relatively often whinge about flow control issues...

I plays 'Bones, crumpets, coronets, floosgals, youfonymums 'n tubies.

Re: Another flow control issue

Reply #5
Poor Eric, I can be so demanding at times <snip>

So can I. The worst thing if NWC (I think) is Controller.
There's only sustain pedal, no soft pedal.
Another program I'm using is really good for making sound.
Sometimes I really complain about NWC option. I really have to skip.
NWC User since 2008

Re: Another flow control issue

Reply #6
I reckon that it is not with NoteWorthy.
NoteWorthy has rules. It does not read minds.

NoteWorthy maintains a counter, initialized to 1.
When it encounters a Master Repeat Close it increments the counter.

When it hits the first Special Ending, counter=3
Finding no Special Endings marked 3, it skips to the next bar that has no Special Ending.
This is the double bar. A double bar terminates a Special Ending.

NoteWorthy highlights the Lyric equal to the counter.
For your clip, it may help to create 3 or 4 Lyrics and copy this into each of them:
Quote
1 x x x 2 x x x 3 x x x 4 x x x 5 x x x 6 x x x 7 x x x 8 x x x 9 x x x

An invisible Section Open (or Close) after the Master Repeat Close will reset the counter back to 1.
This may be what you want. I can't be sure as I don't read minds either.
Registered user since 1996

Re: Another flow control issue

Reply #7
G'day Rick,
thanks for your reply Rick.  I do have a reasonable idea of how NWC performs flow control, though your description does clarify one thing for me.  Nevertheless, should not the counter have been reset when the MRC without a special ending was encountered?  IMHO, the first special ending with the DC should have been executed regardless.

In addition, and not shown in my example, the real work also has a DS al Coda later in the work, but there is a whole bunch of stuff that also doesn't play because there is a To Coda directive well before it.  Because of the DC the To Coda directive is followed despite the fact it is NOT a DC al Coda.  This is another of my pet irritations: DS and DC should NOT behave the same way as a DS al Coda or a DC al Coda.  Currently they do.
I plays 'Bones, crumpets, coronets, floosgals, youfonymums 'n tubies.

Re: Another flow control issue

Reply #8
should not the counter have been reset when the MRC without a special ending was encountered? 
I honestly don't know. Flow instuctions in music do not seem to be as clearly defined as, say, branch instructions in a programming language.  Resetting the counter explicitly works and that is good enough for me.

DS and DC should NOT behave the same way as a DS al Coda or a DC al Coda.  Currently they do.
True. NoteWorthy seems to use one flag to indicate that any of those have been "seen".  That is a bit restrictive.

I would not want to write the code for a full implimentation. Incomplete nesting, cross-nesting and infinte loops would all need to be defended against.

I would be happy if NWC2 would simply allow me to "roll my own text" in the Special Ending and have an "ignore on playback" flag on the Bar and Flow objects.
Registered user since 1996

Re: Another flow control issue

Reply #9

I found it interesting to add a master repeat close to the end of Lawrie's example.  It causes the first two bars to be played five times on this repeat.


Re: Another flow control issue

Reply #10
I found it interesting to add a master repeat close to the end of Lawrie's example.  It causes the first two bars to be played five times on this repeat.
Which, with a little distilling and refinement can be used to to cause a da Capo that observes the repeat.
Code: [Select · Download]
!NoteWorthyComposerClip(2.0,Single)
|Clef|Type:Treble
|Key|Signature:C
|TimeSig|Signature:Common
|Ending|Endings:1,2,4,5|Visibility:Never
|Note|Dur:4th|Pos:-6
|Note|Dur:4th|Pos:-5
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-3
|Bar
|Note|Dur:4th|Pos:-2
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:1
|Bar|Style:MasterRepeatClose
|Ending|Endings:3,6|Visibility:Never
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-5
|Note|Dur:4th|Pos:-6
|Bar|Style:MasterRepeatClose|Visibility:Never
|Flow|Style:DaCapo|Pos:8|Justify:Right|Placement:AtNextNote
!NoteWorthyComposerClip-End
You get AABAAB, an oft used pattern.

To see what is going on here, it may help to create 6 Lyric lines and copy this into each of them:
Quote
1 x x x 2 x x x 3 x x x 4 x x x
Registered user since 1996

 

Re: Another flow control issue

Reply #11
Hmm,
some extended examples...

Basic flow exactly as in source work, ignoring several sets of master repeats along the way AFTER the DC:
Code: [Select · Download]
!NoteWorthyComposerClip(2.0,Single)
|Clef|Type:Treble
|Key|Signature:C
|Tempo|Tempo:200|Pos:13
|TimeSig|Signature:Common
|Bar|Style:MasterRepeatOpen
|Note|Dur:4th|Pos:-6
|Note|Dur:4th|Pos:-5
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-3
|Bar
|Note|Dur:4th|Pos:-2
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:1
|Bar|Style:MasterRepeatClose
|Note|Dur:4th|Pos:4
|Note|Dur:4th|Pos:3
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Bar
|Ending|Endings:1
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Flow|Style:DaCapo|Pos:7|Justify:Right|Placement:AtNextNote
|Bar|Style:Double
|Flow|Style:Segno|Pos:13
|Ending|Endings:2,D
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar|Style:Double
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-5
|Note|Dur:4th|Pos:-6
|Flow|Style:ToCoda|Pos:11|Justify:Right|Placement:AtNextNote
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Flow|Style:DSalCoda|Pos:11|Justify:Right|Placement:AtNextNote
|Bar|Style:Double
|Flow|Style:Coda|Pos:11
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:Whole|Pos:1
!NoteWorthyComposerClip-End


As above but using hidden master repeats to force the first and second time bars to function:
Code: [Select · Download]
!NoteWorthyComposerClip(2.0,Single)
|Clef|Type:Treble
|Key|Signature:C
|Tempo|Tempo:200|Pos:13
|TimeSig|Signature:Common
|Bar|Style:MasterRepeatOpen
|Note|Dur:4th|Pos:-6
|Note|Dur:4th|Pos:-5
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-3
|Bar
|Note|Dur:4th|Pos:-2
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:1
|Bar|Style:MasterRepeatClose
|Bar|Style:MasterRepeatOpen|Visibility:Never
|Note|Dur:4th|Pos:4
|Note|Dur:4th|Pos:3
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Bar
|Ending|Endings:1
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Flow|Style:DaCapo|Pos:7|Justify:Right|Placement:AtNextNote
|Bar|Style:MasterRepeatClose|Visibility:Never
|Bar|Style:Double
|Flow|Style:Segno|Pos:13
|Ending|Endings:2,D
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar|Style:Double
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-4
|Note|Dur:4th|Pos:-5
|Note|Dur:4th|Pos:-6
|Flow|Style:ToCoda|Pos:11|Justify:Right|Placement:AtNextNote
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Flow|Style:DSalCoda|Pos:11|Justify:Right|Placement:AtNextNote
|Bar|Style:Double
|Flow|Style:Coda|Pos:11
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:2
|Note|Dur:4th|Pos:1
|Bar
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:1
|Note|Dur:4th|Pos:-3
|Note|Dur:4th|Pos:-2
|Bar
|Note|Dur:Whole|Pos:1
!NoteWorthyComposerClip-End

Please note that further into the work there are several sets of master repeats with special endings PRIOR to the coda that never execute because of the way NWC ignores master repeats once a DC or DS has been encountered unless they are in the coda...

I realise that NWC can't read minds (nods to Rick) but flow control could be a little more (or is that less?) prescriptive...

Managing loops properly when programming can be a pain (from the days when I did any kind of amateur coding at all), and what is sheet music if not a "program" for the musician, so I understand that getting this to work as an intelligent and intuitive musician would is a challenge, but I have faith in Eric - he cuts good code (witness how NWC doesn't crash).
I plays 'Bones, crumpets, coronets, floosgals, youfonymums 'n tubies.