不完全かつ融通の効かない方法ですが。将来的にもっと理想的な編集方法を作れたら良いなと思います。
(2021年4月23日)
■先に欠点を明記しておく
この記事で紹介する方法は実用性が低いです。
この編集方法は
「トラックに存在する全てのノート」に対して問答無用で実行されてしまいます。
「ミュートされているMIDIノート」が消滅します。
せめて「選択イベント」に対してだけ実行できればよかったのにね、と思います。
■MIDIモディファイアーを使う
MIDIインサートではない方の、トラック機能の方の「MIDIモディファイアー」ですので、インストゥルメントトラックでも使えます。
--------------------
MIDIモディファイアーの「ランダム」の「長さ」を変更します。
MIDIトラックに対し、MIDIモディファイアーを設定した状態で「MIDI」編集メニューの「MIDI モディファイアーをフリーズ」を実行します。この命令はUndoできます。
このコマンドはプロジェクトウィンドウ(メイン画面)から行います。キーエディタ内(ピアノロール編集画面)からは実行できません。(コマンド名がグレーアウトし、選択できません。)
元の状態。
適用後の状態。ランダムに伸びています。
ランダム化はかなり完全なアルゴリズムです。Undoをしてもう一度やってみれば、異なるランダム結果になっていることを確認できます。
「MIDI モディファイアーをフリーズ」すると、モディファイアー内の数値はリセットされます。これはUndoで元の数値に戻ります。
・短さのランダマイズ
やり方は同じです。「min」を定義します。
伸びるものと、縮むものがランダムになります。
数値を適切にしていくことで、望ましいランダマイズまで追い込みましょう。
上の画像では結果を明確に見せるために誇張した結果にしています。
Undoを繰り返して、楽曲に合ったランダム結果を得ましょう。
なお、当たり前のことですが、これはMIDI PPQに対して実行される命令です。
ピアノの鍵盤から指が離れる時間差は実時間です。テンポを変えれば当然ミスマッチが生じます。
・後処理。ノート重複の解消
伸ばしによってノート重複が起きるので「オーバーラップを解消(モノ)」を実行します。(「モノ」は同じ音程の重なりを解消します。「ポリ」は別の音程との重なりも解消します。一般的に必要になるのは「モノ」の方です。)
■ランダマイズとヒューマナイズの決定的な違い
MIDIノート終わり(ゲートタイム)のランダマイズが必要になる状況とは、演奏ニュアンスの表現(ヒューマナイズ)のためです。
単にバラつかせるのは「ランダム」です。ベタ打ちを回避するためだけなら「ランダム」は劇的な効果があります。ためしにベタのバッキングを書いてモディファイアーの各種設定でランダマイズをしてみれば「雑な曲ならこれで良いんじゃね?」という状態まで一気に持っていけるのは事実です。
が、「ヒューマナイズ」となると全く異なる編集が必要となります。
ゆったりしたムードの演奏と、ラフな演奏とで、ピアノの鍵盤から指を離す速度は異なります。また、1曲通して同じニュアンスだけで行く曲とは限りません。
そういう状況に対応できるマクロとして「MIDIゲートタイムをランダマイズ」、厳密に言えば「ヒューマナイズ」を実装しやすいものが求められます。
せめてMIDIモディファイアーのフリーズを「選択しているノートにのみ適用する」というコマンドがあればなーと思うわけです。
もっとも、そういう一発機能が無いからこそ丁寧なデータを作れることにアドバンテージがある、とも言えるのですが。
■ノートのアタマのランダマイズの説明は割愛
基本のキなので割愛。
ネット検索でいくらでも出てきますし、拙著でも解説しています。
eki-docomokirai.hatenablog.com
アタマのランダマイズはかなり音楽的に処理できるのですが、ノートの終わりの長さを適切に処理する方法については未だに模索が続いています。
たとえば上の本の制作で協力していただいた相葉誠氏も、
などなど、実に様々な模索しているのですが、真に実用的なレベルにはまだまだ遠く、「ノート末尾のランダマイズ」という課題は実に良い暇つぶしネタだなーと思うわけです。実用性が無いからと言って価値がないわけではなく、ロジカル・マクロを熟知していく上ではこういう試行錯誤や瞬発力は欠かせません。製作中に一発編集が必要になった際にその場でマクロを自作して一気に打開するケースも稀に良くありますし。
こういうクソゲー攻略談議に参加してみたい人がいたらいつでもお声がけをお待ちしています。