2016年03月21日

BassSequencer



Kyma7では、ステップシーケンサーの仕様が以前と激変しているので、使用には発想の転換が必要だ。 当然ながら、作り置いたTimelineのPresetをそのままで使うことは出来ない。

例えば、Sequencerオブジェクト単体では、レガートを演奏した直後に短いパッセージを挿入する(−・・のような)フレーズを構成することが難しくなった。 これを実現するためには、短いパッセージを再生するために別ユニットを用意して、音源を直接ドライヴする必要がある。

幸いなことに、このパッセージ発生ユニットは以前から3連符を再生するために用意していたので、対応するSTEPにおいて「再生スピード倍率=2」に調整して、パッセージの再生を行うことが出来る。

Kyma7では以前のようにDurationの調整によって、連続するKeyDown信号をスキップすることが出来なくなった。レガートを表現するためには、後続するKeyDownのSTEPをオフに設定しつつ、Velocityを最大値に設定しなければならない。

今回の改装では、BassSequencerの操作を簡略化するために、VeocityとDutyCyclesに同一のValueを設定することにした。 以下が1STEP分の記述。

{((( !v01 * ((!tempoFlashR nextRandom abs gt: 0.2 ) * !RandBass)) vmax: 0) * !RandBass) + (!V01 * (1 - !RandBass))}

STEPのビートに合わせてイベント発生の確率を操作することで、より手弾きに近い表現が得られるように調整を行い、フレーズ毎のオン・オフの選択を自動化して、ランダムにフレーズを紡げるように工夫している。 



posted by Yasuski at 14:15| Symbolic Sound Kyma

2016年03月18日

AnalogSequencerの仕様変更について

以前、KymaXでマトモに動いていたAnalogSequencerの挙動がkYMA7では怪しくなっていて、

http://www.mbiraski.com/audio/testSeqOnKyma7.aif
http://www.mbiraski.com/audio/testSeqOnKymaX.aif

本来はレガートでつないでいた部分のSTEP毎にクリックが発生(上段の波形)している。

WS000575c.JPG

Forumで質問を投げたところ、SSCからこのような回答があった。 

One recent change in the StepSequencer is the addition of the KeyDowns parameter field. What you have as KeyVelocities should probably be moved into the KeyDowns field.
Another change is that the StepSequencer no longer voice-steals on each step (allowing for an event to "ring" or decay over the several steps if there is no new KeyDown on that step). One way to emulate the old behavior in the new version would be to set the Polyphony of the StepSequencer to 1 (rather than 2), setting the KeyDowns field to 1, and using the old method of using the KeyVelocities for switching stages on or off. That would be closer to the old behavior.

結局のところは「仕様変更」ということで、KeyDownの信号をコントロールするには記述するデータをArray化しなければならない。 これを行わずに従来のやり方を踏襲した場合は、Step毎に必ずクリックが入る。 

このクリックを無くすには、ドライヴする音源のエンベロープをコントロールするオブジェクトのゲートを !KeyVelocity * (1- !KeyDown) asLogicValue で操作する一方、AnalogSequencer の DutyCycle の値は "1”で統一、エンヴェロープに送るトリガーの頭を KeyDown フィールドに Array を組んで設定する。

音量のオンオフはVelocityフィールドで行う。 

例えば、4stepで ― x・ のようなフレーズを表現する場合には、KeyDown フィールドにトリガーがオンになるタイミングとして 1001 と記述しつつ、Velocityフィールドには、出音のタイミングを設定する 1101 と記述する。

Gate入力に記述した !KeyVelocity * (1- !KeyDown) asLogicValue  は、!KeyDownのタイミングによって、リセットを掛けている。

http://www.mbiraski.com/audio/simulateTheOldStyleAnalogSeq.aif
http://www.mbiraski.com/audio/analogSequencer.mov
posted by Yasuski at 11:26| Symbolic Sound Kyma

2016年03月12日

StepSequencerの挙動について

今週はKymaの StepSequencer (AnalogSequencer)というオブジェクトをいじっているのだが、どうも Kyma7 ではコレの仕様変更が行われたらしく、どうやってもマトモにレガートを演奏することができない。 

レガートの設定は、DutyCycles というパラメータを介して行うのだが、この値を 1.0 にすると次のステップで送られてくる Gate 信号を無視して、音符をつなぐことが出来るはずだ。

例えば、{1 0.9 0.5 0.5} と4ステップの設定を行った場合、−・・というリズムが出力される。 0.5 の部分の刻み方で、音符の長さを表現するのだが、これが何故か ・・・・ といった出力になってしまうのだ。

最初はサンプルファイルの再生が期待通りに動かず、トリッキーな方法で対策を行っていた。 が、さすがにコレは怪しいと感じてオリジナルの回路の動作を検討したら、昔動いていた筈の回路がおかしなことになっていた。 

その後、いろいとろ試してみてはいるのだが結果を出すことは叶わず、Kurt に問い合わせを投げることにした。 

返答は時差があるので速くても今晩遅くになりそうだ。
posted by Yasuski at 15:04| Symbolic Sound Kyma

2016年03月07日

AnalogSequencerのReTrigger設定について

AnalogSequencerを用いて、

analogSeq.jpg

オシレーターなどの音源をコントロールする場合、DutyCycleをステップ毎に設定して、−・・−・ といったようなレガートを含むフレーズを刻むことができる。 音源側のGate入力には、トリガー信号として !KeyDown を記述する。 次のStepとレガートしたい時はDutyCycleを最長の 1.0 に設定すれば、Step毎のタイミングで入力されるトリガー信号は無視される。 

一方、リズム音源などのサンプルファイルの再生にAnalogSequencerを使用する場合には別の考え方が必要で、特にインターフェイスをオン/オフのスイッチに簡略化した場合に問題が生じることがある。 

ParameterFieldの水色の部分は、RealTimeControl=!HotParameterを扱える。AnalogSequencerの特定のパラメーターにはステップ数分の設定を書き込むことが出来るが、全ステップに同一の値をアサインする場合は、数値を1つ記述するだけで良い。 また、計算や動的制御が必要な場合は、例示した画像のように式を{}(Curly Braces)で囲んで記述する。 

WS000568c.JPG

AnalogSequencerはステップごとにGate信号を吐いていて、これをキャンセルするには先の例で示したように、DutyCycleを最長に設定すればよい。 ただ、リズム音源など音源数が多くなるオブジェクトを製作する場合、DutyCycleを個々の音源に設定するのが面倒で、インターフェイスをステップ数分のスイッチで済ませてしまう場合がある。 この場合のAnalogSequencer側のDutyCycleの設定は 1.0 未満の固定値となる。

つまり、サンプル再生オブジェクト側では、Step毎にAnalogSequencerから発せられるKeyDownの信号を常に受信することになるのだが、特にリズムを細かく設定した場合、隣接するサンプル再生音が途切れる現象が発生してしまう。

これを回避する方法はサンプル再生オブジェクトのGate入力にVelocity信号をアサインすればよいのだが、連続するステップを入力した場合にVelocityでは再トリガーが掛からず、レガート状態となってしまう。

この問題を解決するためには、Velocity信号にKeyDown信号を反転したものをANDすれば正常なトリガー信号を生成することが出来る。この場合、KeyDown信号のDutyCycleは 0.01 と最短に近い値に設定すればよい。

Screen Shot 2016-03-07 at 9.21.03 AM.png
posted by Yasuski at 10:29| Symbolic Sound Kyma