2006年12月15日金曜日

MIDI資料室

MIDI資料室

★★★初心者の方へ 音色の設定★★★

CY10を使う方は、DTM初心者の方も多いようですが、MIDI OUTポートさえ設定すれば、キーボードを押すだけで音が出るので、リアルタイムで録音するところまでは、いくようです。
問題はその後、ファイルを保存して音色が変わらないなどの質問を受けることがあります。pianoに戻るとか。
midファイルは、演奏情報のほかに、はじめの1小節くらいは、音色の設定などの情報が入っている場合がほとんどです。ここで、音源をリセットして、その後、音色を変更するとうことをするのです。このようにすれば、同じ音で再生できます。
シーケンサでは、試行錯誤して一時的に違う音で鳴らしてみたりすることも考えられるので、自動的にmidファイルに反映されません。
ただ、基本的な音色の変更に関しては、「FILE」-「音色設定ファイル保存」でmidファイルに落とすことができるようになっています。設定が保存されるのは、バンクチェンジ、プログラムチェンジ、ボリューム、PAN、リバーブ、コーラスです。このファイルを再生すれば、音源がリセットされてもその時の音色の設定になります。(音源固有の設定を除きます)
あとは、リセットやこのファイルを演奏ファイルとあわせればよいのです。

次にファイルのあわせ方を説明します。 SONG 1に作成中のMIDIがあったとします。
そうしたら「音色設定ファイル保存」で作成したMIDファイルを SONG 2に読み込みます。(CY10はSONG Bankに10曲ロードできます)
次にSONG 2 のトラック1を SONG 1の空いているトラックに 「JOB」「移動」で音色設定を持ってきます。


★★★ラクラク入力★★★

MIDIに曲を入力するのに、一番早いのは、リアルタイム入力でしょう。しかし、それは、完璧に弾きこなせるようになってからの話です。新しい曲を憶えるには、何度も練習しなくてはならないでしょう。ですから、新しい曲を練習もしないで、弾けるようになるということは、絶対音感を持った人でもなければ、無理です。 CY10のワンキー入力は、ノート情報をあらかじめ入れておいて、その情報を元にリアルタイム入力を行うことができます。つまり、どこを弾いても音程をはずすことなく弾けるという状況を作ることができるのです。
それでは、具体的な方法です。まず、ノート情報を入力するためにレコーディングをします。 STEPでもリアルでも好きな方法で入力しでください。このときの音長は適当でかまいません。終わったら「PLAY」の 「演奏設定」で「TRACING」をONにし、先ほどレコーディングしたトラックを「TR」に設定します。あとは、演奏か録音をはじめれば、自動的に「TR」に設定されたトラックはミュートされPCキーボードまたは、MIDIキーボードからの入力は、すべてそのトラックのノートが順番に割り当てられていきます。


★★★MIDIの基礎★★★

MIDIはデジタル楽器同士をつなぐためのインターフェイスでDIN5ピンのケーブルを使ってデータの送受信を行います。データは演奏に関するデジタルデータで、沢山の情報をたった一本のケーブルで送信できます。これもコンピュータのデジタル技術が実現したものと言っていいでしょう。その結果、音源だけの機器、キーボードだけの機器、シーケンサーだけの機器といった、単にそれだけ買ってきたのでは何もできないような機器も市販されています。(最近はオールインワンという色々な機能を一体化したものが多くなりました。)

MIDIで送れる情報は、「鍵盤のドのキーをどれくらいの強さで押した」、「鍵盤のドのキーを離した」と言った演奏情報から音色のセット、さらには機器固有の音色データやセッテイング情報までやりとりすることができるように工夫されています。

MIDIには、16のチャンネルがあり、それぞれ一音色づつ(1パートづつ)割り当てることができます。特にドラムスのパートでは音階に対して一音づつ割り振られ、一つのチャンネルでドラムス全体を受け持つと言う音源が一般的です。また、音色は途中で変更することもできます。

MIDI端子の接続
MIDIの端子は、MIDI-IN、MIDI-OUT、MIDI-THRUの3つがあり、それぞれ別々の役割りを持っています。MIDI-INはデータの受信用です。ここに入るデータにより機器が動作することになります。
MIDI-INに入ったデータは、そのままMIDI-THRUから出力されます。MIDI-THRUは、いくつもの音源をつないだりする時に必要になります。
MIDI-OUTはデータの出力用です。従って、INとIN、OUTとOUTというつなぎは有りません。必ずOUTからINにつなぎます。

MIDIデータ
MIDIデータは、最初の1バイトでステータス(命令、コマンドなど言い方は色々ありますが)とチャンネルが送信されます。上位の4ビットでステータス、下位の4ビットでチャンネルを表します。続く1バイトか2バイトがステータスに対応するデータとなり、ステータスによって何バイトかが決まります。


NOTE OFF
status second third
8nH kkH vvH
n = MIDI channel number : 0H - FH
kk = note number : 00H - 7FH
vv = velocity : 00H - 7FH

鍵盤が離されたという情報です。


