検証U
・Calmatrix登場・・・
さて今回は、いよいよ私のCalmatrixを持ち出しての動作検証となる。このCalmatrixは実際にCakewalkあるいはSONARにデータを渡す場合、2つの機能を持たせてある。まずひとつ目はユーザーが入力した数値を内部でCALに変換し、WindowsのDDE機能を利用してCakewalk/SONARに渡し、任意のトラックにノートイベントを生成させるというものであり、これはCalmatrixの標準機能となっている。
次にふたつ目の機能として、すでに作成・保存されたCALを一覧表示し、そこから選択されたCALを実行するというものが実装されている。この2つの機能は性格を異にするが、しかし双方とも共通してDDEを用いてCALをCakewalk/SONARに渡すものであり、今回の動作検証の性格からいってどちらの機能を用いようとも同等であると思われる。よって今回は、前回の検証で用いたCALをそのまま使いまわして検証条件に差が生じないようにすべく、Calmatrixの第2の機能(私はこれを”CAL・定量編集”と呼んでいるが)を用いてSONARの動作を観察してみようと思う。つまり、同一のCALをSONARの外部から実行してみてその動作を検証してみるということである。
そしてあらかじめお断りしておきたいのであるが、今回の動作検証は前回と全く同様の条件で行うのであり、その検証結果については前回のような画像を用いての表示は差し控えさせていただきたい。なるべくなら労力は節約したいものである・・・よって今回は、”一覧表”と”言葉”によって検証結果を報告したいと思う。(前回は実に大変な思いをしてしまったのだ・・・)
以下のウィンドウが今回の動作検証に用いるCalmatrixの”CAL・定量編集”ウィンドウである。(CALが少々隠れてしまっているのはご愛嬌・・・である)
そして、検証に用いるCALは前回と同じものである。さて今回はどのような検証結果が得られるであろうか・・・・
;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 )
)
・外部からの検証
まず始めに何も入力されていない空のトラックにCalmatrixからCALを渡してみよう。さてその結果は?・・・
>予想どおり何の変化もみられない。これは私が通常行ってきた動作テストの条件であり、そこから導き出される唯一の結果である。これは前回の検証におけるa2に対応する。(しかしながら、当然の結果がまさしく当然の結果として確認した事に、ある種の安堵感のようなものを感じてしまうのは何故なのだろうか?・・・)
さて、ここからが本番である。前回に引き続き音価=960Tickのダミーノートをトラックの先頭にあらかじめ入力してからCALを実行してみよう。まずは前回のb1〜b9と同じ条件である。
・ ・ ・ ・ すでに私のCalmatrixは起動している。再びCAL・定量編集ウィンドウを呼び出す。 ・ ・ ・ ・ 私は呼吸をするかのごとく自然に、ごく当たり前の日常的所作として”Test.CAL”を選択する。 ・ ・ ・ ・ 続いてSONARのピアノロール・ウィンドウの所定の位置に照準を合わせ、ダミーノートを入力する。 ・ ・ ・ ・ 送信準備はいいか?ターゲットはトラック1だ!それはすでに捕捉されているのだ! ・ ・ ・ ・ 事態は緊迫の度合いを増している。全てを決するのは・・・・私の判断!・・・・ ・ ・ ・ ・ 失敗は許されない。ただ1度限りのチャンスである。私は自問自答する・・・・しばしの沈黙・・・・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ (すごく緊張してしまったので一服・・・) ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・・・・どれほどの時が流れたのであろう・・・・一瞬か?それとも永遠か・・・・ ・ ・ ・ ・ 私は我に帰り送信ボタンに触れる。次の一瞬、私は無慈悲な微笑とともに指先に力を入れた・・・・ ・ ・ ・ ・ |
>結果は前回と同じく全てのノートイベントがとどこおりなく入力された。そう、何事もなかったかのように。
ここまではO.K.である。ではダミーノートを1拍後方へずらしてみよう。さてどうなるか?
>・・・やはり前回同様1番目の音が入力不能である。
続いてダミーノートを3拍目に置く。
>むむゥ・・・これも同じく1番目の音のみが入力不能である。
ダミーノートを4拍目に移動。
>これもやはり前回と同じ結果である。先頭の2つの音が入力不能である。
次に2小節1拍目に置いてみよう。
>変わらず・・・
2小節2拍目はどうか・・・
>これも前回同様、先頭の3つの音が入力不能である。
以下、2小節3拍/4拍、3小節1拍/4小節1拍と前回と同様にダミーノートを移動しながら動作テストをしてみた結果・・・・
>全くもって前回の結果と同じであった!つまり、少なくとも上記の条件でCALを実行させる限り、SONARの内部からであろうと外部からであろうと一向に変わらぬ動作をするという事である。
条件 | ダミーノート(960Tick)の入力位置 | 実行結果 | 前回との比較 |
a4 | 1小節/1拍目 | 全て入力 | 前回と同様な結果 |
b1 | 1小節/2拍目 | 第1音のみ不可 | |
b2 | 1小節/3拍目 | 第1音のみ不可 | |
b3 | 1小節/4拍目 | 第2音まで不可 | |
b4 | 2小節/1拍目 | 第2音まで不可 | |
b5 | 2小節/2拍目 | 第3音まで不可 | |
b6 | 2小節/3拍目 | 第3音まで不可 | |
b7 | 2小節/4拍目 | 第4音まで不可 | |
b8 | 3小節/1拍目 | 第4音まで不可 | |
b9 | 4小節/1拍目 | 全て入力不可 |
以上までが前回のb1〜b9までの動作検証に対応しているのであるが、引き続き前回のc1〜d2に対応する動作テストをしてみよう。
まずは前回のc1〜c4に対応する動作テストである。これは1・2・3・4小節の先頭に960Tickのダミーノートを置き、先頭から順次ダミーノートを削除しながらテストを行うというものであった。今回はどうであろうか?
>結果は・・・・いずれも”入力できてしまった”(?!)ではないか!おかしいゾ・・・と思い、数回繰り返してみたがいずれもパーフェクトに入力できている。・・・だがやはりおかしい。なぜb1〜b9の条件では前回と同様なのにc1〜c4では違う結果になるのか・・・まったくもって不可解である。
条件 | ダミーノート(960Tick)の入力位置 | 実行結果 | 前回との比較 |
c1 | 1小節/1、2、3、4拍目 | 全て入力 | 前回と異なる結果 |
c2 | 1小節/2、3、4拍目 | ||
c3 | 1小節/2、3拍目 | ||
c4 | 1小節/4拍目 |
しかし、この検証結果に惑わされてはいけない。もしかすれば何かの罠である可能性も否定できないのだ・・・ともあれ動作検証を進めねばならない。私に課せられた使命とは、ただありのままの結果を見出す事のみである。精神的な動揺は排除されなければならない。・・・さて、気を取り直して再びd1〜d3に対応する動作テストを試みてみようではないか(ダミーノート=3840Tick)。
>結果は・・・・今度はまた前回と全く同じ結果をはじき出した。
条件 | ダミーノート(3840Tick)の入力位置 | 実行結果 | 前回との比較 |
d1 | 1小節/1拍目 | 全て入力 | 前回と同様の結果 |
d2 | 1小節/2拍目 | 第2音まで不可 | |
d3 | 2小節/1拍目 | 第4音まで不可 |
前回と同様の条件であるにもかかわらず、結果として同様である場合もあれば異なる結果となる場合もある。うぅ〜〜〜〜ん・・・いったい何なのか・・・・よく分からない。
・解決されぬ結び
・・・という事で前回と同様の条件にてCalmatrixを用いて外部からCALの動作テストを敢行してみた。もちろん、前回と今回のテスト条件は数限りなくあるであろう条件のごく一部を満たすものでしかない。これ以外の条件を設定した場合にはまた違った結果を得られることも考えられる。しかもCALのinsert関数に限っての検証である。しかしながら、2回にわたる簡単な動作試験をもってして検証された結果は、確実にひとつの回答を見出せるものであった。それは”やはりSONARにおけるCALのinsert関数の動作は変である”という事である。もっとも、それによって問題の原因がつかめたのではない。いや、今の段階では解決の糸口にさえなるものではない。私が企図したのはCALの不可解な動作の検証に過ぎたるものではないのだ。いずれにせよ私の開発したCalmatrixは、現状のSONARにおいては少なくとも正常には機能しないということなのである。
私は今後も懲りずに折をみはからいながら動作テストを続けるかもしれない。もしそうであるならば一体いつまで続くのであろうか・・・・それはいつ果てるかも知れぬ遠い道のりであろうか?ともあれ、今後において興味深い事例等があれば追加・掲載したいと思う。
2003.10.10
CALってなんだかニャぁ〜〜
・追記
もはや私のCalmatrixも開発停止状態に止まらざるを得ない。私はその冷厳なる事実を甘受せねばならないのであろうか・・・。今後しばらくはまた、あのSONARのMIDI入力と付き合わなければならないようである。しかしアレは私にとってやはり使いづらい・・・。
・・・ところがである!実は先日、本サイトと相互リンクさせていただいている”テテのアトリエ”の管理者様である”Teteさん”よりご自身が開発されたDLL公開のお知らせがあり、しかもわざわざVB用のサンプル・ソースまで送っていただいた(感謝!)。このDLLはSONARのCALにおける不具合を回避しつつ、しかも外部から各種MIDIイベントの入力を可能にする機能を内蔵したものである。その詳細をここで紹介するのは割愛させていただきたいが、ともあれこのDLLがあれば(そして使いこなせれば)、Calmatrixと同等な設計思想をもたせたプログラムを作ることが出来るのである!Teteさんご自身の動作検証によれば、SONARの最新版においても正常に機能するとのことである(ワクワク・・・)。
このような事の成り行きにしたがって、Calmatrixの開発は一時的に凍結するにせよ、私はそれと同等な機能を持った数値入力のためのプログラムを新規に立ち上げることを決断した。この新規プロジェクトの進展状況等の報告に関しては、改めて専用のページを追加して報告申し上げたいと考えている。このプロジェクトはCalmatrixと違って、複数の機能を持たない、数値入力に特化したものとなるであろう。そして将来的には、実用の域に達した段階でフリーウェアとしてSONARユーザーの方々に使っていただければ、とも考えている。ただし、それがいつ実現するのかは私自身、全く予想できないのであるが・・・。
とにもかくにもTeteさんのご好意には心から感謝したい。
2003.10.16
<感謝してるんだか・・・