[tablatures] transposing tablature

[ Thread Index | Date Index | More lilynet.net/tablatures Archives ]


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



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/