MIDIドライパ及びMIDI制御システムの開発
著者 浅井 祥隆, 山東 俊喜, 長谷川 武光, 佐藤 義雄
雑誌名 福井大学工学部研究報告
巻 45
号 2
ページ 241‑250
発行年 1997‑09
URL http://hdl.handle.net/10098/3439
福井大学
工 学 部 研 究 報 告 第45巻 第2号 1997年9月
MIDI ドライパ及び MIDI 制御システムの開発
浅 井 祥 隆 * 山 東 俊 喜 * 長 谷 川 武 光 " 佐藤義雄**
Making a MIDI‑ D r i v e r a n d MIDI ωn
仕'Ol a b l eS y s t e m
Yoshitaka ASAI. Toshiki SANDO. Takemi包uHASEGAWA and Yoshio SATO
(Received Aug. 29
,
1ωηA MIDI
∞
n位。lable system is∞
ns旬lcted加 providea music faciliti偲 on UNIX ‑Workstation(WS).Th
e system∞
Ins仕uctedisωmposed of a MIDI ‑driver and some appliα.tion programs for a variety of inte由.ces旬 music. Usersαn use the present system ωenjoy music on UNIX ‑WS泊 曲e組mewas as on PC.K o y
Wor由 :MIDI. MIDI一世iver.UNIX‑WS, X‑Wmdow1 はじめに
241
近年コンピュータが使用される分野は多い。音楽の分野においても例外ではなく、曲のデータをコン ピユ}タに入力し、電子音源を使って演奏している音楽は様々な所で耳にすることが出来る。最近では、
演奏のみならず作曲までもがコンビュータ上で行なわれている。なかでも、パーソナルコンピュータ (PC) 上における音楽環境は実に充実している。特に、 MIDI(後述)と呼ばれる規格に対応した電子音源が広
く用いられており、現在の主流となっている。 MIDI音源を制御し、演奏・作曲などの環境を提供する ソフトウェアも、フリーソフト・市販ソフトを問わず、様々なものが存在しているoそうして、コンビュー タにおける音楽環境は日々向上し、さらなる進歩が期待されている。
しかし、 UNIXのX‑Window上では、このような音楽環境に乏しく、 MIDI音源の制御や音楽情報 (MIDI規格に基づく譜面情報)を扱えるシステムは存在していない。そのような背景から、本研究では X‑Window上での音楽環境の構築を目的として、 MIDIの実装・ MIDIドライパの開発.MIDI制御シ ステムの構築を行なうo
$工学研究科情報工学専攻料工学部情報工学科
2 MIDI
規格について.M I D I ( M u s i e a l I l l s t r u m e l l t D i g i t a l 1
1lt.e r f a c e )
は、楽器の演奏情報を通信するためのインタフェース であり、国内のメーカーだけでなく海外のメーカーをも含んだ国際的な規格になっている。実際にやりとりされる情報は音そのものではなく、単なる演奏の情報(音を発するタイミング・音にか ける効果・音量・音の長さ・音の高さなど)のみであるo よって、転送した結果として発する音楽は受け る側に依存することになる。しかし、音そのものを標本化し、データとして送信する方式に比べると、
非常に少ないデータ量ですむため、データの扱いが比較的容易であるといえるo
この
MIDI
規格によって定義されたデータ通信の方法に従って演奏情報の入出力を行なっている楽器 や電子音源であれば、国内外を問わずに自由に接続し、通信することが出来るo しかも、通信方式がデ ジタルなので、 1本のケープルを接続するだけで様々な情報を凝縮して送信することが出来るo通常は、M I D I ‑ I N
とMIDI‑OUT
の2
本のケープルによって送受信を行なうが、情報を一方的に送信して自動演 奏を行なうこともよくあるo本研究でも、MIDI
規格に対応した電子音源を用いて、情報を一方的に送 信するという形態をとるo3 MIDI
の実装まず、
MIDI
音源とワークステーション間の通信を可能にするためのインタフェースの接続を行なっ た。MIDI
はD I N 5
ピンの端子を介し、3 1 2 5 0 b p s
のシリアル転送を用いて送受信を行なうo このため、本研究ではワークステーションのシリアルインタフェース
( 2 5
ピンR S ‑ 2 3 2 C
端子)を用いることにした。D I N 5
ピンコネクタと2 5
ピンR S ‑ 2 3 2 C
端子では直接接続することは不可能なので、変換回路を作成し て接続を可能にした(図1)[4]04 5 3 7
2
図 1:変換回路
一方、ワークステーション
(SONYNEWS3860)
の転送レートでは、MIDI
音源の転送レートと一致 しないため、外部から同期信号を供給することにより転送レートの一致を図った。具体的には、ワーク ステーションのシリアルインタフェースを外部同期モードに設定し、同期信号を供給するための発振回 路を作成することにより実現した。発振回路を図2に示す。16MHz
の水晶発振子を用い、出力をバイナリカウンタで3 2
分の1
にして5 0 0 k H z
を生成じたoCPU
は送られてきた転送レート用の信号を通常時・外部同期時共に
1 6
分周しているため、3 1 2 5 0 b p s
X1 6
243
二
5 0 0 k H
乙をR.S ‑ 2 3 2 C
端子から送った。これにより、ワークステーションとMIDI
音源との転送レート が一致した。1 5 (vcc)
2 0
(出力)図 2:発振回路
4 MIDI演奏ドライバ
ワークステーションによる
MIDI
音源の自動演奏を実現するために、MIDI
演奏ドライパを作成した[ 5 ]
。この演奏ドライバは、MIDI
規格に基づいたデータファイル(スタンダードMIDI
ファイル)を解析 し、MIDI
機器に演奏命令を送ることにより自動演奏を実現するものである。また、より充実した演奏環境を提供するために、コンピュータの機能(グラフイツクの表示機能・ファ イルの管理機能など)を活かした処理を付加した。それにより、グラフイカルなユーザインタフェースの 搭 載 ・ 演 奏 情 報 の 視 覚 的 表 示 ・ ワ ー ク ス テ ー シ ョ ン の フ ァ イ ル 管 理 機 能 を 利 用 し た 演 奏 環 境 の 充 実 が 実 現した(図3)。こ れ に よ り 、 演 奏 状 態 の 表 示 / 非 表 示 ・ ト ラ ッ ク 別 の 演 奏 の 制 御 ・ テ ン ポ の 操 作 ・ 演 奏 の停止/再開の操作がマウス操作で簡便に行えるようになった。
図
3 :MIDI
演奏ドライパしかし、付加機能のための処理が重く、演奏処理に遅れが生じるという副作用が起きた。参考までに、
M I D I
演奏ドライバにおける処理の流れを図4
に示す。トラックチャンクの先頭を確認
トラックチヤンクを1つ読み込む
デルタタイム分ウエイトを取る
MIDIイベントを解析
MIDIイベントの実行
各種ボタンイベント実行
次のトラヅクチヤンクへ
図
4 :M I D I
演奏ドライパの処理(一部)図 4から充分解るように、マウスイベントの処理やグラフイツク描画処理が演奏処理のループに含ま れているため、画面の再描画などの時間のかかる処理を行った場合に、その処理が終了するまでは演奏 が中断してしまうという不具合が起きる。演奏ドライパ自体が 1つのアプリケーションになっているた め、作曲環境などを提供する他のアプリケーションとの連動が容易でないという問題点もあるo
このため、より処理効率が高く、環境の追加に柔軟に対応できるシステムを構築する必要が生じた。
5 MIDI
制御システム前節の
M I D I
演奏ドライパの問題点を改善するために、M I D I
制御のためのプロセス( M I D I
ドライバ) とユーザインタフェースを提供するプロセスとを独立させたシステムを構築した。245
M工DI
信号を送信することにより 音源、を制御
プロセス間通信による 情報のやり取り
供
一
タの
提
ン ス
イイ
ザエ一 フ
¥ 体 /
! 緑 山 ど の 相
ユ ー ザ図5:マルチプロセス化したMIDI制御システムの概要
システムの概要について簡単に説明するo 図5に示したように、 MIDI音源をMIDIドライパが制御 し、 MIDIドライパを各々のツール(前述したユーザインタフェースを提供するプロセス)が制御してい るo演奏処理を独立させたため、 MIDI音源を直接制御しているプロセスはMIDIドライパのみになっ ているo
各ツールは、ドライパとユーザを仲介する種々のインターフェイスを提供する。具体的には、前節の MIDI 演奏ドライバが持つ、演奏情報の表示機能・ファイラ機能(多数あるデータファイルの中から演奏 するファイルを簡便に選択できる機能)などを提供するものであるo演奏支援だけでなく、例えば、譜面 入力エディタのような作曲支援の環境なども含むことができる。
各ツールはユーザの操作などに応じてドライパを制御し、ドライバは各ツールが必要としている情報 を提供する必要があるため、それらの聞で双方向のプロセス開通信を行なうことにより、情報をやり取 りしているo
前述したように、 MIDI音源を直接制御できるプロセスはMIDIドライパのみであり、各ツールは、
それぞれがドライパに対して要求を出すことによって動作を行なうため、ドライパをサーバに、各ツー ルをクライアントに見立てたクライアント・サーバ形式を採用した(図6)。
図6について簡単に説明しておくo各ツールは、クライアント的な役割を果たし、ユーザの操作などに よって生じた要求をドライパに伝える。 MIDIドライパはサーバ的役割を果たし、各ツールの要求に応 じて、特定の機能を用いて定められた処理を行なう。ドライパがデータを演奏している時には、解析し たMIDIデータをその都度各ツールに送信する。これにより、ツールが演奏状態の表示などの処理を行 なうことカ宮できるo
以上のような処理を実装するために、本研究ではプロセス開通信手段としてメッセージキューを用い たo MIDIドライパと各ツールの聞で相互に情報がやり取りされるため、送信されるメッセージの種別
‑各種要求を伝える ‑解析した
M工
D工データの通知 .動作状態を知らせる
図6:クライアント・サーバ形式
は、各ツールからMIDIドライパに送られるものが1っと、 MIDIドライパから各ツールに送られるも のがツールの数だけ必要になるo よって、これを実現するために、単一のメッセージキューによるメッ セージの多重化を行った。
メッセージの多重化は、メッセージタイプと呼ばれるlong値のパラメータを用いることによって行な うoこれを用いることにより、単一のメッセージキューから特定のメッセージを選んで受け取ることが 可能になる(図7)。
メッセージキュー
… 1 1 t y p e = 1 2 3 o r …789
│ M 山 ラ イ バ │
図7:単一のメッセージキューによるメッセージの多重化
ドライパから各ツールに対してのメッセージは、それぞれのツールごとに区別する必要がある。つま り、それぞれのツールに対してユニークなメッセージタイプを持たせる必要があるわけだが、これにつ いては、各ツールのプロセスIDを用いることで解決した。
ツールからドライパに対するメッセージは、各ツールのプロセスIDとの衝突を防ぐために、メッセー ジタイプを1にした。
247
6 実 行 方 法 ・ 実 行 結 果
MIDIドライパの実行は、コマンドラインから、 "X1l1"を入力することで行うoすると、図8のように、
メッセージを表示した後にツールの要求を待つ状態になるo画面からでは分からないが、初期動作とし て、メッセージキューの確保・ RS‑232Cデバイスの設定・ MIDI機器の初期化を行なっている。
<xm> for MIDI
∞
ntro1 with隠由232cdevice programed by punpkir起fukui‑ゐ, 1996‑1997日 ロ ー
図8:MIDIドライパの起動
以下に、実際にMIDIドライバを制御した例を示す。 MIDIドライパを起動したものとは別のウイン ドウを用意し、ツール(ここでは、実験のために拡張した氾nを用いる)を起動する。
図9は、曲のロード・一時停止・ステータス表示の要求を順に処理した例であるo
論 調 帝 京 事 掛 町 抑 制 組 問 問 拙
sga\沼s:-/xmid(l02)~ xm 10ad e1fland.mid 01 with隠
‑ z
沼Cdevice programed by punpkjsgauss:‑/xmid((103)~ xm pa¥閣
01 with 路ー~お device
programed by punpkj sgauss:‑/xmid( 104)~ xm s七品.US
.ro1 with隠ー2おお device program:肥dby punpkj
sgauss:
ソ
xm日d(l05)~ 日j図9:MIDIドライバの制御(1)
くxm>for MIDI
∞
ntro1 with路‑2混児device programed by punpkir喝fukui‑,u 1996‑1997図10:MIDI演奏ドライパの処理(1)
ドライパ側の処理結果は図 10のようになる。
曲のロードに関しては特にメッセージの表示が無いが、エラーメッセージは出ていないため、正常に 読み取れているo また、ステータスの表示を見れば分かるように、一時停止のフラグが立っているo テ
ンポ(初期値130)の横に表示されている値は、微調整のための相対的なパラメータである。
次に、ロードした曲を演奏させた例を示す(図11・図12)。先程の制御で一時停止が指定されているた
制議綴議鐘童話%話 ・v 二誕L議採縫語翻錦織主1 盤務総~諺~Jilj総~ml:盗塁00議選総議畿j滋翠繍繍i謝 喝a邸:ー/u.id(120)
,
lIIl 10剖elflar払回d〈凶 foEP阻EGDFIa∞臨nヨkdobywl 肌im白IPk隠iIa‑nfld2qCAid‑euvi団19OO‑1W7
sgat邸:γxmid(121)'D開 鵬
〈制 forp阻msDIa∞脱n出tdmbl y wpitmtphU隠捕ー主お点2目cd叫evil信1900‑1釘1
時a闘:~/u.id (122)%lIIl坑成田
〈m〉forPZm沼I町I舗∞町n出tdmblyw P1i皿出IPk隠
mo
ーおM2tCuid‑euvilm鎮 静 1叩7唱凱邸:~/u.id(l 23)%lIIl play
〈叫 forP阻rc凋DRIa∞眼n目加dbly wpi白umk隠
m o
ーおad2qCiid‑wゐliml袋調子l釘7時a邸:γuid(l24)%日
図11:MIDI演奏ドライパの制御(2)
‑...旬・・・・・・・・...・・・...・・...............u................・...・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・...・. 図12:MIDI演奏ドライパの処理(2)
め、各トラックの先頭を確認したところで処理が止まっているoここで一時停止を解除すれば、演奏が 開始される。
図13は、図11・図12の状態から一時停止の解除を行ない、演奏を開始した例であるD 図から分かる ように、 MIDIドライパを立ち上げたウインドウにMIDIファイルに含まれるテキストデータなどが出 力されるD 調号、作者、製作日時、 コメントなどの演奏とは直接関係の無い情報や、テンポなどが出力
されるoこのようなテキストの表示も、 MIDIデータの送信と同様にリアルタイムに処理されている。
249
図
1 3 :M I D I
演奏ドライパの処理( 3 )
最後に、ドライパの処理を終了させる例を示す(図
1 4
・1 5 )
。舗鍛造機綴錦織E話器瀦鋭機鱗鎚機嫌
sgau国:‑/xmid(H16)Zxm quit
<xm> for MIDI
∞
ntrol with隠‑232Cdevi偲prograomed by punpkin@fukui‑ゐ, 1袋おー1銭11 sga J 闘 よ/xmid(l田川口
図
1 4 :M I D I
演奏ドライバの制御( 4 )
図
1 5 :M I D I
演奏ドライパの処理( 4 )
7
結論本研究で開発した
MIDI
ドライパ、及びM I D I
制御システムによって、X ‑ W i n d o w
上における音楽環 境の構築は容易に実現できるようになった。M I D I
制御部分を独立させたことにより、個々のユーザが 発する様々な要求に応じて、提供するインタフェースが自由に組み変えられるようになった。これにより、
M I D I
を使用する上での様々な要求を満たし得るシステムが構築できたといえる。現段階では、
M I D I
ドライバとユーザインタフェースを提供するプロセスとの通信処理の効率が悪く、演奏処理に影響を及ぼしているため、処理の効率化もしくはその部分の仕様の見直しが必要であるD ユー ザインタフェースを提供するプロセスについても、今後の開発により、演奏・作曲のみならず、 MIDI を扱う上での要求を可能な限り受け入れられるようなものを提供しなければならない。
将来の展望としては、 MIDIドライパにネットワークを介した通信機能を付加し、他のユーザとの聞 でデータ及び制御のやり取りが出来るようにするという改良が挙げられる。これが実現できれば、単一 のユーザのためのシステムという域から脱することが出来る。さらに、ユーザフレンドリーなインタフェー スの実現が出来れば、学校等における音楽教育の支援など、さまざまな範囲で有効に使えるものに出来 る。
参考文献
[1] 椎名薫,コンビュータ&MIDI 2テクニカルプック (1988) [2]西川普司,Z‑MUSICシステム ver2.0(1993)
[3]志賀和人,パックアップ活用テクニックPART34,pp65・67(1993)
[4] 藤野忠晴,平成6年度情報工学科卒業論文
f
ワ}クステーションを用いたMIDI制御システムの作 成J
(1995)[5]出島豊樹,平成7年度情報工学務卒業論文「ワークステーシヨンを用いたMIDI制御システムの作成 及び作曲・演奏環境の充実
J
(1996)[6]朝井祥隆,平成8年度情報工学斜卒業論文 rMIDIドライパ及び周辺ライプラリの開発