【2015-02-11 otoasobi vol.2 8x8seqで工夫した点】
Max/mspで任意の矩形波形を作ろうとしたきっかけは、PureData,python,Unityで矩形を生成するのにノコギリ波形から生成するコードを教えてもらったところからだと思う。で、
任意の矩形を作る方法を考えたところこのようなパッチになった。
【Maxには2種類の処理間隔があります】
Maxでは昔ながらのMIDIレベルの処理と mspから導入されたSignalレベルの処理のおおきく2つの処理間隔があって、名前に「~」がついている場合は、だいたいサンプルレベルで演算が走るようになっている。(軽い演算は大丈夫一部例外あるけど)
MIDIレベルのはがんばってもsignal化するのに20msecくらい時間がかかる。(内部的にはもっと小さいかもだけとrampとか何かしら補間処理がかかる) 人間がインターフェースを指で操作するレベルなら誤差範囲なのだが、 サンプルレベルで操作可能なLFOやポルタメントなどの場合、間隔が短ければ影響が大きくでてしまう。
【Overdriveをオン】
OptionのOverdriveをチェックすると、描画の反応が悪くなる代わりに負荷の高い音声処理でも音の処理落ちが減る感じ。外すとMIDIの処理が重いとがたがたになる感じ。(気合が入っているかどうかのチェックの様子)
【IO Signal Vector】
IO VectorやSignal Vectorを調整すれば、反応速度をとるか、安定性をとるかのトレードオフが可能。楽器として扱うなら速度優先(ただし高負荷だと音切れする可能性が高くなる)
今回はシーケンサーなので、そこまで切り詰めた設定よりかは安定を選んで弄らないことにした。
【ほぼシグナル処理】
MIDIインターフェースからの入力、スライダーはMIDI間隔ですが、 シーケンサー部分だけ取り出すとシグナル処理だけでパッチングされています。 テーブルはbuffer~にためて、signalアクセス可能な領域に変換して取り出しています。 multisliderからpeek~でbuffer~にセットindex~でbufferを読みつついろいろ処理。
8トラック8ステップのシグナルを生成する音源モジュールになっています。 BPMも周波数に変換して指定なので、大きなBPMを入れてもシステムとして目立つ処理のガタツキは起きないようになっています。
【限界に挑戦? シーケンサーか音源かの区別が曖昧】
シグナル処理を早くする(=高いピッチにする)場合は、アップサンプリングなどをしないとシグナルレベルでの限界がきます・・・どこまで上げたいかによってどこまで精度が欲しいかに変わってくる感じ。
BPMに「99999」とか入れてみて遊んでみたり。
バックでビートを鳴らしていたのがgroove~オブジェクトなので、これはシグナル処理でも重いので多分悲鳴を上げている(意図しない動作になる)はず・・・ 矩形処理はもはやパルスしか発生していない様子。それも超高周波。
処理落ちはしていないけど最終出力レートとして端折られるような音 という形になっているはず。
将来もっと高いサンプリングレートやマシンパワーがあればまた違った音が聞こえるかもしれない。