NOTE ON/OFF
status second third
9nH kkH vvH
n = MIDI channel number : 0H - FH
kk = note number : 00H - 7FH
vv = velocity : 00H - 7FH
(vvが0ならOFF)

鍵盤が押されたという情報です。いっしょに鍵盤の押された強さのデータも送られます。(強弱はベロシティーといい、速さで感知します。)もし、ベロシティーが0だった場合はキー・オフ(鍵盤が離された)と同じことになります。キーボードの機能によって、べロシティー・データが一定の物もあります。また、音源によってベロシティーは音色にも変化をあたえます。例えば、ピアノの場合、弱く弾くと「ポーン」といった感じの弦をハンマーが叩くといった感じの音ですが、強く弾くと「ガーン」というような弦が振るえて歪んだ感じの音になります。このような効果をちゃんとシュミレーションする音源もあります。


POLYPHONIC KEY PRESSURE
status second third
AnH kkH vvH
n = MIDI channel number : 0H - FH
kk = note number : 00H - 7FH
vv = value : 00H - 7FH

使われるのを見たことがない。音程ごとにモジュレーションなどをかけます。


CONTROL CHANGE
status second third
BnH kkH vvH
n = MIDI channel number : 0H - FH
kk = control number : 00H - 7FH
vv = 各種コントロール値 : 00H - 7FH

コントール・チェンジはコントロール・ナンバーで更に細かくその変更機能の意味が変わります。


PROGRAM CHANGE
status second
CnH ppH
n = MIDI channel number : 0H - FH
pp = program number : 00H - 7FH

音色を変更します。


AFTER TO0UCH
status second
DnH vvH
n = MIDI channel number : 0H - FH
vv = value : 00H - 7FH

キーボードの鍵盤を押し、さらに押し込むことによって音色にモジュレーション(振るわせる)などの変化をあたえるための情報です。音色によって効き具合が違ってきますから効果がない音色もあります。(ピアノの音などでモジュレーションがかかってもおかしいでしょ。)


PITCH BENDER
status second third
EnH llH mmH
n = MIDI channel number : 0H - FH
ll,mm = value : 00H - 7FH

音程を変化させる情報です。ギターとかのチョーキングにあたります。


これらがMIDIの主なステータス(チャンネルメッセージ)です。このようにステータスは必ず80H(128)以上で、それに続くデータは7FH(127)以下になっています。このようにすることで、ランニング・ステータスが使えるようになります。ランニング・ステータスは、例えば

> 90H 40H 60H
> 90H 40H 0H

のようにキーボードを押して離したといった時、次のステータスを省略して、

> 90H 40H 60H
> 40H 0H

のようにできるというものです。つまりステータスが来るべきなのに、127以下だった場合は「前のステータスと同じだ」ということになり、これはそのデータだということになります。MIDIのボーレイトは31.25Kと高速ですが、さらにこのような工夫がされています。


システム・エクスクルーシブ

このほかにシステム・エクスクルーシブ(バルク・ダンプともいいます)というものがあります。これは各機器固有の設定情報や、音色データなど、なんでもありのデータを送る機能です。ステータスは

F0H
nnH nnH ・・・・
F7H
nn = data : 00H - 7FH

F0H の次は、メーカーのIDになっていて受信した機器が分からないデータは無視されるよになっています。


システム・メッセージ

他のシーケンサーと接続した時、必要になるのが演奏の同期です。いくら同じテンポでスタートしても機器によって微妙にテンポは違うものです。このテンポを同期させるためにタイミング・クロックというのを演奏情報といっしょに出すことができます。(4分音符中で24回出ます。)シーケンサーは自分自身のクロックで演奏するか、MIDIのタイミング・クロックで演奏するか、選択できるようになっています。
この時、自分自身のクロックで演奏する機器をマスター側、同期を他の機器にあわせている機器をスレーブ側と言います。また、スタート、ストップ、コンティニューも制御できます。これらをシステム・メッセージといいます。システム・エクスクルーシブも含まれます。

TIMING CLOCK F8H
START FAH
CONTINUE FBH
STOP FCH


シーケンサーのトラック

シーケンサーは、トラックにMIDI情報を記録することができます。トラックは多い方が編集などを行う時に便利です。1つのトラックでも16チャンネル分のパートを入れることができますが、普通は1トラックに1パートという使い方をします。これは後で編集しやすくなるためです。記録されるのはチャンネルメッセージとシステム・エクスクルーシブです。他のシステム・メッセージは記録されません。


★★★SC-8820★★★

