Subject: paramétrage pointuuuuu de Tab_note_heads_engraver

From: Daniel Cartron <[email-masked]>
Date: Mon, 15 Sep 2008 13:04:07 +0200

Salut à tous,

Pour rebondir sur les mails traitant des tablatures d'accordéon diatonique, 
dont les miens, j'aimerais apporter une petite contrib...

J'ai _presque_ réussi à faire ça mais le pb est qu'il faudrait que je puisse 
dire à Tab_note_heads_engraver que la première corde n'est pas frettée par 
demi-tons mais en intervalles suivants : 4 7 12 et la derxième en 2 5 9 11, 
les 3me et 4me reprenant le mm schéma. Et aussi lui dire que la première 
corde n'est pas la plus aiguë mais la plus grave, pas trouvé comment faire 
ça...

Si on on peut faire ça je pense qu'on peut faire des tablatures pour diato.

-- 
Cordialement, Daniel Cartron
« Le café est un breuvage qui fait dormir quand on n'en prend pas. »
Alphonse Allais.

---

From: Daniel Cartron <[email-masked]>
Date: Mon, 15 Sep 2008 18:06:16 +0200

Le lundi 15 septembre 2008, Daniel Cartron a écrit :
> il faudrait que je puisse
> demi-tons mais en intervalles suivants : 4 7 12 et la deuxième en 2 5 9 11,
> les 3me et 4me reprenant le mm schéma.

En fait on peut mm faire plus simple, si je peux indiquer qu'on numérote à 
partir de la corde la plus grave et non la plus aiguë, et si je peux 
surcharger le numéro de case calculé avec un algorithme différent sur chaque 
corde. Algorithme simple du genre( partie entière de (numéro calculé +x)*y/z)

Si je peux faire ça les tablatures de diato sont quasiment opérationnelles... 
Faudra fignoler le look mais ça marchera.

ci-joint un exemple, mais comme annoncé les tablatures sont la tête en bas, et 
les numéros sont à recalculer.

-- 
Cordialement, Daniel Cartron
«  Il faut exiger de chacun ce que chacun peut donner. »
Antoine de Saint-Exupéry - Le petit prince

---

From: Daniel Cartron <[email-masked]>
Date: Mon, 15 Sep 2008 20:39:30 +0200

Le lundi 15 septembre 2008, Daniel Cartron a écrit :
> > dire à Tab_note_heads_engraver que la première corde n'est pas frettée
> > par demi-tons mais en intervalles suivants : 4 7 12 et la deuxième en 2 5
> > 9 11, les 3me et 4me reprenant le mm schéma.
>
> surcharger le numéro de case calculé avec un algorithme différent sur
> chaque corde. Algorithme simple du genre( partie entière de (numéro calculé
> +x)*y/z)

Finalement j'y suis arrivé, à part la surcharge des numéros de case... J'ai 
réussi à recaler les lignes, et tout est bien placé (restera comme je l'ai 
dit du fignolage à faire) mais le principe est celui-ci : on considère que le 
clavier extérieur du diato poussé est une pseudo-corde (1) , et une autre (2) 
si on le tire. Idem pour l'intérieur (3 et 4). Ce qui impose de préciser pour 
toute note saisie \1 \2 \3 ou \4. Un peu lourd mais bien moins que devoir 
utiliser des lyrics. Si je savais où aller bricoler le code j'essaierai bien 
d'implémenter mon algorithme complet qui permettrait de ne saisir que le 
clavier et non aussi son sens, mais dans un premier temps, ça ira comme ça.

Ensuite on rajoute un TabStaff bricolé pour n'avoir que 4 cordes mais 
réparties de part et d'autres de 2 lignes, et on joue sur l'accord des cordes 
avec \set TabStaff.stringTunings. J'ai fait ça pas mal au pif pour coller à 
mon algo, ce serait pratique d'avoir moyen de mettre une variable qq part 
pour ajuster globalement ces valeurs en fonction de la tonalité du diato.

Reste que les numéros apparaissant ne sont pas les bons, mais les algorithmes 
partiels pour y arriver sont (si on considère que le numéro calculé par 
lilypond est X) :

claviers poussés (pseudo-cordes 1 et 3) : ENT((X+1)/4)+3
ce qui remplace la séquence
0 4 7 12 16 19 24 28 31 
par 
3 4 5 6 7 8 9 10 11 

claviers tirés (pseudo-cordes 2 et 4) : ENT((X+1)/3)+3
ce qui remplace la séquence
0 3 7 9 12 15 19 21 
par
3 4 5 6 7 8 9 10

ce qui est conforme à un clavier de diato, si on en tient pas compte des deux 
boutons du bas qui ne servent jamais et en plus ne sont pas standards... 

Un petit exemple : 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\include "italiano.ly"
% désolé j'aime bien écrire en italiano

