• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
ChordPro capo directive
#1
The official documentation:
https://www.chordpro.org/chordpro/directives-capo/

My thinking is that, if a song has a ChordPro capo directive, e.g.:

{key: C}
{capo: 2}

Then MobileSheets should display the song in the key of C, and operate as if the "Capo" setting in "Text Display Settings" had been set to 2; i.e. if "Capo Display Settings" has "Show capo on score" enabled, then "Capo: 2" should appear onscreen.

I realize that this could be confusing for someone who doesn't know or notice that the ChordPro contains a "capo" directive, so maybe add a "Respect ChordPro capo directives" toggle to the "Capo Display Settings" panel, disabled by default, or "Ignore ChordPro capo directives," enabled by default?
Reply
#2
MobileSheets will respect the capo directive when you first import the file. It doesn't change the capo for the song after that (to avoid overriding changes you may have made in MobileSheets itself). I don't really want to change that behavior. I'm fine with adding an option to "reparse" the file though to pull in any new metadata or a change to the capo.

Mike
Reply
#3
OK. I already had a ChordPro in the database, and edited that file externally to add some additional info (measure markers, primarily). While editing, I realized that the CP was in D but the song was in E, so I added the capo directive. When I imported the file, MS asked whether to update or create new, I chose update. I guess since the song was already in the database, MS ignored the capo directive even though it was new to the file.
Reply
#4
Yep, that's exactly what happened, as updating a file doesn't currently cause the metadata and other directives to be parsed again. 

Mike
Reply
#5
I deleted the song from MS, and re-imported fresh. MS displays "Capo: 2" on the song as it should; however, it also dropped the displayed key by 2 half steps. My understanding of the CP "capo" directive, according to the CP docs, is that the chords in the file are the capo chords, i.e. if the CP chords are in D and there is a {capo: 2} directive, then the song is actually in E, so MS should display in D and add "Capo: 2" on the sheet (assuming "Show capo on score" is enabled). Current behavior is to just apply the MS capo setting, which ends up displaying the wrong chords.

I would say, when importing a CP containing a capo directive, default behavior should be to apply both MS transpose and MS capo setting according to the capo directive. This should fix the issue, without having to modify the original file or add any new MS logic.
Reply
#6
Hopefully Johan will chime in here. I want to discuss this with him a bit to see his thoughts.

Mike
Reply
#7
Capo is often misunderstood as a form of transposition but it is fundamentally different. Probably because only fretted string instruments have capos.

For me (and I think the average guitar player) the most intuitive behaviour is
  • In Settings > Text File Settings, check "Modulate Capo Down"
  • Same, enable "Capo Display Settings"
  • In "Text Display Settings" set the capo (this will be done automatically upon first import) and then click the eye to not apply the chord changes
Johan
johanvromans.nl — hetgeluidvanseptember.nl — mojore.nl -- howsagoin.nl
Samsung Galaxy Note S7FE (T733) 12.4", Android 13.0, AirTurn Duo & Digit (Gigs).
Samsung Galaxy Note S4 (T830) 10.5", Android 10.0 (maintenance and backup).
Samsung A3 (A320FL), Android 8.0.0 (emergency).
Reply
#8
That's a reasonable way to do it, though I think that if the ChordPro file has a capo directive, the "eye" needs to be clicked automatically (chord change visibility disabled, per Johan's 3rd point) upon first import as well as having the capo set automatically (which is already happening).

I say this because the example given at https://www.chordpro.org/chordpro/directives-capo/ shows that, when the "capo" directive is used, the "key" directive indicates the capo key; i.e. the key played by the guitarist, not the actual key heard by the listener. So a CP file with a capo directive should be imported, by default, in a way that sets the MS capo according to the CP capo directive, but displays the chords from the CP file "as is" without modulation (since they're already modulated).

FWIW, there's plenty of back and forth regarding transposition vs. capo, but I think most of the argument comes from false assumptions about the definitions of terms. See https://en.wikipedia.org/wiki/List_of_tr...nstruments for a pretty good list of transposing instruments. A capo simply turns a fretted instrument, and in some cases even a non-fretted fingerboard instrument, into a transposing instrument; i.e. the notes or chord structures being played as written on the sheet music are not the actual notes coming out of the instrument. In fact, the "transpose" feature available in most electronic instruments is effectively just a digital capo. The only difference between "capoing" and "transposing" that could be considered fundamental is that a capo offers adjustable transposition, vs. the fixed transposition of "standard" transposing instruments.
Reply
#9
Alright, I will default to the capo visibility being turned off if the capo is set during the import.

Thanks,
Mike
Reply
#10
Whether "the eye is clicked" should be a user preference.

I've encountered two common ways of treating a capo.
  • Guitars and other fretted harmonic string instruments: The capo changes the key but not the chords (shapes).
  • Keyboards, bass, etc: The capo changes the key and the chords.

So if I, as a guitar player, have a song with capo 2 and chord D, I put the capo on 2 and play chord D (which will sound as E).
My keyboard player will have to play E so 伊 will want to see the chords transposed.
Johan
johanvromans.nl — hetgeluidvanseptember.nl — mojore.nl -- howsagoin.nl
Samsung Galaxy Note S7FE (T733) 12.4", Android 13.0, AirTurn Duo & Digit (Gigs).
Samsung Galaxy Note S4 (T830) 10.5", Android 10.0 (maintenance and backup).
Samsung A3 (A320FL), Android 8.0.0 (emergency).
Reply
#11
(11-24-2023, 11:05 PM)sciurius Wrote: Whether "the eye is clicked" should be a user preference.

