マガジン

ドラムマシンのスウィングとは何か:拍のずれを数で見る

遊びを見つける

執筆にClaudeを使用しています。

つなぎ目のない銅色のリボンとテープリールで、自然なBGMループを表した写真風イメージ。
記事のテーマをもとに制作したAI生成イラスト。

WAVE / WAVEを開き、1つのトラックの16ステップすべてに同じ音を置いてループ再生する場面を考えてみます。スウィングを最小にすると、時計のような均等な刻みが聞こえるはずです。そこからスウィングを上げていくと、同じ16個の音なのに「跳ねる」ような、あるいは「よれる」ような印象に変わります。音の高さも大きさも変えていないのに、聞こえ方が変わるのはなぜでしょうか。 答えを先に言うと、変わっているのは音と音の間隔です。スウィングは、均等に並んだ格子の一部を少しだけ後ろへずらす操作です。「ずれ」は感覚の話に聞こえますが、テンポと比率が決まれば、ミリ秒の単位で計算できます。 この記事では、スウィングが間隔をどう変えるかを数式と表で確かめます。続いてWAVE / WAVEの確認済みの設計から言えることを整理します。最後に、作品のスウィングが何をどれだけ動かしているかを、読者が自分で測る手順を示します。測定の結果は書きません。結果は、ご自身の耳と波形で確かめてください。

この記事の目次
  1. スウィングは「同じ長さの二つ」を「長と短」に変える操作
  2. 数で見る:テンポ120と90の場合
  3. WAVE / WAVEの設計から読み取れること
  4. 自分で測る手順
  5. 結果の読み方と起こりやすい誤り
  6. 次の行動

スウィングは「同じ長さの二つ」を「長と短」に変える操作

ドラムマシンの16ステップは、4拍を1拍あたり4つに割った格子として並べるのが一般的です。1ステップは16分音符に当たります。均等に鳴らすと、どの隣り合うステップの間隔も同じです。

スウィングでは、この16分音符を2つずつペアにします。1番目と2番目、3番目と4番目、というペアです。ペアの合計の長さ(8分音符1つ分)は変えません。変えるのはペアの中の配分で、前の音から後ろの音までを長く、後ろの音から次のペアの頭までを短くします。

つまり、ペアの先頭の音(奇数番目のステップ)は格子の位置のままです。ペアの2つ目の音(偶数番目のステップ)だけが後ろへ動きます。ペアの合計が変わらないので、拍の頭は動かず、テンポが速くなったり遅くなったりして聞こえることはありません。ずれは拍の内側にだけ生まれます。

ここでよく使われるのが「比率」という表し方です。ペアの長さを100としたとき、前半が何%かを示します。

  • 50%:前と後が同じ長さです。スウィングなしの状態です。
  • 約66.7%(3分の2):前が後ろの2倍の長さです。3連符に近い跳ね方です。
  • 75%:前が後ろの3倍の長さです。かなり強い跳ね方です。

ただし、これは一般的な定義の一例です。ソフトによっては0〜100の別のスケールで表したり、50%を基準にした別の数え方を採ったりします。スライダーの数字だけを見て、他のソフトと同じ意味だと決めてはいけません。

数で見る:テンポ120と90の場合

計算に必要な式は2つだけです。

  • ペアの長さ(ミリ秒)=60,000 ÷ テンポ ÷ 2
  • 後ろの音のずれ(ミリ秒)=ペアの長さ × (比率 − 0.5)

テンポ120では、四分音符が500ミリ秒、16分音符が125ミリ秒、ペアが250ミリ秒です。テンポ90では、四分音符が約666.7ミリ秒、16分音符が約166.7ミリ秒、ペアが約333.3ミリ秒です。

  • 50%、テンポ120:前の長さ/後の長さ:125/125、テンポ120:後ろの音のずれ:0、テンポ90:後ろの音のずれ:0
  • 60%、テンポ120:前の長さ/後の長さ:150/100、テンポ120:後ろの音のずれ:25、テンポ90:後ろの音のずれ:約33.3
  • 66.7%、テンポ120:前の長さ/後の長さ:約166.7/約83.3、テンポ120:後ろの音のずれ:約41.7、テンポ90:後ろの音のずれ:約55.6
  • 75%、テンポ120:前の長さ/後の長さ:187.5/62.5、テンポ120:後ろの音のずれ:62.5、テンポ90:後ろの音のずれ:83.3

単位はすべてミリ秒です。この表から読み取れることが2つあります。

1つ目は、比率が同じでも、テンポが遅いほどずれの絶対量が大きくなることです。66.7%でも、テンポ120では約41.7ミリ秒、テンポ90では約55.6ミリ秒です。比率は「ペアに対する割合」なので、ペアが長くなればずれも比例して大きくなります。

2つ目は、ずれの大きさの感覚です。25ミリ秒前後は、意識して聞くと「少し揺れている」と分かる程度の差です。この数字は計算結果であって、聞こえ方の実験結果ではありません。どの程度で「跳ねた」と感じるかは個人差があるので、後述の手順で自分の耳と数字を結びつけてみてください。

WAVE / WAVEの設計から読み取れること

確認済みの情報から言えることを整理します。WAVE / WAVEは、4つの音を16ステップに並べてループ再生するリズムスタジオです。パッド演奏の録音、テンポ、スウィング、トラックごとのミュート、3つのお手本、取り消しの機能があり、保存にも対応しています。狭い画面ではステップが横スクロールになります。

ここから、設計の意図として次のことが読み取れます。

  • テンポとスウィングが別々の設定として用意されています。テンポは拍の速さ、スウィングは拍の内側の配分、という役割分担と考えられます。
  • 16ステップという格子があるので、「隣り合う2ステップの配分を変える」という一般的な方式と相性が良い構造です。
  • トラックごとのミュートがあるので、1つのトラックだけを鳴らして間隔を観察しやすい作りです。