\header {
	title = "Tablatures de l'accordéon diatonique"
 	tagline = ""
	composer = "Daniel Cartron"
	}

Melodie = \relative sol' {
	\clef treble
	\key sol \major
	\time 4/4

	{ sol,8\1^"Clavier de sol" la\2 si\1 do\2
	re\1 mi\2 fad\2 sol\1
	la\2 si\1 do\2 re\1
	mi\2 fad\2 sol\1 la\2
	si\1 do\2 re\1 mi\2 } 
	
	\bar "|." 
	\break
	\key do \major
	
	{ 
	 do,,\3^"Clavier de do" re\4 mi\3 fa\4 
	 sol\3 la\4 si\4 do\3
	 re\4 mi\3 fa\4 sol\3
	 la\4 si\4 do\3 re\4
	 \bar "|." } 
}
<<
	\new Staff { \clef treble \Melodie }
	\new TabStaff 
		\with 
		{
			\remove "Time_signature_engraver" % on vire l'indication de métrique qui ne 
sert à rien et encombre
			\remove "Clef_engraver" % on vire la clé TAB qui fait moche...
%			\override Stem #'transparent = ##t \override Beam #'transparent = ##t %% 
affichage ou non des hampes
		}
		{
			\stemDown % les hampes en bas, au cas où on veut les afficher
			\override Beam #'damping = #100000 % pour avoir des ligatures horizontales
% 			\set Staff.instrumentName = "A" % Nom des claviers à positionner comme il 
faut, reste à faire,  probablement à coup de markup...
			\set TabStaff.stringTunings = #'(-5 -3 0 2) % paramétrage des pseudo-cordes 
correspondant aux claviers en poussé et tiré
			\override Staff.StaffSymbol #'line-positions = #'(-2 2) % décalage des 
lignes de façon à respecter l'aspect d'une tablature de diato
			\Melodie
		}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
et le résultat en pj.

Je ne sais pas si on peut insérer mes algorithmes sous forme de markup dans le 
TabStaff, mais ce serait une bonne façon d'avoir ce qu'on veut sans toucher 
au code.

-- 
Cordialement, Daniel Cartron
« La vieillesse, en définitive, n'est que la punition d'avoir vécu. »
E. M. Cioran

---

From: Daniel Cartron <[email-masked]>
Date: Wed, 24 Sep 2008 07:42:24 +0200

Le lundi 15 septembre 2008, Daniel Cartron a écrit :
> Je ne sais pas si on peut insérer mes algorithmes sous forme de markup dans
> le TabStaff, mais ce serait une bonne façon d'avoir ce qu'on veut sans
> toucher au code.

Je reviens là-dessus, personne n'a d'idée sur ce sujet ? C'est dommage, les 
tablatures pour diato sont quasiment au point à part ce détail (qui n'en est 
peut-être pas un d'ailleurs...)

-- 
Cordialement, Daniel Cartron
« Petit poisson deviendra grand si le pêcheur en raconte la prise. »
Robert Sabatier - Le livre de la déraison souriante

---

From: "Valentin Villenave" <[email-masked]>
Date: Wed, 24 Sep 2008 19:23:13 +0200

> peut-être pas un d'ailleurs...)

Je serais ravi d'avoir une idée, mais je n'ai pas bien compris
pourquoi tu parles de markup. Ce que tu cherches à faire, c'est bien à
substituer d'autres chiffres de doigtés à ceux affichés, non ? (auquel
cas j'ai peur que ça se joue dans le C++...)

Cordialement,
Valentin

---

From: Daniel Cartron <[email-masked]>
Date: Thu, 25 Sep 2008 06:44:25 +0200

Le mercredi 24 septembre 2008, Valentin Villenave a écrit :
> pourquoi tu parles de markup. 

Oui c'est sans doute override que j'aurais du mettre

> Ce que tu cherches à faire, c'est bien à 
> substituer d'autres chiffres de doigtés à ceux affichés, non ? 

oui exactement

> (auquel cas j'ai peur que ça se joue dans le C++...)

arghhh ça fait pas mon affaire... Mon idée était que si on sait où et comment 
ces chiffres sont calculés on pourrait faire la substitution.

-- 
Cordialement, Daniel Cartron
« La boussole est une espèce de montre qui indique toujours midi et demie. »
François Cavanna - Le saviez-vous ?

---

From: Daniel Cartron <[email-masked]>
Date: Thu, 25 Sep 2008 06:50:49 +0200

> substituer d'autres chiffres de doigtés à ceux affichés, non ?

une autre piste serait de pouvoir modifier les cordes indépendemment, du genre 
les frettes ne sont pas disposées tous les demis-tons, mais on pourrait dire 
que sur une corde on a tierce quinte octave et sur une autre les autres 
intervalles... Mais chuis pas sur que ce soit plus simple...

-- 
Cordialement, Daniel Cartron
« J'ai une mémoire admirable, j'oublie tout. »
Alphonse Allais