Este equipo de especialistas pasados muchos días de trabajo y de recopilar de datos, hemos dado con la solución, queremos que resulte de utilidad para tu proyecto.
Solución:
Editar: Aquí hay una mejor drawukulelechord
macro usando TikZ.
-
los
drawukulelechord
macro dibuja un acorde de ukelele. Su argumento obligatorio es una lista de cuatro números (para cuatro cadenas): -1 (string no se reproduce), 0 (abierto string), 1 y superior (posición del dedo para este string). El argumento opcional se puede utilizar para cambiar la escala (predeterminado:x=2ex
yy=2ex
). -
los
defineukulelechord
macro permite asociar un nombre (primer argumento) y una lista para usar condrawukulelechord
(segundo argumento). -
los
ukulelechord
macro dibuja un acorde de ukelele con nombre (predefinido pordefineukulelechord
).
Puede descomentar o comentar la línea con % opened string
dibujar explícitamente o no un abierto string.
documentclassstandalone
usepackageetoolbox
usepackagetikz
newcommanddrawukulelechord[2][]%
edefchord#2%
begintikzpicture[x=2ex,y=2ex,line cap=round,line width=.4pt,
baseline=(current bounding box.center),#1]
draw[line width=.6pt] (1,0) -- (4,0);
foreach d in 1,...,4draw (1,-d) -- (4,-d);
foreach d[count=p] in chord
draw (p,0) -- (p,-4.5);
ifdefstringd-1
draw (p,.25) +(-.125,-.125) -- +(.125,.125)
+(-.125,.125) -- +(.125,-.125);
ifdefstringd0
draw (p,.25) circle(.125); % opened string
fill (p,.5-1*d) circle(.25);
path[use as bounding box] (0.5,.5) rectangle (4.5,-5);
endtikzpicture%
makeatletter
newcommanddefineukulelechord[2]%
csdef@[email protected]
#1drawukulelechord#2%
newcommandukulelechord[1]%
ifcsdef@[email protected]#1%
csuse@[email protected]#1%
%
GenericErrorUndefined ukulele chord '#1'%
%
makeatother
defineukulelechordA maj2,1,0,0
defineukulelechordA 62,1,2,0
defineukulelechordG sharp maj5,3,4,3
defineukulelechordA flat maj5,3,4,3
defineukulelechordG sharp 61,3,1,3
begindocument
begintabularrcc
& maj & 6 \
A & ukulelechordA maj & ukulelechordA 6 \
G$sharp$/A$flat$ & ukulelechordG sharp maj & ukulelechordG sharp 6 \
Test & drawukulelechord-1,0,1,2 & drawukulelechord2,-1,-1,-1
endtabular
enddocument
El paquete guitarchordschemes
se puede utilizar para esto, al menos con v0.7. A partir de dicha versión permite configurar el string número y para rotar el esquema.
En el siguiente ejemplo también utilizo el chords
biblioteca de la leadsheets
paquete para la composición tipográfica de los nombres de los acordes. Esto es solo por conveniencia y no es una parte esencial del ejemplo.
documentclassarticle
usepackage[T1]fontenc
usepackage[margin=2cm]geometry
usepackageguitarchordschemes
% the `chords' library of the leadsheets package provides the convenient
% writechord macro; we don't any other functionality of said package so we
% use the `chords' option:
usepackage[chords]leadsheets
usepackagearray
% guitarchordschemes setup:
setchordscheme
strings = 4 ,
chord-frets = 5 ,
tuning = ,,, ,
rotate = -90 ,
x-unit = 1.333mm , y-unit = 2mm ,
finger-radius = .25 ,
line-width = .6pt ,
restrict-bounding-box
begindocument
begintabularl*13c
& ma & 6 & 7 & 9 & maj7 & mi & mi6 & mi7 & mi9 & sus2 & sus4 & aug & dim \
writechordA &
chordscheme[ finger = 2/4,1/3 ] &
chordscheme[ finger = 2/4,1/3,2/2 ] &
chordscheme[ finger = 1/3 ] &
chordscheme[ finger = 1/3,2/1 ] &
chordscheme[ finger = 1/4,1/3 ] &
chordscheme[ finger = 2/4 ] &
chordscheme[ finger = 2/4,2/2 ] &
chordscheme &
chordscheme[ finger = 2/4,2/1 ] &
chordscheme[ finger = 2/4,4/3,5/2,2/1 ] &
chordscheme[ finger = 2/4,2/3 ] &
chordscheme[ finger = 2/4,1/3,1/2 ] &
chordscheme[ finger = 2/4,3/3,2/2,3/1 ] \
writechordA#slashwritechordBb &
chordscheme[ finger = 3/4,2/3,1/2,1/1 ] &
chordscheme[ finger = 2/3,1/2,1/1 ] &
chordscheme[ finger = 1/4,2/3,1/2,1/1 ] &
chordscheme[ finger = 1/4,2/3,1/2,3/1 ] &
chordscheme[ finger = 3/4,2/3,1/2 ] &
chordscheme[ finger = 3/4,1/3,1/2,1/1 ] &
chordscheme[ finger = 3/4,1/3,3/2,1/1 ] &
chordscheme[ finger = 1/4,1/3,1/2,1/1 ] &
chordscheme[ finger = 3/4,1/3,1/2,3/1 ] &
chordscheme[ finger = 3/4,1/2,1/1 ] &
chordscheme[ finger = 3/4,3/3,1/2,1/1 ] &
chordscheme[ finger = 3/4,2/3,2/2,1/1 ] &
chordscheme[ finger = 1/3,1/1 ] \
writechordB &
chordscheme[ finger = 4/4,3/3,2/2,2/1 ] &
chordscheme[ finger = 1/4,3/3,2/2,2/1 ] &
chordscheme[ finger = 2/4,3/3,2/2,2/1 ] &
chordscheme[ finger = 2/4,3/3,2/2,4/1 ] &
chordscheme[ finger = 4/4,3/3,2/2,1/1 ] &
chordscheme[ finger = 4/4,2/3,2/2,2/1 ] &
chordscheme[ finger = 1/4,2/3,2/2,2/1 ] &
chordscheme[ finger = 2/4,2/3,2/2,2/1 ] &
chordscheme[ finger = 4/4,2/3,2/2,4/1 ] &
chordscheme[ finger = 4/4,1/3,2/2,2/1 ] &
chordscheme[ finger = 4/4,4/3,2/2,2/1 ] &
chordscheme[ finger = 3/3,3/2,2/1 ] &
chordscheme[ finger = 1/4,2/3,1/2,2/1 ] \
writechordC &
chordscheme[ finger = 3/1 ] &
chordscheme &
chordscheme[ finger = 1/1 ] &
chordscheme[ finger = 2/3,1/1 ] &
chordscheme[ finger = 2/1 ] &
chordscheme[ finger = 3/3,3/2,3/1 ] &
chordscheme[ finger = 3/3,3/2 ] &
chordscheme[ finger = 3/4,3/3,3/2,3/1 ] &
chordscheme[ finger = 5/4,3/3,3/2,5/1 ] &
chordscheme[ finger = 2/3,3/2,3/1 ] &
chordscheme[ finger = 1/2,3/1 ] &
chordscheme[ finger = 1/4,3/1 ] &
chordscheme[ finger = 2/4,3/3,2/2,3/1 ] \
writechordC#slashwritechordDb &
chordscheme[ finger = 1/4,1/3,1/2,4/1 ] &
chordscheme[ finger = 1/4,1/3,1/2,1/1 ] &
chordscheme[ finger = 1/4,1/3,1/2,2/1 ] &
chordscheme[ finger = 1/4,3/3,1/2,2/1 ] &
chordscheme[ finger = 1/4,1/3,1/2,3/1 ] &
chordscheme[ finger = 5/4,3/3,3/2,3/1 ] &
chordscheme[ finger = 1/4,4/3,4/2,1/1 ] &
chordscheme[ finger = 1/4,4/3,4/2,2/1 ] &
chordscheme[ finger = 1/4,3/3,4/1 ] &
chordscheme[ finger = 1/4,3/3,4/2,4/1 ] &
chordscheme[ finger = 1/4,1/3,2/2,4/1 ] &
chordscheme[ finger = 2/4,1/3,1/2 ] &
chordscheme[ finger = 1/3,1/1 ] \
writechordD &
chordscheme[ finger = 2/4,2/3,2/2 ] &
chordscheme[ finger = 2/4,2/3,2/2,2/1 ] &
chordscheme[ finger = 2/4,2/3,2/2,3/1 ] &
chordscheme[ finger = 2/4,4/3,2/2,3/1 ] &
chordscheme[ finger = 2/4,2/3,2/2,4/1 ] &
chordscheme[ finger = 2/4,2/3,1/2 ] &
chordscheme[ finger = 2/4,2/3,1/2,2/1 ] &
chordscheme[ finger = 2/4,2/3,1/2,3/1 ] &
chordscheme[ finger = 2/4,4/3,1/2,5/1 ] &
chordscheme[ finger = 2/4,2/3 ] &
chordscheme[ finger = 2/3,3/2 ] &
chordscheme[ finger = 3/4,2/3,2/2,1/1 ] &
chordscheme[ finger = 1/4,2/3,1/2,2/1 ] \
writechordD#slashwritechordEb &
chordscheme[ finger = 3/3,3/2,1/1 ] &
chordscheme[ finger = 3/4,3/3,3/2,3/1 ] &
chordscheme[ finger = 3/4,3/3,3/2,4/1 ] &
chordscheme[ finger = 1/3,1/2,1/1 ] &
chordscheme[ finger = 3/4,3/3,3/2,5/1 ] &
chordscheme[ finger = 3/4,3/3,2/2,1/1 ] &
chordscheme[ finger = 3/4,2/2,1/1 ] &
chordscheme[ finger = 3/4,1/3,2/2,1/1 ] &
setchordscheme chord-frets = 6 chordscheme[ finger = 3/4,5/3,2/2,6/1 ] &
chordscheme[ finger = 3/4,3/3,1/2,1/1 ] &
chordscheme[ finger = 1/4,3/3,4/2,1/1 ] &
chordscheme[ finger = 3/3,3/2,2/1 ] &
chordscheme[ finger = 2/4,3/3,2/2,3/1 ] \
writechordE &
chordscheme[ finger = 4/4,4/3,4/2,2/1 ] &
chordscheme[ finger = 1/4,1/3,2/1 ] &
chordscheme[ finger = 1/4,2/3,2/1 ] &
chordscheme[ finger = 1/4,2/3,2/2,2/1 ] &
chordscheme[ finger = 1/4,3/3,2/1 ] &
chordscheme[ finger = 4/3,3/2,2/1 ] &
chordscheme[ finger = 4/4,4/3,3/2,4/1 ] &
chordscheme[ finger = 2/3,2/1 ] &
chordscheme[ finger = 4/3,2/2,2/1 ] &
chordscheme[ finger = 4/4,4/3,2/2,2/1 ] &
chordscheme[ finger = 2/4,4/3,5/2,2/1 ] &
chordscheme[ finger = 1/4,3/1 ] &
chordscheme[ finger = 2/3,2/1 ]
endtabular
enddocument
Agregando a la brillante respuesta de Paul, recomiendo usar lilyglyphs
. He creado algunos comandos (con la ayuda del creador de lilyglyphs) para que sea menos engorroso ingresar símbolos de acordes.
documentclassarticle
usepackagefontspec
usepackagetikz
usepackagelilyglyphs
usepackagexspace
newcommandtinysharpx[1][0.10ex]hspace*#1sharp[scale=.65,raise=.1]hspace*#1
newcommandtinyflatx[1][0.10ex]hspace*#1flat[scale=.6,raise=.1]hspace*#1
newcommandflatx[1][0.18ex]hspace*#1flathspace*#1
newcommandsharpx[1][0.18ex]hspace*#1sharphspace*#1
newcommandbigchord[4](text#1^#2mkern-3murelax(mathoplimitsmkern-3murelax^#3_#4))
newcommandchord[2](text#1^#2)
newcommandaflatA(flatx)xspace
newcommandbflatB(flatx)xspace
newcommandcflatC(flatx)xspace
newcommanddflatD(flatx)xspace
newcommandeflatE(flatx)xspace
newcommandfflatF(flatx)xspace
newcommandgflatG(flatx)xspace
newcommandaflatmA(flatx)mxspace
newcommandbflatmB(flatx)mxspace
newcommandcflatmC(flatx)mxspace
newcommanddflatmD(flatx)mxspace
newcommandeflatmE(flatx)mxspace
newcommandfflatmF(flatx)mxspace
newcommandgflatmG(flatx)mxspace
newcommandaissA(sharpx)xspace
newcommandbissB(sharpx)xspace
newcommandcissC(sharpx)xspace
newcommanddissD(sharpx)xspace
newcommandeissE(sharpx)xspace
newcommandfissF(sharpx)xspace
newcommandgissG(sharpx)xspace
newcommandaissmA(sharpx)mxspace
newcommandbissmB(sharpx)mxspace
newcommandcissmC(sharpx)mxspace
newcommanddissmD(sharpx)mxspace
newcommandeissmE(sharpx)mxspace
newcommandfissmF(sharpx)mxspace
newcommandgissmG(sharpx)mxspace
newcommandukulelechord[2][]%
begintikzpicture[x=3mm,y=3mm,line cap=round,line width=.4pt,
baseline=(current bounding box.center),#1]
draw[line width=.6pt] (1,0) -- (4,0);
foreach d in 1,...,4draw (1,-d) -- (4,-d);
foreach d[count=p] in #2
draw (p,0) -- (p,-4.5);
ifnumd>0 fill (p,.5-1*d) circle(.8mm); fi
path[use as bounding box] (0.5,.3) rectangle (4.5,-5);
endtikzpicture%
begindocument
begintabularrcc
&maj& 6 \
A & ukulelechord2,1,0,0 & ukulelechord2,1,2,0 \
giss/aflat & ukulelechord5,3,4,5 & ukulelechord1,3,1,3 \
endtabular
enddocument
Aquí puedes ver las comentarios y valoraciones de los usuarios
Nos puedes añadir valor a nuestro contenido asistiendo con tu experiencia en las notas.