Capo support in tablature

classic Classic list List threaded Threaded
30 messages Options
12
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Capo support in tablature

Leon Vinken
Hi all (and especially Maurizio),

as far as I can tell, the current tablature implementation does not support the capo (capotasto), even though using a capo is quite common in popular guitar music. Tabature editors typically provide a GUI element to enter the capo position. For MuseScore I think this should be added to the "String Data" dialog.

The current MusicXML importer ignores the "capo" element. If a capo is used, this results in an inconsistent behaviour as the specified pitch does not match the pitch calculated from string and fret. E.g. Recordare's BrookeWestSample.xml suffers from this issue. This has to be fixed anyway.

Opinions, anyone ?

Regards, Leon.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Maurizio M. Gavioli
Leon Vinken wrote
Hi all (and especially Maurizio),

as far as I can tell, the current tablature implementation does not support the capo (capotasto)
Indeed, it doesn't.

Tabature editors typically provide a GUI element to enter the capo position. For MuseScore I think this should be added to the "String Data" dialog.
The plan is to support it, in a way or another. There has been some discussion in the forum with interested users, which led to some suggestions. The idea to add it to the "String Data" dlg seems nice!

The current MusicXML importer ignores the "capo" element. If a capo is used, this results in an inconsistent behaviour...
Another reason to support it.

Thanks,

Maurizio
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Tony Mountifield
In article <[hidden email]>,
Maurizio M. Gavioli <[hidden email]> wrote:

> Leon Vinken wrote
> > Hi all (and especially Maurizio),
> >
> > as far as I can tell, the current tablature implementation does not
> > support the capo (capotasto)
>
> Indeed, it doesn't.
>
>
> > Tabature editors typically provide a GUI element to enter the capo
> > position. For MuseScore I think this should be added to the "String Data"
> > dialog.
>
> The plan is to support it, in a way or another. There has been some
> discussion in the forum with interested users, which led to some
> suggestions. The idea to add it to the "String Data" dlg seems nice!
>
>
> > The current MusicXML importer ignores the "capo" element. If a capo is
> > used, this results in an inconsistent behaviour...
>
> Another reason to support it.

There is a user on github called shadowphiar who I discovered yesterday
has recently started working on capo support in MuseScore.

See branches under https://github.com/shadowphiar/MuseScore

There is no email address listed, so I have tried to make contact with him
by commenting on one of his commits, and am waiting to hear back.

I have just discovered he is also on musescore.org with the same name...

Cheers
Tony
--
Tony Mountifield
Work: [hidden email] - http://www.softins.co.uk
Play: [hidden email] - http://tony.mountifield.org

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Mscore-developer mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/mscore-developer
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Maurizio M. Gavioli
Tony Mountifield wrote
There is a user on github called shadowphiar who I discovered yesterday
has recently started working on capo support in MuseScore.[...]
From the code, it seems mostly a textual element for capo indications (possibly for pitched staves more than tabs), but it is something anyway.

Thanks for the pointer,

Maurizio
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Tony Mountifield
Maurizio M. Gavioli wrote
Tony Mountifield wrote
There is a user on github called shadowphiar who I discovered yesterday
has recently started working on capo support in MuseScore.[...]
From the code, it seems mostly a textual element for capo indications (possibly for pitched staves more than tabs), but it is something anyway.
Looking at his data structures, it appears that he has in mind something that will link into the Harmony rendering to display transposed chord names, either instead of the originals, or in brackets after the originals. I have had a similar scheme in mind, which is why I want to make contact.

I would guess tab staves could perhaps make use of the capo offset for transposition too.

Cheers
Tony
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Maurizio M. Gavioli
Tony Mountifield wrote
I would guess tab staves could perhaps make use of the capo offset for transposition too.
I think so, BUT: he seems to think to a textual element which can be added to the score potentially anywhere. Having the TAB staff type to change something in the string data midway in a score would require a non-trivial amount of structural changes, something I would prefer not to have to implement right now, possibly not before releasing 2.0 (it may go through a change of instrument, but I am not sure how much the program is ready to accept a change of instrument in the middle of a score).

So:

1) It should affect the whole staff from the beginning to the end of the score

2) It has several things to connect to: chord symbols and staff type come to mind immediately, maybe more.

I think it is something to plan rather carefully.

