はじめに
新しい音楽言語を紹介します!
DAWで一曲打ち込んだことも無い(私のような)人が、MIDI音源だけ立ち上げてさくっとワンコーラス作れるようなカジュアルに使える道具を目指しました。音楽の新しい書き方、読み方の提案を皆様も楽しんでくだされば幸いです。
DotMusic Script とは?
DotMusic Script は、音楽内容をテキストで書き表すためのシンプルなスクリプト言語です。
このWebサイトのスクリプトエディター兼MIDIシーケンサー Playground で DotMusic Script を編集・MIDIデータに変換して、PC上のMIDI音源に演奏させることができます。MIDIデータをダウンロードするのでなければ、他にDAWやMIDIシーケンサーは必要ありません。
「はじめに」では、文法の解説は後回しにして、このスクリプトを用いてどんなことができるのか、一部をご紹介します。
音を出してみよう
MIDI接続
上にある MIDI device プルダウンメニューに何らかの仮想MIDIポートのデバイス名が表示されていれば、あなたのMIDI接続はOKです。そのデバイスに認識されるMIDI音源やDAWがすでに用意・設定されているものとして説明させていただきますが、 MIDIの準備ができていない場合は、一部音声プレーヤーで例を付けていますので、それで出音を確認してください。
エディター操作
下のテキストエリア(セル)と三つのボタン、時間表示、スライダーをまとめてエディターと呼びます。 セルにアルファベットやドットが書き込まれていますね。これらが DotMusic Script として、あるルールに従って音楽情報として解釈されることになります。
MIDI Device プルダウンメニューの横にある sound typing にチェックが入っているとき、書き込み中やカーソルの移動中にも音符が認識されて音が鳴ります。方向キーでカーソルを一つずつ動かしてみて、メロディーらしきものが聞き取れるでしょうか?
To MIDI ボタンをクリックすると、スクリプトを解釈して演奏データを作成します。演奏データが作られると演奏時間の長さが表示され、同時にエディターメニュー(セルの右上にある)のなかにこのデータのMIDIファイル(全体とチャンネルごとのファイル)ダウンロードリンクが作られます。
データが作られた後で Play/Pause をボタンを押すと、このデータが Web MIDI API を通じてローカルのMIDI音源に送られ演奏されます。上の例ではチャンネルの指示が書かれていないので、デフォルトでMIDIチャンネル1に送られます。音源からラヴェルの『ボレロ』のメロディーが鳴りましたか? MIDIの準備がない場合は下の音声プレーヤーで確認してください。
Web MIDI について
Web MIDI Api の仕様(&私の対処技術不足)により、MIDIデータ送信の取りこぼしが起き演奏途中で音飛びや音の途切れ、ピッチベンド飛ばしを起こすかもしれません。確実にデータ通りの演奏を聴くには、MIDIファイルをダウンロードして再生してください。また、Web MIDI ApiがMIDIデバイスを占有取得すると、他のMIDI機器の通信を排除するようです。MIDIキーボード等の反応が無くなったときは、いったんこのページを閉じて他機器の通信を復活させてあげてください。
DotMusic Score
続いて、演奏データを目に見える図にしてみます。
下のセルには数字で書かれた音符、演奏にかんする命令、"// "のあとに続くコメントアウトが書かれていますが、vz( )はvisualize( )という命令の短縮形で、 データを visualize し、ピアノロールのような譜面にします。これをDotMusic ScoreとかDM譜とか呼びます。
To MIDIを押してみましょう。
楽譜として?
DotMusic Score をキーボード初心者の練習用楽譜としてみた場合、いくつか推せるポイントがあります。- キーボードの白鍵は白い音符、黒鍵は塗りつぶした音符で描かれ直感的にわかりやすい
- 長さの記号(旗)、調号、臨時記号を使わないので頭を使わなくていい。理論は後回し
- 各音度間の縦の距離が一定
- 従来の五線譜と見方を混同して紛らわしくなることがないので、一方に慣れても安心
特殊な例かもですが、次の練習用楽曲のDM譜を、五線譜と見比べてみてください。
コードネームを書いて音を聴く
詳しくは文法編で説明しますが、端的にいうと DotMusic は音符記号につけたドットの個数が拍数を表します(DotMusicという名前の由来です)。
コードネーム自体も音符なので、これにドットをつけた場合、その拍の長さの白玉コードが表現できます。楽器を用いて確認できない場合、コード進行の手軽な確認手段として使いどころがあるかもしれません。これもsound typing 機能により、コードのタイプ中にコード音が鳴ります。
かんたんに伴奏を作る
直接は発音しないゼロ番目のチャンネルにコード進行を記録して、他のチャンネルから効率よくその情報を使用することができます。
下の例のギター音色のパート(ch(2))で、コードが変化する伴奏パターンの16小節ぶんの打ち込みが、スクリプト1行に過ぎないことに注目してください。いずれ文法解説をご覧になって記号の意味もチェックしていただければと思います。
追記
上の例でギター音のベースが、1拍めルート・3拍め5度が鳴るようになっているのですが、6・7小節目は2拍ごとにコードが変わるので、そこの3拍めで鳴ってしまう5度ベース音がちょっとしっくりきませんね。チャンネル2の「スクリプト1行」の短さをウリにしたかったのでそのままにしましたが、この部分だけ3拍めもルート音を鳴らす修正を追記でさせて頂きます。1行長くなってしまいますが、例えば次のように書けます。
ch(0) r.... Gm7.... C7.... Gm7.... C7.... Gm7.. C7.. Gm7.. C7.. Am7-5.... D7.... bBm7.... bE7.... bBm7.... bE7.... G7.... C7.... FM.... FM....:
vz(4,20) ranTim(20) ranVel(12) ranDur(12)
// 伴奏2パターンを使う ついでにベースをシンコペート
@backing_1 ={ ~i. [? +? +? +?] r. <~iii"""" (t)> r r. [? +? +? +?] (t, t r, ~i).;} @backing_2 ={ ~i. [? +? +? +?] r. <~i"""" t> r r. [? +? +? +?] t.;}
ch(2) vel(70) tp(-12) bn(4) r .... { @@backing_1 }*4 { @@backing_2 }*2 { @@backing_1 }*9 ["? +? +? +?]...; :
ch(1, tomato) r ... 0. 9.... t.. 7 2 7 .. 9.... .. 7 2 7 .. 9 .. 7 2 7 .. 9... 7. ^2 ... ^0. ^2... 9. ^0.... ..
< 10(0,60,99) ^0(0,60,99) "10 > 5 10 .. ^0.... .. 10 5 7 .. 9. t 9. t 4 5.. 7. t 7. t 5 4.. 2..2..;:
// ボサノヴァ風リズム 音色は音源により異なります
vz(none) ch(3) tp(-24) { 1. r 1. r 1. r. 1. 1. r 1. r. /0.r 0.0.r 0. 0.r 0.0.r 0./ { 6 6.}*8 ; }*8 :
免責事項
本アプリの利用により生じた直接的・間接的な損害(データの消失、機器の故障、その他不利益)について、作者(E.Sakuta)は一切の責任を負いません。本アプリは現状有姿で提供されるものであり、動作の完全性や特定の目的への適合性を保証するものではないことをご了承ください。また、本サービスは予告なく内容の変更や公開の中止を行う場合があります。
「はじめに」では、DotMusic Scriptでどんなことができるかを少し見ていただきました。 文法の内容について、引き続き文法編でご確認いただければと思います。そしてPlaygroundであなた自身のファイルを作成しましょう!