ダブやレゲエの音源で、空間を切り裂くように「ウィーオー、ウィーオー」と飛んでくる電子音があります。Dub Siren(ダブサイレン)と呼ばれる、発振器を中心にした小さな演奏装置の音です。

音の材料は驚くほど単純です。オシレータと呼ばれる発振器でサイン波や矩形波を鳴らし、そのピッチや波形をノブとボタンで動かす。そこへディレイとフィードバックをかけ、鳴らし終えた音まで反復させる。複雑な楽器音を合成するのではなく、単純な音を動かして空間へ飛ばすことで成立します。

ここでいちばん大切なのは、何が動いているかです。この連載では、LFOという、別のつまみを自動で揺らすための低周波発振器を使い、トレモロでは音量 を、ウォブルベースではフィルター を動かしてきました。Dub SirenでLFOが動かすのは、音量でも明るさでもなくピッチそのものです。

トレモロは音量、ウォブルベースはフィルター、Dub SirenはピッチをLFOで揺らす対比図

波の背が伸び縮みすれば音量が変わり、倍音が出入りすれば明るさが変わります。波の間隔が詰まったり伸びたりすれば、音の高さが変わります。このピッチの動きを耳ではっきり分かるほど大きくしたものが、サイレンの核です。

Dub Sirenを曲で聴く

Dub Sirenは、ジャマイカでダブ音楽が発展した1970年代後半に生まれたとされます。レコーディングエンジニアがミキシングデスクを楽器として扱い、音源を抜き差しし、フィルターやディレイを演奏するように操作し始めた時期の産物です。初期の重要人物としてKing TubbyとLee “Scratch” Perryが挙げられます。

ここでは初期のダブ、英国のサウンドシステム文化、現代のジャングル/ベースミュージックという3つの地点を並べます。サイレン音だけを探すより、短く投げた電子音がディレイで曲の隙間へ広がり、リズムの一部になる瞬間へ耳を向けると仕組みを追いやすくなります。

Lee Scratch Perry & The Upsetters『Blackboard Jungle Dub』のアルバムジャケット

Lee "Scratch" Perry & The Upsetters / 1973

Black Panta

アルバム『Blackboard Jungle Dub』のオープニング曲です。サイレン的な効果の初期の代表例として、単純な電子音がミックスと反復の中で強い合図へ変わる感覚を聴けます。

Jah Shaka『Commandments of Dub』のジャケット

Jah Shaka / 1980年代前半のシリーズ

Commandments of Dub

英国のサウンドシステム文化でダブサイレンが定着していく流れをたどる入口です。年代には複数の版があるため、ここでは1980年代前半のシリーズとして扱います。

Nia Archives『Baianá』のシングルジャケット

Nia Archives / 2022

Baianá

1990年代初頭のジャングル/ドラムンベースで変化したダブサイレンの使われ方が、現代のベースミュージックにも受け継がれていることを感じられる一曲です。

ジャケット画像はMusicBrainz / Cover Art Archive由来の画像を記事内に同梱して配信しています。

小さく揺らせばビブラート、大きく揺らせばサイレン

典型的なダブサイレンの回路は、音として聞くためのオシレータと、それよりずっと遅く動くLFOの組み合わせに単純化できます。オシレータの中心周波数に、LFOの出力を加えます。

$$ f(t) = f_\mathrm{base} + d \cdot \mathrm{LFO}(t) $$

$f(t)$ はその瞬間の周波数、$f_\mathrm{base}$ は中心ピッチ、$d$ はデプス、つまり揺れ幅です。レートを上げれば往復が速くなり、デプスを上げれば低音から高音まで広く飛びます。LFOの波形をサイン波にすれば丸く、三角波にすれば一定の速さで上昇と下降を繰り返し、矩形波にすれば2つの高さを急に行き来します。

LFOの深さが小さいビブラートと、大きいサイレンの連続性

ピッチをほんの少しだけ揺らせばビブラートになります。揺れ幅を数オクターブに広げると、同じ仕組みが旋律の装飾ではなくサイレンとして聞こえ始めます。違う種類の音へ切り替わるのではなく、ピッチ変化の量が連続的に大きくなった結果です。

Web Audio APIでは、オシレータの frequency をHz単位で動かす方法と、detune をセント単位で動かす方法があります。100セントが半音、1200セントが1オクターブなので、デプスを1200にすれば中心ピッチの上下を大きく往復できます。記事のデモは、中心の周波数を決めたうえでLFOを detune へ接続しています。

ここで少し宣伝を。オシレータでピッチを作って動かす、というこの土台は、楽器の音をプログラムで合成するときにも共通します。筆者はこうしたプログラム合成で楽器音を鳴らしている Harmonize という音感トレーニングアプリを個人開発しています。ダブサイレンを鳴らす機能はありませんが、興味があれば覗いてみてください。

