transposing tablature

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

transposing tablature

Patrick Schmidt-3
Hi all (happy new year btw),

I often use the \transpose-function in combination with TabStaffs. Here is an example of some of the problems I encounter in this context:

\version "2.13.10"

music = {
        <b fis' b\3>1
        \set TabStaff.minimumFret = #2
        <b fis' b\3>1
        %\set TabStaff.minimumFret = #2
        <b fis' b>1
        \set TabStaff.minimumFret = #0
        <c e g c e>1
}

\score {
        <<
          \new Staff = "1" <<
          \relative c' {\music }
          >>
               
          \new TabStaff = "Tab 1" <<
          \relative c {\music }
          >>
               
          \new Staff = "2" <<
          \transpose c d {\relative c' {\music } }
          >>
               
          \new TabStaff = "Tab 2" <<
          \transpose c d {\relative c {\music } }
          >>
        >>
}

The first two systems show the chords the way I want them to look like. The second two systems show the results of the transposition. Some fret numbers get lost in transposition. Well, I know the reason: By default pitches are assigned to the lowest playing position on the fret-board. This behavior is perfect as long as you stay in fixed positions and don't change key. But as soon as you wanted to transpose your musical expression *and* move the position of the chords up or down the fret board you would have to alter the content of the musical expression for each and every transposition – thereby destroying your original.

This could be solved by implementing (at most) two new commands which should only work in the context of transposing tablature:

\keepPosition and \movePosition

Both commands could be used in a musical expression with or without minimumFret. In combination with e.g. \transpose c d {} \movePosition would automatically move the playing position / chord shape up two frets (in this case). \keepPosition could be used to switch off \movePosition and to try and find the pitches in a transposed TabStaff without moving position (which is hard if not impossible if I'm not mistaken). \keepPosition might not even be necessary if one could use \once\movePosition, e.g.:

music = {
        \movePosition
        <c e g c e>1
}

\score {
      <<
        \new TabStaff = "Tab 1" <<
        \transpose c d {\relative c { \music }
        >>
      >>
}

So what do you think of this idea? Would it be useful to you? Is it hard to implement? Could I even do it myself? Where to start?

Thanks for any hint!
patrick

--
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01


Reply | Threaded
Open this post in threaded view
|

Re: transposing tablature

Carl Sorensen



On 1/6/10 3:55 PM, "Patrick Schmidt" <[hidden email]> wrote:

> Hi all (happy new year btw),
>
> I often use the \transpose-function in combination with TabStaffs. Here is an
> example of some of the problems I encounter in this context:
>
> \version "2.13.10"
>
> music = {
>         <b fis' b\3>1
>         \set TabStaff.minimumFret = #2
>         <b fis' b\3>1
>         %\set TabStaff.minimumFret = #2
>         <b fis' b>1
>         \set TabStaff.minimumFret = #0
>         <c e g c e>1
> }
>
> \score {
>         <<
>           \new Staff = "1" <<
>           \relative c' {\music }
>>>
>                
>           \new TabStaff = "Tab 1" <<
>           \relative c {\music }
>>>
>                
>           \new Staff = "2" <<
>           \transpose c d {\relative c' {\music } }
>>>
>                
>           \new TabStaff = "Tab 2" <<
>           \transpose c d {\relative c {\music } }
>>>
>>>
> }
>

As I see it, the problem is that you aren't telling LilyPond what you want.
If you want to keep the notes on the same strings and just shift the
fretboard position, you should just specify the string for each note.

version "2.13.10"

music = {
        <b\5 fis'\4 b\3>1
        \set TabStaff.minimumFret = #2
        <b\5 fis'\4 b\3>1
        %\set TabStaff.minimumFret = #2
        <b\5 fis'\4 b\3>1
        \set TabStaff.minimumFret = #0
        <c\5 e\4 g\3 c\2 e\1>1
}

\score {
        <<  
          \new Staff = "1" {
          %\override StringNumber #'stencil = ##f
          \override StringNumber #'transparent = ##t
          \relative c' {\music }
          }  

          \new TabStaff = "Tab 1" <<
          \relative c {\music }
          >>  

          \new Staff = "2" {
          %\override StringNumber #'stencil = ##f
          \override StringNumber #'transparent = ##t
          \transpose c d {\relative c' {\music } }
          }  

          \new TabStaff = "Tab 2" <<
          \transpose c d {\relative c {\music } }
          >>  
        >>  
}


Once you do that, everything works properly.

I don't see a need for any new commands.

Thanks,

Carl



Reply | Threaded
Open this post in threaded view
|

Re: transposing tablature

Patrick Schmidt-3

-------- Original-Nachricht --------
> Datum: Wed, 6 Jan 2010 16:38:30 -0700
> Von: Carl Sorensen <[hidden email]>
> An: Patrick Schmidt <[hidden email]>, "[hidden email]" <[hidden email]>
> Betreff: Re: [tablatures] transposing tablature

>
>
>
> On 1/6/10 3:55 PM, "Patrick Schmidt" <[hidden email]> wrote:
>
> > Hi all (happy new year btw),
> >
> > I often use the \transpose-function in combination with TabStaffs. Here
> is an
> > example of some of the problems I encounter in this context:
> >
> > \version "2.13.10"
> >
> > music = {
> >         <b fis' b\3>1
> >         \set TabStaff.minimumFret = #2
> >         <b fis' b\3>1
> >         %\set TabStaff.minimumFret = #2
> >         <b fis' b>1
> >         \set TabStaff.minimumFret = #0
> >         <c e g c e>1
> > }
> >
> > \score {
> >         <<
> >           \new Staff = "1" <<
> >           \relative c' {\music }
> >>>
> >                
> >           \new TabStaff = "Tab 1" <<
> >           \relative c {\music }
> >>>
> >                
> >           \new Staff = "2" <<
> >           \transpose c d {\relative c' {\music } }
> >>>
> >                
> >           \new TabStaff = "Tab 2" <<
> >           \transpose c d {\relative c {\music } }
> >>>
> >>>
> > }
> >
>
> As I see it, the problem is that you aren't telling LilyPond what you
> want.
> If you want to keep the notes on the same strings and just shift the
> fretboard position, you should just specify the string for each note.
>
> version "2.13.10"
>
> music = {
>         <b\5 fis'\4 b\3>1
>         \set TabStaff.minimumFret = #2
>         <b\5 fis'\4 b\3>1
>         %\set TabStaff.minimumFret = #2
>         <b\5 fis'\4 b\3>1
>         \set TabStaff.minimumFret = #0
>         <c\5 e\4 g\3 c\2 e\1>1
> }
>
> \score {
>         <<  
>           \new Staff = "1" {
>           %\override StringNumber #'stencil = ##f
>           \override StringNumber #'transparent = ##t
>           \relative c' {\music }
>           }  
>
>           \new TabStaff = "Tab 1" <<
>           \relative c {\music }
>           >>  
>
>           \new Staff = "2" {
>           %\override StringNumber #'stencil = ##f
>           \override StringNumber #'transparent = ##t
>           \transpose c d {\relative c' {\music } }
>           }  
>
>           \new TabStaff = "Tab 2" <<
>           \transpose c d {\relative c {\music } }
>           >>  
>         >>  
> }
>
>
> Once you do that, everything works properly.
>
> I don't see a need for any new commands.
Carl,

Thanks for your solution! It does work properly – at least for small scores and if you don't have to use it very often. On the other hand this means to do without the automatic string calculation even though this function is extremely helpful and saves a lot of work. This means that I have to assign an individual string number indication to each pitch before I can transpose a score. Afterwards I might have to remove/correct some string number indications in the original score to achieve a different playing position. I'm trying to produce different editions from one source. My fictional command \move(Tab)Position (or maybe even better: \shift(Tab)Position) aims at keeping the automatic string calculation but to implicitly raise or lower the value of minimumFret by default by the interval between the two pitches 'frompitch' and 'topitch' of the \transpose-command. This is meant to work only with the \transpose-command. It is actually meant to be a tablature-transposing-command with which one could also alter a playing position of a single chord relative to the interval of transposition, like so: \shiftPosition -2 {<c e g c e>}resulting in a different chord shape (In this case (in combination with \transpose c d {}) it would be d major in first position (chord of four notes) instead of c major chord type in second position (chord of five notes)). This way one wouldn't have to alter the original score (the new command(s) in the source file would only have an effect on transposed scores).

So are you still convinced that there is no need for this command? ;-)

patrick

>
> Thanks,
>
> Carl
>
>

--
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01


Reply | Threaded
Open this post in threaded view
|

Re: transposing tablature

Carl Sorensen



On 1/7/10 7:47 AM, "Patrick Schmidt" <[hidden email]> wrote:

>
>
> -------- Original-Nachricht --------
>> Datum: Wed, 6 Jan 2010 16:38:30 -0700
>> Von: Carl Sorensen <[hidden email]>
>> An: Patrick Schmidt <[hidden email]>, "[hidden email]"
>> <[hidden email]>
>> Betreff: Re: [tablatures] transposing tablature
>
>>
>>
>>
>> On 1/6/10 3:55 PM, "Patrick Schmidt" <[hidden email]> wrote:
>>
>>> Hi all (happy new year btw),
>>>
>>> I often use the \transpose-function in combination with TabStaffs. Here
>> is an
>>> example of some of the problems I encounter in this context:
>>>
>>> \version "2.13.10"
>>>
>>> music = {
>>>         <b fis' b\3>1
>>>         \set TabStaff.minimumFret = #2
>>>         <b fis' b\3>1
>>>         %\set TabStaff.minimumFret = #2
>>>         <b fis' b>1
>>>         \set TabStaff.minimumFret = #0
>>>         <c e g c e>1
>>> }
>>>
>>> \score {
>>>         <<
>>>           \new Staff = "1" <<
>>>           \relative c' {\music }
>>>>>
>>>              
>>>           \new TabStaff = "Tab 1" <<
>>>           \relative c {\music }
>>>>>
>>>              
>>>           \new Staff = "2" <<
>>>           \transpose c d {\relative c' {\music } }
>>>>>
>>>              
>>>           \new TabStaff = "Tab 2" <<
>>>           \transpose c d {\relative c {\music } }
>>>>>
>>>>>
>>> }
>>>
>>
>> As I see it, the problem is that you aren't telling LilyPond what you
>> want.
>> If you want to keep the notes on the same strings and just shift the
>> fretboard position, you should just specify the string for each note.
>>
>> version "2.13.10"
>>
>> music = {
>>         <b\5 fis'\4 b\3>1
>>         \set TabStaff.minimumFret = #2
>>         <b\5 fis'\4 b\3>1
>>         %\set TabStaff.minimumFret = #2
>>         <b\5 fis'\4 b\3>1
>>         \set TabStaff.minimumFret = #0
>>         <c\5 e\4 g\3 c\2 e\1>1
>> }
>>
>> \score {
>>         <<
>>           \new Staff = "1" {
>>           %\override StringNumber #'stencil = ##f
>>           \override StringNumber #'transparent = ##t
>>           \relative c' {\music }
>>           }  
>>
>>           \new TabStaff = "Tab 1" <<
>>           \relative c {\music }
>>>>
>>
>>           \new Staff = "2" {
>>           %\override StringNumber #'stencil = ##f
>>           \override StringNumber #'transparent = ##t
>>           \transpose c d {\relative c' {\music } }
>>           }  
>>
>>           \new TabStaff = "Tab 2" <<
>>           \transpose c d {\relative c {\music } }
>>>>
>>>>
>> }
>>
>>
>> Once you do that, everything works properly.
>>
>> I don't see a need for any new commands.
> Carl,
>
> Thanks for your solution! It does work properly ­ at least for small scores
> and if you don't have to use it very often. On the other hand this means to do
> without the automatic string calculation even though this function is
> extremely helpful and saves a lot of work. This means that I have to assign an
> individual string number indication to each pitch before I can transpose a
> score. Afterwards I might have to remove/correct some string number
> indications in the original score to achieve a different playing position. I'm
> trying to produce different editions from one source. My fictional command
> \move(Tab)Position (or maybe even better: \shift(Tab)Position) aims at keeping
> the automatic string calculation but to implicitly raise or lower the value of
> minimumFret by default by the interval between the two pitches 'frompitch' and
> 'topitch' of the \transpose-command. This is meant to work only with the
> \transpose-command. It is actually meant to be a tablature-transposing-command
> with which one could also alter a playing position of a single chord relative
> to the interval of transposition, like so: \shiftPosition -2 {<c e g c
> e>}resulting in a different chord shape (In this case (in combination with
> \transpose c d {}) it would be d major in first position (chord of four notes)
> instead of c major chord type in second position (chord of five notes)). This
> way one wouldn't have to alter the original score (the new command(s) in the
> source file would only have an effect on transposed scores).
>
> So are you still convinced that there is no need for this command? ;-)


It seems to me like what you want is more than just a change in the minimum
fret, since you want to switch from a 5-note chord to a 4-note chord in this
particular instance.

Instead, you want transposable chords.

We already have transposable chords, in the form of fret diagrams.  One of
the to-do's on my list for a while (that I haven't got around to since I've
been futzing with auto-beaming) is to turn fret diagrams into notes.  Then
you'd have a set of chords that you wanted to use in the music.  You'd write
the music as a set of chords, and you could get the notes for the regular
staff and the tabStaff from the fret diagrams.

I envision it working this way:

myChords = {c1 a g c g:7 c}

transposedChords = \transpose c d {\myChords}

<<
  \new Staff {
    \getNotes \transposedChords
  }
  \new TabStaff {
    \getNotes \transposedChords
  }
>>

It would seem to me that that is a better approach to the problem that
you've identified.

Does this make any sense?

Thanks,

Carl



Reply | Threaded
Open this post in threaded view
|

Re: transposing tablature

Patrick Schmidt-3
In reply to this post by Patrick Schmidt-3
-------- Original-Nachricht --------
> Datum: Thu, 7 Jan 2010 15:30:16 -0700
> Von: Carl Sorensen <[hidden email]>
> An: Patrick Schmidt <[hidden email]>, "[hidden email]" <[hidden email]>
> Betreff: Re: [tablatures] transposing tablature


>
> It seems to me like what you want is more than just a change in the
> minimum
> fret, since you want to switch from a 5-note chord to a 4-note chord in
> this
> particular instance.
Well this was just a minor aspect of my idea. I'm sorry for the confusion. I mixed up two separate ideas. I'll try to free them from entanglement (and restrict myself to one idea):

> Instead, you want transposable chords.
First of all I propose to have transposable tablature because in my opinion this function is helpful but does not exist, yet. Let me demonstrate the problem:

What happens in tablature when you transpose a 5-note c major common chord in first position to D major?

\version "2.13.10"
music = { <c e g c e>1 }
\score {
        <<  
          \new Staff = "1" <<
          \transpose c d {\relative c' {\music }}
          >>  

          \new TabStaff = "Tab 1" <<
          \transpose c d {\relative c {\music }}
          >>          
        >>  
}

You get an inverted 4-note d major (sixth) chord in first position. The root of the former c major chord got lost in transposition by default because the root of the resulting d major chord would be on the fifth fret of the fifth string. LilyPond tries to find the corresponding pitches in the first four frets of the guitar because the default value of minimumFret is zero. In my opinion this behaviour is wrong because not all the pitches of the new chord can be found in first position. By default there's a discrepancy between the transposed traditional notation and tablature because the playing position is not transposed. In the example above it is easy to adjust the minimum fret *only* in TabStaff context (leaving the \music-variable untouched).

\new TabStaff = "Tab 1"
        <<
          \transpose c d {
            \relative c {
              \set TabStaff.minimumFret = #2
              \music
            }
          }
        >>

But what happens if somebody uses lots of \set TabStaff.minimumFret =#x
in the \music-variable? Here is a fragment of a larger score:

\version "2.13.10"
global ={
        \clef "G_8"
        \time 2/4
        \key a \minor
}
music = {
        % 1
        \set TabStaff.minimumFret = #4
        <d d'>2\p~( |
        % 2
        <d d'>4\<~ <d d'>8
        <c c'>8 |
        % 3
        <b b'>2)~|
        % 4
        <b b'>4
        \set TabStaff.minimumFret = #2
        <a a'>4\!(
        % 5
        \set TabStaff.minimumFret = #7
        <d d'>2\mf~
        % 6
        \times 2/3 { <d d'>8\< <e e'> <d d'> }
        \set TabStaff.minimumFret = #4
        \times 2/3 { <c c'> <b b'> <c c'>\! } |
        % 7
        <b b'>2)~ |
        % 8
        <b b'>4\>
        \set TabStaff.minimumFret = #2
        <a a'>\!|
}

\score {
        <<  
          \new Staff = "1" <<
            \relative c' {
              \global
              \music
            }
          >>  

          \new TabStaff = "Tab 1" <<
            \relative c' {
            \global
              \music }
          >>
        >>
}

\score {
              <<
          \new Staff = "2" <<
            \transpose a g {
              \relative c' {
              \global
                \music
              }
            }
          >>  

          \new TabStaff = "Tab 2" <<
            \transpose a g {
              \relative c' {
              \global
                \music
              }
            }
          >>  
        >>  
}

The octaves were meant to be played on the first and third string in both keys. In this case one would have to alter quite a few things in the original score even though everything was fine in the "untransposed" version and everything would be fine in the transposed version of this example in g minor if the playing positions were adjusted automatically. This is what I mean(t) with transposing tablature:

"to implicitly raise or lower the value of minimumFret by default by the interval between the two pitches 'frompitch' and 'topitch' of the \transpose-command."

Of course there should also be the possibility to *only* alter the transposed version in case one prefers a different playing position. (I want to produce different editions from one source so I would prefer not to alter the original version too much). That's why I suggested a new command (e.g. \shift(Playing)Position ±x) which is supposed to be included in the original source code but was only meant to work in combination with the \transpose-command. The "untransposed" version would not be effected.

Does that make sense?

>
> We already have transposable chords, in the form of fret diagrams.
I know and I use them quite a lot. They are a great help.

>  One of
> the to-do's on my list for a while (that I haven't got around to since
> I've
> been futzing with auto-beaming) is to turn fret diagrams into notes.  Then
> you'd have a set of chords that you wanted to use in the music.  You'd
> write
> the music as a set of chords, and you could get the notes for the regular
> staff and the tabStaff from the fret diagrams.
>
> I envision it working this way:
>
> myChords = {c1 a g c g:7 c}
>
> transposedChords = \transpose c d {\myChords}
>
> <<
>   \new Staff {
>     \getNotes \transposedChords
>   }
>   \new TabStaff {
>     \getNotes \transposedChords
>   }
> >>
>
> It would seem to me that that is a better approach to the problem that
> you've identified.
>
> Does this make any sense?
Yes of course this makes sense but the subject is slightly different. If I get it right the target group for your function are guitarists who know how to play chords but don't know exactly how to jot them down or they want a quick and effective way of transcribing them. Sounds promising.

Thank you for "listening",
patrick
>
> Thanks,
>
> Carl
>
>

--
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01


Reply | Threaded
Open this post in threaded view
|

Re: transposing tablature

Carl Sorensen



On 1/8/10 12:05 PM, "Patrick Schmidt" <[hidden email]> wrote:

> -------- Original-Nachricht --------
>> Datum: Thu, 7 Jan 2010 15:30:16 -0700
>> Von: Carl Sorensen <[hidden email]>
>> An: Patrick Schmidt <[hidden email]>, "[hidden email]"
>> <[hidden email]>
>> Betreff: Re: [tablatures] transposing tablature
>
>
>>
>> It seems to me like what you want is more than just a change in the
>> minimum
>> fret, since you want to switch from a 5-note chord to a 4-note chord in
>> this
>> particular instance.
> Well this was just a minor aspect of my idea. I'm sorry for the confusion. I
> mixed up two separate ideas. I'll try to free them from entanglement (and
> restrict myself to one idea):
>
>> Instead, you want transposable chords.
> First of all I propose to have transposable tablature because in my opinion
> this function is helpful but does not exist, yet. Let me demonstrate the
> problem:
>
> What happens in tablature when you transpose a 5-note c major common chord in
> first position to D major?
>
> \version "2.13.10"
> music = { <c e g c e>1 }
> \score {
>         <<
>           \new Staff = "1" <<
>           \transpose c d {\relative c' {\music }}
>>>  
>
>           \new TabStaff = "Tab 1" <<
>           \transpose c d {\relative c {\music }}
>>>          
>>>
> }
>
> You get an inverted 4-note d major (sixth) chord in first position. The root
> of the former c major chord got lost in transposition by default because the
> root of the resulting d major chord would be on the fifth fret of the fifth
> string. LilyPond tries to find the corresponding pitches in the first four
> frets of the guitar because the default value of minimumFret is zero. In my
> opinion this behaviour is wrong because not all the pitches of the new chord
> can be found in first position.

This is a bug.  Minimum fret should not default to zero.  It should default
to unset, and the code should be able to find the correct chord.

I had missed this problem before in your code.  I apologize for not
understanding it.

I think I can fix this bug.  I'll try to get to it in the next couple of
hours.


> By default there's a discrepancy between the
> transposed traditional notation and tablature because the playing position is
> not transposed.

It should be able to be transposed.  I'll try to make it work properly, so
you don't need to adjust the minimum fret.

> In the example above it is easy to adjust the minimum fret
> *only* in TabStaff context (leaving the \music-variable untouched).
>
> \new TabStaff = "Tab 1"
>         <<
>           \transpose c d {
>             \relative c {
>               \set TabStaff.minimumFret = #2
>               \music
>             }
>           }
>>>
>
> But what happens if somebody uses lots of \set TabStaff.minimumFret =#x
> in the \music-variable? Here is a fragment of a larger score:
>
> \version "2.13.10"
> global ={
>         \clef "G_8"
>         \time 2/4
>         \key a \minor
> }
> music = {
>         % 1
>         \set TabStaff.minimumFret = #4
>         <d d'>2\p~( |
>         % 2
>         <d d'>4\<~ <d d'>8
>         <c c'>8 |
>         % 3
>         <b b'>2)~|
>         % 4
>         <b b'>4
>         \set TabStaff.minimumFret = #2
>         <a a'>4\!(
>         % 5
>         \set TabStaff.minimumFret = #7
>         <d d'>2\mf~
>         % 6
>         \times 2/3 { <d d'>8\< <e e'> <d d'> }
>         \set TabStaff.minimumFret = #4
>         \times 2/3 { <c c'> <b b'> <c c'>\! } |
>         % 7
>         <b b'>2)~ |
>         % 8
>         <b b'>4\>
>         \set TabStaff.minimumFret = #2
>         <a a'>\!|
> }
>
> \score {
>         <<
>           \new Staff = "1" <<
>             \relative c' {
>               \global
>               \music
>             }
>>>
>
>           \new TabStaff = "Tab 1" <<
>             \relative c' {
>                 \global
>               \music }
>>>
>>>
> }
>
> \score {
>               <<
>           \new Staff = "2" <<
>             \transpose a g {
>               \relative c' {
>                 \global
>                 \music
>               }
>             }
>>>
>
>           \new TabStaff = "Tab 2" <<
>             \transpose a g {
>               \relative c' {
>                 \global
>                 \music
>               }
>             }
>>>
>>>
> }
>
> The octaves were meant to be played on the first and third string in both
> keys.

Here you say that the octaves are meant to be played on the first and third
string, so I still think that the proper thing to do here is to set the
first and third string (you're not really using the automatic fret position
finder here; you want to override it).

> In this case one would have to alter quite a few things in the original
> score even though everything was fine in the "untransposed" version and
> everything would be fine in the transposed version of this example in g minor
> if the playing positions were adjusted automatically. This is what I mean(t)
> with transposing tablature:
>
> "to implicitly raise or lower the value of minimumFret by default by the
> interval between the two pitches 'frompitch' and 'topitch' of the
> \transpose-command."
>
> Of course there should also be the possibility to *only* alter the transposed
> version in case one prefers a different playing position. (I want to produce
> different editions from one source so I would prefer not to alter the original
> version too much). That's why I suggested a new command (e.g.
> \shift(Playing)Position ±x) which is supposed to be included in the original
> source code but was only meant to work in combination with the
> \transpose-command. The "untransposed" version would not be effected.