一方、次の点は確認済みの情報にありません。作品を開いて確かめることになります。

  • スウィングの値の範囲や段階数、表示の単位
  • 動くのが偶数番目のステップだけかどうか
  • すべてのトラックに同じように効くのか
  • 1ステップが16分音符に当たるのか
  • お手本3つがスウィングを使っているのか
  • スウィングの値が保存に含まれるのか

どれも、次の章の手順で確かめられます。「たぶんこうだろう」と思い込んで記事や作品紹介に書くのではなく、測った数字で裏づけてください。

自分で測る手順

問いは「WAVE / WAVEのスウィングを上げると、どのステップがどれだけ後ろへ動くか」です。

準備するもの

  • WAVE / WAVEを開いたパソコンまたは端末
  • 音を録音できるもの(パソコンの録音ソフト、端末の画面収録機能など。環境によって音の拾い方が違うので、事前に短く試し録りしてください)
  • 波形を表示して、位置をミリ秒単位で読める音声編集ソフト
  • 表計算ソフトか、紙とペン

手順

  1. 1つのトラックだけを使います。全16ステップにその音を置き、ほかのトラックはミュート機能で消します。
  2. テンポを固定して、数値を記録しておきます。
  3. スウィングを最小にして、ループを3周以上録音します。
  4. スウィングを中間にして、同じ条件で録音します。
  5. スウィングを最大にして、同じ条件で録音します。
  6. 各録音で、隣り合う音の立ち上がり位置を波形から読み取り、間隔をミリ秒で表に記録します。1周につき16個の間隔が取れます。3周分を並べ、周ごとのばらつきも見ます。
  7. テンポを別の値に変え、手順3〜6を繰り返します。

スウィング最小のときのステップ間隔を4倍すると、1拍の長さになります。これがテンポの数字と合うかを見れば、1ステップが16分音符かどうかも確かめられます。

計算の見本を耳で確かめる

実測と比べるために、理論どおりに並べた音を自分で鳴らせます。次のコードをHTMLファイルとして保存してブラウザで開き、ボタンを押すと16個のクリック音が鳴ります。swingの値を0.5、0.6、0.667と変えて聞き比べ、前の章の表と照らしてみてください。

html
<button id="go">鳴らす</button>
<script>
const bpm = 120, swing = 0.6; // 0.5で均等
document.getElementById("go").onclick = () => {
  const ctx = new AudioContext();
  const pair = 60 / bpm / 2;        // ペアの長さ(秒)
  const t0 = ctx.currentTime + 0.1;
  const times = [];
  for (let i = 0; i < 16; i++) {
    const base = t0 + Math.floor(i / 2) * pair;
    const t = base + (i % 2 ? pair * swing : 0);
    times.push(t);
    const osc = ctx.createOscillator();
    const gain = ctx.createGain();
    osc.frequency.value = 1000;
    gain.gain.setValueAtTime(0.3, t);
    gain.gain.exponentialRampToValueAtTime(0.001, t + 0.05);
    osc.connect(gain).connect(ctx.destination);
    osc.start(t);
    osc.stop(t + 0.06);
  }
  console.log(times.slice(1).map((x, i) => Math.round((x - times[i]) * 1000)));
};
</script>

ブラウザの開発者ツールのコンソールには、隣り合う音の間隔がミリ秒で出力されます。長・短・長・短と並ぶ様子を、自分の計測表と比べられます。

結果の読み方と起こりやすい誤り

測った間隔の並びを、次の基準で読んでください。

  • スウィング最小で全間隔がほぼ等しければ、基準の格子は均等です。等しくなければ、録音環境か測り方を疑います。
  • スウィングを上げたとき、長・短・長・短の交互になれば、ペアの中の配分を変える方式と考えられます。
  • ペアの合計(長い間隔と短い間隔の和)が、スウィング最小のときの間隔の2倍とほぼ同じなら、拍の位置は保たれています。
  • 合計が増えている、あるいはループ全体が長くなっているなら、配分ではなく別の仕組みで動いている可能性があります。
  • テンポを変えたとき、ずれの絶対量がテンポに応じて変わるなら比率型です。変わらないなら固定時間型です。前の章の表と比べて判断してください。
  • 他のトラックでも同じ測定をして、同じ動きかを確認します。トラックごとに違う場合は、そのこと自体が設計の特徴です。

起こりやすい誤りもあります。

  • 波形の立ち上がり位置を、山の頂点で読んでしまうことです。音の種類によって頂点までの時間が違うので、立ち上がりの開始点で統一してください。
  • 1周だけで結論を出すことです。再生のタイミングには小さなゆらぎがありうるので、3周以上の平均で見てください。
  • 録音の遅れ(レイテンシ)を気にしすぎることです。録音全体が一定の遅れを持っていても、音と音の間隔はほとんど影響を受けません。見るのは位置ではなく間隔です。
  • 耳の印象と数字を混ぜることです。「跳ねて聞こえた」という感想と、「ずれが何ミリ秒だった」という測定値は、別々に記録してください。

最後に、保存への影響も見ておきます。WAVE / WAVEは保存に対応していますが、スウィングの値が保存に含まれるかは確認済み事項にありません。スウィングを変えて再読み込みし、元に戻っているかを確かめてください。

次の行動

16ステップに同じ音を置き、スウィングを最小・中間・最大の3段階で録音して、隣り合う音の間隔を表にしてみてください。次にテンポを変えて同じ表をもう1つ作ると、「比率で動くのか、固定時間で動くのか」が数字で見えてきます。作った表を見ながら、作品のお手本3つを再生して、耳で感じた跳ね方と数字を照らし合わせてみるのもおすすめです。