SC-8820は、ローランドのGS、GMに対応したMIDI音源です。GM2にも対応しています。同時発音数64音、32パート、1608音色です。上位機種のSC-8850と比べれば、発音数は半分ですが、ほとんどのMIDIデータは、遜色なく再生できるでしょう。
背面は、USB、シリアル、MIDI OUT、MIDI IN、オーディオ出力、入力、ACアダプタ、パワーボタンが並んでいます。もちろんMIDI INにキーボードなどをつなげて演奏させることもできますが、やはり、コンピュータとつないで使う方が威力を発揮します。
私の場合、コンピュータが、最新のものではないので、シリアルでつなげることにします。
コンピュータから使えるように付属のシリアルドライバをSC-8820で使うようにセットしてインストールすると、 MIDI IN が2つ、MIDI OUT が3つできます。
MIDI IN は、SC-8820本体と音色や設定などをやりとりするときに使うものと、 SC-8820に付いているMIDI IN端子です。ここの入力をコンピュータに取り込むことができます。
MIDI OUT は、Roland Serial MIDI Out A、Roland Serial MIDI Out B、Roland Serial MIDI Out Cと SC-8820の音源部が2ポートとSC-8820に付いているMIDI OUT端子が使えます。
音色ですが、コーラス音がかなり強化されていて、男性コーラス、女性コーラス、いろいろな発音があり、歌詞を歌わせることまではできませんが、優秀なコーラス隊がいるように演奏させることができます。アレンジの仕方次第でリアルな感じになるでしょう。
音色についてのエフェクトなどもかなり強化されており、ものすごいの数パラメータがありますが、音色エディット用にソフトが付いており、これで編集してSMFにすることができます。
あまり、音色にコリ過ぎると、他の音源で再生するのが難しくなってしまう傾向にあるので、程々にしておいたほうがいいかもしれません。
キャピタル音は、全体に厚い音色になっているので、SC-55など用に作られたMIDIデータは、ゴージャスな感じになって再生されます。


★★★MIDIプログラム★★★

実際、外部音源を使ってみると、いくつか、今までと違った部分があるようです。
ここからは、想定の話なってしまいますが、ドライバのせいかもしれません。テストしてなんとなく、こうなんではないかといったところの話。ローランドのシリアルの場合です。
この外部音源のポートというのは、何回もオープン出来てしまえるようです。
midiOutOpen();
で、MMSYSERR_NOERRORを返して成功したことを知らせることになっていてるのですが、一回オープンしたポートも、またオープンできてしまいます。
別に認識はされていて、音も鳴るので特に問題はないようにも思えますが、他のアプリケーションからでも開けることになるので、エクスクルーシブがぶつかる時などに問題になるような気がします。
特にエクスクルーシブのアウトは、
midiOutLongMsg();
で送るのですが、他のホームページなどで調べたところ、すべてのエクスクルーシブを出力する前に処理が戻ってくるらしいのです。長いエクスクルーシブもあるわけですから、それは納得できます。
アプリケーションは、送信が完了したことを確認して次のメッセージを送るようにした方が安全です。メッセージがぶつかるとおかしな事になってしまします。一回おかしな事になると、Windowsをリセットしないと、その後、まともに送信できなくなってしまいます。
終わったかはコールバックでMM_MOM_DONEメッセージを見るか、MIDIHDRのdwFlagsを見ることで知る事が出来ます。
エクスクルーシブは間隔をおいて送信するようにMIDIデータが作られているので、このようなことは、あまり起こらないはずですが、沢山の情報がエクスクルーシブといっしょにあるフィードアウトするようなMIDIデータだと待たなくてはならない場合があるようです。
実際、APIやドライバが何をやっているかわからないですが、何回もオープンできると安定しないような気がします。

さて、CY10 V1.0では、MIDI OUTポートのMIDI_MAPPERを開いたあと、すべてのMIDI OUTポートを順番に開いていましたが、Roland Serial MIDI Out AをMIDI_MAPPERにすると、順番に開いく際、エラーを返さないので、もうひとつ同じポートを開いてしまします。このように2回同じポートを開くとエクスクルーシブのOUTが安定しないようです。
多分、ドライバの問題だと思うのですが。なので、CY10 V1.01からは、MIDI_MAPPERはひらかないようにしました。

V1.11からMIDI_MAPPERを優先するようにしました。いくつもポートを使う人は、そういないですし、音が鳴らないなどの問い合わせが多いため変更いたしました。
このとき、MCIコマンドでMIDI_MAPPERをチェックすることにしました。 MCIコマンドを使う場合は、その際、使うMIDファイル名を指定しなくてはなりません。そのため、サンプルとして同梱したMIDファイルを使いますから削除しないでください。


★★★ピッチ・ベンドを入れてみる★★★

CY10では、MIDIキーボードを使うことによって、ピッチベンドなどの情報も入力することができます。
MIDIキーボードに比べるとやりにくいのですが、MIDIキーボードをお持ちでない方でも画面上からリアルタイムにピッチベンドを入力することが出来るようになっています。
画面下方のキーボードのオクターブの数を1にセットし「MIDI OUT : 1」とか書いてあるところ、「TEMPO」の上。ここをクリックというかドラッグすると、ピッチ・ベンドが入れられます。ちょうど『 T 』 のあたりが中心で、左にいくとさがり、右はあがります。
画面右下

をクリックすると

こうなり、青の線の上をクリックというかドラッグというかするとピッチベンドが入ります。
左が下がり、右が上がります。マウスボタンを離すと中心に戻ります。
もう一度クリックすると

となり、コントロールチェンジを入れられます。
もう一度、

をクリックするとテンポに戻ります。

1 件のコメント:

ビジネスマナーの資料 さんのコメント...

とても魅力的な記事でした!!
また遊びに来ます!!
ありがとうございます。。