YTPMV音声概論 第一講:MIDI
こちらの記事はYTPMVアドベントカレンダー2025に参加してます!
§0 はじめに
今後続きが出た時のためにナンバリングしておきます.あとこういう文体の奴書いてみたかった.MIDIとは今から40年前から存在する規格で,音MADやYTPMVを作成するときにも私たちはこれを用いています.MIDIには音の高さ,長さ,強さ,使用する楽器やパンやピッチベンドなどのデータを含み,音源さえあれば誰でも再生することができ,なおかつ波形を収めた音声データと違いデータ量が少ないといった理由で普及していきました.さらにDAWやVSTなどの普及でさまざまな打ち込み方も生まれてきました.私たちはそんなMIDIのデータの中の音の高さ,長さを主に活用して音MADやYTPMVを作成していますが,利用しきれていないデータもあります.それらを活用できるように,ただやり方を知るのではなく,どうやって動くかの知識を身につけてほかのものにも活用できるようにする,というのが本記事の目的です.
§1 MIDI
1-1 MIDI
MIDI (Musical Instrument Digital Interface) とは,電子楽器やコンピュータ間で演奏情報をやり取りするために策定された規格です.MIDIの実体は音そのものではなく,イベント(命令)の時系列データです. WAVやMP3などのオーディオファイルが空気の振動(波形)を記録しているのに対し,MIDIファイルは演奏の操作手順(譜面情報)を記録しています.
DAW上ではピアノロールとして可視化されることが多いですが,内部的には以下のようなデジタル信号が逐次的に一個ずつ処理されています.
ノートメッセージ (Note Message)
Note On / Off: 鍵盤を押した離した,というスイッチ情報.
Note Number: ドレミを0〜127の整数で管理するID(中央のドは60).
Velocity: 鍵盤を叩く強さ(0〜127).音量や音色の変化に使用される.
コントロールチェンジ (CC / Control Change)
演奏中のパラメータ変化を制御する信号.ビブラート(CC#1 Modulation)や音量(CC#7 Volume)など,断続的な数値変化を送信する.
ピッチベンド (Pitch Bend)
音程を滑らかに変化させるための専用信号.通常のCC(7bit = 128段階)とは異なり,より滑らかな変化を表現するために14bit(16,384段階)の高い分解能を持つ特殊なデータ構造となっている.
YTPMVにおいて,私たちはこれらの情報のうちノートメッセージ(音程とタイミング)のみを抽出し,スクリプト等でアイテム配置に利用することや,サンプラーで鳴らすことが大半です.しかし,ピッチベンドやベロシティといった表現に関わる制御データや特殊な打ち込み方法を活用しきれていないのが現状です.ここからはそれらについて詳しく述べたあと,どう扱うべきかを述べていきたいと思います.
1-2 ピッチベンド
ピッチベンドとは,音程をより微細に制御するための14bitの数値データです. Note Numberが半音単位の離散的な値であるのに対し,ピッチベンドは発音中のノートに対して,滑らかな音程変化を与えることができます.ピッチベンドは0を中心に-8192~8191で動かすことができます.しかし,何ピッチ分をベンド幅とするかは自由に決められます.つまり分解能が14bitの数値で,幅は自由に指定することができるということです.
1-3 ベロシティ
ベロシティとは,ノートの発音ごとの強さを決定する7bitの数値データです. 0〜127の範囲で指定可能です.
1-4 その他打ち込み方法
レガート
レガート(音と音を滑らかに繋ぐ奏法)を表現するために,MIDIデータ上では「前のノートが終わる直前に,次のノートが開始する」という形で記述されることがあります.これをノートオーバーラップと呼びます. これは和音とは異なり,単音の旋律において滑らかさを演出するための技法です.
トラッカー由来の特殊表現
Tracker(OpenMPT等)やゲームデータから変換されたMIDIを使用することがありますがこれらのデータでは,ピッチベンドを使わずにポルタメント(音程移動)を表現するために,意図的にノートを重ねたりするという特殊な打ち込みが行われている場合があります.
§2 実際の活用法
2-1 ピッチベンド幅をあわせる
先ほど述べたようにピッチベンドの分解能の数値は一定で,幅(ベンド幅)を自由に決められます.ということは使うMIDIデータによってはベンド幅が変わり,ピッチベンドで高さを変えたときに正しく変化できないということが生じます.ベンド幅はサンプラー側で設定できます.
ベンド幅はMIDIのイベントで定義されているので,そこの値を使うのが確実です.ReaperのMIDIエディタのイベントリスト表示で最初の方を見てみると以下のように記述されています.
CC名 | Value
CC 101 (RPN MSB): 0
CC 100 (RPN LSB): 0
CC 6 (Data Entry MSB): Xこの順番で記述されているデータのCC 6のValueがベンド幅です.ここの値を上記の箇所にかきこみます.こうすることで元のmidiデータのピッチベンドを正しく活用できます.
2-1 ベロシティを適用させる
ベロシティも設定をしないとデフォルトでは変わってくれないのでちゃんと設定できるようにしましょう.
これらの設定は初期プリセットにしておくと便利です.
補足1
Vitalはサンプラーの機能もありますが,正確にはウェイブテーブルサンプラーです.私たちがサンプラーのように扱って使用する際は,元の波形をそのままある部分だけを抜き取りそこを一周期とした波形で音を鳴らす,といった手法で音を鳴らしています.しかしシンセ化した音声をそのまま使おうとすると,以下の画像のように元の音の周期の何倍もの範囲を一周期としてあつかっていることが多いです.なので一周期の長さを正しく打ち直す必要があります.この作業をするだけで素材の味の無さを大幅に軽減できると思います.
画像のように鉛筆マークがあるのでそれを押すと以下のような画面になります.
画像の赤枠で囲われたところが一周期を取る範囲を表しています.
まずは波形を見て何個同じ形が繰り返されているかを数えます.画像の例では4つです.そしてこの数で赤枠の値を割って赤枠の部分に書き換えます.これで正しく範囲を設定できます.
さらに波形を取る位置を時間で動かしてあげることで,より音を並べたときと同じようにすることができます.
基本的にシンセには,時間やmidiのデータでいろいろな値を動かすことができる機能(モジュレーション)が備わっていてVitalにも豊富に種類があります.中でもエンベロープという,Attack,Decay,Sustain,Release(ADSR)を指定して時間が進むごとの値の変化を決めることができるものはよく用いられています.
モジュレーションは以下のような数式でも考えることができます.
Vitalではカーソルを合わせると以下のようなマークが出てくるものがモジュレーションです.ここをドラッグアンドドロップして動かしたい値にもっていくとモジュレーションを適用することができます.
いま動かしたいのは,波形の再生位置なので画像の赤枠の部分にドラッグアンドドロップします.
この時に出てくる円は,エンベロープの値をどれくらい,どの方向にかけるかを指定できる適応量で,右が正,左が負です.これで再生位置を子音から始まるように変更したらかなり元の味が残りやすくなります.
エンベロープにはさまざまな種類があり,LFO(低周波振動器)やMIDIのイベントなどを読み込んでシンセの音を変えたりできます.
補足2
ReaSamplOmatic5000に音を取りこんだ際に手動で音の高さを合わせないといけないですが,以下の方法で簡単に自動で合わせてくれます.
ModeをNoteにして,Detect Pitchを押すだけでできます.
2-3 レガートを使う
ここからはVital限定です.動かすパラメータについて説明します.
VOICES
同時に鳴らす音の数を指定します.レガートを使用する際は基本的に単音(モノ)前提なのでここを1にします.
GRIDE
現在のノートから重なっているノートまでどのくらい長さをかけて音の高さを変えていくかを決めます.ここが小さいと鋭い音の変化になり,大きいとへにょんへひょんになります.後述のOCTAVE SCALEによって絶対的な指定か相対的な指定か変化します.
SLOPE
音の変化をどのように行うかを決めます.いわゆるイージングみたいなものだと思ってください.触りながら変えていくのがいいですが基本的にはそのまま線形のままでいいと思います.
モード選択(ALWAYS GLIDE,OCTAVE SCALE,LEGATO)
ALWAYS GLIDEは名前の通りに,ノートオーバーラッピングが起こっていなくてもグライドをするようになります.レガートしてほしくないところでも起きてしまうのでオフにしておきましょう.
OCTAVE SCALEはオンにすると,先程GLIDEで設定した値を1オクターブ変化時の基準として相対的にGLIDEの値を指定できます.簡単に言うと,短い音程差のときは短く,長い音程差のときは長く変化します.これは好みです.好きな方を使いましょう.
LEGATOはオンにしないとレガート出来ないのでオンにしましょう.
§3 まとめ
いかがでしたか.ここで紹介した方法を用いてMIDIデータを正しく活用できるようになったら幸いです.


コメント