Thanks,

Maurizio
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Leon Vinken
This is what I would like to do (as simple as can be):

- add an additional member "capo" to class Tablature (the capo position)
- support reading / writing both in MuseScore and MusicXML format
- add a QSpinBox to the "String Data" dialog to edit the capo position
- interpret the fret numbers in a tab staff as capo-relative
- adapt the pitch calculations in tablature.cpp accordingly

Note that this behaves according to the conventions of tablature editors I am familiar with and matches the semantics of the MusicXML format.

I have no intention to allow changing the capo position anywhere in the score, I consider it a property of the song, just like the tuning used.

Regards, Leon.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Tony Mountifield
In article <[hidden email]>,
Leon Vinken <[hidden email]> wrote:

> This is what I would like to do (as simple as can be):
>
> - add an additional member "capo" to class Tablature (the capo position)
> - support reading / writing both in MuseScore and MusicXML format
> - add a QSpinBox to the "String Data" dialog to edit the capo position
> - interpret the fret numbers in a tab staff as capo-relative
> - adapt the pitch calculations in tablature.cpp accordingly
>
> Note that this behaves according to the conventions of tablature editors I
> am familiar with and matches the semantics of the MusicXML format.

It is worth considering that the capo position is useful not just to tab
staves, but also to scores without them, that would use a capo property
to display alternative chord names alongside (or even instead of) the
actual chord name, e.g. with capo 3: Bb(G) Eb(C) Cm(Am) F7(D7).

It would be good if any solution could cater for both usages, rather than
having two separate capo properties.

> I have no intention to allow changing the capo position anywhere in the
> score, I consider it a property of the song, just like the tuning used.

Although this is usually the case, I had instead considered that the capo
position would be an additional property of a key signature. I could
easily see a song having different sections in different keys for which a
guitarist might have to move the capo when changing key.

Cheers
Tony
--
Tony Mountifield
Work: [hidden email] - http://www.softins.co.uk
Play: [hidden email] - http://tony.mountifield.org

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Mscore-developer mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/mscore-developer
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

lasconic
Administrator


Although this is usually the case, I had instead considered that the capo
position would be an additional property of a key signature. I could
easily see a song having different sections in different keys for which a
guitarist might have to move the capo when changing key.


Can MusicXML deal with this? 
Could you imagine a song where the capo position is not linked with a key signature but just a "tick"? 

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Mscore-developer mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/mscore-developer
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Maurizio M. Gavioli
In reply to this post by Tony Mountifield
Tony Mountifield wrote
It would be good if any solution could cater for both usages, rather than having two separate capo properties.
As I said in a previous post, a capo objects should at least connect with (or be available to) tablatures and chord symbols.

> I have no intention to allow changing the capo position anywhere in the
> score, I consider it a property of the song, just like the tuning used.

Although this is usually the case, I had instead considered that the capo position would be an additional property of a key signature. I could easily see a song having different sections in different keys for which a guitarist might have to move the capo when changing key.
So: tablatures, chord symbols and keys.

In additions, there is always the possibility of a single score file containing various pieces with different capo settings.

To accommodate all this, the capo should be an object of its own (presumably derived from Element) and a score should have a list of them, each with its 'x' (time tick) ad 'y' (staff) positions, with methods to retrieve the capo active at any given time ("no capo" at all (= capo at 0) is a valid capo setting and should be set at the beginning of each staff). The whole would be quite similar to how key sigs / time sigs are currently managed in MuseScore scores. Additionally, it could contain a text element of its own (possibly with a new text style) to be displayed at the relevant position.

This would be relatively simple, conceptually (the management of key sigs / time sigs can be a useful guide line), but would involve a sizeable amount of code.

Have Werner or lasconi anything to say on that?

Thanks,

Maurizio
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

lasconic
Administrator
This construct is also the one used by TempoMap. It's also something that "Swing" could be using.
I wonder if we could generalize this. I remember having some discussion with Werner around instrument changes and a "Cursor" object that would give the state of the score at a given "tick", state being time sig, key sig, tempo, *instrument* etc...

This is probably a step too far for next version? The solution proposed by Leon is simpler and would satisfy already a lot of users.

