ギターのコード譜を生成するプラグイン作った。

  • Posted on
  • by
こんな狭い世界でbayashiさんのと被ってしまってなんですが、ギターのコード譜を画像表示するMTプラグインを作成しました。たぶんMT4.2位専用です。

動作環境

お使いのサーバーで、画像処理ライブラリのGDと、PerlからGDを利用するためのモジュールがインストールされている必要があります。自分の利用しているXreaのサーバーでは、いずれも利用可能なようです。

インストール

プラグインディレクトリに、解凍したGuitarToolsプラグインのpluginsディレクトリ以下をアップロードしてください。
外部モジュールとして、画像作成ににぽたんさん作成GD::Tab::Guitar、コード認識にMusic::Chord::Namerを利用しています。プラグインのパッケージには同梱していませんので、これらのモジュールをCPANからインストールするか、またはextlibに適宜展開して下さい。

また、lines記法を利用するためには、以下のスタイルシートをメインのスタイルシートテンプレートのおしりなどに張り付けるなどの形で、参照できるようにしてください。
.guitarlines {
    line-height: 50px;
    background-color: #F4F8Fc;
    font-size: 16px;
}

.guitarlines .guitarchord {
    position: relative;
    width: 52px;
    top: -7px;
    margin: 0 -52px 0 0;
    border: 0;
}

.guitarlines .chordname {
    position: relative;
    display: inline-block;
    width: 0;
    top: -1.2em;
    font-weight: bold;
}

利用方法

プラグインがインストールされると、グローバルモディファイア「guitar_tools」と、テキストフォーマット「GuitarTools」が有効になります。これらが有効な箇所で、ギター記法を利用できます。
ごくたまにエントリーで使う程度ならフォーマットから利用し、日常的にギター記法を利用するブログでは、EntryBodyタグなどのモディファイアとして、テンプレートに組み込んでしまうのがよいかと思います。

シンタックス

基本

角括弧で囲んで「chord:」と書いた後にコードネームを書いてください。
[chord:C]と書くと[chord:C]のように画像に変換されます。

フレットを指定する

デフォルトで登録されているコードのフォームが気に食わない、コードが特殊、など、フレットを指定したい場合「C6@032030」のように@マークで区切ってください。
[chord:C6@032030]
[chord:C6@032030]
  • 6弦から1弦に向かって書きます。
  • ミュートは小文字のxです。

複数のコードをズラッと書く。

複数並べたい場合、スペースで区切って記入できます。
[chord:C6@032030 GM7 Bm7 Em]
[chord:C6@032030 GM7 Bm7 Em]

コードネームの自動推定

コードネームの代わりに「auto」と指定することで、自動的にコードを推測することができます。
[chord:auto@320003 auto@xx0232 auto@x7678x auto@576755 auto@123456]
[chord:auto@320003 auto@xx0232 auto@x7678x auto@576755 auto@123456]

その他の例

フレット指定するならコードネームは適当でもおkです
[chord:Jimi@x7678x]
[chord:Jimi@x7678x]
二桁のフレット数が混じるときはカンマ区切りで
[chord:Ab_oct@x,11,x,13,x,x]
[chord:Ab_oct@x,11,x,13,x,x]

コードの表記例

メジャー、マイナー
[chord:C Cm]
[chord:C Cm]
メジャーセブンスは大文字M7。セブンス、メジャーセブン、マイナーセブン、マイナーメジャーセブン。
[chord:C7 CM7 Cm7 CmM7]
[chord:C7 CM7 Cm7 CmM7]
ディミニッシュ、オーギュメント、サスペンテッドフォー、アドナイン
[chord:Edim Eaug Esus4 Eadd9]
[chord:Edim Eaug Esus4 Eadd9]
テンションは括弧でくくる
[chord:C7(9) C7(9,13)]
[chord:C7(9) C7(9,13)]
シャープはシャープ記号。フラットは小文字のb
[chord:C# C7(#9) C7(b5)]
[chord:C# C7(#9) C7(b5)]

lines記法

歌詞っぽいものをかけます。
歌詞全体を[lines: ... ] で囲みます。
そして、コードネームを弓かっこ「{」「}」で囲んではさむと、歌詞中にコードネームやポジション画像を埋め込むことができます。
コードネームのみとしたい場合、コードネームの先頭にマイナスを付けてください。
[lines:
{F#m(11)@x44200}two jumps in a week a bet you {Asus2@x02200}think that's pretty clever {E}don't you boy?
{F#m(11)@x44200}Flying on your motorcycle, {Asus2@x02200}watching all the ground {Eb@688666}beneath you drop
{-F#m(11)}You'd kill yourself for recognition, {-Asus2}kill yourself to never {-E}ever stop
{-F#m(11)}You broke another mirror, you're {-Asus2}turning into something {-E}you are not

So don't leave me {F#m(11)@x44200}high____{Asus2@x02200}don't leave me {E}dry____
Don't leave me {-F#m(11)}high____{-Asus2}don't leave me {-E}dry____
]
[lines: {F#m(11)@x44200}two jumps in a week a bet you {Asus2@x02200}think that's pretty clever {E}don't you boy? {F#m(11)@x44200}Flying on your motorcycle, {Asus2@x02200}watching all the ground {Eb@688666}beneath you drop {-F#m(11)}You'd kill yourself for recognition, {-Asus2}kill yourself to never {-E}ever stop {-F#m(11)}You broke another mirror, you're {-Asus2}turning into something {-E}you are not So don't leave me {F#m(11)@x44200}high____{Asus2@x02200}don't leave me {E}dry____ Don't leave me {-F#m(11)}high____{-Asus2}don't leave me {-E}dry____ ]