Z-MUSIC とは? 〜 作曲スタイルとしての MML 〜
僕は、作曲するのに SONAR …… ではなくて、Z-MUSIC という MML (Music
Macro Language) を使っています。この作曲スタイルは WHO により絶滅危惧
種指定される日が近いと思われるため、ここに筆を執る次第であります。
目次:
- MML で作曲すること。
- MML で作曲することの意義。
- Z-MUSIC で作曲することの意義。
- zmusic-mode.el、あります。
- Z-MUSIC の関連サイト。
MML で作曲すること。
一例を挙げると、MML では、16分音符でオクターブ4の「ドレミ」を演奏
するのに "o4 l16 cde" などとテキストで打ち込んで(書き込んで)いきます。
マウスも鍵盤も使いません。必要なのはPCのキーボードとテキストエディタだ
けです。昔ながらのプログラミングの世界です。
Z-MUSIC MML の詳細な言語仕様は
わいやぎさんのサイト
などをご参照いただくとして、
超具体的な例を以下に挙げてみます。
初めて見る人には意味不明の怪しい暗号にしか見えないでしょう。
この暗号文を演奏したものがこれです。
基本は、C と D と E と F と G と A と B は音符(ドレミファソラシ)
を意味していて、R は休符、C# と C+ は C#、C- はC♭です。その他のアル
ファベットや記号は音符以外の何かの指定になっています(MIDIのエクスプレッ
ション、ピッチベンド、ベロシティなど)。音長は C1 と書けば 1分音符(全
音符)、C16 なら 16分音符です。
暗号文の解読方法を簡単に説明した極秘資料を以下に示します。
この演奏をピアノロールウィンドウでピッチベンドとともに表示したものがこ
れです(SONAR LE)。ほとんどの人にはこの画面の方が見慣れているでしょう。
楽譜にするとこんな感じです。このソフト(SONAR LE)の場合、ピッチベンドに
よるスラー処理を受ける音符が楽譜上では省略されてしまうので、その点がい
まひとつな感じですが、雰囲気はだいぶ出ています。
MML で作曲することの意義。
MML などというもので作曲することのデメリットなど数え切れないくらいあり
ます。SONAR LE 触っているだけでも技術の進歩にそれはもう驚愕の日々です。
それでもなお僕がどうしていまだに MML で作曲をするかといえば、
- 鍵盤弾けないし、ステップ入力なんてかったるい。
- 昔(20年前)は MML しか手段が無かった。そのときに覚えてしまったのが運の
つき。X68000よりさらに古い MSX というコンピュータ上で MUSICA という、
当時としてはスゴいのがあったのですよ。そこへ Z-MUSIC でもうダメ押しで
す。
といったあたりが言い訳になっています。
DAWソフトだと、そのソフト特有の形式でデータが保存されるのでそのソ
フトがなければ中身を見ることができないのですが、テキストデータなら最悪
メモ帳でもなんとかなるしぃ〜というのもあります。
Z-MUSIC で作曲することの意義。
MML には Z-MUSIC の他にもたくさんの種類があります。その中でも
Z-MUSIC を使う理由は、いろいろあります。
まず、MIDI のあらゆるコントロールを記述できるため、頑張って頑張っ
て頑張りまくるとスンゴイ演奏ができてしまう点です。
加えて、和音、クレシェンド・デクレシェンド、スラー、タイ、ピアノの
右手と左手、というように、実は「論理的に」音楽を記述できる点も好きなの
です。また、メロディそのものとMIDI関連の記述(ベロシティやピッチベンド
など)を分離したりはたまた混ぜたり臨機応変に記述できます。
より具体的にはこんな感じです。
- 和音 : CMaj7なら
→
"cegb"
……ほら、文字列から楽譜が見えてきませんか?
- 連符 : ドレミファソの1拍5連符なら
→
{cdefg}4
……ほら、文字列から楽譜が見えてきませんか?
- デクレシェンド
→
@s,9@h,10@a127
…ほら、文字列から「>」が見えてきませんか?
- スラー : CからDへのスラーなら
→
c&d
…ほら、文字列がスラーに見えてきませんか?
- タイ : 8分音符の C と 16分音符のCをタイで結ぶなら
→
c8&c16
…ほら、文字列がタイに見えてきませんか?
- ポルタメント : DからCへ8符音符でポルタメントするなら
→
(dc)
…ほら、文字列から gliss. 記号が見えてきませんか?
さらには、これはほとんど Humanizer の領域ですが、ビブラートやエクスプレッショ
ンを自動化することができます。
管楽器の経験者であればご存知と思いますが、ビブラートをかけるタイミング
はだいたい決まっています。また、人間は長い音符を同じ音量で吹き続けるこ
とができませんし、長い音符を同じ音量で吹かれてもうるさいので、
長い音符はほぼ必ず軽いデクレシェンドを伴って演奏されます。
これらの演奏効果を、Z-MUSIC では自動的にかけることができます。その
ため、Z-MUSIC には一般的な(そんじょそこらの(笑))MML とは一線を画す
表現能力があるのです。外国の友人に「Humanizer プラグイ
ンは何使ってるの?」と聞かれるほどです。
僕が現在使っているのは素朴な Z-MUSIC ではなく、
わいやぎさんの Z-MUSIC 処理系
で拡張された MML です。これはスゴイです。世界最強MMLです。
- ピアノの右手と左手:右手は16分音符でドレミファソラシドを弾き、左
手は CMaj7 の和音を弾くなら
→
[back "cegb"] cdefgab<c
…ほら、文字列が2段の楽譜に見えてきませんか?
- ベロシティ記述の分離 : ドレミファソラシドを各々ベロシティ
100,90,80,70,60,50,40,30 で演奏するなら
→
z100,90,80,70,60,50,40,30 cdefgab<c
…ほら、MIDIの記述と音楽の記述が分離されて見やすいでしょう?
- フレーズのデュレーション予約:ドレミファソラシドから始まるフレー
ズを1小節に書きたいときならまず
→
{{ cdefgab<c }}1
(指定したデュレーションに足りない場合は警告してくれます。)
- アーティキュレーション予約:ドレミファを「タッターラッター」と演
奏したいときなら
→
q5,8,5,8 cdef
(各ノートのデュレーションを n/8
にします。)
…ほら、楽譜からスタッカート記号が見えてきませんか?
……もういくら書いてもきりがないのでこのへんでやめます。
結論:あと10年は使う予定。
zmusic-mode.el、あります。
とはいえ、MML を毎日メモ帳で編集しているとたぶん死ねますので、僕は
自作の zmusic-mode.el というのを Emacs (Meadow) に入れて使っています。
実装されている機能:
- 文字の色づけ(hilit19)
- Z-MUSIC コンパイラ ZMC3/Z2M3 との連携
- MIDI 演奏ソフトとの連携
- TMIDI
Player
- TMIDI DDE Controller が必要です。
以前はふみぃさんのサイトで公開されていたのですが、無くなったよ
うなので、自分で作ってみました。(dde.exe)
- eplaymidi
実装されていた(?)機能:
- リピート記号(|:〜:|)、連符記号({〜})、デュレーション予約記号()
{{〜}}) の対応関係の表示
→ Emacs19のみで動きます……ので今は無効化され
ています。
日本で(いや世界でも)これを使うのは僕一人とは思いますが、いちおう置い
てみます。最初に書いてから 8年も経っているのは気のせいです。
必要なもの:
- zmusic-mode.el (30KB)
Z-MUSIC MML (*.zms) 用のメジャーモードです。
- Windows用 Z-MUSIC コンパイ
ラ ZMC3/Z2M3.EXE
これがすべての始まりでした。感謝感激。
- TMIDI Player 用 DDE クライアント
- 本家の DDE クライアント
以前はふみぃさんのサイトで公開されていたのですが、なくなってしまい
ました。
-
自家製 DDE クライアント (DDE.zip) (17KB)
コマンドライン引数を全部繋げて TMIDI Player に DDE の XTYP_EXECUTE で投げる、
ただそれだけ
の人です。具体的な使い方は TMIDI Player のマニュアルをご覧ください。
- zms2mid という実行ファイル
*.zms を与えると *.mid を吐くものなら何でもOKです。
インストール方法(Meadow 2.10 + TMIDI Player 用):
- zmusic-mode.el を C:\Meadow\site-lisp にコピーする。
- .emacs に以下の設定を入れる。
(load-library "hilit19")
(load-library "zmusic-mode")
(add-hook 'zmusic-mode-hook
(function (lambda () (hilit-highlight-buffer))))
(setq auto-mode-alist
(append '(
("\\.zms$" . zmusic-mode)
auto-mode-alist))
(setq zmusic-playmidi-term-command "dde stop")
(setq zmusic-playmidi-device "")
(setq zmusic-shell-filename "cmd")
(setq zmusic-playmidi-command "dde")
(setq zmusic-playmidi-option "playfile")
- TMIDI DDE クライアントをパスの通った場所に
置く。
- zms2mid をパスの通った場所に置く。
- *.zms ファイルをオープンする。すると zmusic-mode が起動します。
使用方法:
- C-c C-c : コンパイル(zms2mid をシェルから起動します)。
Emacs のコンパイルコマンドに準じているので、下記のようなことが可能です。
- C-x ` : 順に Error 行へジャンプします。
- C-c p : MIDIプレーヤーでの演奏を開始
- C-c s : MIDIプレーヤーでの演奏を停止
- C-c C-j : 指定したトラック番号の場所へジャンプ(ファイル先頭から検索)
- そのほかの使用方法は zmusic-mode.el を見てくださ
い。(手元の Meadow だと M-x help m が文字化けするので……)
この zmusic-mode.el は、Emacs19 時代に書かれたモノであり、文字の色づけ
処理にいまだに hilit19 を使用しています。その上に初心者丸出しの Emacs
Lisp コードですので、中身を見るときは覚悟をしてください。
Meadow と書いていますが、Emacs19 以降なら Linux 上の Mule とかでも動きます。
TO DO:
Z-MUSIC の関連サイト。
ホームに戻る。
Last modified: Thu Aug 03 23:21:07 LMT 2006