SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|

2006-07-28(Fri) チープなDTMアプリ公開

  今日は、ココんトコ、ずーっと作り込んでいた、オレ様用特殊仕様のデスクトップミュージックスイートを公開することにする。その名も「CUIck DTM suite」である。GUIでなく、オレ様好みのCUI(Command User Interface)でサクサク(Quick)とミュージックコンポーズするためのプログラム群(suite)だ。以下、超適当であるがマニュアルである。

  必要環境

Windows + Cygwin(Ruby)

  各ファイル説明

melodOSS(Open Sound System)デバイスである/dev/dspにsin波を書き込み、チープながら、リアルタイムに音階を出力する、メロディデーモン
konkPCのキーボードを、ピアノのキーボード化するプロセス。melodに対してUDP経由でコマンドを送信し、音階を出力させると同時に、画面に独自形式のMML(Music Macro Language)形式文字列を出力する
plexor標準入力から独自形式のMMLを受け取り、melodに対してUDP経由でコマンドを送信、再生させるほか、指定のコード&リズム付きのMIDI形式ファイルを生成し、playmidi.exeで演奏させる
midi.rbMIDI形式ファイルを扱うクラス、plexorの実行に必要
chord.rbギターコードを扱うクラス、plexorの実行に必要
playmidi.cMIDI形式ファイルを演奏するplaymidi.exeのソースファイル
Makefileplaymidi.exeの作成、パッケージ作成を行うMakefile
tulip.mml「咲いた、咲いた、チューリップの……」を演奏するMMLのサンプル
license.txtGNUのお約束

  基本的にCygwin上で動かすことを想定しているが、playmidi.exe以外はRubyスクリプトなのでunix系OSならほとんど手を加えることなく動くと思われる。

  まずは再生方法から。端末を2枚開いて、片方でmelodを起動、他方で「cat tulip.mml | ./plexor」を実行する。マコトにチープな音質ながら「チューリップの歌」が4小節再生される。<wavを再生する>

  「チューリップの歌」のMMLファイルの内容は以下のとおり。

  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スイートの設計思想にシンクロしてくれるのではないかと思っている。ほんじゃまた。

本日のツッコミ(全1件) [ツッコミを入れる]
キムダイチ (2006-08-14(Mon) 20:39)

はじめまして。<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(担当:キム)