SVX日記
2006-07-28(Fri) チープなDTMアプリ公開
今日は、ココんトコ、ずーっと作り込んでいた、オレ様用特殊仕様のデスクトップミュージックスイートを公開することにする。その名も「CUIck DTM suite」である。GUIでなく、オレ様好みのCUI(Command User Interface)でサクサク(Quick)とミュージックコンポーズするためのプログラム群(suite)だ。以下、超適当であるがマニュアルである。
各ファイル説明
melod | OSS(Open Sound System)デバイスである/dev/dspにsin波を書き込み、チープながら、リアルタイムに音階を出力する、メロディデーモン |
konk | PCのキーボードを、ピアノのキーボード化するプロセス。melodに対してUDP経由でコマンドを送信し、音階を出力させると同時に、画面に独自形式のMML(Music Macro Language)形式文字列を出力する |
plexor | 標準入力から独自形式のMMLを受け取り、melodに対してUDP経由でコマンドを送信、再生させるほか、指定のコード&リズム付きのMIDI形式ファイルを生成し、playmidi.exeで演奏させる |
midi.rb | MIDI形式ファイルを扱うクラス、plexorの実行に必要 |
chord.rb | ギターコードを扱うクラス、plexorの実行に必要 |
playmidi.c | MIDI形式ファイルを演奏するplaymidi.exeのソースファイル |
Makefile | playmidi.exeの作成、パッケージ作成を行うMakefile |
tulip.mml | 「咲いた、咲いた、チューリップの……」を演奏するMMLのサンプル |
license.txt | GNUのお約束 |
まずは再生方法から。端末を2枚開いて、片方でmelodを起動、他方で「cat tulip.mml | ./plexor」を実行する。マコトにチープな音質ながら「チューリップの歌」が4小節再生される。<wavを再生する>
1: #<DSP OFF> # /dev/dsp による演奏を無効
2: #<MIDI tulip> # tulip.mid ファイルを生成し演奏
3:
4: #! clear
5: #! t140
6:
7: #@ (arpeggio-4)4 <pops-1>4
8:
9: #<STOP> # <CONT> までの記述を無視
10:
11: #@ C Am
12: # y u i y u i
13: ! 3C 4 3D 4 3E 2 3C 4 3D 4 3E 2
14:
15: #<CONT> # <STOP> の効果を解除
16:
17: #<END> # 以降の記述を無条件に無視
18:
19: #@ C Am
20: # p i u y u i u
21: ! 3G 4 3E 4 3D 4 3C 4 3D 4 3E 4 3D 2
行頭が「!」で始まる行が、演奏データだ。「C」が「ド」で、Cの前の数字はオクターブを表している。音階の指定の間の数字が音長だ。4で4分音符、2で2分音符、付点付き4分音符にしたい時は、4の後ろに8を並べる。
4, 5行目の行頭の「#」を削除して、再び「cat tulip.mml | ./plexor」を実行するとテンポが変わる。「t140」という記述がテンポ指定だ。概ね想像が付いていると思うが「#」はコメント行を表している。<wavを再生する>
今度は1, 2行目の行頭の「#」を削除する。チープな音の代わりに、midiから音が出るはず。オマケに再生後には、カレントディレクトリに「tulip.mid」が生成されている。コイツはフツーにMediaPlayerで再生可能な形式である。<midiを再生する>
更に11, 19行目の行頭の「#」を削除する。適当だが伴奏が付いたはずだ。行頭が「@」で始まる行には、ギターのコードを指定できる。これまた適当なパーカッションによるリズムパートも勝手に付く。<midiを再生する>
最後に7行目の行頭の「#」を削除する。伴奏がおとなしいものに変わったはず。アルペジオによるコード演奏と、ポップス系のリズムパートを指定した結果である。各種パターンはmidi.rbに定義されている。<midiを再生する>
順序が逆になったが、作曲するには「melod」を起動中に「konk」を立ち上げる。konkを実行すると、PCのキーボードがそのままピアノのキーボードになるので、そのままキーを叩いてメロディを奏でればいい。こーゆー状態になってないとキーボードとしては使いにくいが、それはともかくとして、どこかで聴いた曲を奏でてもいいし、鼻歌をそのまま奏でてもいい。結果は画面にMMLの形式で出力されるので、そいつをマウスでドラッグして、エディタに貼り付ける。
なお、画面に表示されるMMLには音階情報しかないので、そのままMMLファイルとして保存してplexorに与えると、全部の音が同時に鳴ってしまう。音長の入力は手動なので、エディタ上で追加のこと。ちなみに、konkが出力するMMLの音階同士の間隔は時間間隔に比例しているし、melodおよびplexorによる演奏時に出力される情報は、行単位で時間を積算したものとなっている。コトバで説明するのは難しいが、なにしろ音長の入力を補助するようにできている。後にコードをつける時のためにも、この機能を活用し、行の区切りを小節の区切りに合わせて入力しておくとよいだろう。
コードをくっつけると俄然として曲が締まってくるが、コードをくっつけるための補助機能は特段用意していない。オイラがコードをくっつける時は、ギター片手に鼻歌交じりで紙に書き留めるからである……なんつったって、最高に楽しいのはこの作業なのだッ!! midiクラスとchordクラスを活用すれば、コードを奏でるバージョンのkonkはすぐ作れると思うので、欲しい人は自分で作るべし。
で、このツールを使ってサクサクと、ウチのガキにテーマソングを作曲してみた。題して「イッペイのテーマ」。こんな感じだ。<midiを再生する>
最後に、最近の携帯電話はmidiファイルをそのまま演奏できたりするらしい。つまり、この「CUIck DTM suite」は、着メロ生成ツールとして活用することもできるワケだ。で、試しに昨日iTMSで購入した、浜崎あゆみのDepend on youのサビを入力してみた。コードはJ-Total Musicから持ってくる……で、30分もあれば、ホレこのとおり。現状、コードパターンもリズムパターンも、曲とさっぱりマッチしてないが……気に入らんヤツは好きにイジれ。<midiを再生する>
イニシエの8bitマシンに載っていたPSG(Programmable Sound Generator)をBASICから駆使して喜んでいた世代の諸兄は、このDTMスイートの設計思想にシンクロしてくれるのではないかと思っている。ほんじゃまた。
はじめまして。<br><br> <br><br>私はTBSラジオで深夜0時から放送している「バツラジ」<br><br>という番組のキムと申します。<br><br>当番組はニュース番組なのですが、<br><br>本日の放送の中で鉄塔について取り上げたいと思います。<br><br> <br><br>是非ともご協力いただきたいのですが・・。<br><br> <br><br>よろしかったら以下の番号までお電話いただけ<br><br>ないでしょうか?<br><br>何卒、ご協力の程、宜しくお願いします。<br><br> <br><br>080-1124-3119(担当:キム)