Constructor de acordes para guitarra
Clasificado en:
Nota: Si quieres los acordes para tocar en la guitarra, ve a las notas de la guitarra en algo de música.
Como en mi sitio de música lo más pedido es como hacer los acordes en la guitarra, decidí que lo mejor era tener un sistema automizado para dibujar los dichosos gráficos. Jugando un poco con Ruby, llegué al siguiente programa
- #!/bin/env ruby
- require 'rvg/rvg'
- include Magick
- class Guitarchords
- attr_accessor :frets, :fingers, :capo_strings, :first_fret, :strings,:name
- def initialize
- @name=""
- @frets=3
- @fingers=[0,0,0,0,0,0]
- @capo_strings=0
- @first_fret=1
- @strings=[" "," "," "," "," "," "]
- end
- def to_s
- t=" "
- @strings.each {|s|
- t+=s+" "
- }
- t+="\n"
- t+=" ===========\n"
- if(@first_fret>1)
- t+=@first_fret.to_s.ljust(3)
- end
- if (@capo_strings>0)
- 1.upto(6) {|c|
- if(7-@capo_strings<=c)
- t+=(c<6)?"==":"="
- else
- t+="| "
- end
- }
- t+="\n -----------\n"
- end
- 1.upto(@frets) {|fret|
- t+=" " unless @first_fret>1 and @capo_strings==0 and fret==1
- @fingers.each {|finger|
- t+=(finger==fret)?"O":"|"
- t+=" "
- }
- t+="\n -----------\n"
- }
- t
- end
- end
- class GuitarchordDraw
- attr_accessor :fret_w,:fret_h,:base_x,:base_y,:f0w,:circle_r
- def initialize(gc)
- @gc=gc
- @fff=(@gc.capo_strings>1?1:0) # first fret finger
- @fret_w=40
- @fret_h=80
- @base_x=70
- @base_y=100
- @f0w=10 # fret 0 width
- @circle_r=15
- end
- def base_w
- @fret_w*5
- end
- def base_h
- @f0w+(@gc.frets+@fff)*@fret_h
- end
- def total_w
- @base_x*2+base_w
- end
- def total_y
- @base_y*2+base_h
- end
- def name_x
- total_w/2
- end
- def name_y
- @base_y/2-20
- end
- def draw(file)
- RVG::dpi = 72
- t_frets=@gc.frets+@fff
- rvg = RVG.new(60.mm, (20+20*t_frets).mm).viewbox(0,0,total_w,total_y) do |canvas|
- canvas.background_fill = 'white'
- canvas.g.translate(@base_x,@base_y) do |base|
- base.styles(:fill=>'white', :stroke=>'black', :stroke_width=>2)
- base.rect(base_w,base_h,0,0)
- 0.upto(t_frets) {|fret|
- base.line(0,@f0w+fret*@fret_h,base_w,@f0w+fret*@fret_h)
- }
- 1.upto(5) {|string|
- base.line(string*@fret_w,0,string*@fret_w,@f0w+t_frets*@fret_h)
- }
- end
- if(@gc.first_fret>1)
- canvas.g.translate(@base_x/2,@base_y+@f0w+@fret_h/2) do |ff|
- ff.styles(:font_family=>'courier',:text_anchor=>'middle', :font_size=>36)
- ff.text(0,0,@gc.first_fret.to_s)
- end
- end
- canvas.g.translate(name_x,name_y) do |name|
- name.styles(:font_family=>'serif',:text_anchor=>'middle', :font_size=>42, :font_weight=>'bold')
- name.text(0,0,@gc.name)
- end
- if (@gc.capo_strings>0)
- canvas.g.translate(@base_x,@base_y+@f0w) do |capo|
- capo.styles(:fill=>'black', :stroke=>'black', :stroke_width=>1)
- capo.rect((@gc.capo_strings-1)*@fret_w+10,10,
- (base_w)-5-(@gc.capo_strings-1)*@fret_w,@fret_h/2-10)
- end
- end
- canvas.g.translate(@base_x,@base_y-10) do |strings|
- c=0
- strings.styles(:font_family=>'courier',:text_anchor=>'middle', :font_size=>36)
- @gc.strings.each {|s|
- strings.text(c*@fret_w,0,s)
- c+=1
- }
- end
- canvas.g.translate(@base_x,@base_y+@fff*@fret_h) do |fingers|
- fingers.styles(:fill=>'black', :stroke=>'black', :stroke_width=>1)
- 0.upto(5) {|string|
- if(@gc.fingers[string]>0)
- fingers.circle(@circle_r, string*@fret_w, @gc.fingers[string]*@fret_h-(@fret_h/2)+@f0w)
- end
- }
- end
- end
- rvg.draw.write(file)
- end
- end
- g=Guitarchords.new
- g.frets=3
- g.name="D7/11(C.5)"
- g.first_fret=5
- g.capo_strings=6
- g.fingers=[0,0,2,0,3,0]
- g.strings=["o","O","o","o","o","o"]
- puts ""
- puts g.to_s
- gdd=GuitarchordDraw.new(g)
- gdd.draw("test.png")
Nada muy complicado y cumple perfectamente su función. La salida de consola es:
o O o o o o =========== 5 =========== ----------- | | | | | | ----------- | | O | | | ----------- | | | | O | -----------
Y el .png resultante:
Lo único que me falta ahora es crear un pequeño parser, que permitiría crear una base de datos de acordes como la siguiente:
# Nombre acorde:dedos en cuerda[:cuerdas a tocar[:número del primer traste[:número de dedos en cejilla]]] C:032010: O D:000232:XoOooo E:022100:O F:022100:O :1:6 G:320033:O A:002220: O B:002220: O :2:6
- 16487 lecturas

necesitaria por varo que me den los graficos calros, no con los ___o___ i td eso, de todos los acordes para guitarra criolla, mayores, menores, bemoles, sostenidos.. etc. gracias
che mira yo soy fans de the doors de los rollig stones y me compre una guitarra pero no se como se toca y me gustaria aprender igual soy re drogin y re alclico como todo rockanrollero jajajjajaja!!!!
"¿...de tal manera de crear una suerte de...?" Un pelín forzado, ¿no? (perdón por el off-topic)
Jajajaja. Sí, tienes razón. Eso pasa cuando haces muchos informes psicológicos y te acostumbras a darle muchas vueltas a las cosas simples.
Lo corregiré
necesito aprender a tocar guitarra..pero no se hacer las notas.. alguien me enseña??
Visita http://musica.apsique.com/node/65 para ver los acordes de la guitarra.
necesito que me manden las notas para tocar guitarra ya que yo todavia no se he entrado a muchas paginas pero ninguna me sirve confio en ustedes bay
quiero que me dean todos los acordes de guitarra
Enviar un comentario nuevo