読者です 読者をやめる 読者になる 読者になる

狸系の里 シーズン2

はじめの一歩、二歩、散歩・・

オーケストリオン用のMIDIを考えてみたことがある

MIDIはMusic Instrument Digital Interfaceの略語ということで、電子的に制御できる実楽器があれば、これを制御するものであってもよい。実際には、実楽器ごとに制御機構を作っていては大変なことになるので、鍵盤楽器を制御するところから始まっている*1。このJISは成立が13年前であり、サポートしている音色もまだシンプルな構成になっている。最近ではこの規格の上位規格*2があって、DTM機器は新しい規格に拠っている。それでもどこか鍵盤楽器風に見える。

MIDI規格から音を出す機能の部分を抜き出すと、こんな感じになっている。

1) NOTEコマンドで楽器名と音の高さ、長さ、強さを指定する。

2) NOTE ONコマンドで音を出し始める。

3) NOTE OFFコマンドで音を停止する。

この操作、1)を音栓*3設定、2)を鍵盤押下、3)を鍵盤押下解除と考えると、いかにもパイプオルガンの演奏動作に見えてくる。実楽器の動作をフルに模倣するためには、異なる音色全てを音栓に設定できればよいことになるのだが ・・ 

音栓を指定する欄はNOTEコマンド一つしかなく、欄の幅も決まったサイズしかない。NOTEコマンドが楽器と制御機器との間でやり取りされることを考えると、欄の幅が狭いといって無暗に広げることもできない*4。さて、どうしたものか。一つの案としてこんな事を考えてみた。

‐NOTEコマンドで「楽器名」を指定すると考えるから問題が起こる。この「楽器名」は、もともとの設定では、「音栓設定」という演奏法を指定していると考えられるので、「楽器名」でなく「演奏法名」と読んでみる。

‐NOTEコマンドを楽器ごとに用意する。楽器毎に演奏法名セットを作り、NOTEコマンドを「<演奏法><音符が示す音の特性*5>」で構成する。

‐楽器毎にNOTEコマンドの列を作り、これを「楽器名」で指定されるチャネルに送ると、指定された楽器音で、NOTEコマンドが指定される音が生成される。

‐楽器毎にチャネルを設定することから、このチャネルに繋がる音源は楽器毎に纏めるのがよい*6

こういう実体のない話は、具体化する工数を考えずに済む分勝手に想像を展開できる。具体化しようと思うと、「<音符が示す音の特性>」の扱いが意外に難しい。この「<音符が示す音の特性>」が音の「高さ、長さ、強さ」で済むのは鍵盤楽器の特徴であり、弦楽器なら隣り合う音符の間で音の高さが滑らかに繋がることもある。声の場合なら、前後の音符の繋ぎの部分で音が滑らかに変わる事に加えて、朗読調で歌う曲種*7では、音の高さ、長さが単純な規則で書けないことがある*8。「<音符が示す音の特性>」の扱いについては、一つの研究課題と言ってよいくらいの峰がありそうに見える。

この峰を見上げて、極めようとするか、見晴らしの良い場所を捜そうとするか、一つの分かれ道が見えてくる。前者が情報科学的な道、後者が情報工学的な道と言えようか。

*1:参考、JIS X6054-1及びX6054-2

*2:JISにはなっていない。

*3:レギスター、ストップ

*4:広げると、通信の時間がかかる問題と、広げる前に出来た機器が使えなくなる問題とが起こる。

*5:五線譜の場合、高さ、長さ、強さ。

*6:例えば楽器クラスから必要な数インスタンスを作り、このインスタンスに楽器チャネルを設定する。

*7:伝統的な邦楽、音楽的な詩の朗読など。

*8:テキストを読むアプリケーションが苦労する所でもある。