2018年12月18日

シーケンサーに「アルペジエーターのアドレス読み出し機能」を実装する

テルミンのシーケンサーに「アルペジエーターのアドレス読み出し機能」を追加して、フレーズに合わせた分散和音を展開することを思い付いた。 

64ステップから128ステップのアドレス記録バンクを使えば、かなり自由度の高い伴奏機能を実現できるはずだ。

WS001492.JPG

まず組み込んでみたのは、シーケンサーからピッチを読出す代わりにアルペジエーターのアドレスに対応する整数を呼び出す機能で、これは複雑にパターン化された伴奏を効率よく構成するために採り得る有効な手段の可能性がある。

48373324_2172993349397778_8871095838529552384_n.jpg

ひとまず、コンパイルだけは通せた。 mode3の”0番地”が浮いてしまうことを避けるために、”@”を残して条件分岐の段階で”0番地”のアサインを排除している。

48424804_2172993502731096_3359744970524196864_n.jpg

データの扱いは、単純に mode3 = inputString[n]; とはならず、アルペジオのパターン選択込みで制御を行うために、inputString[n]に対応させた条件分岐を設定することになる。 実際にはASCIIコードでアドレスナンバーを充てているが、アドレスをフルに活用するには予め32×3パターンの仕込みが必要だ。

48414674_2172993839397729_4110494580871266304_n.jpg

ピッチに無音階でマニュアル設定を行う仕様のメモリーCHはエンコーダーで設定した非整数からピッチデータを読み取る仕様だが、これを実際に使いこなせるかは微妙なところで、今回は現実的に使いこなせそうな設定として、16×3パターンを選択している。 

逆にフレーズの選択肢を増やすためには、アルペジエーターの昇降パターンを固定する方法が考えられる。 アルペジオのピッチにゆらぎを与えたい場合は、ピッチをマニュアルで設定するという選択もアリだろう。 

一方、運用面から考えた場合、アルペジオが主体のこのモードではシーケンスがスタートするタイミングが判り難い。 スタート前のカウントダウン表示を行う等の対策が必要になるかもしれない。

48382381_2172994106064369_4231971262617878528_n.jpg

で、実際に楽器を動かしてみたところ、一回目の試験は失敗に終わった。

原因はアルペジエーターを駆動するトリガーの不具合が想定されるが、複合的にトリガーを掛けるために準備したオブジェクトを設置する階層に問題がありそうだ。

この機会に、シーケンサー/アルペジエーターの構造をおさらいをすると、システムの駆動には一定のインターバルで処理を実行する metro という関数を使い、データアレイに格納されたASCIIコードを読みだすステップの進行を管理している。

現状では、シーケンサとアルペジエーターのオブジェクトを分離しているが、失敗に対する解決策としてアルペジエーターのオブジェクトを「アルペジエーターの設定をシーケンス制御するオブジェクト」に内包する方法が考えられる。 

ただし、その場合は専用のトリガージェネレーターを追加しなければならないが、実現にはMCUの処理能力の限界が問題になってくる。

WS001493.JPG

その後、処理の実行されるステップを中心にトリガー機構の配置を再考した結果、シーケンサーの内部にアルペジエーターを内包する形にプログラムを変更している。

今回は、既に実装しているアルペジエーターとは別に、シーケンスモード選択時(mode2 == 8)のアドレス#1(mode5 == 1)にアルペジエーターの機能(制限付き)を組み込んだ。 arp2で、Arpeggiatorの再生モードを設定している。 実験では適当なシーケンスパターンを設定したために明確なアルペジエーターの切り替え動作の確認には至らなかったが、ひとまずアルペジエーターをシーケンス上に走らせることが可能な状態には到達できた。 

実際に楽器を運用してみると、想像していた以上に複雑な分散和音の構成を展開出来ることが判明したが、その複雑さ故に事前の仕込みが大変なことになりそうだ。 アルペジエーターのフレーズの吟味は当然として、シーケンス・パターンの展開がアレンジの鍵になるだろう。

一連の動作を正確に検証するために、新たなシーケンスファイルを書き込んで3回目の試験を行ったところ、面妖な反応が出たためにコーディングをやり直すことになった。

結果として、今回行った階層化によってトリガークロックの扱いを失敗していることが判明したが、とりあえずパターンを羅列しているだけのシーケンスファイルにも改装が必要と感じた。  

発想を転換して行った4回めの実験では、トリガー機構に条件分岐を絡めて並列化を行うことで、正常タイミングでトリガーをコントロールすることに成功した。 ただし、今度はクリックノイズが発生する音声面のバグが出現してしいる。

実験を行う経過においてパラメーターの不備など新たな問題が表面化してきたが、正攻法で詰めればなんとかなりそうな感触がある。 完成まであとひと踏ん張りといったところだろうか。
posted by Yasuski at 03:40| LaVoixski