ボタンを押し、ノブを回して演奏する

ダブサイレンは、鍵盤で音階を順番に弾く楽器とは性格が違います。中心ピッチ、LFOのレートとデプス、波形をノブで決め、トリガーボタンを押している間だけ鳴らす。離したあとに残るディレイまで含め、音を入れる場所と切る場所を手で作るライブ向きの装置です。

トリガーボタンとピッチ、LFO、波形、ディレイのノブでダブサイレンを演奏する図

ボタンを押して長いスイープを聞かせるだけでなく、ごく短く押して上昇の断片だけを飛ばすこともできます。中心ピッチを回しながら押せばLFOの往復全体が上下し、レートを動かせば間延びしたうなりから細かな警報音へ変わります。音色を選んでから演奏するというより、操作の軌跡そのものが音色です。

専用の箱だけがこの音を生んだわけではありません。King Tubbyは、ミキシングデスクのトーンボタンとハイパスフィルター、テープディレイを組み合わせて似た効果を作っていたとされます。卓上にある機能をその場で操作するという点でも、ダブサイレンは「装置を演奏する」ダブの考え方とつながっています。

ディレイの尾までがひとつのフレーズになる

発振器だけを鳴らすと、音は素朴な電子音のままです。ここへディレイを加えると、トリガーで切ったはずの音が少し遅れて戻り、次のサイレンと重なります。戻ってきた音の一部をもう一度ディレイへ送るのがフィードバックです。

ピッチが動くサイレン音がディレイ時間ごとに反復し、フィードバックで小さくなる図

大事なのは、同じ高さの一音がやまびこになるだけではないことです。上昇や下降を含んだピッチの軌跡が丸ごと遅れ、前の軌跡が消えないうちに次の軌跡が始まります。演奏者は短い音をひとつ飛ばしただけでも、スピーカーからは時間差のある複数のサイレンが返り、空間を横切るフレーズに聞こえます。

ディレイが音を保存して読み出す仕組みや、フィードバックを1未満に保つ理由は、ディレイをリングバッファで作る記事 で詳しく扱っています。ここでは内部のバッファ処理を繰り返さず、ディレイタイムをリズムの間隔として、フィードバックをフレーズの長さとして手で扱う点に注目します。値を上げすぎると反復が減衰せず発振に近づくため、デモのフィードバックは0.88を上限にしています。

フィルターと歪みで輪郭を作る

発振器の波形は、音の輪郭を大きく変えます。サイン波は丸く、矩形波は空洞のある警報音に、ノコギリ波は倍音の多い鋭い音になります。ノイズを使えば、ピッチの線が曖昧な噴射音のような効果も作れます。

ローパスフィルターは高い成分を削る処理です。カットオフを下げればディレイの反復が暗く奥へ引っ込み、上げれば発振器の角が前に出ます。歪みは波形を丸めたり潰したりして倍音を増やす処理で、少量なら小さなスピーカーでも輪郭を拾いやすくなります。ただし、どちらも主役はピッチ変調です。フィルターを大きく動かしてウォブルベースへ戻さず、サイレンの高さの変化を支える程度に使います。

触ってみる

デモでは、TRIGGERを押している間だけ発振器が鳴ります。まずclassic sirenを選び、LFO depthを0付近まで下げてから少しずつ上げると、一定音、ビブラート、サイレンがひとつながりであることを確認できます。ボタンを離したあと、ピッチの曲線が赤い反復としてどれだけ残るかもキャンバスに表示します。

うまく表示されないときは、デモを別タブで開く

laserは速く広いピッチ変化、alarmは矩形波LFOによる2段階の動き、space echo styleは長いディレイと深いフィードバックを設定しています。AUTOを有効にすると一定間隔で短いトリガーを送り、ノブの変化にディレイの履歴が追いついてくる様子を聞けます。iPhoneでは、最初のTRIGGERまたはAUTOのタップをきっかけにAudioContextを再開します。

プログラムではこう組む

最小構成では、サンプルごとにLFOを計算し、その値でオシレータの周波数を動かします。ゲートはトリガーの押し引きに対応する音量、ディレイは過去の出力を遅らせて足す部分です。

