機体を測り切る
1 台分のディレクトリが終わったと言えるために、何が成り立っている必要があるかを説明します。プロトコルが測定の段階を説明するのに対し、ここでは「もう走らせるべき段階がない」のはいつかを説明します。
機体を測り切ったと言えるのは、すべての段階について説明がついているときです。実際に走らせて、記録が下の基準を満たしているか。あるいは、その段階が当てはまらない理由が meta.json に書いてあるか。そのどちらかです。完了は機体ごとに宣言します。他の機体を待つものは何もなく、完了したディレクトリはそれ単独で使えます。
この区別が要るのは、ある段階が想定していた系列の外にある機体は、その段階に返す答えをそもそも持たないからです。「まだ走らせていない」と「当てはまらない」は、ディレクトリを見ただけでは同じに見えるのに、読む人にとっては逆の意味になります。
段階ごとの基準
| 段階 | 完了の条件 |
|---|---|
| 識別 | meta.json が Identity Reply、背面の定格表示のとおりの転記、測定経路、セレクタのポジション、ファームウェアについての記述を持つこと。機体が使える情報を報告しない場合は「特定できなかった」と書いてあること。 |
| アドレスマップ | スイープが最上位バイトの全範囲をカバーし、自身の結果を「信頼できる」「網羅した」と報告していること。ここで決まるのはどのブロックが存在するかまでで、それ以上ではありません。アドレスの一覧に変えるのはオフセットの段階です。 |
| オフセットと形状 | スイープが見つけたブロックの全オフセットを読み出し、応答した集合によってブロックを形状ごとにまとめてあること。形状ごとに代表を 1 つ完全に測り、同じ形状のブロックをもう 1 つ読み出して、一致を記録してあること。2 つが食い違った形状は、まとめずに分けてあること。 |
| 電源投入時の状態 | 書き込みを行う段階より前に取得し、食い違いの一覧と未読領域の数を記録してあり、オフセットの段階が「応答する」と見つけたアドレスすべてについて値を持っていること。数えるのは領域ではなくアドレスです。領域読みは、要求したより少ないバイト数で答えられることがあるからです。そのとき記録は「未読の領域はゼロ」と言い、返ってこなかったバイトには基準値がありません。電源投入時の値は、後から取り直すことのできない唯一の読みです。 |
| 窓 | アドレスマップ上で他のブロックとまったく同じに応答するブロックすべてについて、複数のオフセットで測った窓の判定があること。未検証のブロックは、以降のすべての記録が別の場所についてのものかもしれないブロックです。 |
| 受け付ける値 | ライトプローブが各形状の代表ブロックの全オフセットをカバーし、全領域を元に戻し、飛ばしたバイトを一覧してあること。 |
| 独立した記憶領域 | ホールドプローブが各形状の代表ブロックの全オフセットをカバーしていること。 |
| エイリアス | 機体が応答するメッセージ系列ごとに 1 回ずつ走らせ、いずれもマップ全域を監視し、いずれも対照を取ってあること。走査しなかったパートを記録に明記してあること。 |
| リセット | 機体が受け付けるすべてのリセットについて、全域のライトプローブを元に目印を打ち、電源投入時の状態と比較してあること。 |
| 音色とエフェクト | 機体が受け付けるすべてのマップセレクトについての音色マップ(最初の 1 つだけではなく)と、全タイプを試したエフェクトタイプマップ。 |
| 再現性 | この機体をこの測定経路で測った検出下限があり、経路を変更したら測り直してあること。 |
| 音の変化 | メッセージで到達できるパラメータすべてに音の変化の判定があるか、明示した除外に該当すること。 |
| ブロック全体 | 種類ごとに 1 ブロックを完全に測り、その計画に対して数を突き合わせてあること。未測定がゼロで、値の組を作れないアドレスを明記してあること。1 つのブロックにだけ現れて同種の他ブロックに現れなかった判定は、公開前に測り直してあること。 |
| エフェクトの応答 | まず経路を確かめること。機体のアナログ入力に与えた信号がそのエフェクトに届くかを、設定した状態が実際に何かをすることを示す対照つきで測定します。届かない場合、既知の信号をエフェクトに通して全域を掃引する手法はその機体では使えず、この段階は機体自身の発音で確かめられる範囲になります。そのうえで、エフェクトのパラメータすべてが音の変化の判定を持つこと。判定はエフェクトのタイプ単位ではなく、パラメータ単位で取ります。アルゴリズムの同定に必要な曲線(下記)は、完了の条件には含めません。 |
網羅率は、アドレスではなく形状に対する分数です
アドレス空間は繰り返し構造を持ち、その倍率は大きいものです。この方法で最初に測った機体では、461 ブロックが応答し、そこに含まれる形状は 12 種類、うち 1 つは 204 回現れました。アドレスで数えた数字は、そのとき「同じものを何回測ったか」をだいたい数えていることになり、その機体について分かったことが増えたときではなく、パートの数が多いときに動きます。
ですから上の基準はすべて、形状に対する分数です。アドレス数も併記しますが、それはどれだけの空間が関わるかを読む人が知るためであって、どの基準もアドレス数に対して置いてはいません。
公開された文書が扱う範囲についても同じです。文書は 1 行に機能を与え、機体はその行を全パートにわたって繰り返します。展開後の数を数えると、文書が述べている空間と述べていない空間が同じ大きさに見えてしまいます。報告するのは「ある形状のオフセットのうち何個が、何らかの文書の述べる機能を担っているか。応答した個数に対して」という形です。
音の変化の判定が、高価な測定の入口を絞ります
エフェクトのパラメータを全範囲にわたって振り、設定ごとに応答を収録する作業は、この中でいちばん高価で、しかも自然な終わりがありません。これを抑えるものが 2 つあります。
足切りはパラメータ単位でかけます。 足切りの価値は、それが何を落としたかで決まります。エフェクトのタイプ単位でかける足切りは、その機体が持つタイプを 1 つも落とさないことがあり、その場合、全域掃引にかけるべきパラメータの数は最初のまま残ります。ですから全域掃引を許可する判定は、パラメータについて取ったものとします。全タイプの全パラメータをふるいにかける作業はそれ自体が 1 つの段階であり、着手前にコストを見積もれます。パラメータ数に、安い比較 1 回分のコストを掛けたものです。
機体が値を保持していても、それを通して音が変わらないパラメータには、応答測定を行いません。「保持しているのに音が変わらない」ということ自体が所見です。
全域掃引は要求されて行うもので、あらかじめ予定するものではありません。 ふるい分けには終わりがありますが、全域掃引にはありません。機体を測り切ったと言えるのは、そこで何の音が変わるかが地図になったときです。個々の「変わらなかった」を読めるものにする境界と対照を伴って、です。曲線はそのあと、名指しされた次の問いがそのパラメータを必要としたときに、1 つずつ描きます。何を対象範囲に入れるかを決めるのと同じ規則です。測り切った機体とは、それらの問いを差し向けられる状態の機体であって、すでに答え終えた機体ではありません。
曲線を要求されたパラメータについての基準は、アルゴリズムを同定できる素材であること。その要約ではありません。
- 逆畳み込みした応答を、それを生成したテスト音と並べて数値のまま保持すること
- 高調波の各次数を線形応答と分離してあること。畳み込まれたままにしないこと
- パラメータ自身の設定値を範囲にわたって標本化し、7 ビット値から物理量への対応——ディレイのミリ秒、オクターブ帯域ごとの減衰量、変調のレート——が、両端 2 点ではなく実測した曲線であること
- その曲線に現れる量子化が見えていること。段差は機械についての事実であり、そこを補間したものは事実ではありません
測り切るために必要ではないもの
- すべてのバイトの説明。応答し、ある範囲の値を受け付け、どのメッセージも届かないアドレスは、それで完全に測定できています。それが何のためにあるかは、このアーカイブの問いではありません。
- すべてのパートやチャンネルの走査。種類ごとに 1 つずつ走査し、残りを明記してあれば完了です。16 個すべてを走査しても、より完了するわけではなく、より高価になるだけです。
- 音が変わるパラメータすべての全域掃引。成果物は「何の音が変わるか」の地図で、曲線はそこから要求に応じて描きます。終わる前にすべての問いに答えなければならない機体は、いつまでも終わりません。そもそも問いは、まだ出そろっていません。
- 何らかのモデル。アルゴリズムを名指しせず、回路構成を当てはめず、係数を推定しません。機体を測り切ったと言えるのは、そこからモデルを導ける状態になったときであって、導き終えたときではありません。
- 他の機体との一致。別の個体と違う結果が出たなら、それ自体が結果です。
当てはまらない段階
meta.json の stages_that_do_not_apply に記録します。キーは上の表の段階名、値はその理由です。段階を飛ばすのは、機体がそれに答える手段を持たないからです。手間がかかるから、答えが面白くなさそうだから、ではありません。
機体が今どこまで来ているかを見る
soundings complete <機体のディレクトリ> が、ディレクトリの中身を上の表と突き合わせ、残りを表示します。判定できるのは構造的なことだけ——ファイルがある、フラグが立っている、ある数が別の数と一致する——なので、ここで「met」と出た段階は、読んで確かめたのではなく、数えただけです。対照が十分だったか、「変わらなかった」の判定が境界を伴っていたかのように、読む人にしか決められないことは、通過させずに「判定できない」と出します。
残りはアドレス数・パラメータ数で出し、時間では出しません。処理速度は測定経路とテスト音に属するもので、ある機体で測った速度は、次の機体についての事実にはなりません。どれが当てはまるかを知っているのは、実際に測る人です。