lasconic

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Mscore-developer mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/mscore-developer
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Tony Mountifield
In reply to this post by Maurizio M. Gavioli
Maurizio M. Gavioli wrote
In additions, there is always the possibility of a single score file containing various pieces with different capo settings.

To accommodate all this, the capo should be an object of its own (presumably derived from Element) and a score should have a list of them, each with its 'x' (time tick) ad 'y' (staff) positions, with methods to retrieve the capo active at any given time ("no capo" at all (= capo at 0) is a valid capo setting and should be set at the beginning of each staff). The whole would be quite similar to how key sigs / time sigs are currently managed in MuseScore scores. Additionally, it could contain a text element of its own (possibly with a new text style) to be displayed at the relevant position.

This would be relatively simple, conceptually (the management of key sigs / time sigs can be a useful guide line), but would involve a sizeable amount of code.
This appears to be what shadowphiar is aiming at. I wish he would join in the discussion!

Cheers
Tony
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Tony Mountifield
In reply to this post by lasconic
lasconic wrote
This construct is also the one used by TempoMap. It's also something that
"Swing" could be using.
I wonder if we could generalize this. I remember having some discussion
with Werner around instrument changes and a "Cursor" object that would give
the state of the score at a given "tick", state being time sig, key sig,
tempo, *instrument* etc...

This is probably a step too far for next version? The solution proposed by
Leon is simpler and would satisfy already a lot of users.
Regarding Leon's simpler scheme, I still have doubts that a Tablature object is the correct place to store the capo position. Even if it is for the time being a single setting for the whole score, it needs to be available in scores that have no tab staves, so it can be used for chord symbols.

Cheers
Tony
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Tony Mountifield
In reply to this post by lasconic
lasconic wrote
>
> Although this is usually the case, I had instead considered that the capo
> position would be an additional property of a key signature. I could
> easily see a song having different sections in different keys for which a
> guitarist might have to move the capo when changing key.
>
>
Can MusicXML deal with this?
Could you imagine a song where the capo position is not linked with a key
signature but just a "tick"?
I don't know anything about MusicXML, but can't really think of a situation where capo position would need to change without a change of key. If I ever found one, I could easily repeat the key signature, and even hide it if necessary.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Maurizio M. Gavioli
In reply to this post by Tony Mountifield
Tony Mountifield wrote
Regarding Leon's simpler scheme, I still have doubts that a Tablature object is the correct place to store the capo position. Even if it is for the time being a single setting for the whole score, it needs to be available in scores that have no tab staves, so it can be used for chord symbols.
I agree. However, even if we limit a capo object to appear only at the beginning, I think it should belong to staves, rather than to the whole score; I can easily foresee situations with multiple TAB's where some are capo-ed and some are not; the same is possibly true for chords too (chord symbols also belong to staves).

So, each staff should have its own capo (or lack of it).

[Technical note: technically capos (capoes?) should probably belong to instruments rather than to staves; but I cannot imagine a situation where a capoed instrument has more than one staff, and staves are simpler to access than instruments.]

shadowphiar's object can probably fit this scheme; a Capo* member var should be added to Staff to be queried by tab's and chords via a getter of some kind (for no capo at all, the var could be null, sparing some memory; in this case the getter should return 0 = no fret offset).

His UI is probably to redesign, though, as Capo is probably best accessed and set from the "Staff properties" dlg box.

I don't know anything about MusicXML, but can't really think of a situation where capo position would need to change without a change of key. If I ever found one, I could easily repeat the key signature, and even hide it if necessary.
Such a situation can possibly exist for tab's (which are largely independent from keys), but I agree than even a capo support limited to the beginning of the score only is better than no support at all (and of course is easier to implement and less risky than full support).

Can we reach some consensus along those lines?

Maurizio
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

lasconic
Administrator


[Technical note: technically capos (capoes?) should probably belong to
instruments rather than to staves; but I cannot imagine a situation where a
capoed instrument has more than one staff, and staves are simpler to access
than instruments.]


isn't it always the case for a guitar normal + tabs? 

MusicXML is often a good start when implementing this kind of feature. The format is a sum of investigation about music notation usage.
The Capo element can be found in the "staff-details" elements together with the staff tuning, staff type (cue, normal, ossia...), the number of staff lines etc...
A "staff-details" element is used in "attributes". Attributes element contains musical information that typically changes on measure boundaries. This includes key and time signatures, clefs, transpositions, and staving.

