2016-12-09

はじめに: テクスチュアルMIDIシーケンサーT3 とは

『テクスチュアルMIDIシーケンサーT3』 は、テキストエディタのようなMIDIシーケンサーです。ある記法にしたがって入力されたテキストを解釈しスタンダードMIDIファイルを生成・出力します。ピアノロールでもMIDIキーボードでもステップでもMMLでもない、新しいMIDIデータ入力法ということになります。
もくじ
  1. 作例を二つ
    1. 4行の即興曲
    2. はっぴいえんど『風をあつめて』カヴァー伴奏
  2. MIDIテキスト記法 T3の基本
    1. 音符と拍
    2. 休符とタイ 入力例『ボレロ』
    3. 名前について その他コラム的な
  3. さまざまな表現方法のツアー
    1. 和音の表現
    2. いろいろな記号と命令
    3. 繰り返し命令
    4. ランダム命令
    5. コード先行入力、ディグリーネーム分析
  4. まとめ:T3によるMIDI入力の特色

1. 作例を二つ

4行の即興曲
これからT3とその記法を紹介するにあたって、まずはかんたんな実例から見ていただきます。下の画像にあるわずか4行の文が、どんな1分半のMIDIデータを生み出すのかを聞いてみてください(音楽性はわきに置いておいて、文の何が何を生み出しているのかちょっと推理してみてください)。

T3hajimeni.mp3 ←クリックして『4行の即興曲』を聞く

1行目はキーとコード進行を生成、2行目はピアノのメロディーをキー構成音から生成、3行目はピアノ左手をコード構成音から、4行目はパーカッションのフレーズを、それぞれコントロールされた範囲でランダムに生成しています(文のくわしい意味はいずれ明らかになります)。(演奏中、和音の発音時間がちょっと短いのですが、現在はレガートに修正済み)

上と同じ文からでも同じ演奏はおそらく二度と生成されず、例えば改めて文を解釈させてみると、新たに次のような演奏を生み出します。
T3hajimeni2.mp3 ←『4行の即興曲』その2

曲のコンセプトは同じですが、フレーズはかなり変わりましたね。T3での入力はこのように、フレーズそのものを書くよりも、より音楽性豊かな(よりおかしく聞こえない?)フレーズ・パターンを生み出しそうな文を書くこと、また、コンピューターのランダムな演奏の中から良い(マシな?)テイクを耳で選び出すこと、といったところにこれまでにない面白みがあります。
 /* 4行の即興曲 */
chord@ chd_progression7@ [keyM@ IVM9@....P....P....P....]*8@ :
 //16拍ごとに適当な長調に転調し、IVM9から4拍ごとに7度上行するコードを生成
tempo85@ ch1@ velocityrandom20@ ^@[[k1k2k3k5k6k7---,4],@....]*16r4*12@
 //テンポ♩=85、MIDIチャンネル1、ベロシティを20までのランダムな値ぶん減らす。ファの音を抜いたスケール内の音とタイのうち4つを選んで4拍内にランダムに配置し、それを16回繰り返し4回休んで12回繰り返す
:[v@(vc0c1p).c2p?.^(c1c3)pp.c2pp?./h....;]*16< vcdp........; >4*8@
:ch10@ velocityrandom60@ [4f[{22p}2323,7]@..../r..^3f^3f?..;]*32@
はっぴいえんど『風をあつめて』のカヴァー伴奏をつくる
コードやキーの枠にのっとってランダムに音を生成する機能はT3の大きな武器です。
はっぴいえんど『風をあつめて』を自分で歌ってカヴァーしたいとして、T3で手っ取り早く2コーラスの伴奏を作りたいとすると、私のような音楽の素人なりに、例えば次のようなものができるでしょう。

KazeWoAtsumete1.mp3

KazeWoAtsumete2.mp3 

