曲の終わりで、音全体が「ウゥーン」と低く沈みながら止まることがあります。レコードの回転にブレーキをかけたような、あるいはテープレコーダーの電源を切ったような止まり方です。Tape Stop、Vinyl Brake、DJ Stopなどと呼ばれますが、どの名前にも共通するのは、音量ではなく再生速度を動かしていることです。
停止ボタンを押せば一瞬で無音になります。音量をゆっくり絞れば、フェードアウトになります。それに対してTape Stopは、鳴っている音を読み進める速さそのものを、短い時間で1から0へ落としていきます。読む速さが落ちると同じ波形を再生するのに長い時間がかかり、その波形の繰り返しも遅くなる。だから時間が伸びるのと同時に、音程も下へ沈みます。
フェードアウトは音量、Tape Stopは時間を止める
フェードアウトが触るのは、波形の縦方向です。サンプルの値を1倍、0.8倍、0.5倍……と小さくしていけば、音色も音程も速さもそのまま、音量だけが消えていきます。歌声は同じ高さ、ドラムは同じテンポのまま、遠ざかるように静かになります。
Tape Stopが触るのは、波形を読む横方向の速さです。再生ヘッドが進む幅を1サンプル、0.8サンプル、0.5サンプル……と狭めていくと、波形は横へ引き伸ばされます。短かった一周期が長くなるので音程が下がり、フレーズ全体も間延びします。最後に音量を少し整えることはあっても、あの「沈む」感じを作っている主役は音量のフェードではありません。
この違いは、止まり際の輪郭にも表れます。フェードアウトでは高い成分も低い成分も元の位置に残ったまま薄くなります。Tape Stopではスペクトル全体が低いほうへ滑り落ちます。耳は「音が小さくなった」だけでなく、「動いていた機械が慣性を失って止まった」という出来事を感じ取るわけです。
サンプル列を読む針を遅くする
コンピューターにとって、音とは1秒に44100個ほど流れてくる数の列です。この連載の出発点である音は数字でできている では、スピーカーをどちらへどれだけ動かすかを、この数の並びで表せることを見ました。録音された音を再生する処理は、並んだ数を先頭から順番に拾い、スピーカーへ渡す仕事だと考えられます。
通常再生では、読み出し位置を毎回ちょうど1ずつ進めます。位置0を読んだら1、次は2、その次は3です。再生速度を $r$ と書くなら、通常は $r=1$。半分の速さなら毎回0.5ずつ進み、位置0、0.5、1.0、1.5……を読むことになります。同じ出力時間に通り過ぎる元サンプルが半分になるため、フレーズはおよそ2倍に伸びます。
波形の周期も同じ割合で伸びます。再生速度が一定の $r$ なら、周期は $1/r$ 倍、周波数は $r$ 倍です。たとえば $r=0.5$ では、一周期を読むのに2倍の時間がかかり、周波数は半分、つまり音程は1オクターブ下がります。ここには「時間を伸ばす処理」と「音程を下げる処理」が別々にあるわけではありません。同じサンプル列を遅く読むという、ひとつの操作の表と裏です。
現代のタイムストレッチ技術には、音程を保ったまま長さだけを変えたり、長さを保ったまま音程だけを変えたりする方法もあります。しかしTape Stopが気持ちよく聞こえるのは、その分離をしないからです。物理的なテープやレコードと同じように、速度、時間、音程がほどけず一緒に動く。この不自由さが、機械が止まるような説得力になります。
ついでに自作アプリの紹介を。こうして沈んでいく音程を聴き取る耳を鍛えるための、Harmonize という音感トレーニングアプリを個人開発しています。Tape Stop のような速度変化の機能はありませんが、音の高さを聴き分ける練習の道具として公開しています。
0.5番目のサンプルをどう読むか
再生速度を0.5にすると、読み出し位置は0、0.5、1.0、1.5と進みます。ところが配列に入っているのは、位置0、1、2といった整数番地のサンプルだけです。「0.5番目」の値は録音されていません。そこで、前後のサンプルから途中の値を推測します。この推測を補間と呼びます。
いちばん単純なのは補間をせず、いちばん近いサンプルをそのまま選ぶ方法です。実装は軽いものの、低速では同じ値を何度も読む階段状の動きが目立ち、高い周波数のざらつきや折り返しノイズが出やすくなります。Tape Stopの終盤ほど読み出し位置の進みが小さくなるので、この粗さが聞こえやすくなります。意図的に古いデジタル機器のような質感を出すのでなければ、少なくとも補間を入れたいところです。
線形補間は、前後2点を直線で結び、その途中を割合で混ぜます。位置が10.25なら、サンプル10を75%、サンプル11を25%です。わずかな計算で段差をかなり減らせるため、仕組みを確かめる実装には扱いやすい方法です。さらに前後4点ほどを使う三次補間や、より長い範囲を参照する補間なら、波形の曲がり方まで滑らかに推測できます。代わりに計算量と、端のサンプルをどう扱うかという仕事が増えます。
補間は失われた情報を魔法のように復元する処理ではありません。手元の点から、点と点の間をどう通ったはずかを見積もる処理です。それでも「隣の値へ突然飛ぶ」のを避けるだけで、沈んでいく音の手触りは大きく変わります。
速度カーブがブレーキの重さを決める
開始から停止までの長さを決めても、止まり方はひとつではありません。速度を1から0まで直線で下げれば、一定の割合で素直に減速します。最初に大きく速度を落としてから低速域を長く引けば、重いテープが力を失い、最後に粘るような尾になります。反対に、しばらく通常速度を保って終盤で急に落とせば、DJがブレーキを強くかけたような、輪郭のはっきりした停止になります。
ここで設計しているカーブは音量の包絡線ではなく、読み出し位置に毎回足す歩幅です。同じ1秒のstop timeでも、カーブの下側の面積、つまり停止までに読み進める総量は変わります。そのため、カーブを変えると音程の落ち方だけでなく、元のフレーズがどこまで聞こえてから止まるかも変わります。
完全に0まで落とす代わりに、途中の速度で止める設計もできます。brake depthを浅くすれば、少しだけ沈んだところでブレーキを離すような効果になります。さらにごく小さな速度揺れを重ねれば、回転むらを思わせるwowやflutterが生まれ、ノイズを薄く足せば媒体の古さも演出できます。ただし、どれも中心にあるのは速度カーブです。装飾を外しても、速度が落ちれば時間と音程は一緒に沈みます。
触ってみる
同じ短いフレーズを「通常停止」「音量フェードのみ」「Tape Stop / 速度低下」の3通りで止めるデモを用意しました。まず通常停止で音が突然切れる感触を聞き、次に音量フェードで高さとテンポが変わらないことを確かめ、最後にTape Stopへ切り替えてください。速度カーブと音程のグラフが同じ形で下がり、フレーズが低く引き伸ばされるのを耳と目で比べられます。
うまく表示されないときは、デモを別タブで開く 。
stop timeを長くすると沈み込みをゆっくり追え、短くするとブレーキの強い切れ味になります。カーブ形状を切り替えると、同じ停止時間でも低音域に滞在する長さが変わるはずです。start speedでは減速を始める速度、brake depthではどこまで深く落とすかを動かせます。
wow / flutterとnoiseはいったん0にして、速度低下だけの音を聞くのがおすすめです。そのあと少しずつ加えると、ゆっくりした回転むら、細かな速度の震え、媒体のノイズが、停止の質感をどう変えるかを切り分けられます。tape stop、vinyl brake、slow power down、DJ stopのプリセットは、それらの違いを探る出発点です。名前を選んで終わりにせず、どのつまみとカーブがその表情を作っているかまで戻ってみると、エフェクトの中身が見えてきます。
テープ、ターンテーブル、DAWの中で
アナログのテープマシンは、モーターやキャプスタンがテープを一定速度で送ります。電源を切った瞬間にすべてが理想的な直線で止まるわけではなく、回転部分の慣性を失いながら減速します。テープがヘッドの前を通る速さが落ちれば、録音された波形を読む速さも落ちるため、長さと音程が一緒に沈みます。Tape Stopという名前は、この物理的な挙動をデジタル処理として取り出したものです。
ターンテーブルやDJ機材のブレーキも、考え方は近いものです。プラッターの回転を止めるまでの時間を調整できる機材では、長く設定すればゆっくり沈み、短く設定すれば急なDJ Stopになります。デジタルDJ機材では物理的な回転だけでなく信号処理で再現する場合もありますが、聞こえの核は再生速度の低下です。
Ableton LiveのようなDAWでも、専用のTape Stop系プラグインを挿すほか、オーディオクリップのピッチ変化をエンベロープで描き、リサンプリングして似た動きを作れます。ただし、タイムストレッチが有効なモードでは時間と音程を別々に補正することがあります。物理的なブレーキらしさを狙うなら、音程だけを下げるのではなく、Re-Pitchやvarispeedと呼ばれる「再生速度に時間と音程がついてくる」方式を選ぶのが要点です。
リスナーの耳にこの効果を一気に広めたのは、2010年代のダンスミュージックでした。盛り上がりの頂点でトラック全体をいったん沈ませ、一拍おいてから解き放つ展開が定番になり、その象徴が Avicii「Levels」(2011年)です。クライマックス直前で音がキュイーンと下がって止まりかける、あの一瞬がまさに再生速度を落とすTape Stopで、どんな効果かを手早く耳で確かめるのにちょうどいい一曲です。