So if we really go into this direction. It's probably worth adding more than just the capo. The tuning should probably be also part to this object we would store in the map.

This map would share a lot with the other timesig, keysig, tempo maps, in particular when measures are deleted, added, inserted, number of beat changes etc... A better abstraction would probably save code and bugs.

lasconic

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Mscore-developer mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/mscore-developer
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Maurizio M. Gavioli
lasconic wrote
>
> [Technical note: technically capos (capoes?) should probably belong to
> instruments rather than to staves; but I cannot imagine a situation where a
> capoed instrument has more than one staff, and staves are simpler to access
> than instruments.]
>
>
isn't it always the case for a guitar normal + tabs?
Ah! The dreaded linked staves!

MusicXML is often a good start when implementing this kind of feature. [...] This includes key and time signatures, clefs, transpositions, and staving.

So if we really go into this direction. It's probably worth adding more than just the capo. The tuning should probably be also part to this object we would store in the map.
1) As Tony said, capo indications can be independent from any instrument; I'm not familiar with these kinds of music, but I think an example can be a single voice staff with chord symbols; no instrument is present in the score, but chord symbols may include a capo-transposition (I'm sure there is a better name), in case the accompaniment is played on a capo-ed guitar / bass. Correct, Tony?

2) Strictly for stringed instruments, there is already an object storing number and tuning of strings and max fret position, which could make use of capo data. This object is currently INCORRECTLY named "Tablature" (I asked a few times to rename it to StringData or StringSet, but I never got any feedback), where the 'real' tablature is StaffTypeTablature. Could this be the base for, or part of, what you imagine? Anyway, it may (probably should) reference a future Capo object, but should not include it, for 1) above.

This map would share a lot with the other timesig, keysig, tempo maps, in particular when measures are deleted, added, inserted, number of beat changes etc... A better abstraction would probably save code and bugs.
I agree! Are you proposing to go on in this direction? Implementing a generic "staff-detail" map to re-use for timesig, keysig, tempo, string data, capo, etc? How, in practice? Who? I for one, I do not think I know MuseScore internals enough for such a deep intervention; I am ready to help with interaction with the parts I know, of course, but not much more than that, I'm afraid.

Thanks,

Maurizio
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Tony Mountifield
In article <[hidden email]>,
Maurizio M. Gavioli <[hidden email]> wrote:
>
> 1) As Tony said, capo indications can be independent from any instrument;
> I'm not familiar with these kinds of music, but I think an example can be a
> single voice staff with chord symbols; no instrument is present in the
> score, but chord symbols may include a capo-transposition (I'm sure there is
> a better name), in case the accompaniment is played on a capo-ed guitar /
> bass. Correct, Tony?

Yes, that's correct. I think the two most common use cases would be: a single
melody staff (not necessarily voice) with chord symbols; and a vocal+piano
score - a voice staff with a piano staff containing accompaniment, for which
the chord symbols might be attached to either the voice staff or the piano
staves.

Cheers
Tony
--
Tony Mountifield
Work: [hidden email] - http://www.softins.co.uk
Play: [hidden email] - http://tony.mountifield.org

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Mscore-developer mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/mscore-developer
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

lasconic
Administrator

Yes, that's correct. I think the two most common use cases would be: a single
melody staff (not necessarily voice) with chord symbols; and a vocal+piano
score - a voice staff with a piano staff containing accompaniment, for which
the chord symbols might be attached to either the voice staff or the piano
staves.


Add fretboard diagrams on top of that. 
 

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Mscore-developer mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/mscore-developer
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Capo support in tablature

Max Shinn
In reply to this post by Tony Mountifield
> > 1) As Tony said, capo indications can be independent from any
> > instrument; I'm not familiar with these kinds of music, but I think
> > an example can be a single voice staff with chord symbols; no
> > instrument is present in the score, but chord symbols may include a
> > capo-transposition (I'm sure there is a better name), in case the
> > accompaniment is played on a capo-ed guitar / bass. Correct, Tony?

I wonder too if this same implementation could be used for individuals
who double on instruments with different transpositions.  MuseScore 2.0
supports this when they have the same transposition, but it doesn't
currently work with, for instance, a musician who plays oboe and
English horn in the same piece.  

-Max
12
Loading...