Zero-Crossing (ゼロクロス)とは

Zero-Crossing(ゼロクロスポイント)

ゼロクロス例01
ゼロクロス例01

以前質問があったのを思い出したので。
ゼロクロスorゼロクロッシングとは、波形が中央の線DCをまたぐ瞬間のポイントをいう。

ゼロクロスを使用した範囲選択例02
ゼロクロスを使用した範囲選択例02
ゼロクロスを使用した範囲選択例01
ゼロクロスを使用した範囲選択例01

波形編集ソフトやDAWの波形編集機能には、ゼロクロスのポイントで波形の選択範囲をするかどうかを決められるものが多い。
たとえば上の例01のようにゼロクロスした箇所で範囲選択して再生したとき、音の出始めも終わりもほぼAmplifierがゼロとして再生されるため、プツッとよけいなノイズが鳴ることがない。
仮に鳴ったとしても超極小音量で鳴るため目立たない。悪く言えば気づけない

範囲選択は例02のように、DCの下から上に抜けるポイントを開始位置に選択したら終了位置も同様に下から上に抜けるポイントを選択するのが基本。
これにより仮にこの範囲をループ再生してもループポイントでAmplifierの落差(グリッチ)がほとんど発生せず、ノイズが発生することがほぼない。
よけいなノイズの心配なく波形編集を行うには、ゼロクロスのポイントで波形選択を行うのが理想ということになる。

ループ設定の小細工

サンプラーには、こうしたグリッチを防ぐためにループポイントでクロスフェードをかける機能を持ったものもある(ソフトウェアだとReasonのNN-XTやLogicのEXSなど)。
しかし以前クロスフェードの挙動についても書いたが、クロスフェードはEqual PowerまたはExponentialの形式になっていないと、クロスフェード量(=時間)を大きくするほど音量の波が目立っていかにもループサウンドって音になってしまう。
音量は対数(Exponential)の世界なのでLinearだと都合が悪いのだ。
波形データ自体のループポイントにあらかじめEqual Powerのクロスフェードをかけておくか、もしEqual PowerがなくてLinear Fade限定である場合はクロスフェードをかけた上で音量差を調整する工程を挟んだほうがよい。

DSP-Quattroでのクロスフェードループの設定(Exp=Exponential)。
DSP-Quattroでのクロスフェードループの設定(Exp=Exponential)。

携帯ゲーム機などのように極小メモリの機器に極小のショートループを組んだPCMデータを格納する場合、ループは波形の1周期の最短の2n(nは1より大きい自然数)つまり2,4,8,16…倍の長さで設定する。
なぜかというと、仮にループポイントにグリッチが発生した場合でも、そのノイズが発振(出現回数が秒間20回ほど≒20Hzを超すと音程として聞こえ出し、通称「発振」という)した際のピッチがそのPCM音色のピッチと同じまたはそのサブハーモニクス上で発生するようになって、ノイズとして聞こえにくくなるから。
何らかのブラックボックス的なコンバーターでADPCM等の圧縮がかかってノイズが乗るとしても、ループポイントが移動するわけではないから、万一不慮でノイズが乗っても目立たないということ。
中途半端な位置にループポイントを設定してしまった場合には、dissonantな音程として発振されてしまうため、聞き手に不快感を与えるだけになってしまう。

プログラムによって波形の再生位置を無作為で選択して鳴らすなどの手法を取るグリッチミュージックの場合は、選択位置次第でバツッという大きなノイズが鳴ったりするが、これはむしろ愛嬌でもありアイデンティティでもある。
ゼロクロス箇所を選択させてノイズが発生しないようにももちろんプログラムできるはずだが、全く面白くなくなる。

※Sound Forgeの流通が結構長いことストップしているっぽいので、DSP-Quattroでのスクショとなってます。