この連載ではノウハウ0の状態からMax9で制作に関するプログラムの自作を目指します!試行錯誤をしながら一緒に無限の可能性を探っていきましょう。※Max for Liveについてはこちらの過去記事をご覧ください。
こんにちは。タムラです。
引き続き私がAddictive Drumsをもっと愛せるように私専用M4Lデバイス(作業速度3倍)を作っていきたいと思います。
前回の記事でおおよそ方針が固まったのでもう少し詳細な作戦を練っていきたいと思います。
MIDIをいじるならMIDIエフェクトだろ!と決めつけて色々調べましたが、一旦どうにもならなそうでした。これは前記事にあるAIからのアンサーの2にあたります。
そもそも基本的にDAW内の信号は一方通行。遡って処理することは非常に難易度が高いらしい…
まぁそれができたら多分MIDIエフェクトのArpeggiatorもワンクリックで刺したトラックに即反映みたいなこともできるはずですもんね。
じゃあどうするかと言いますと『Transform』でございます。Live12からの機能です。※アップデート販売は直販のみとなりますのでご自身のAbletonアカウントぺージより是非。
そしてTransformとは?と言いますと

ここです。
ここを展開しますと…

『Max MIDI Transformation』の文字が。
元々ノートをひん曲げたり、上げたり、下げたり、伸ばしたり、直接MIDIを編集するエフェクトがプリセットされています。
ここでもM4Lデバイスを使用することができるので、今回の様な場合はここから作っていきます。
先のパッチを展開するとデフォルトこんな感じです。

live.miditool.inとlive.miditool.outが繋がってます。live.miditool.inのアウトレットからは辞書形式(?)で各情報が出力されるとのこと。
んー。なるほどわからん。
(一旦理解できないまま進みます。)
とりあえずいままでの方法のままでMIDIデータの数値をシンプルに取り出すことは難しいということ。そして直接MIDIデータをいじる分、ノートに紐づくプロパティが結構多いので、それらをまとめて扱える辞書形式でパッケージ化しているということですかね。多分そうだと思います。
私の環境での作業中に判明したTransform内のパッチについて、いくつか注意事項を備忘録として置いておきます。
1〜3については、live.miditool.inからlive.miditool.outまでは一瞬で信号を受け渡す必要があるようでして色々パッチングするとすぐタイムアウトされるので処理されません。色々実験してみましたがかなりシビアでした。
『Bangボタンが使えないならプログラムが走らないじゃないか!』
ご安心ください。live.miditool.inにはBangボタンを繋いでも構いません。(処理経路の外側ですので)
もっと言うとtransformボタンを押せばlive.miditool.inにbangを送られ処理が実行されますので、別途Bangボタンを用意しなくても大丈夫です。
4について、技術的にはTransformでも辞書内のノートがクリップの「新しい状態」になるので削除&再生成は可能です。ただし実用的にはおすすめしません。例えば今回の移動させるプログラムの場合、一度消して作り直してしまうと、事前に入力していたベロシティデータなども全て消えてしまいます。辞書形式でパッケージされたこれらのプロパティを一つずつ保持して再構築するのも現実的ではありません。『Transform』はあくまで既存のノートのプロパティ編集に使うのが無難ですね。
これが『Generate』だとまた具合が若干違うようですので、そのうち触ってみようと思います。
要するにこのTransformでできることは意外とシンプルなことに限られるようです。私がやりたいのはただのノートの移動ですので問題なさそうな気がしてます。
ピアノロール上のノートを編集する流れとしてはlive.miditool.inがLive上のノート情報を受け取り辞書化、live.miditool.outが辞書を読み取り反映といった流れのようです。なのでこの間に何かオプジェクトを挟み辞書内のノート番号だけ書き換えることができればワンクリックでノートの位置を変更できそうです。
おおっ!!活路が見えました。
次回はこれを元に実際に触ってノートを動かしてみようと思います!