In my opinion, \shiftPosition should be unnecessary, as if we want the
transpose to shift the position, we should just identify the strings.

>
> Does that make sense?
>
>>
>> We already have transposable chords, in the form of fret diagrams.
> I know and I use them quite a lot. They are a great help.
>>  One of
>> the to-do's on my list for a while (that I haven't got around to since
>> I've
>> been futzing with auto-beaming) is to turn fret diagrams into notes.  Then
>> you'd have a set of chords that you wanted to use in the music.  You'd
>> write
>> the music as a set of chords, and you could get the notes for the regular
>> staff and the tabStaff from the fret diagrams.
>>
>> I envision it working this way:
>>
>> myChords = {c1 a g c g:7 c}
>>
>> transposedChords = \transpose c d {\myChords}
>>
>> <<
>>   \new Staff {
>>     \getNotes \transposedChords
>>   }
>>   \new TabStaff {
>>     \getNotes \transposedChords
>>   }
>>>>
>>
>> It would seem to me that that is a better approach to the problem that
>> you've identified.
>>
>> Does this make any sense?
> Yes of course this makes sense but the subject is slightly different. If I get
> it right the target group for your function are guitarists who know how to
> play chords but don't know exactly how to jot them down or they want a quick
> and effective way of transcribing them. Sounds promising.
>
> Thank you for "listening",
> patrick
>>
>> Thanks,
>>
>> Carl
>>
>>
>
> --
> GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
> Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01