Avicii / 2011
Levels
ドロップ直前でトラック全体がキュイーンと沈む一瞬が、再生速度を落とすTape Stopそのものです。この効果を一躍広めた代表例として、まずはこの曲の「落ちる」瞬間に耳を向けると分かりやすいです。
ジャケット画像はMusicBrainz / Cover Art Archive由来の画像を記事内に同梱して配信しています。
どう実現するか
実装の中心は、入力配列を指す読み出し位置 pos を整数ではなく小数で持つことです。毎サンプル、カーブから現在の速度 rate を求め、そのぶんだけ pos を進めます。整数位置の間は線形補間で読みます。
/* 可変レート再生によるTape Stop(C風の擬似コード) */
double pos = 0.0; /* 入力サンプル列を指す読み出し位置 */
for (n = 0; n < stopSamples; n++) {
double u = (double)n / (stopSamples - 1); /* 停止区間の進み具合:0〜1 */
double rate = startSpeed * (1.0 - u) * (1.0 - u); /* 速度カーブ:1→0 */
if (pos >= inputLength - 1) break; /* 入力の末尾を越えたら終了 */
int i0 = (int)floor(pos); /* posの左側にある整数サンプル */
int i1 = min(i0 + 1, inputLength - 1);
double frac = pos - i0; /* 2点の間をどこまで進んだか */
output[n] = input[i0] * (1.0 - frac)
+ input[i1] * frac; /* 線形補間で途中の値を作る */
pos += rate; /* 1ではなく現在の速度ぶん進む */
}
/* 実用上は末尾のごく短い区間を0へフェードし、保持値やクリックを消す */
rate が1なら通常再生、0.5なら読み出し位置は半歩ずつ進みます。上の二乗カーブでは減速の早い段階から速度が大きく下がり、低速域を長めに通ります。rate = startSpeed * (1.0 - u) に変えれば直線的なブレーキになり、別の関数に差し替えれば止まり方も変わります。つまり音声処理のループは同じまま、カーブの1行が演奏表現になります。
速度が厳密に0になると読み出し位置も動かず、同じ値を出し続けます。その値が0でなければ、不自然な直流成分や最後のクリックになり得ます。実際の処理では、十分に遅くなったところで再生を終え、最後の数十〜数百サンプルだけを短くフェードして無音へ着地させます。この仕上げのフェードは停止感を作る主役ではなく、速度低下のあとを掃除するためのものです。
ブラウザのWeb Audio APIで短い素材を鳴らすだけなら、AudioBufferSourceNode.playbackRateに速度カーブを与える方法もあります。カーブ配列を時間区間へ割り当てるAudioParam.setValueCurveAtTime()を使えば、直線以外の減速も予約できます。一方、補間方法やサンプル単位の読み出しを自分で制御したい場合は、上のループをAudioWorkletなどの処理へ持ち込みます。
参考文献
- Udo Zölzer 編『DAFX: Digital Audio Effects』Wiley。リサンプリング、変調、時間領域のエフェクトを含むデジタル音響処理の教科書です。
- Curtis Roads『The Computer Music Tutorial』MIT Press。サンプリング、補間、音の時間操作を広く扱います。
- AudioBufferSourceNode: playbackRate プロパティ
(MDN)。
1.0を基準に、音声バッファの再生速度を指定するAudioParamです。 - AudioParam: setValueCurveAtTime() (MDN)。値の配列を指定時間へ割り当て、パラメーターを任意のカーブで変化させる方法を説明しています。
- Clip Envelopes (Ableton Live 12 Reference Manual)。オーディオクリップのTranspositionエンベロープと、Warpモードによる応答の違いを確認できます。
同じサンプル列でも、読む歩幅を変えるだけで時間と音程は一緒に沈みます。止まり方の表情は、デモの速度カーブで確かめてみてください。