OSTRACISM CO.

PCをアナログシンセサイザにしよう


 aRtsというオープンソースのソフトウエアシンセサイザがある(http://www.arts-project.org/)。モジュール型のアナログシンセサイザをシミュレートしたものだ。
 元の名前がKSynthで、KDEの一部をなすような名前だが、関連はよくわからない。動作にはKDE環境が最適とある。

 自作PCをパッチ式のアナログシンセサイザにしようかと唐突に思い立った。CQ出版社のインターフェース誌に紹介されていて興味をそそられたというのが真相。
 開発環境はSuSEとある。やはりシンセといえばドイツ。ドイツで最も普及しているLinuxディストリビューションだ。
 必要な環境として以下が挙げられている。

Linux 2.0.30
Qt 1.32
KDE 1.0
mico 2.2.3, 2.2.7 or 2.3.0

 このうちmicoが聞き慣れないが、CORBAのオープンソースでの実装だそうだ。なんでシンセがCORBAなの? ってのはあるが、シンセのモジュールをCORBAのオブジェクトにでもしてるんだろうか。

 自作PCにはVineLinux 2.0が入れてあり、とりあえずaRtsのコンパイルだけでもできるかなと作業を始めたが、そもそもconfigureがエラー終了してしまった。config.guessがなんの文字列も返していないのが変だ。
 config.guess(シェルスクリプト)を調べると、これがマシン環境を得るためのプログラムとわかる。その中でCのソースをテンポラリに出力してコンパイルをかけて動作させて調べる部分があり、その際にfeatures.hをインクルードしているのだが、なぜか自作PCのVineLinux 2.0にはそんなヘッダはないのであった。サーバ機のSlackware 3.5.0にはあるし、config.guessは正しい出力をする。

 そもそも変に日本語に特化してしまってるVineLinuxに嫌気がさしていたので、これを機会にSlackware 7.0を入れることにした。もちろんKDEにするし、手を入れるのが前提の(Slackwareは構成がBSD系に近く、System V系に近いRedHatやDebianに比べ単純)ディストリビューションなので、aRtsを動かしやすいだろうと考えている。いや、まだそこに到っていないが。
 Slackware 7.0のインストールの覚え書き。
 /dev/mouseは相変わらずシリアルにつながっているので、/dev/psauxにつなげる。
 XF86ConfigにてマウスはProtocol "PS/2"にして、ChordMiddleは無効にしておく。真ん中ボタンは勝手に有効に解釈される。Protocol "PS/2"にしないとマウスが正しく動作できなかった。
 README.NVIDIAによると、24 bppモードはないので、32 bppモードを使うのだろうが、まだ8 bppしか試してない。
 SoundBlaster AWE64のHowToが翻訳されていると知る。
 昨日見つけたはずのIwaiさんのページ(AWE Sound Driver Extension)が見つからない。他の文献からのリンクは全部切れている。これだからガクセイは。
 見つけた見つけた、http://opensource.creative.com/links.htmlからたどれる。現在のIwaiさんのサイトはhttp://members.tripod.de/iwai/にある(これもドイツだ)。u-tokyo.ac.jpではない。それにしてもCREATIVEのオモテ玄関からはopensourceというカテゴリには全くリンクがない。「Open Source」で検索しても出してくれない。また嫌い度が上がった。

 続く。

2000.10.13

 PCをアナログシンセサイザシミュレータにしようの続き。

 Freeでアナログシンセサイザのシミュレートをするソフトが配布されている。名前はaRts。ただしまだまだ開発途上なので自力でmakeする必要がある。
 前提として、カーネルを最適化するので、RedHat系ではなくSlackware 7.0(LinuxJapan 2000年2月号)をベースにする。使わないsendmailやTeXはインストールしない。KDEは必須なのでインストールする。カーネルやソフトをコンパイルするのでデベロップ環境も必須。

 最初はまず、サウンドカードをきちんとLinuxで設定する必要がある。
 SoundBlaster AWE64はPlug and PlayのISAカードだ。普通にカーネル構築時に設定しても、ちょっと環境が変動するともうIRQ番号やDMAチャンネルが変わってしまって音が出なくなる。これを解決するのがisapnpというコマンドで、以下のドキュメントに詳しい。
「Linux と SoundBlaster AWE64 PnP (mini HOWTO)」http://www.linux.or.jp/JF/JFdocs/SoundBlaster-AWE64.html
「Sound Blaster AWE 32/64 HOWTO」http://www.linux.or.jp/JF/JFdocs/Soundblaster-AWE.html
 SoundBlasterのドライバをモジュールとしてmakeし、isapnpでボードの設定をした後にドライバをロードするという手順がアイディアの概要。
 あと、AWE64のEMU-8000シンセサイザの機能を有効にする方法が述べられているが、Slackware 7.0にはIwaiさんのawe_wave.c 0.4.3が入っている。カーネル構築時にAWEもモジュールとして指定すると良い。わけあって自動ロードをしない場合は modprobe awe_wave をrc.modulesに書く。SoundBlasterドライバのロード直後で良いだろう。
 私はAWE64のドライバインストールで手間取ったが、isapnp.confに記載すべき情報が足りなかったのが原因。IwaiさんのページのFAQにその問題が取り上げられている。
「SB AWE32/64 Sound Driver for Linux / FreeBSD」http://members.tripod.de/iwai/awedrv.html
 もっとも、EMU-8000機能とアナログシンセサイザシミュレータは無関係なのだが。
 ドライバがインストールされたかどうかは /dev/sndstat をcatすれば確認できる。
 あと、なぜか/dev/dspのパーミッションが「rootしか音を出せない」状態だったので、これはchmodする必要がある。Slackwareの問題?

 すでにボードの設定とX-Window(Diamond Viper V550は32 bppモードで無事動作)、KDEの設定が終わっているとして、次はソフトウエア。
 http://www.arts-project.org/ からソースを持ってきて /usr/local/src/ に展開する。ドキュメントを読むとmicoが必要とわかるので、http://www.mico.org/ から持ってくる。
 CORBAのOpenSourceな実装であるmicoの ./configure はパラメタに --disable-mini-stl を忘れないように。かなり大きいのであまり何度もmakeはしたくない。makeしてmake installである。
 これでaRtsの ./configure がエラー終了しなくなる。もちろんSlackware 7.0ではconfig.guessが不可解な動作をすることもない。Pentium IIはi686と解釈される。
 aRtsをmake、make installしたら、次はシーケンサのBrahms(http://lienhard.desy.de/mackag/homepages/jan/Brahms/)のインストールだ。http://arts.linuxave.net/download/ から持ってくるのがスジ?
 Brahmsは最初KooBaseという非常にパチくさい名前だったそうだが、ようはCUBASEが目標なのであろう。GIMPとPhotoshopのような関係か?
 Brahmsもmake、make installして、KDEの再起動をすると、aRtsとBrahmsを動作させることができる。これでシーケンサ付きアナログシンセサイザを手に入れたことになる。発音することは確認。
 次は運用のハナシかな。KORG MS2000やRoland JP-8000を使った方が楽だし音が良いし安定してるし、なによりPCより安いってのはのはおいとくとして、設計思想から自由度だけは高そう(実際は音を作ってみないとなんともいえないが)。

 続く。

2000.10.16

 PCをアナログシンセサイザシミュレータにしようの続きの続き。

 PCのSoundBlasterのジョイスティックポートに専用のMIDIアダプタを接続して気がついた。端子の先がオスなのである。これではMIDIケーブルを接続できない。普通、MIDI機器側はメスだろうが、まったく電子楽器の常識がないんだからサCREATIVEのやつらは。
 しょうがないのでHDRマシンであるPM8500のMIDI OUTにSoundBlasterのMIDI INを直接つなげた。本来ならMIDIケーブルを介したいところだ。
 PCでaRtsとBrahmsを起動。BrahmsでaRtsの音を演奏できるところまでは良かった。PM8500のCUBASEで送信するMIDIデータをaRtsが受けとっている気配がない。デフォルトでは外部からのMIDI情報は受けとらないようだ。しかし、aRtsにもBrahmsにも設定が見つからない。マックのOMSみたいな仕組みがあるのだろうか?
 cat /dev/midi | od とするとPM8500のCUBASEからのMIDIデータが/dev/midiまでやってきていることがわかる。なんというか、UNIXなんだね、MIDIまで標準的なデバイスとして扱おうとしている。

 aRtsのマニュアルに記載されている「The MidiBus standard」がどうやらマックのOMSみたいな仕組みだった。midisendというコマンドを常駐させると、デフォルトで/dev/midiの入力をソフト的なMIDIのBusであるMidiBusに乗せてくれるとある。お、鳴った、あれぇ1音だけぇ?
 なぜか1音しか鳴らない。midisend -v とすると最初にノートオンが表示されるが以降ノートオフしか表示されない。何かがおかしい。
 midisend.ccに手を入れて、ノートオンとノートオフ以外のデータも表示するようにしたところ、大量に0xF?が出力された。0xF?ってなんだっけ?
 夜中に物置と化した書庫部屋にて大昔に買った「MIDI Book」を探す。0xF?はシステムエクスクルーシブなのだが、量から考えてタイミングクロックではないかと思う。
 CUBASE側でMIDIクロックと一応MIDIタイムコードを出力しないように設定を変えると(通常PM8500はHDRのマスター機として使っているのでタイミングデータを出力するように設定してある)、やっとノートオンも正常なタイミングと数が確認できた。もちろんaRtsからも音がでるようになった。

 ということはだ、Linuxのデバイスドライバがタコで、MIDIクロックがあると処理が間に合わなくてノートオンが捨てられるのか、そもそもSoundBlasterのMPU401互換機能が腐っているかのどちらかだ。WindowsやBeOSでどう動くか調べて結論をだそう。

 音そのものは予想よりかなり良い。同時に起動しているソフトが画面の更新等負荷の高い処理をすると「ブツッ」っと変な音が入るのはご愛敬。

 続く。

2000.10.17

 PCをアナログシンセサイザシミュレータにしようの続きの続きの続き。

 さて、Windows95においてMIDI入力で楽器を演奏する方法は、デフォルトでは存在しない。コンパネのマルチメディアのMIDIに「MIDI出力」はあるが「MIDI入力」はない。どうもWindowsにはマックのOMSのようなソフト的なMIDIパッチベイの共通基盤が存在しないようだ。
 そこで、ふみぃさんのCherry1.4.3をインストール。これはFreeのMIDIシーケンサだ。ここでMIDI入力を設定すれば、少なくともこのソフト上ではMIDI入力ができ、それを内蔵音源に割り振ることができる。
 そして、PM8500のCUBASEからMIDIクロックとMIDIタイムコード付きでデータを送信したところ、なにげなく音がでてきた。全然問題ない。
 というわけで、問題はLinuxにおけるMIDIの実装にあるとの結論を得ることができた。MIDI実装のどのあたりのレイヤで処理が重くなってしまうのかわからないが、そもそもLinuxはリアルタイム処理には向かないOSであるとはいえる。

 SoundBlaster AWE64のEMU-8000シンセサイザの音を、そうと知って初めて聴いてみたが、非常にまじめな良い音色だった。GMはデファクト標準であるRolandのSC-55/88系の音色の雰囲気にかなり近づけてある。きちんと音作りをすればかなり面白そうだ。
 ただし、所詮PCのサウンドボードなので、ノイズは多い。AWE64 Goldでどの程度改善されるのか不明だが、最終的にPCをきちんと楽器として使うなら、S/PDIF出力を持ったものを用意しなくてはいけない。NOVACのボードが44KHzをサポートしててかつLinuxやBeOSのドライバがあって魅力的だが、EMU-8000はあきらめなくてはいけない。いや、まぁ、たぶん私がバリバリEMU-8000を使うってのは想像できないが。
 そういえば、EMU-8000の出力だけS/PDIF出力にする改造ができるという情報があったな。

 続く。かな?

2000.10.18

 PCをアナログシンセサイザシミュレータにしようの続きの続きの続きの続き。

 試験的にとはいえ、HDRでの録音にノイズだらけのSoundBlasterの出力を使いたくないのは人情。無音状態でアンプのボリュームを上げると、悲しいくらいマシンのノイズが載っている。
 「今日の必ずトクする一言」(http://www.bekkoame.ne.jp/~jh6bha/higawari.html)にISAのSoundBlasterのノイズを軽減する方法が述べられてはいるが、自分でコンデンサ買って改造なんてことする義理もない。腕もない。
 気になってたNOVACのReMix2000の正体を知るべくいろいろ調査すると、「ワイドネットワーク」(http://www.tk1.speed.co.jp/widenet/Menu.htm)というページにぶちあたった。ReMix2000はC-MediaのCMI8738というチップを搭載したサウンドカードなのだが、同じチップを搭載したサウンドカードがずらりと評価されていた。
 CMI8738搭載カードは、たいがい2000円程度で販売されており、通常は同軸(COAX)のS/PDIF出力が付いている。ReMix2000も基本は同じだが、光(OPT)のS/PDIF出力だという点のみが特徴。ReMix2000は実売5000円程度。私は同軸の出力が欲しいのだから迷うことなく安物のCMI8738搭載カードを選ぶべきなのであった。同軸が光になっただけで2.5倍の値段ってとこが変な商売。
 お店ではYAMAHA YMF754を搭載したカードがデジタルI/O付きの高級品として賑わっているが、YMF7?4シリーズはサンプリングレートコンバータを使うので44KHzでのI/Oは音質が劣化するという欠点があるともわかった。

 秋葉原メッセサンオー(OverTop)で買ってきたのはZoltrix社のNightingaleという怪しいカード。CMI8738搭載との店員さんの書きなぐりがなければ手に取らないだろなぁ。もちろん同軸のS/PDIF出力が付いている。この製品はOptical Upgrade Kit(ボード上のS/PDIFピンにIN/OUTの光端子を追加するブラケット)と組みで3800円だった。ReMix2000にIN/OUTの光端子を追加したセットは7000円くらいである。2倍近い。IN/OUTの光端子が必要なければAUDIOEXCEL AV511がDOD/Vパラダイスで2000円。T-ZONEと潰れかけたTwoTopにCMI8738搭載ボードは置いてない。
 本当は同軸のブラケットがあれば最高だったのだが、そんなものを探している暇はない。当面は使わないが今後S/PDIF機器は光端子が増えるという前提で考えている。いや、まぁ、楽器関係は同軸が主流だから、どうしても欲しくなったら光・同軸コンバータを買えば良い。サウンドカードより高いけど。
 半年以上前かな、いろんなお店で「MD MATE」という「MDにデジタル出力」を売りにした製品を見掛けたが、CMI8738搭載カード+光端子のS/PDIFブラケットというのが正体だった。10000円位だったと思う。

 こうなると、マック(KORG 1212I/O)の役割をある程度PCに持ってくることができるわけで、モニタリングやら遅延の問題やらいろいろあるのだろうが、なんとも複雑な心境。光端子でのINを使うとなるとDATをA/Dコンバータとして使うか、別にA/Dコンバータを用意するかしなくてはいけないが。
 ちゃんとした録音環境をPCに構築するとなると、最近各社からでてきた安価なUSBデジタルミキサーを導入するのが一番楽なんだろうけどね(安価といっても5〜10万円)。
 PCにKORG 1212I/Oを入れればいいって? そりゃそうだが、1212I/OってばLinuxやBeOSでは動かないのであった。「ちゃんとした録音環境」はLinuxやBeOSではそもそも構築できないけど。

 そんなわけで、さようならSoundBlaster AWE64、さようならEMU-8000。
 ともかく、LinuxやBeOS向けのドライバがあるってのがCMI8738の強み。

2000.10.19

 PCをアナログシンセサイザシミュレータにしようの続きの続きの続きの続きの続き。

 セットアップに手間取った。
 謎のボードNightingale(http://www.zoltrix.com/はなぜかつながらない)のOptial Upgrade Kilのディップスイッチの形状がそもそもマニュアルと違っていた。ONとOFFの方向が逆なのだ。しかもマニュアルに記載されているディップスイッチ(の写真)は装着後に外からでもアクセスできる位置にあるが実際はボード上に上向きに実装されており、PCのケースを開けてしかもネジをハズしてボードを取り出さないとアクセスできない。困ったもんだ。
 SoundBlaster AWE64と交換して再起動するとWindows95がPlug & Play機能でボードを見つけ、ドライバを要求したので、素直にCDを入れてインストールした。設定用のアプリが必要なので再度ドライバも含めてインストールしたところ、マルチメディアコンパネでドライバが2重に見えている。あらららら。しかも案の定音が出ない。
 ドライバを一度削除して、再起同時に要求されるままCDを入れたものの、2重にあるのは解消しない。
 一度ドライバ削除後にセーフモードで起動、再び起動すると2重問題は解消した。
 でも音がでない。

 こういうときはシステムを単純化するのが先決。手始めに光端子のブラケットを取り外すといきなり音が出た。どうやらあのディップスイッチが怪しい。
 光入力を持つDATデッキと光出力を持つCDプレーヤーをPCの近くに引っ張り出し、接続を変えつつディップスイッチをいろいろ変え、ブラケットが付いた状態で音が出る設定を見つけ出す。信号を反転する設定になるのだが、説明書と実装が合っている保証はない。なんせ「信号の反転」がOFFであることと本体から音が出ないこととの関連はなんの説明もない。
 ともかく音が出た。Windowsで使う限り光I/Oも問題ない。非常に素直な音がやり取りされる。あんな安物デバイスでPCがマトモなオーディオ装置になってしまった。
 次はBeOSである。BeOSではドライバをインストールしたら素直に音が出た。現状のBeOSではS/PDIF出力などは期待しないのでこれでOK。問題はLinuxだ。

 CMI8738のLinux向けドライバの説明にはS/PDIFのI/Oに関する説明は何もなかった。当然のようにS/PDIFからは何も出力されなかった。困ったな、こんなはずでは。
 Infoseekにて「CMI8738 Linux」で検索をかけると、あったあった。公開されているドライバにたりない機能を追加するための情報があった(長野さん http://member.nifty.ne.jp/Breeze/)。情報は日記形式で書かれている。ドライバ初期化時に必要なポートへの出力をドライバソースに加え、再構築するとS/PDIFから出力された。ラッキー。
 さらに長野さんの日記を検索すると、自分でドライバソースに手を加えなくてもON/OFFを設定できるツールを公開しているとあった。cmictlである。これが欲しかったのだ。S/PDIF入力もできるようになるはずだが、まだ確認はしていない。

2000.10.20

 長野さんの日記にもあったが、サウンドボードのオマケMIDI I/F経由のMIDI I/Oの具合が悪い。そこでシリアルのMIDI I/Fを導入することにした。
 MIDI I/Fは、以前買って内容に失望して放置してあったAKAI SG01kである。こいつはいわゆるGM音源なので、MIDI I/Fとしても使える。
 Windows95向けはネットでRoland、YAMAHA、KAWAIの3種類のドライバが見つかった。この中で最も機能が低いであろうKAWAIのドライバをインストール(ドライバとINFファイルしか入ってないのが気に入った)。音がでなかった。
 夕食をとりながらSG01kのマニュアルを読んでいると、シリアルのケーブルがいわゆるリバースである必要があったと気づいた。リバースしていないケーブルでつなげて音が出るわけない。ところがケーブルをリバースにしても音がでなかった。
 そういえばシリアルポート2つのうち1つBIOSで無効にしてたような...
 BIOSの設定で2つめのシリアルポートを有効にすると音が出た。

2000.10.21

 PCをアナログシンセサイザシミュレータにしようの続きの続きの続きの続きの続きの続き。

 ふと気がつくとaRtsから音がでていなかった。
 CMI8738のLinux向けドライバのcmpci-2.41、cmpci-3.21、cmpci-3.28のどのバージョンでも同じだった。cmpci-4.03ではそもそも音を出そうとするとフリーズした(取り替えるのに何度もカーネルの再構築をするのはかなりしんどい)。
 フリーズしないどのバージョンでもKDEのサウンド(Windowを最大化したらなんの音というアレ)は出力される。しかしaRtsでは出力されない。また、シーケンサのBrahms(Brahms-0.97.1.tar.gz)もマトモに動作しなくなっている。
 なんとか音を出そうといろいろ考えられることを実行してみたが、どうにもならなかった。

 結局想像するに、aRtsとBrahmsはOSSに強く依存しており、また、ソースの公開されているCMI8738のLinux向けドライバはOSSとの互換性がないのであろう。少なくともカーネル構築のメニューではC-MediaはOSSとは独立に記載されている。

 OSSとは商用のLinux向けサウンドドライバおよびその仕様で、Open Sound Systemの略。

 振り出しに戻ってしまった。当面CMI8738はWindowsでのS/PDIFの入出力に使うとして、LinuxではSoundBlaster AWE64を使うことになる。サウンドボードの2枚差しだ。ISAのSoundBlaster系とPCIのCMI8738系は2枚差しの定番とされており、比較的手軽にPCにデジタル音声の入出力を加える手段として知られている。

 こんにちはアゲインSoundBlaster AWE64。
 LinuxのサウンドドライバをSoundBlasterに戻すとaRtsもBrahmsも再び元気に動き出した。
 SoundBlasterのLine出力を直接KORG 1212 I/Oのアナログ入力に突っ込んで音を聴く。マシンノイズはあるが、まあ、面白ければオーケィ。ヘッドホンで真面目に聴くとaRtsの音はなんともデジタルくさい変な部分があると気づく。まあ、面白ければオーケィ。

 LinuxでのシリアルMIDIだが、uart16550_midiというOSS向けドライバを入れたが、どう設定すれば正しくMIDIデータを受信できるか今のところわかっていない。変なデータは受け取れたんだが、シリアルスピードでも合ってないんだろうか。

 OSSのサイトを見るとCMI8738も対応しているように記載されている。期間限定おためし版ってのがあるようだ。Slackwareで動くのかどうか知らないが、試してみよう。

2000.10.28

 PCをアナログシンセサイザシミュレータにしようの続きの続きの続きの続きの続きの続きの続き。

 結論からいえば、OSSは動かなかった。正確にいえばOSSはSlackwareにインストールさせて貰えなかった。そもそもSystem Vベースのディレクトリ構成を要求する。SlackwareはBSD系なのである。
 商用OSSはソースがあるわけでもないし、インストーラでさえバイナリの実行モジュールのみである。これ以上の追及は不可能。OSSのどこがどうオープンなのか不明。

2000.10.29

 PCをアナログシンセサイザ云々。

 以前、VineLinux 2.0でaRtsがMakeできなかったわけだが、どう考えてもおかしいので、「普通に」VineLinuxをインストールしてみようと考えた。SoundBrasterは抜いてCMI8738オンリーにする。
 案の定mico、aRts、Brahmsのどれも問題なくconfigureもmakeも通る。まさしく入れ方の問題だったわけだ。
 OSSのインストールも、conf.modulesにalias sound offを書く必要があるなど多少手間取ったが、できた。音も鳴る。
 ところがである、OSSのCMI8738向けドライバにとんでもない問題があった。MIDI入力をすると「IRQ18に割込みがあったのでコンフリクトを解消しなさい」と英語でメッセージを出してマシンをHLTするのである。馬鹿ドライバ。IRQ18はCMI8738のIRQだ。MIDI INに信号があったら割込みが発生するに決まってる。
 OSSはソースが公開されているわけではないのでこれ以上の追求はできない。
 再度SoundBrasterを差し、OSSで両方のドライバを有効にしてSoundBraster側のMIDI入力を使おうと思ったものの、どうもデバイスを2つ使うとCMI8738向けドライバ側のMIDIしか有効にならない。釈然としない仕様だが、あきらめるしかなかった。
 時間の無駄であった。商用OSSの使えなさ加減がわかっただけでも意義はあろうが。

 次のアイディアはSlackwareに戻して、SoundBraster向けOSS/Free(カーネルソースに付属)を有効にしてCMI8738ドライバも入れ、/dev/dspをすり替えるのである。
 Slackwareはデフォルトでは/dev/dspと/dev/dsp1がある。両方ともキャラクタデバイスであり、リンク(エイリアス)ではない。そこで/dev/dspを/dev/dsp0に名前を変えて、/dev/dsp1を/dev/dspにリンクした。これで/dev/dspへ出力された信号は/dev/dsp1に行く。
 KDEのサウンドは鳴るのだがなぜかaRtsの音はでない。実際にCMI8738ドライバの呼び出しがあるのかと、ソースにprintkを入れたのだが、呼び出しはされているようだ。とにかくなぜか音が出ない。
 CMI8738ドライバのバージョンを変えてみようと思い、3.28にするとKDEサウンド発音時にフリーズした。Linux全体を殺す最低のコケ方。以前4.03で遭遇したフリーズと同じだ。aRts以前の問題である。

 で、3.21を入れたところKDEサウンドでコケることはなくなった。それどころかaRtsで音がでるのである。長野さんのcmictl(gcmictl)でS/PDIFを有効にするときっちりデジタルに音が送られてきた。ラッキー。SoundBrasterのMIDI入力をmidisend(aRtsに付属のコマンド)するとaRtsがきっちり発音した。
 まさかなぁとSoundBraster、すなわちOSS/Freeドライバはなしにして、/dev/dspのすり替えなどという姑息なことはせずCMI8738ドライバだけで素直に動作させ、CMI8738へのMIDI入力をmidisendでaRtsに送ると音が出た。あれぇぇ? 前回は出なかったんじゃなかったか。
 前に試験した時はBrahmsが動けなくて、音を出す手段がなくなっていたのであきらめてしまっていたのだ。なぁんだ、3.21ならば音がでるんだ。もちろんOSS/Freeがないせいか、Brahmsはきちんと動作しない。aRtsはOSSに依存していないがBrahmsは依存しているのである。偉いぞaRts。

 CMI8738ドライバ3.21はC-Mediaのサイトには置いてなく、NOVACのサイトに置いてある。NOVACがCMI8738ドライバのバージョンを上げず3.21に止めたままなのは理由があったということなのだろうか? 偶然だとは思うがなんとも不明。ようはNOVACのサイトに置いてあるバージョンのドライバでなければきちんと動かないのである。「動かない」の主語はなんだろう。「Nightingale」だろうか、「CMI8738搭載サウンドカード」だろうか。CMI8738はマザーにオンボードのサウンドサポートに使われることも多い(S/PDIF端子なしというもったいないオバケが出そうな実装が多いと聞く)。

 次はCMI8738ドライバ3.21と3.28の違いを比較し音が出ないまたはフリーズする原因を追求しなくてはいけない。あとはシリアルMIDI I/Fがきちんと動作できるように仕立てる必要もある。まあもう録音に使うには十分なセッティングにはなったのではあるが。

 いつ音楽が始まる?

2000.11.16

 PCをアナログシンセ云々。

 そうこうするうちにKDE 2.0にはaRtsがデフォルトで入っているそうで、しかもmicoではないオブジェクトアーキテクチャを使ったそうで、実行効率が良いとの主張。
 ともかく実際に音を作ってみるべくチュートリアルをやってみた。
 困った。ひたすら落ちる。ちょっとパラメタを間違えただけで死ぬ。しかもドキュメントがイマイチ詳しくない。音がでないだけならまだしも死ぬのはキビしい。KDEサウンドを鳴らすなどしてサウンドチップを正常な状態にしてaRtsを起動し直すだけなんだが、試行錯誤の手間が大変。
 ワープのエネミーゼロはやったことないけど、こんな感じなんだろか。

 別プロダクトのアナログシンセエミュレータのSpiralSynth(http://www.blueammonite.f9.co.uk/SpiralSynth/index.html)も導入してみた。
 makeの前にconfigureでfltk云々と怒られるが、fltkはインストール済みだ。configureのエラー箇所を見ると -lfltk だけでなく -lGL もある。ドキュメントに「OpenGLが必要かも」とあった。なんでOpenGL?
 とりあえずconfigureとMakefileから -lGL を削除して./configureとmake。通った。
 SpiralSynthはすんなり動いた。波形がビヨビヨして楽しい。

 aRtsはいまだMIDI入力で死なない設定にできない。

2000.11.20

 PCをアナログシンセ云々。

 aRtsだけの問題でなく、CMI8738ドライバのせいで死ぬことも多いし、そもそもaRtsをストップさせると次回動作時に音が出ないことが多いので、当面はSoundBraster AWE64を使うことにした。さすがに超メジャーボード、変な動きはグンと減った。音がでなくなる問題はなくなった。

 なんとかaRtsを動かせるようになってきたが、仕様を知るにつけあまりのタコさ加減にうんざりすることしばし。タコな仕様をあげる。
 MIDIノートを受けとるモジュールを含むストラクチャを実行させるとコケる。
 コケるのでMIDIルータとMIDIノートモジュールは別ストラクチャにしなくてはいけない。
 音色を一覧するモジュールに一覧させるにはinstrument_xxxなどのようにネーミングしなくてはならず、一覧にはxxxだけが表示される。xxxというネーミングでは一覧されない。
 音色を組み立てるストラクチャにはツマミなどのGUIモジュールを配置できない。
 そんなわけで現実に音を出すには「MIDIルータを含むストラクチャ」と「GUI操作するストラクチャ」と「MIDIノートを受けて音色を組み立てるストラクチャ」の3つを用意しなくてはいけない。しかもGUIストラクチャはinstrument_xxx_GUIというネーミングルールがある。

 これでまともな音がでるならまだしも、どうもホワイトにせよピンクにせよノイズを発生させる方法がない。ランダム数値モジュールがないのである。
 また、エンベロープを音量でなくフィルタの周波数に噛ませたが、まともに動作しない。エンベロープのスロープ(0〜1)に例えば8000を掛けて周波数のレンジに変換して(8000は8KHzを意味する)フィルタに与えてみたが、どうにも分解能が周波数向きではないようだ。
 いまのところ気づいたのはこの2点だが、これが何を意味するかというと、まずノイズがないと多くのパーカッションを表現できない。いわゆるジェット音やヘリ音も表現できない。実はフィルタの方がより致命的で、ブラスが表現できない。より一般的にいえばフォルマント表現ができないことになるので、ドラムもヒューマンボイスも表現できない。

 こうなるとむしろaRtsでは何が表現できるんだとなる。aRtsで表現できるのは単純減衰音のハープシーコードや音色変化のないオルガンや、アナログシンセのプリセットによくあるストリングスという音色程度だけなのである。aRtsの自由度は昔のKORG DELTA(ストリングシンセなどと言ってたな)程度であり、かなり低い。いや、エンベロープの分解能から考えるとKORG DELTA以下もいいところ。不自然な音色はあらゆる面での分解能の低さが原因であろう。

 SpiralSynthの方が多彩な音色を表現できる可能性が高い。aRtsの自由度はこけおどしであった。

2000.12.05

 PCをアナログシンセ云々。

 Linuxにこだわるつもりはないので、Windows向けのソフトシンセを物色。SOUNDFORUM SYNTHESIZER(http://www.nativeinstruments.com/english/2_products/7_soundforum/soundforum.html)をみつける。かなりクオリティが高い。レゾナンスもフィルターも効く効く。こうでなくっちゃ。Native InstrumentsはVST2プラグインのソフトシンセであるPRO-52を出荷しているメーカだ。どういった経緯でFreewareなのかわからないが(独KEYBOARDS誌のワークショップ向けとあるが意味不明)ありがたく使わせて貰おう。Macintosh版もあるのでイケダでもヤマナカでも安心。
 問題はちょっと無視できないくらい発音が遅れること(70ms程度遅れる)。これは一度HDRに録音してから全体をずらすという情けない対応が必要。
 SpiralSynthをCMI8738で使ったところ、なんとも発音が変だ。また、プログラムがメチャクチャ重くなる。SoundBrasterに変更すると問題ないので、ドライバの動きが違うのだろう。SpiralSynthをCMI8738で動かせれば良かったのだが、しかたがない。結局のところドライバがネックとなり、LinuxでソフトシンセのS/PDIF出力は得られないことになった。他にLinux向けソフトシンセあるのかな。どのみちCMI8738ドライバが今のままでは解決しない問題なんだろうけど。

2000.12.07

 SynthEdit(http://homepages.ihug.co.nz/~jeffmcc/synthedit.htm)というソフトシンセもけっこう音色が良いのだが、演奏中に青い画面で落ちるという大問題がある。CMI8738でなくSoundBrasterのドライバではどうかという試験はしていない。どのみち動いてもSoundBrasterの音は録音する気はない。よってこのソフトシンセはあきらめた。
 DrumSynth(http://www.maxim.abel.co.uk/)が結構良い音だ。これ自体は演奏能力を持たないがかなり良いリズムボックスのWAVファイルを作れるので、あとはサンプルプレーヤがあれば良い。
 サンプルプレーヤはRramm Drrumm(http://studio-on-the.net/sisusoft/)を使った。レスポンスが10ms程度と、かなり良好。使い勝手も良い。
 ソフトシンセをいくつか動かしてみたが、CMI8738ドライバでS/PDIF出力できないものも少なくなかった。CMI8738は16bit、44.1KHz以外のサウンドはS/PDIF出力できない。

 で、結局はSOUNDFORUM SYNTHESIZER、DrumSynth、Rramm Drrummという組み合わせで試作品「デバッグの愉悦 mix 2000」を録音した。ハイハットとスネアの音はDrumSynth、それ以外は全部SOUNDFORUM SYNTHESIZERの音である。

2000.12.17

Copyright (C) 1997.8 Takeshi Yoneki, OSTRACISM CO.
「デバッグの愉悦 mix 2000 rev.3」MP3オーディオファイル (3MByte)

 MP3ファイルですので各種MP3デコーダで再生できます。推奨デコーダはMacintoshではSoundApp、WindowsではSCMPX、LinuxではX11AMPというところでしょうか。MP3はQuickTime3.0のQ-Designと比べても音質とファイルサイズのパフォーマンスが格段に良い形式です。SoundVQとの比較でも確実に高品質です(エンコーダに依存するようですが)。
 80KbpsでのSCMPXとmp3 encoder 0.12の出力を聞き比べたところ、この作品はmp3 encoder 0.12の音の方が素直でした。mp3 encoder 0.12でエンコードされています。
「ホーム」へ戻る

OSTRACISM CO.
OSTRA / Takeshi Yoneki
2000.12.21