MML記法で遊んでみる

慣れないと難しいな。

主旋律
t72 v4 o6 @2 l8
/:c c c c d4&d c  f4 e e2 c  f e d c >b4&b< /d  >g1 <:/c c2&c4&c c
f4&f e e4&e c f4&f e e4&e c f e d c >b4&b< d >g1
< c c c c d4&d c  f4 e e2 c  f e d c >b4&b< c c1&c1
;
対旋律
t72 v4 o6 @1 l8
/:>e g b <c d4&d c  >b4< c c2 c  /f f f f d4&d >b b1 <:/a g f c b4&b c c2&c4&c c
>b4&b< c c4&c >g g4&g< c c4&c >g a a a a g4&g f f1
e g b <c d4&d c  f4 e e2 c  a g f e d4&d c c1&c1
;
高音域1
t72 v3 o6 @3 l8
c c c c d4&d c  f4 e e2 c f e d c d4&d d  d1 
c c c c f4&f e a4 g g2 c a g f e d4&d c c2&c4&c c
a4&a g g4&g c f4&f e e4&e c f e d c d4&d d d1
c c c c f4&f e a4 g g2 c a a a a g4&g c c1&c1
;
中域1
t72 v3 o5 @3 l8
/:g g g g b4&b< c d4 c c2 c> /a a a a g4&g f f2&f4&f r:/
<f f f f g4&g c c2&c4&c c
d4&d c c4&c c >g4&g< c c4&c c d d d d d4&d d d1
>g g g g b4&b< c d4 c c2 c f f f f g4&g c c1&c1
;
ベース1
t72 v3 o5 @3 l8
/: c c c c >g4&g g< c4 c c2 />g a a a a g4&g g g1<:/c f f f f g4&g c c2&c4&c c
c4&c c c4&c >g g4&g< c c4&c c f f f f f e4 d >g1< 
c c c c >g4&g g< c4 c c2 c f f f f g4&g c c1&c1
;

(荒木真樹彦 Syber-beatより「NU=HORIZONS」)

SYBER-BEAT

SYBER-BEAT

元曲は多重録音による和声。単純再現すると単調な波長しか使えないMMLでは重厚感に欠けるので適当にアレンジ……というより、完コピ困難と見て逃げただけだが。
5トラックしか使ってないが、あと2〜4トラック足してもいいかも知れない。

記法解説

