Adding notes/chords to songs and variations

This is a description how I created a text label/short note for a song/variation and a multi line chords label/widget.

An example is added to the song (variations) Basket Case and Blauw:

To do this, perform the following steps:

In the Edit Panel page, create a Tape Label, and assign the OSC/GPScript name to ReadmeWidget:

Change the font sizes to the maximum text you will use.

Do the same for the multi line Text Label for chords (and name it ChordsWidget):

Then set the script (ctrl-shift-1) to

Var
   ReadmeWidget : Widget
   ChordsWidget : Widget
   
function Set(readmeText : String, chordsText : String)
   SetWidgetLabel(ReadmeWidget, readmeText)
   SetWidgetLabel(ChordsWidget, chordsText)
end


function SetVariationSpecificItems()
   var name : String = GetVariationName(GetCurrentVariation())
   select
      name == "Blauw - The Scene" do
         Set("Start immediately", 
             <<<
INTRO   G   Csus4   G   G     
VERSE = Intro    G   Am7   Bm7   C6
CHORUS   Am   Csus4   G   G   (Am)
OUTTRO    (+El.Piano)  F/A   C/E   G   G
             >>>)


      name == "Basket Case - Greenday" do
         Set("Start at >",
             <<<
VERSE: Eb  Bb  Cm  Gm   Ab  Eb  Bb  Bb 2x 
CHORUS: Ab  Bb  Eb  Eb  2x  A  B 
> Eb_Db  Cm  Ab  Bb    INTERLUDE:  Eb   Bb   Cm   Bb 2x     
Verse    Chorus   Interlude  2x      BRIDGE:   Ab   Bb  NC  
Inst: Verse  Chorus  OUTTRO: Eb  Cm  Ab_Eb  Bb  4x   Ab   Eb    Bb
             >>>)
 
      true do
         Set("", "")
   end
end

on Activate
   SetVariationSpecificItems()
end

on Deactivate
   Set("", "")
end

on Variation(oldVaration : Integer, newVariation : Integer)
  SetVariationSpecificItems()
end

Make sure to use the correct variation names otherwise the widgets will be empty (as the True select statement will be used).

I use the same method for songs (without variations), except the Tape Label read me widget does not need to be automated, and the script for the chords widget is reduced to

Var
  ChordsWidget : Widget
  ChordsText: String = <<<
INTRO: C#m  C#m  E  F#     VERSE: ...
CHORUS1:  A   (B)   C#m   G#m  (G3m)   B 2x    BRIDGE: c#  d#  e  f#  g#
Verse  = bridge     Chorus2   Chorus2:    A   B   C#m   (E)   G#m   (G#m)   B 2x
'Keep':  E   E   B   C#m  8x    Chorus1    Chorus2  
OUTTRO:   A   C#m   G#m   Bsus2   4x   C#
>>>

initialization
  SetWidgetLabel(ChordsWidget, ChordsText)
End

The only disadvantage is that after changing the script and compiling, you need to move away from the song/alternative and return to see the updated text again.
If someone knows a solution for this, I would like to hear.

2 Likes

it would be nice if there was an easier way (notes per song part) in a future update :grin:

Tricky because of feature creep.

Maybe a way to integrate GP closely with Mobilesheets? (For all I know this is already available).

Jeff

1 Like

Another suggestion as a workaround.

Background: I play in rackspace mode. One rackspace per song. The variations are my song parts. (But the following can certainly also be created for the setlists mode)

I write short notes or chord sequences after a separator in the variation name.
e.g. “Refrain | Am7/9 FM7 blabla blabla”
I read this out via script and display everything after the separator (e.g. |) as a notice in Touch OSC or in a label widget per variation.

I think this is currently the only way to write text (strings) per variation relatively quickly and easily, which is then also saved without having to switch to the script itself and write it in the corresponding program line (as Michel has shown).
This also works quite well for me. And I have not yet come across a length restriction

1 Like

Nice trick!

When you use SetList mode the lyrics window using Chord Pro could also be helpful

That’s right. I use it but an easier way to link song part and notes/sheet music/etc would be nice (like Camelot, for example)

You can use special directives so that a song part automatically shows the correct section of the chord sheet.

I know that and I use it. My point is that - as a final user (not a developer) - writing using a markup language it’s not so “front end”. I guess Lyrics/music sheet management is not a priority (it’s not a controversy, I love GP and all of these functionality)

What is easy/suitable? :innocent:

There are several options

  • integrated ChordPro viewer which also supports PDF
  • the great Lyrics/Chord extension
  • Michels approch to integrate cheat sheets into the rackspace directly
  • use a companion app like Onsong, Bandhelper, MobileSheets, …

Personally, I still use Bandhelper, as I can run it independently from GP on my tablet or any device with internet access to prepare Setlists, import lyrics/chords from different sources etc.

For some songs I added some additional information in ChordPro sheets for the Lyrics/Chord extension.

Comment/addition to @Michelkeijzers script: I think I would place all the information in external files and load them by LoadStringFromTextFile() with the filename derived from the rackspace or songname and include all the needed scripting more general with Include "xyz" in my scripts - personal taste

1 Like

Yes, using LoadStringFromTextFile would be useful to work.

However, the script I use lately is way more extensive and also loads all GP presets and more information (like DMX light settings). I could add also the chords in that same file though.