So if I, as a guitar player, have a song with capo 2 and chord D, I put the capo on 2 and play chord D (which will sound as E).
My keyboard player will have to play E so 伊 will want to see the chords transposed.

Exactly. But if the CP is already transposed “internally” (or pre-modulated if you prefer)— which is what the “capo” directive indicates —and we don’t un-check the eye, then a keyboard player would see “Capo: 2” displayed on the score, and the displayed chords would be a full step below the capo chords, which are already a full step below the actual chords. Un-checking the eye by default (when a CP has the capo directive) avoids this confusion.

Maybe. Big Grin
Reply
#12
Hi,

I knew something had changed.

I play in a duo with backtracks and use pro files to play either keyboard or guitar to accompany.
All songs were setup a year or two ago with the key set to match the backtracks.

When the dancing season restarted in September after being off during summer,
many or maybe most of my songs appeared in the wrong key.
This is very embarrassing when you start a song and start to play in the wrong key.
Sometimes you notice and go right to the new key transposing the song in MS on the fly if you can,
or just do it in your head. But sometimes you have to stop to transpose and restart;
NOT GOOD!!!  I am playing live...

For a year or two now, I have been gradually transforming from pdf to pro files,
following directives to the letter, even including all {eov}, {eop} and {Capo:#} as well.
It's a lot of work, but that is the main reason for going to pro files, isn't it?
However, the {Key:#} directive was worth it for me in the long run if transposing
on guitar is eventually needed when playing in other ensembles, even if I haven't ever used it.

In the past, there was no need for me to use capo as the key was already set from the beginning.
Now, I still haven't figured out how to turn this off, but a lot of damage has been done,
in the sense that the songs that I have since transposed will again be in a wrong key
if the capo setting is changed to the way it was before, i.e. not using the capo setting at all.

I knew it was necessary for me to check here to see what had changed,
but life got in the way until now.

Even reading your posts, I still can't figure out how to get MS to ignore the capo directive
until I need it. So please,

1- How do I get MS to ignore the capo setting in pro files?
2- Any suggestions to get me out of this predicament would be appreciated.
3- Should I delete all {Key:#} directives in all pro files?

Sincerely,
Dan
Reply
#13
(11-30-2023, 07:46 AM)madoues Wrote: 1- How do I get MS to ignore the capo setting in pro files?
2- Any suggestions to get me out of this predicament would be appreciated.
3- Should I delete all {Key:#} directives in all pro files?

It is all a bit confusing, between the transpose, capo, modulate down, etc.

Here's the simple skinny:

-- When creating a ChordPro file, the only time you should add a {capo} directive is if the {key} in the file, as typed, is the capo key, not the original key -- and, in any case, the {key} directive should always match the chords that are typed. IOW if the song is in E but you type up the CP file using D chords, then you should add {key: D} and {capo: 2} directives, but if you type up the CP file using E chords, use {key: E} and no capo directive. This is how it should be done, according to the ChordPro documentation (linked earlier in this thread).

-- My understanding is that MobileSheets only looks at the {capo} directive when importing the ChordPro. For songs already in the database, you shouldn't have seen any effect. (Mike can correct me if I'm wrong here!)

-- Once the song is in MobileSheets, display the song, and then open the Text Display Settings pane (touch the "A" at the top right corner). Configure your capo there. Notice the "eye" to the right of the capo setting slider. That "eye" tells MobileSheets whether to display the original chords in the CP file (eye un-checked, or white), or to transpose the chords down by the capo interval (eye checked, or orange). As of 3.8.19, the default behavior, when MS imports a CP file with a capo directive, is to set the MS capo interval to match the directive (so you'll see "Capo: 2" displayed on the sheet**), and un-check the eye -- because the actual chords in the CP file should be in the capo key, not the original key, so they should be displayed as-typed.

-- If you imported a CP with a non-standard combination of {key} and {capo} directives (e.g. the {key} is original, and you added a {capo} directive because you planned on using a capo), you can fix the display to your liking using the capo config settings above, by simply checking the eye (make it orange). If you typed it up with mismatched {key} directive and chords, I'm actually not sure how MS processes that. I would probably bow to my OCD muse by standardizing the original CP and re-importing it, to save myself confusion down the road.


** assuming "Show capo on score" is enabled in the Capo display settings
Reply
#14
Heh. Unrelated, but interesting.

Looking at the ChordPro documentation again, I thought I'd try putting multiple {key} directives in a CP that's already in the MS database, since it starts in F and goes to G for the last verse. Looks like MS doesn't really handle multiple {key} directives; it just goes with the last one it sees in the file (the abrogation method). If I put {key: F} at the beginning, then insert {key: G} right before verse 3, MS says that the song is in G.

I can't think of a reason that this would really matter, or how MS should actually handle it (current behavior might be perfectly reasonable), it's just an observation.
Reply
#15
My understanding is that MobileSheets only looks at the {capo} directive when importing the ChordPro. For songs already in the database, you shouldn't have seen any effect. (Mike can correct me if I'm wrong here!)

That is a correct statement. Everything you wrote is accurate for version 3.8.19. And you are also correct - MobileSheets does not handle multiple keys, as some of the logic depends on just one key being set for the song (the original key on the transpose dialog).

Mike
Reply




Users browsing this thread:
4 Guest(s)


  Theme © 2014 iAndrew  
Powered By MyBB, © 2002-2024 MyBB Group.