Addition of a "Flow" directive #featurerequest
The concept is that a Flow directive lists sections of a song for display of the song in a sequential manner that matches the parts in the Flow. Parts of songs can be omitted and/or repeated as needed. The benefits are:
- simplified file - no need of comments for when things are repeated
- simplified usage/display - no bouncing around the file, simply scroll advance
- easy to temporarily remove sections not needed in this instance
- when you want to perform the song but not play certain parts, the contents stay in the file but they simply just don't get displayed because their tag is not in the Flow directive
OnSong doesn't use chordPro directives for environment bits. It simply recognizes "section tags" as lines that end in a ":" and the chordPro {soc}/{eoc} directives. Not sure what the best proposal for this feature request should be for part of the chordPro standard. Stay with colon terminated lines or new some form of new standard meta data or {start_of_section: [section.name]}/{end_of_section: [section.name]} or possibly create a new directive {section: ...} or some part of the standard that I'm not aware of that would be good for this purpose?!? :-) But for this example I'll stick with colon terminated lines.
Example:
a chordPro file with the following contents...
{Flow: I,V1,C,V2,C,Instrumental,C}Intro:
Verse 3:
...would result in a display of:
A very interesting suggestion.
It boils down to two things: identifyable song parts and a way to define the flow.
To identify song parts, the {start_of_
...}
directives can be used, for example
{start_of_verse Verse 1}
...
{end_of_verse}
This part is then identified by its label Verse 1
. (BTW, ChordPro 7 will have other means to add an id to a section so you can have id V1
and label Verse 1
.)
To define the flow a new directive is needed. Let's call it flow
. It will take a list of section identifications and process the sections in the given order. ChordPro doesn't use comma-separated lists so it will become something similar to
{flow: Intro "Verse 1" "Verse 2" Chorus "Verse 3" Coda}
This may be extra powerfull when used with conditional directives, e.g.
{flow-short: Intro "Verse 1" "Verse 2" Chorus Coda}
{flow-long: Intro "Verse 1" "Verse 2" Chorus Intermezzo "Verse 3" Chorus Coda}
Some notes --
When using flow control, all parts of the song must be enclosed in sections.
Watch out for a section that contains {transpose} -- if it is local be sure to counter it. But you can also use this for creative modulations:
{start_of_modulation M1}
{transpose +2}
{end_of_modulation}
and then in the flow:
{flow: .... M1 ... M1 ...}
This is going to be fun!
As an aside [and not really part of this feature request but more for helping me understand the concepts of the standard :-) ] … what is the benefit of using {end_of…} tags as opposed to simply using a new section tag, as it’s encountered, as the termination of the previous section?
If you have a section that is modulated for a part, e.g (contrived):
{start_of_verse V1}
[A]Hello, World!
{transpose +2}
[A]Hello, World!
{end_of_verse}
The net result is that anything following it, will be transposed as well. So if you only want a part of the section transposed, counter (cancel) it:
{start_of_verse V1}
[A]Hello, World!
{transpose +2}
[A]Hello, World!
{transpose}
{end_of_verse}
Now you can use this section in a flow without risking accidental transposing evenrything that follows.
For the other question: historically only some parts of songs were sections (mostly chorus) so it was important to delimit (close) sections. Closing sections also prevents unwanted inclusions (think empty lines!), catches typo's. So it is best to leave it that way. It also makes it possible for a future version of ChordPro to support nested sections.
[This is actually help question for a 3rd party tool. For convenience I'll leave it here since this thread is about flow -- mod]
Hi, I’m also using the onsongapp in my iPad and are trying to use flow. In onsong-formate (text-file) flow works fine, but I’ve been challenged to find a way to create clean lyrics only sheets for the tech-guys in the church, and I also need flow to work when I’m using the same songs direktly to projector or tv-monitor. I took a picture of how a song (in Norwegian) looks, but it doesn’t work with flow the way it should.
My need are that flow works at the iPad, that I can see the section label in my iPad, but not in the projected picture and not in the clean text-file i’m using for the church projector team. And jes, I know my flow only have half of the song now, it’s just to show that something’s not right.
Nice if you, or anyone can help me one step further…