何度となく試行したうち連続して生成された2テイクをあげておきます。いずれもほとんど印象は同じですが、間奏は当たりはずれありますね。ベースの出来が安定的によかった反面、エレピは改善の余地がありそうです。
それなりに手数の多いこの演奏を作るために私は正味20行ほどのテキストを書いたにすぎない、ということに改めて注目してください。私のように楽器も弾けないし音楽の知識も限られている人がピアノロールでこれらを入力しようと思えば相当な時間がかかるはずです。T3はこのようにとにかくバッキング入力でラクができるので(苦労は別のところにあるのですが…)、これまでピアノロール入力を使ってカバーの一曲も完成させたことがないという方にもおすすめです。 (私がそうでした。T3のプロトタイプを使って作ったカバー曲→tadano lunch YouTubeチャンネル
 /* はっぴいえんど『風をあつめて』伴奏を生成 */
chord@ key4M@ // コード進行
E@.-B9@.-.. E@.-B9@.-.. // イントロ 2小節
[ E@.-B9@.-.. E@.-B9@.-.. C#m7@..F#@.. A/B@..B@.. // Aパート
E@.-B9@.-.. E@.-B9@.-.. C#m7@..F#@..C#m7@..E/F#@..
A@..C#m7@.. F#@.... C#m7@..E7@.. A@..C#m7@.. F#@.... .... F#@..A/B@.. // Bパート
E@..E/G#@.. A@..B@.. E@..E/G#@.. A@..B@.. // サビ
E@..E/G#@.. A@..B9@.. AM7@.... F#m9@....
C6@.... AM7/B@.... ]=kaze@ // 「kaze@」に代入
kaze@ A/B@.... B@.... // 27小節
C#m7@.-F#7@.-.-C#m7@. -.-E/F#@.-.. C#m7@.-E/F#@.-.-C#m7@. -.-F#@.-F#m/B@.-.//間奏4
kaze@ AM7@....F#m9@.... :// 27小節 計60小節
tempo95@ // 以下本文
 //エレピ
ch1@ velocityrandom10@ [[(c0c2)--r]@..../[[c1c2c3,1]@-rr]@..[[{c0[c1c2,1]@}c1c2c3,1]@rr]@c1?..;]r12*5r12*3r1r10*16@:
 //ギター1
ch3@ range7@ velocityrandom30@ lagrandom5@ p@[p@ssscd--SScdp`..rsscd.-Scdpp?.;]*23< pp@sscdc0pc1pc2pc0pc1pc2pc3p..../h....; >6r4*21<>6@-..:
 //ギター2
ch4@ range9@ p@[[c0c1c2c3----,7]@r....]r1*1r2*2r2*2r7*6r6r2*2r4r2*2r7*6r4r1*2@:
 //ベース
ch5@ velocityrandom40@range9@notelimit40@gate90@v@
[c0[c0c2rrr,6]@k9....]r2*27< c0.rc0.r.rc0. >3r1< c0[c0c2{k9?k9}rrrrr,6]@k9.... >15*10@:
 //ドラム
ch10@ velocityrandom10@ lagrandom0@ timeshift-10@
vv@p@ r.... r...-4p. [0p.4.0p0p?.4.]*3< 0p.4.0p[r4p,3]@.4[r4p,3]@. >1*3<>1*5<>2*11<>1r3< r...4p4p. >1*3< 0p.4.0p[r4p,3]@.4[r4p,3]@. >1*3<>1*5<>2*9<>1@:
ch11@ [vv@pp@[66p]*4@....;]r2*56@ //ハイハット

次からは、T3のテキスト表現の基本と、効率的な表現方法のツアー、それらを使うメリットについて実例とともに紹介し、みなさんにT3のパワフルな生産性を評価していただきたいと思います。

1. MIDIテキスト記法 T3の基本

音符と拍

T3がMIDIデータとして解釈するテキスト、とは一体どんなものでしょうか? さっそくですが次の文を見てください。
0.24.5..79B..^0..
はいはい、意味不明ですね? ですがこれをT3にコピペしMIDIボタンをクリックすると、次のMP3ファイルのようなMIDIデータが出力されます。(リズムがわかりやすいよう、別チャンネルでリズム音つけてますが)
ex1.mp3
ドーレミファーーソ-ラ-シ-ドーーと演奏されました。どうやら上の文のうち、数字が音符のように音の高さを表し、ピリオドが音の長さに関係するらしい…と推察されたかもしれませんね。

まさにその通りで、半角英数字0から9、ABで一オクターブ内の12の音をあらわし、後に続く半角のピリオドがその拍数を表しています。0は中央ド、C音ですね。 上の例文をパラフレーズすると、

「 0. 」がCを1拍、
「 24. 」がDEの8分音符二つ、
「 5.. 」がFを2拍、
「 79B.. 」がGABの2拍3連、
「 ^0.. 」がCを2拍

演奏すること、となります(キャレット記号「^」はオクターブ上げる記号です。後述)。

(音符の数 / ピリオドの数)でリズムが決まるごくシンプルな文法ですが、これらに休符とタイ記号を加えるだけで、およそどんなメロディーでもテキストで正確に表現できるようになります(この表現法によって、たとえばツイッターなどSNSのやりとりでメロディーそのものを手軽かつ正確にテキストで伝えることができるようになるでしょう)。ピアノロール入力のように小節の区切りに拘束されないので、三拍子と四拍子の混在などリズム表現はとても自由です。7連符だろうと5拍11連符だろうとなんでもござれです。

休符とタイ 入力例『ボレロ』

休符はローマ字半角の「r」、タイは半角マイナス「-」です。ご存じない方のために補足しますと、休符とは音を出さずに休む記号で、タイとは前にある音の長さを延ばす記号のことです。では以上の記号と約束事に則って、試しにラベルの『ボレロ』のメロディー16小節を入力例として書いてみましょう。先ほど私は「どんなメロディーでも正確に表現できる」と豪語しましたが、本当でしょうか…。コメントアウト記号「//」で解説を付けたので長くなっていますが、メロディー本体は中央あたりの5行です。
// ラベル『ボレロ』 

tempo72@
 // テンポの指定をする命令

ch1@
 // MIDIチャンネルを指定する命令
 // 以下5行がメロディー。縦線「|」は必要ありませんし無視されますが、見やすいよう小節の区切りに入れました

^0.--B^0.^2^0B9.| ^0-^09.^0.--B^0.| 9745.7..| -542.4579.7.|
-.-9B9.7542.| 420-.--02.4`5`.| 2.7..| -..-r.| // アクサングラーヴ「`」をつけるとスタッカート
^2.---^0.B9B^0.| ^2^0B-.-^0B9.^0B95.| --5`5`.5`9`.^09B7.| 5-5`5`.5`9.B795.|
2-20.2.--2`2`.| 2`5`.9574.2-20.| 2.--20.2-45.| 7..-542.|
0.

: // 先頭位置に返る記号コロン「:」
ch10@ // リズム専用MIDIチャンネルを指定
velocityrandom20@ v@ // ベロシティをランダムに変える命令と、まとめてオクターブ下げる命令

[ 6--666.6--666.66. 6--666.6--666.666666. ]*8@
 // カッコに入れた部分を8回繰り返す、という命令
Bolero.mp3
ほら! きちんと解釈されていますね。

*名前について その他コラム的な
「テクスチュアルMIDIシーケンサー」とは、テキストを使ってMIDIコントロールするシーケンサーという意味で、そのテキストを簡単に「MIDIテキスト」と呼ぶとすると、その表現方法は原理上いくらでもありえますから、「T3」はそれらMIDIテキスト記法の一種である、ということになります。すでに歴史あるソフト「テキスト音楽『サクラ』」がそうですし、さっき調べていたらイギリスのiOSアプリ「テキスト音楽」というのもあるようです。

「T3」とは12音テキスト、「Twelve Tone Text」の略記です。なぜ「12音」かというと、例えば「ドレミファソラシ」を「ドレミファソラシ」(テキスト音楽「サクラ」)「cdefgab」(MML表記)「1234567」(先ほどのiOSアプリ「テキスト音楽」)と7音表記するよりも、「024579B」と12音表記で書いたほうが、いろいろな音程変化の表記に簡便に対応できると思ったからです。

音楽の素人として楽譜についてずっと不便に思っていたのは、例えばある歌のメロディーの一音をピアノで取ったとしても、その曲が何調か決められないうちは、楽譜に書き込めないことが多い、ということでした(黒鍵の音を#とするべきか♭とするべきかわからない)。12調につき長音階と三つの短音階など素人は覚えていられないし、実際の音楽はそれらのスケールだけに収まるものでもない、教会旋法の変化なのか、ブルーススケールかもしれないし、加えて転調などされた日には何をどう書いていいものやら、と。

そこで、いっそ割り切って12音で書いてしまえば、何調か、何の音の変化か、転調したかどうか、なんて悩まなくて済むじゃないということなんです。ある黒鍵の音ならば、その黒鍵に対応した数字をただ書けばいい。邪道でしょうか? ですが、全音はなれているのか半音はなれているのかといったスケール内の構造が、12音で書いておけば数字を見れば一目瞭然なわけですし、移調などもただ数字の足し算引き算になるわけですから、コンピュータでの扱いにぴったりだと思いました。ディグリーネーム表記による和音をコードネームで表記するのとも似た考え方ですね。名前は忘れちゃったのですが、グラフィカルな記譜法でも白丸・黒丸で12音表記して変化記号を使わない楽譜が確かあって、音の変化の表記に悩まなくてよい合理的な記譜法だと思った覚えがあります。

2. さまざまな表現方法のツアー

さて、どうやらうまく表現はできるようですが、こうやってチマチマ入力するだけならば他の入力方法に比べてさほどのアドバンテージも感じられませんね。でもここからが本番なのです! 詳しい説明はあとまわしにして、T3の主な便利表現と機能をざっとご紹介しましょう。

和音の表現
(047B)....(259^0)....
 // 丸カッコに入れると同時発音
^0.^0.^0.^0./ r.4.7.4./ v0....;
 // スラッシュとセミコロンでスコア的な段の表現
CM7@....Dm7@....
 // コードネームで和音入力
いろいろな記号と命令
オクターブを動かしたり強弱をつけたりする記号、またベロシティをランダムにつけたり、発音タイミングをずらしたりいろいろな命令がありますが、たとえば最新の面白いのはこれ
swing20,5,30@
 // 1拍を引数+1で分割したときの、分割された位置にある音の発音タイミングを動かします。この例の場合、1拍を4分割して16分音符の発音位置を動かしています。単にハネているというだけでない、微妙な人間臭さを醸し出せるでしょう。似たような命令にbeatswing@というのがあって、こちらは拍の頭の位置を動かします
繰り返し命令
[0.24.5.7.]*8@
 // [ ]*n@で角カッコ内をn回繰り返す
[0.24.5.7.]*3 r1 *3@
 // 3回繰り返し、1回休み(4拍ミュート)、また3回繰り返す
[0.24.5.7.]*3 <7.54.2.r>1 *3 <>1 r2 *2@
 // 3回繰り返し、1回違うフレーズを用い(< >に入れた部分。フィルインという感じ)、また最初のものを3回繰り返し、同じフィルをもう1回、で2回休んで最後にまた本体を2回繰り返し
ランダム命令
[0247]@....
 // [ ]@内をランダムに並べ替える
[02479rrr, 8]@....
 // [ ,n]@ 前半部分からn個ランダムに選ぶ
[[02479rrr,8]@....]*4@
 // ランダムと繰り返しを組み合わせてアドリブ演奏のように
コード先行入力、ディグリーネーム分析
 // chordDirection1
chord@ key0M@ CM7@....Dm7@....Em7@....Dm7@....:
[^@ c1.c2.c3.c0./ cd....;]*4@

 // コード進行を文の先頭でまとめて入力しておけば、c0,c1,cdといった記号で、その時点でのコードの構成音を取得できます。繰り返しと合わせて使えば伴奏入力が楽ちんです。コードネーム、ディグリーネームでの入力が可能です。
 // キーを指定しておけば、コードネームは自動的にそのキーのディグリーネームとして分析され、次のようにセカンドウインドウに出力されます。
 // Degree Names in chord@
 // key0M@ IM7@ ....IIm7@ ....IIIm7@ ....IIm7@ ....
 // End of Degree Names

 // chordDirection2
chord@ key0M@ CM7@....Dm7@....Em7@....Dm7@....:
[^@[c0c1c2c3C1rrrr,8]@..../ cd....;]*4@

 // ランダムと組み合わせれば、コードから音を取ってきてアドリブらしきものができます。
などのほか、表現力を増すためのたくさんの小技があります。くわしくは「MIDIテキスト記法 T3の解説」ページをご覧ください。

3. まとめ:T3によるMIDI入力の特色


以上のような命令類を使った文を処理命令文、それらを処理した後の生のT3文を基本文と呼ぶとしましょう。うまく処理命令文を使うことで、大量の基本文を効率よく生成できます。作例を聞いてもらった『風をあつめて』伴奏も、処理命令文は大した量ではありませんが、生成された基本文の中身を見ると、自分で一音ずつ入力することを考えると頭がくらくらしてくる量のテキストです。
このように、T3は一音ずつ入力していくこともできますが、それよりもコード先行入力・ランダム・繰り返しの機能によって曲全体のラフなバッキングを一気に組み上げるようなやり方に向いているでしょう。ある程度形を作ってしまえば、同じテイストだけどフレーズや和音の異なる演奏をワンクリックで量産できます。ランダムに生成されるフレーズや和音は、もちろんすべてが音楽的に素晴らしいというわけではありませんが、クリックするたびに新鮮さが感じられ、入力したものしか発音されない他の入力方法の退屈さを免れています。

T3を使ったMIDI入力の特色を一言でいうなら、コンピュータのアドリブ演奏にダメ出しするディレクターのような入力法、といったところでしょうか。


audioタグのテスト

Google Blogger でaudioタグを使いMP3プレーヤーを貼り付けるテスト。


プレーヤーは表示されました。