October 24, 2008
一個前のエントリで、はてなダイアリーのウクレレ記法をけっこう使ってるだなんだって話をしましたが、私はどちらかというとウクレレとか全然弾かなくて、ギターばっかり弾いてたりするので、なんか Music::Image::Chord という、それっぽいモジュールがあったので使ってみたら、何だか色々と残念な結果だったなんてつぶやきました。
で、やっぱ、ギターのタブ譜を出力するのは大変だなーって思ってたら、コメント欄でようちゃんから
まず、ギターの場合、ウクレレと違って弦が 6 本なので、2 本追加して、フレットの長さを変えました。
それにともない、画像のサイズはウクレレのものより大きくしました。
ギターには、ミュート弦という概念があって「この弦は音を鳴らさないんだよー」なんていう場合に、弦の左はじのほうに、×マークがついてたりします。なので、その×マークを入れるスペースを左はじに確保しました。
ギターの場合、ローコードやバレーコードなど、ポジションによって押さえかたが異なるのですが、そんなことイチイチ言ってたらアレなので、アコースティックギター派の人向けにローコードを主に出力するようにしました。
もちろん、GD::Tab::Uklele 同様に、違うポジションでおさえたほうが指運がスムーズな場合は、
ちなみに、GD::Tab::Uklele の
こんな感じになりますが、これって、
少なくともギターやってる人間は 6 弦から 1 弦に向かってフレット番号を入れるほうがシックリくるので、
実際にこれを動かすと、
こんな風になります。
ウクレレに比べて、弦が多いので、コードの種類はだいぶ増えて複雑なコードも使えるようになっています。
もちろん、フレットを指定したりして、分数コードとかも出来て、音の幅が一層ひろがります。
こんな感じ。
ということで、ほとんどが GD::Tab::Ukulele を改造しただけなのですが、ギター人口はウクレレよりも高いような気がしたので、GD::Tab::Guitar を CPAN にうpっておきました。
もしよかったら、はてなで「ギター記法」とか出来ないかなーなんて勝手に期待しつつ、元の GD::Tab::Ukulele モジュールの作者である舘野氏 (リプライチャメント) に敬意を表します。
みなさん、よかったら使ってみてください。
で、やっぱ、ギターのタブ譜を出力するのは大変だなーって思ってたら、コメント欄でようちゃんから
むしろ、GD::Tab::Ukuleleを改造する方向でどうでしょう?と提案してもらったので、その方向で検討してみました。
まず、ギターの場合、ウクレレと違って弦が 6 本なので、2 本追加して、フレットの長さを変えました。
それにともない、画像のサイズはウクレレのものより大きくしました。
ギターには、ミュート弦という概念があって「この弦は音を鳴らさないんだよー」なんていう場合に、弦の左はじのほうに、×マークがついてたりします。なので、その×マークを入れるスペースを左はじに確保しました。
ギターの場合、ローコードやバレーコードなど、ポジションによって押さえかたが異なるのですが、そんなことイチイチ言ってたらアレなので、アコースティックギター派の人向けにローコードを主に出力するようにしました。
もちろん、GD::Tab::Uklele 同様に、違うポジションでおさえたほうが指運がスムーズな場合は、
chord()
メソッドではなく、generate()
メソッドを使って、より良いポジションが利用できます。ちなみに、GD::Tab::Uklele の
generate()
メソッドを使う時、
$uk->generate('D7',[0,2,0,2])->png;このようにすると
こんな感じになりますが、これって、
[0,2,0,2]
(1 弦から 4 弦) というよりは[2,0,2,0]
(4 弦から 1 弦) の表現のほうがわかりやすいというか普通な気がします。少なくともギターやってる人間は 6 弦から 1 弦に向かってフレット番号を入れるほうがシックリくるので、
generate()
メソッドを拡張して、こんな風に出来るようにしました。$gtr->generate('G', '355433')->png;こんな風に、無名配列ではなく、文字列で渡せるようにしました。
実際にこれを動かすと、
こんな風になります。
ウクレレに比べて、弦が多いので、コードの種類はだいぶ増えて複雑なコードも使えるようになっています。
$gtr->chord('A7(#9)')->png;
もちろん、フレットを指定したりして、分数コードとかも出来て、音の幅が一層ひろがります。
$gtr->generate('Bb/A', '5x333x')->png;
こんな感じ。
ということで、ほとんどが GD::Tab::Ukulele を改造しただけなのですが、ギター人口はウクレレよりも高いような気がしたので、GD::Tab::Guitar を CPAN にうpっておきました。
もしよかったら、はてなで「ギター記法」とか出来ないかなーなんて勝手に期待しつつ、元の GD::Tab::Ukulele モジュールの作者である舘野氏 (リプライチャメント) に敬意を表します。
みなさん、よかったら使ってみてください。