/* Dub Sirenの最小構成(C風の擬似コード) */
double lfoPhase = 0.0;
for (n = 0; n < length; n++) {
    double lfo = triangle(lfoPhase);              /* -1.0〜1.0 */
    double pitch = baseHz * pow(2.0, depthOct * lfo);
    double siren = oscillator(waveform, pitch, fs);

    double played = trigger ? siren : 0.0;        /* ボタンで音を切る */
    double echo = delayBuffer.read(delaySamples);
    delayBuffer.write(played + feedback * echo);  /* feedbackは1未満 */

    output[n] = played + wet * echo;

    lfoPhase += lfoHz / fs;                        /* LFOの位相を1サンプルぶん進める */
    if (lfoPhase >= 1.0) lfoPhase -= 1.0;          /* 1周したら折り返す */
}

周波数を足し算ではなく pow で動かしているのは、1オクターブ上を周波数の2倍として扱うためです。一方、Web Audio APIの detune は最初から音程差をセントで受け取るので、LFOの出力をゲインノードで拡大し、そのまま接続できます。

const audioCtx = new AudioContext();

const siren = audioCtx.createOscillator();
siren.type = 'sawtooth';
siren.frequency.value = 220;        // 中心ピッチ

const lfo = audioCtx.createOscillator();
lfo.type = 'triangle';
lfo.frequency.value = 0.7;          // 1秒より少し長い往復

const depth = audioCtx.createGain();
depth.gain.value = 1200;             // ±1オクターブ相当
lfo.connect(depth).connect(siren.detune);

const gate = audioCtx.createGain();
gate.gain.value = 0;                 // トリガーを押すまで無音

const delay = audioCtx.createDelay(1.0);
delay.delayTime.value = 0.36;
const feedback = audioCtx.createGain();
feedback.gain.value = 0.58;          // 必ず1未満にする
const wet = audioCtx.createGain();
wet.gain.value = 0.42;

siren.connect(gate);
gate.connect(audioCtx.destination);  // 原音
gate.connect(delay);
delay.connect(feedback).connect(delay);
delay.connect(wet).connect(audioCtx.destination);

siren.start();
lfo.start();

const closeGate = () => gate.gain.setTargetAtTime(0, audioCtx.currentTime, 0.03);

triggerButton.addEventListener('pointerdown', async (e) => {
  triggerButton.setPointerCapture(e.pointerId);  // 押した指を離すまで追う
  await audioCtx.resume();            // iOSのユーザー操作制限に対応
  gate.gain.setTargetAtTime(0.3, audioCtx.currentTime, 0.01);
});
triggerButton.addEventListener('pointerup', closeGate);
triggerButton.addEventListener('pointercancel', closeGate);
triggerButton.addEventListener('lostpointercapture', closeGate);  // 枠外で離しても止める

ここでもLFOが接続されるのは gate.gain ではなく siren.detune です。ゲートは押している間だけ音を通す役、LFOは通っている音の高さを動かす役で、2つを分けるとダブサイレンの配線が見通しよくなります。実際のデモでは、この後段へフィルター、歪み、出力を保護するコンプレッサーを追加しています。

実際の制作では何を使うのか

専用のダブサイレンは、発振器、LFO、トリガー、数個のノブを小さな箱にまとめたハードウェアとして今も作られています。個人工房による少量生産も多いため、特定の現行機を前提にしなくても、VCOとLFOを持つシンセサイザーやモジュラー機材で同じ信号経路を組めます。VCOはVoltage Controlled Oscillatorの略で、電気信号によってピッチを動かせる発振器です。

英国で初期に広まった専用機としてはNJD SE-1が知られています。マージーサイド州セントヘレンズのNJD(New Junktion Discotheques、1973年設立)が、もともと拡声(PA)システムに組み込む緊急警報用として作った装置がサウンドシステムへ転用されたものです。1970年代後半にはJah Shakaやロンドンのサウンドシステム Channel One を率いたMikey Dreadが効果を採り入れ、警報音だった回路が音楽を動かす合図になっていきました。

ディレイ側では、テープエコーの操作感を持つRoland Space Echo系をAmazonで探すと組み合わせる方向があります。RE-201のようなテープ式の機材だけでなく、RE-202など同系統の操作を受け継いだ機材や、DAW上のテープディレイ系プラグインでも、ディレイタイムとフィードバックを演奏中に動かす発想は同じです。

ソフトウェアだけで再現するなら、オシレータのピッチへLFOを割り当て、エンベロープで一方向の上昇や減衰を作り、後段へディレイを置きます。エンベロープは、トリガー後の時間に沿って値を一度だけ変化させる制御です。周期的に往復するLFOと違い、ボタンを押すたびに低い音から高い音へ飛ばす形を作りやすくなります。専用機の外見を再現することより、ピッチを大きく動かし、短く切り、反復を残す3つの操作を分けて考えるほうが音へ早く近づけます。

参考文献

一音を飛ばし、その軌跡と余韻を演奏する。Dub Sirenの面白さは、その潔い単純さにあります。