arith blog

   気ままにらくがきブログ

abcjs でサイト上に楽譜を♪

Webで簡易作曲

Webサイト上に楽譜を書いたりそれを演奏できたりする abcjs というのを試してみたところ、なかなかよくできていたので紹介したいと思います。

abcjs は、米国バージニア州の Paul Rosen さんという方が GitHub で公開されている javascript のライブラリ。楽曲の譜面情報を文字列で書き表すための「ABC記譜法」というのがありまして、そのルールで書かれた内容を元に楽譜を自動生成してくれるスグレモノです。

MathJax を使ったことのある方なら、あれの楽譜版みたいなもの、といえばスゴさがお分かりいただけるかも? なにはともあれ、使ってみましょう。

abcjs はこんな感じ

↓このABC記譜テキストを編集すると下の楽譜に反映されます。
 
↑演奏バーもつけられるのですが、スマホだと完全に表示されるまでに時間がかかるのと、再生ボタンを押してもすぐには演奏が始まらない時があります(T_T) FirefoxChrome 系の最新ブラウザでは再生確認できましたが、IE11 は NG のようです。
 
 

はじめの一歩

まずは コチラ からダウンロード。「abcjs-midi.css」と「bin/abcjs_midi_5.x.x-min.js」があればとりま十分ですので、それを Web サーバ上に配置したら

<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="(配置先)/abcjs-midi.css" media="all" type="text/css" />
<script type="text/javascript" src="(配置先)/abcjs_midi_5.x.x-min.js"></script>

こんな感じのを HTML 内に書けば準備完了です。色んな使い方があるみたいなので、詳しいことは ドキュメントabcjs configulator 等を参照していただくとしまして、単純に先程御覧頂いたようなことがやりたいだけなら

new ABCJS.Editor(
    'editor', {                    // テキストエリアの DOM の ID
        'paper_id': 'paper',    // 楽譜を書かせたい DOM の ID
        'generate_midi': true,
        'midi_id': 'midi',     // 演奏UIを置く DOM の ID
        'generate_warnings': true,
        'warnings_id': 'warnings'  // エラー情報を表示したい DOM の ID
    }
);

こんな javascript を書くだけでできちゃいます。

ABC記譜法については「The abc music standard 2.1」や、まりんきょ さんの翻訳による「abc 記譜法」に詳しく書かれていますので参考にどうぞ!