検証T
・事の発端
旧Cakewalkにおいて、その作業は滞りなくスムースに進行した。それはまるで一切の存在者がただひとつの秩序に従って、いつ終わるのかも伺い知れずにただその営みを淡々と繰り返すかのように・・・。その永久機関的な愁いを帯びた安逸はSONARに移行したことによって破られた。日常の均衡を失った時、世界は無の不安に支配される他は無い。・・・・・??
私が事の異常を目の当たりにしたのは、動作試験のためにCalmatrixの送信ボタンを押した直後であった。いつものように何事も無いかのように、それはあたかも無意識に呼吸をしているかのような一連の動作のあと、その行為の当然の結果を確認するために、私は大きくデザインが変更されたSONARのトラック・ウィンドウに視線を向ける・・・。しかし・・・そこには存在してしかるべきものが・・・・無い!そう、無いのである!一体どうした事だ!・・・もう一度送信スイッチを押してみる。事態は変わらない。・・・もしかすればCalmatrixのヤツめ、新顔のSONARとのコンビネーションが悪く、CALをうまく渡せなかったにちがいない。ならばどこかに落ちているにちがいない・・・おもむろに私は机の下にもぐりこんでガサガサとやりはじめる。しかしCALはどこにも落ちている気配が無い。おかげさまで埃をかぶるというやっかいな状態を蒙ってしまった。まあ、それはいいとしても一体全体CALはどこに?
ノリすぎて無駄な文章を書き連ねるのもアレだが、早い話が突然の異常事態に直面して少々パニックに陥ってしまった状況を表現してみたかったのである。さて、その時のもようを参考に、いくつかの条件を設定ながら具体的にCALの動作を検証してみよう。そのために以下のようなノート・イベントを生成する(であろう)簡単なCALを用意した。ここではこれを”Test.CAL”とでも呼んでおこう。これは1小節の1拍目から4分音符で”C-D-E-F-G-A-H-C”の音階を入力・生成することを使命とするCALである。これはピアノロール・ウィンドウを使って検証することにしよう。プロジェクトのTIMEBASEはデフォルトの”960”である。なぜならSONARのCALは内部的に秘密裡の内にタイムベースを常に960Tickとして計算しているらしいという情報もあるからである。今は不要のトラブル要素は極力避けなければならない。なるべく信憑性の高い検証結果が望ましいからだ。この件に関する検証については別の機会に譲るのが得策である。
;Test.CAL
(do
( insert ( makeTime 1 1 1 ) 0 NOTE 48 55 960 )
( insert ( makeTime 1 2 1 ) 0 NOTE 50 55 960 )
( insert ( makeTime 1 3 1 ) 0 NOTE 52 55 960 )
( insert ( makeTime 1 4 1 ) 0 NOTE 53 55 960 )
( insert ( makeTime 2 1 1 ) 0 NOTE 55 55 960 )
( insert ( makeTime 2 2 1 ) 0 NOTE 57 55 960 )
( insert ( makeTime 2 3 1 ) 0 NOTE 59 55 960 )
( insert ( makeTime 2 4 1 ) 0 NOTE 60 55 960 )
)
そして、このCALが正常に動作すれば以下のように表示されるはずである。この入力結果の絵柄をあなたの脳裏にしっかりと焼き付けておいていただきたい。あなたに課せられた命題はただそれのみである。
a1
このTest.CALをまずはSONARの編集メニューから呼び出して、SONAR自身の上で実行してみる事にしよう。ターゲットはトラック1、もちろん、それは空のトラックである。実行結果は以下のとおり、何も”無い”。何度も繰り返してみてもそこには何も起こらない。
a2
試行錯誤の新しい段階はいつも偶然におとずれる・・・。私がそれに気付いたのは作りかけのプロジェクト・ファイルを編集している時であったと記憶している。すでに入力済みのトラックでノートイベント入力用のCALをなにげに実行してみたところ、以外にもそこにはノートイベントが”入力されていた”のであった。私はこの事を理解するのに0.78秒もかかってしまったが、私の行動はすでにCalmatrixを起動させる手順をとっていた・・・。それにしても私がCalmatrixの入力試験をする場合、必ず空のトラックに対してCALを送信していた。だからそれまで気がつかなかったのだ。ただ、旧Cakewalkのころも同様に行ってきたのだけれども、その時は空のトラックであっても難なく事を成ずることが出来たのだが・・・?。
ともあれ”空”ではなく、すでにMIDIイベントが入力されてある状態ならCALのinsert関数が動作するかも知れない。以下、その事を検証してみよう。
私はここでトラックの先頭にひとつだけ以下のようなノートイベントを入力してみた。これを”ダミーノート”と呼ぼう。
a3
ここでもう一度先述のTest.CALを実行してみよう。その結果は?・・・なんと、CALの記述どおりに入力されているではないか!。これは一体どういうことなのであろうか?
a4
しかし、つかの間の驚異はすでに雲散霧消した。冷静沈着かつ大胆、暑がり・寒がり、おまけに空腹の状態であった私は、たった今、自分自身が目の当たりにした現象を別の条件のもとで検証してみようと思い立っていた。(ちなみにこの思考の切り替えに要した時間は0.92秒であった。前回の記録を更新するには至らなかった。・・・惜)
私は次に、トラックの先頭にあったダミーノートを一拍(960)ずつ後方へずらしていきながらTest.CALを実行してみる事にした。結果は以下のb1〜b9のようになった。
b1 先頭の音が入力されていない。
b2 ダミーノートを3拍目に移動。変わらず。
b3 4拍目に移動。2つの音が入力不能。
b4 2小節1拍に移動。変わらず。
b5 2小節2拍目に移動。3つの音が入力不能。
b6 2小節23拍目に移動。変わらず。
b7 2小節4拍目に移動。4つの音が入力不能。
b8 3小節1拍目に移動。変わらず。
b9 ちなみに4小節1拍目に移動みた。全ての音が入力不能。
どうやらダミーノートの入力位置によってノートイベントは影響を受けるようである。続いて、今度は複数のダミーノートが入力されている場合はどうであろうか?1小節単位でそれぞれの小節の先頭に置いてみた。
c1 全て入力されている。
c2 4つの音が入力不能。
c3 全て入力不能。
c4 全て入力不能。
こちらもb1〜b9と同様の結果である。次に、ダミーノートの音価を大きくとってみた。今までの4倍である(3840Tick)。
d1 全て入力されている。
d2 2つの音が入力不能。
d3 4つの音が入力不能。
この条件においてもノートイベントは影響を受けている。そして以上の結果に共通しているのは、すでにあるダミーノートの入力位置よりも”前方”に位置するノートイベントにおかしな挙動が見られるということである。
ここまでの実験結果から鑑みるに、SONARのCALのinsert関数は”空”のトラックにはノートイベントを入力する事は出来ないが、ある条件のもとにおいては”動作し得る”ということが結果として見出された。しかしながら、それはかなり限定的であり、かつ不安定・不完全である。今、この時点では注釈を加える事は差し控えたいが、いずれにしても”正常”な動作であるとはいえない。
以上、ここまでの経過をもって今回のCALの動作に関する検証の第1回目として結びたい。引き続き次回も動作条件を変えながら実験・検証してみたい。
2003.10.2
CALってなんだかニャぁ〜〜