最初のt[n]はテンポ。t120なら120拍/分。
l[n]は基準音長、この長さの音は音長を書かなくていい。ここでは八分音符に指定。
o[n]はオクターヴ。8オクターヴ指定できる。途中に<を挟むとオクターヴ上がる、>で下がる。
v[n]は音量、0〜15まで。
@[n]は音色、基本的には0:サイン波/1:ノコギリ波/2:三角波/3:パルス波/4:ホワイトノイズの5種しかないようだが、どうもパラメータ調整で弄れるっぽくもある。
cdefgabは音高、ドレミファソラシに対応。アルファベット直後に+で♯、-で♭。その後の数字は音符の長さ指定。休符はr。
同じ高さの音ふたつを&で繋ぐとタイ、違う高さの音や3つ以上の音を繋ぐとスラー。
/:[n]から:/まではn回繰り返し(省略時は2回)。/*〜/〜:/とすると、最終回のループを/位置で抜ける。
1トラックごとに表記、トラック終端にセミコロンを入れると次のトラックに移る。


単に再生ボタンが表示されるだけではなくて、その下にmml部分がそのまま出る仕様のようだ。再生に合わせて色を変えて……はちょっと無理にしても、この下にコメント差し込んで歌詞を書くといった使い方はできないものだろうか。


ところで3トラックにしたら2トラック目までしか再生されてないようなんですが。音量の関係で聞き取れなかったっぽい。

MML記法の音色をいじってみる

まずノーマルのサイン波。

v1 @0 cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab

次にノイズ127(最大)を載せたサイン波。

v1 @0 @n127 cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab

違いがよく判らない。というか正直記法がよく判らない。@n[n]と書いてあって、これまでのパターンからすれば[n]部分が整数だろうから@n127というような書き方でいいんだと思うのだが。
次にエンベロープ。上から順に、attack、decay、sustain、releaseのみ最大値、他は0に。

v1 @0 @e127,0,0,0 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab
v1 @0 @e0,127,0,0 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab
v1 @0 @e0,0,127,0 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab
v1 @0 @e0,0,0,127 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab

attackのみにしたら音がしない。逆にこれを0にした音は最初のブツっというような音がなくなって柔らかい感じに。
releaseは音長終了後の減衰割合なんだろうと思う。
decayとsustainはどちらも発音後の減衰に関係するようなのだが、このサンプルでは違いが判らなかった。


では、他の波形に移る。まずはノコギリ波。

v1 @1 cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab

次にエンベロープ。上から順に、attack、decay、sustain、releaseのみ最大値、他は0に。

v1 @1 @e127,0,0,0 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab
v1 @1 @e0,127,0,0 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab
v1 @1 @e0,0,127,0 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab
v1 @1 @e0,0,0,127 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab

元はギターのような音だが、decay/lereaseを最大化するとオルガンのような雰囲気に。

三角波

v1 @2 cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab

エンベロープ。attack以外0のサンプルは音色に関らず音が出ないようなので省いた。

v1 @2 @e0,127,0,0 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab
v1 @2 @e0,0,127,0 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab
v1 @2 @e0,0,0,127 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab

パルス波とそのエンベロープ

v1 @3 cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab
v1 @3 @e0,127,0,0 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab
v1 @3 @e0,0,127,0 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab
v1 @3 @e0,0,0,127 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab

今までのサンプルで、これが一番エンベロープの違いを明確に出しているように思う。


パルス波はパルス幅を指定できる。

v1 @3 @w0 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab
v1 @3 @w50 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab
v1 @3 @w100 
cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab<cdefgab

0と100が区別できない。
丁度50が所謂「矩形波」?

同一人物であることの証明、ないことの証明

勝手にIDとハンドルを使われた経験のある身として、この問題には強い興味を抱いている。


今すぐできるとは限らずとも、OpenIDなどを利用した同一性証明は「確かに自分のものである」ことを第三者に証明して見せる方法として有効である。
ただ、正直なところ同一性の証明ってそんなに必要そうに思えない。あるとすれば住基番号との関連付けとか、その程度の用途じゃなかろうか。今すぐ重要性が認められるようなものでもない。
逆に、同一性の否定は名誉問題に関わってくる。先日は私の名で工口コンテンツが作られ、名誉を毀損するような内容が書かれていた。多分、ここを含めた日常のWeb活動履歴から見てあれを私の仕業と思う人はまず居ないとは思うが、邪推すれば「わざと普段作らないようなものを発表しておいて、口先では否定して無関係に見せる」という見方だってできないわけではない*1
こういう「実はお前なんじゃないの」疑惑が出たとき、それを否定する方法はない。OpenIDで関連付けられていないからといって、それが「関連付けることができない(=同一人物ではない)」のか「(同一人物だが)わざと関連付けていない」のかを区別する方法はないから。


ともあれ、OpenIDのような認証には期待を寄せている。現状、Webサーヴィスの多くを同一IDで利用しており、Web内に於いてはちょっとした個人名に近いものとして機能しているわけだが(この傾向は、著名であるほど高まるだろう)、結果として実名に近い働きをしているわけで、それに応じた措置というものが必要になってくるのではないかと思っている。
何か具体的なアイディアがあるわけではないが、例えば個人情報登録を行ない本人証明をするサーヴィスと、複数のアカウントが同一人物のものかどうかを調べるサーヴィスを作り、第三者照会からは「同一人物だが具体的個人情報には到達しない」というようなサーヴィスがあれば、と思う。
もっとも、このような仕組みを作るとどうしても「礼状ひとつでWeb上の全活動記録を取られる」といった可能性を否定できないのが悩ましいところだが。両者を完全に分割しp2p的に細分化して中枢で制御できないようなやりかたで実現できないだろうか。

*1:それなら普通まったく無関係なIDにするとは思うが、それはひとまず措いておく