Reply | Threaded
Open this post in threaded view
|

Re: transposing tablature

Carl Sorensen



On 1/8/10 7:50 PM, "Carl Sorensen" <[hidden email]> wrote:

>
>
>
>
> On 1/8/10 12:05 PM, "Patrick Schmidt" <[hidden email]> wrote:
>
>> First of all I propose to have transposable tablature because in my opinion
>> this function is helpful but does not exist, yet. Let me demonstrate the
>> problem:
>>
>> What happens in tablature when you transpose a 5-note c major common chord in
>> first position to D major?
>>
>> \version "2.13.10"
>> music = { <c e g c e>1 }
>> \score {
>>         <<
>>           \new Staff = "1" <<
>>           \transpose c d {\relative c' {\music }}
>>>>
>>
>>           \new TabStaff = "Tab 1" <<
>>           \transpose c d {\relative c {\music }}
>>>>        
>>>>
>> }
>>
>> You get an inverted 4-note d major (sixth) chord in first position. The root
>> of the former c major chord got lost in transposition by default because the
>> root of the resulting d major chord would be on the fifth fret of the fifth
>> string. LilyPond tries to find the corresponding pitches in the first four
>> frets of the guitar because the default value of minimumFret is zero. In my
>> opinion this behaviour is wrong because not all the pitches of the new chord
>> can be found in first position.
>
> This is a bug.  Minimum fret should not default to zero.  It should default
> to unset, and the code should be able to find the correct chord.
>
> I had missed this problem before in your code.  I apologize for not
> understanding it.
>
> I think I can fix this bug.  I'll try to get to it in the next couple of
> hours.

Patrick,

Can you add a FretBoards context and do some experimenting to see if the
chords transpose properly in the FretBoards context?

For the particular case you gave, the FretBoards function works properly.

If the FretBoards function works properly to give the tablature you want,
I'll adjust the tab-note-head engraver so it uses the same note-to-fret
function that the FretBoards engraver uses.

I think this is the proper thing to have happen, anyway.

Here's my sample code:

\version "2.13.10"
music = { <c e g c e>1 }
\score {
        <<
          \new FretBoards {
            \transpose c d {\relative c {\music}}
          }
          \new Staff = "1" <<
          \transpose c d {\relative c' {\music }}
          >>

          \new TabStaff = "Tab 1" <<
%          \set TabStaff.minimumFret = #2
          \transpose c d {\relative c {\music }}
          >>
        >>
}


Thanks,

Carl



Reply | Threaded
Open this post in threaded view
|

Re: transposing tablature

Patrick Schmidt-3

-------- Original-Nachricht --------
> Datum: Fri, 8 Jan 2010 20:47:50 -0700
> Von: Carl Sorensen <[hidden email]>
> An: Carl Sorensen <[hidden email]>, Patrick Schmidt <[hidden email]>, "[hidden email]" <[hidden email]>
> Betreff: Re: [tablatures] transposing tablature

>
>
>
> On 1/8/10 7:50 PM, "Carl Sorensen" <[hidden email]> wrote:
>
> >
> >
> >
> >
> > On 1/8/10 12:05 PM, "Patrick Schmidt" <[hidden email]> wrote:
> >
> >> First of all I propose to have transposable tablature because in my
> opinion
> >> this function is helpful but does not exist, yet. Let me demonstrate
> the
> >> problem:
> >>
> >> What happens in tablature when you transpose a 5-note c major common
> chord in
> >> first position to D major?
> >>
> >> \version "2.13.10"
> >> music = { <c e g c e>1 }
> >> \score {
> >>         <<
> >>           \new Staff = "1" <<
> >>           \transpose c d {\relative c' {\music }}
> >>>>
> >>
> >>           \new TabStaff = "Tab 1" <<
> >>           \transpose c d {\relative c {\music }}
> >>>>        
> >>>>
> >> }
> >>
> >> You get an inverted 4-note d major (sixth) chord in first position. The
> root
> >> of the former c major chord got lost in transposition by default
> because the
> >> root of the resulting d major chord would be on the fifth fret of the
> fifth
> >> string. LilyPond tries to find the corresponding pitches in the first
> four
> >> frets of the guitar because the default value of minimumFret is zero.
> In my
> >> opinion this behaviour is wrong because not all the pitches of the new
> chord
> >> can be found in first position.
> >
> > This is a bug.  Minimum fret should not default to zero.  It should
> default
> > to unset, and the code should be able to find the correct chord.
> >
> > I had missed this problem before in your code.  I apologize for not
> > understanding it.
> >
No need to apologize, it was my fault.
> > I think I can fix this bug.  I'll try to get to it in the next couple of
> > hours.
Thanks very much!
>
> Patrick,
>
> Can you add a FretBoards context and do some experimenting to see if the
> chords transpose properly in the FretBoards context?
Work in progress
>
> For the particular case you gave, the FretBoards function works properly.
>
> If the FretBoards function works properly to give the tablature you want,
> I'll adjust the tab-note-head engraver so it uses the same note-to-fret
> function that the FretBoards engraver uses.
>
> I think this is the proper thing to have happen, anyway.
Sounds good to me. By the way: Would you mind me adding (quite) a few fret diagrams to predefined-fretboards.ly? If yes: is it possible to add several diagrams of the same chord e.g. C major: A-shape (III. position), G-shape (V. position), E-shape (VIII. position) and D-shape (X. position). I could also add lots of inverted chords, eleventh, thirteenth and so on. Why are there two separate fretboard files?

patrick

P.S.: I always get two identical e-mails from you (but not from the others). I thought the mailing list prevents "double postings"?!

>
> Here's my sample code:
>
> \version "2.13.10"
> music = { <c e g c e>1 }
> \score {
>         <<
>           \new FretBoards {
>             \transpose c d {\relative c {\music}}
>           }
>           \new Staff = "1" <<
>           \transpose c d {\relative c' {\music }}
>           >>
>
>           \new TabStaff = "Tab 1" <<
> %          \set TabStaff.minimumFret = #2
>           \transpose c d {\relative c {\music }}
>           >>
>         >>
> }
>
>
> Thanks,
>
> Carl
>
>

--
Jetzt kostenlos herunterladen: Internet Explorer 8 und Mozilla Firefox 3.5 -
sicherer, schneller und einfacher! http://portal.gmx.net/de/go/atbrowser


Reply | Threaded
Open this post in threaded view
|

Re: transposing tablature

Carl Sorensen



On 1/9/10 12:17 PM, "Patrick Schmidt" <[hidden email]> wrote:

>
>
> -------- Original-Nachricht --------
>> Datum: Fri, 8 Jan 2010 20:47:50 -0700
>> Von: Carl Sorensen <[hidden email]>
>> An: Carl Sorensen <[hidden email]>, Patrick Schmidt <[hidden email]>,
>> "[hidden email]" <[hidden email]>
>> Betreff: Re: [tablatures] transposing tablature
>
>>
>>
>>
>> On 1/8/10 7:50 PM, "Carl Sorensen" <[hidden email]> wrote:
>>
>>>
>>>
>>>
>>>
>>> On 1/8/10 12:05 PM, "Patrick Schmidt" <[hidden email]> wrote:
>>>

>>>> You get an inverted 4-note d major (sixth) chord in first position. The
>> root
>>>> of the former c major chord got lost in transposition by default
>> because the
>>>> root of the resulting d major chord would be on the fifth fret of the
>> fifth
>>>> string. LilyPond tries to find the corresponding pitches in the first
>> four
>>>> frets of the guitar because the default value of minimumFret is zero.
>> In my
>>>> opinion this behaviour is wrong because not all the pitches of the new
>> chord
>>>> can be found in first position.
>>>
>>> This is a bug.  Minimum fret should not default to zero.  It should
>> default
>>> to unset, and the code should be able to find the correct chord.
>>>
>>> I had missed this problem before in your code.  I apologize for not
>>> understanding it.
>>>
> No need to apologize, it was my fault.
>>> I think I can fix this bug.  I'll try to get to it in the next couple of
>>> hours.
> Thanks very much!
>>
>> Patrick,
>>
>> Can you add a FretBoards context and do some experimenting to see if the
>> chords transpose properly in the FretBoards context?
> Work in progress
>>
>> For the particular case you gave, the FretBoards function works properly.
>>
>> If the FretBoards function works properly to give the tablature you want,
>> I'll adjust the tab-note-head engraver so it uses the same note-to-fret
>> function that the FretBoards engraver uses.
>>
>> I think this is the proper thing to have happen, anyway.
> Sounds good to me. By the way: Would you mind me adding (quite) a few fret
> diagrams to predefined-fretboards.ly? If yes: is it possible to add several
> diagrams of the same chord e.g. C major: A-shape (III. position), G-shape (V.
> position), E-shape (VIII. position) and D-shape (X. position). I could also
> add lots of inverted chords, eleventh, thirteenth and so on. Why are there two
> separate fretboard files?
>

I would be fine to have you add diagrams to predefined-guitar-fretboards.ly.

We have two separate guitar fretboard files because we want to show in the
documentation that if a chord is not included in the predefined fretboards,
a chord shape will be automatically calculated.

It is possible to add several diagrams of the same chord by using different
octaves.  However, the octaves should probably be two apart, e.g. c and c'',
but not c'.  Because of this, I would recommend that we *not* have all of
the possible shapes for each of the chords in the default file
ly/predefined-guitar-fretboards.ly.  I think we'd fill up the "octave" name
space.

If you can think of a good classification scheme, perhaps we could put these
chords into separate .ly files, and the user could then include them as
desired.

If you're going to add different chords with the A shape, E shape, D shape,
etc. you should probably do it with addChordShape and offset-fret to  use
the known shapes.

> patrick
>
> P.S.: I always get two identical e-mails from you (but not from the others). I
> thought the mailing list prevents "double postings"?!

The gnu lists do, but the lilynet.net may not.

I'll try to remember to eliminate the reply to you directly, and just send
it to tablatures.

Thanks,

Carl



Reply | Threaded
Open this post in threaded view
|

Re: transposing tablature

Patrick Schmidt-3
In reply to this post by Patrick Schmidt-3
-------- Original-Nachricht --------
> Datum: Sat, 9 Jan 2010 22:27:06 -0700
> Von: Carl Sorensen <[hidden email]>
> An: "[hidden email]" <[hidden email]>
> Betreff: Re: [tablatures] transposing tablature

>
>
>
> On 1/9/10 12:17 PM, "Patrick Schmidt" <[hidden email]> wrote:
>
> >
> >
> > -------- Original-Nachricht --------
> >> Datum: Fri, 8 Jan 2010 20:47:50 -0700
> >> Von: Carl Sorensen <[hidden email]>
> >> An: Carl Sorensen <[hidden email]>, Patrick Schmidt
> <[hidden email]>,
> >> "[hidden email]" <[hidden email]>
> >> Betreff: Re: [tablatures] transposing tablature
> >
> >>
> >>
> >>
> >> On 1/8/10 7:50 PM, "Carl Sorensen" <[hidden email]> wrote:
> >>
> >>>
> >>>
> >>>
> >>>
> >>> On 1/8/10 12:05 PM, "Patrick Schmidt" <[hidden email]> wrote:
> >>>
>
> >>>> You get an inverted 4-note d major (sixth) chord in first position.
> The
> >> root
> >>>> of the former c major chord got lost in transposition by default
> >> because the
> >>>> root of the resulting d major chord would be on the fifth fret of the
> >> fifth
> >>>> string. LilyPond tries to find the corresponding pitches in the first
> >> four
> >>>> frets of the guitar because the default value of minimumFret is zero.
> >> In my
> >>>> opinion this behaviour is wrong because not all the pitches of the
> new
> >> chord
> >>>> can be found in first position.
> >>>
> >>> This is a bug.  Minimum fret should not default to zero.  It should
> >> default
> >>> to unset, and the code should be able to find the correct chord.
> >>>
> >>> I had missed this problem before in your code.  I apologize for not
> >>> understanding it.
> >>>
> > No need to apologize, it was my fault.
> >>> I think I can fix this bug.  I'll try to get to it in the next couple
> of
> >>> hours.
> > Thanks very much!
> >>
> >> Patrick,
> >>
> >> Can you add a FretBoards context and do some experimenting to see if
> the
> >> chords transpose properly in the FretBoards context?
> > Work in progress
> >>
> >> For the particular case you gave, the FretBoards function works
> properly.
> >>
> >> If the FretBoards function works properly to give the tablature you
> want,
> >> I'll adjust the tab-note-head engraver so it uses the same note-to-fret
> >> function that the FretBoards engraver uses.
> >>
Almost all chords I tested were transposed properly (see caged.ly). Two chord cannot be played after transposing it (<c e g c g'> and <g c e g c>).

Two minor observations:
1) some of the chord names aren't centered above the fretboard diagrams. (Maybe this is a known issue. I didn't look for a workaround)
2) In the appendix B.2 Common chord modifiers (Notation Reference) there is a wrong chord modifier (and a wrong chord) for the minor/major seventh chord. It says 'maj7.5-' but it should be 'maj7.3-'
 

> >> I think this is the proper thing to have happen, anyway.
> > Sounds good to me. By the way: Would you mind me adding (quite) a few
> fret
> > diagrams to predefined-fretboards.ly? If yes: is it possible to add
> several
> > diagrams of the same chord e.g. C major: A-shape (III. position),
> G-shape (V.
> > position), E-shape (VIII. position) and D-shape (X. position). I could
> also
> > add lots of inverted chords, eleventh, thirteenth and so on. Why are
> there two
> > separate fretboard files?
> >
>
> I would be fine to have you add diagrams to
> predefined-guitar-fretboards.ly.
>
> We have two separate guitar fretboard files because we want to show in the
> documentation that if a chord is not included in the predefined
> fretboards,
> a chord shape will be automatically calculated.
>
> It is possible to add several diagrams of the same chord by using
> different
> octaves.  However, the octaves should probably be two apart, e.g. c and
> c'',
> but not c'.  Because of this, I would recommend that we *not* have all of
> the possible shapes for each of the chords in the default file
> ly/predefined-guitar-fretboards.ly.  I think we'd fill up the "octave"
> name
> space.
>
> If you can think of a good classification scheme, perhaps we could put
> these
> chords into separate .ly files, and the user could then include them as
> desired.
How about this one (see chord-classification-toc.pdf)? All the parts would go in separate .ly files. The chords with the question mark could also go in a different category…

>
> If you're going to add different chords with the A shape, E shape, D
> shape,
> etc. you should probably do it with addChordShape and offset-fret to  use
> the known shapes.
>
> > patrick
> >
> > P.S.: I always get two identical e-mails from you (but not from the
> others). I
> > thought the mailing list prevents "double postings"?!
>
> The gnu lists do, but the lilynet.net may not.
>
> I'll try to remember to eliminate the reply to you directly, and just send
> it to tablatures.
>
> Thanks,
>
> Carl
>
>
--
Jetzt kostenlos herunterladen: Internet Explorer 8 und Mozilla Firefox 3.5 -
sicherer, schneller und einfacher! http://portal.gmx.net/de/go/atbrowser

chord-classification-toc.pdf (59K) Download Attachment
caged.ly (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: transposing tablature

Carl Sorensen

On 1/10/10 9:15 AM, "Patrick Schmidt" <[hidden email]> wrote:
 
> Two minor observations:
> 1) some of the chord names aren't centered above the fretboard diagrams.
> (Maybe this is a known issue. I didn't look for a workaround)

I think the root is centered on the fret diagram.

> 2) In the appendix B.2 Common chord modifiers (Notation Reference) there is a
> wrong chord modifier (and a wrong chord) for the minor/major seventh chord. It
> says 'maj7.5-' but it should be 'maj7.3-'

Fixed in git.  Thanks!

Carl