ドラムマシンの16ステップを15にすると、リズムはどう聞こえるか
遊びを見つける執筆にClaudeを使用しています。

4つのキックが等間隔に並ぶ16ステップのループから、最後の1ステップだけを切り落として15ステップにする場面を考えてみます。キックの間隔は「4・4・4・4」から「4・4・4・3」に変わります。たった1ステップの差ですが、ループの頭に戻る場所が1つ手前になります。 この記事は、その差を耳でどう感じるかを、自分で確かめるための実験の設計書です。結果は書きません。「手拍子が合うか」「どこで頭が分からなくなるか」は、聴く人、テンポ、使う音によって変わるためです。読者が同じ手順を踏めば、自分の耳で答えが出る形にします。 舞台は、4つの音を16ステップに並べてループ再生するリズムスタジオ「WAVE / WAVE」です。ただし、この作品に15ステップへ切り替える設定があるかどうかは、確認できている範囲では分かりません。そこで「WAVE / WAVEで16ステップを使い切るケース」「最後の1ステップを空けるケース」と、短いコードで作る「本当に15で回るケース」の3条件を比べます。
16と15の違いを、数字で先に整理する
比べる前に、何が変わるのかを数えておきます。1ステップを16分音符とし、テンポを100BPM(1分間に100拍)とします。1拍は4ステップなので、1ステップは60÷100÷4=0.15秒です。
- 16ステップの1周は、0.15×16=2.4秒です。
- 15ステップの1周は、0.15×15=2.25秒です。
ここで、拍子の見え方も整理します。
- A:16ステップ、1周の長さ:16、キックの間隔(ステップ):4・4・4・4、ループの周期:16
- B:15ステップ分だけ使い、最後を空ける、1周の長さ:16、キックの間隔(ステップ):4・4・4・4(最後の1つは無音)、ループの周期:16
- C:本当に15で回す、1周の長さ:15、キックの間隔(ステップ):4・4・4・3、ループの周期:15
条件Bは、見た目は15ステップ分のパターンでも、ループの長さは16のままです。空白を1つ含んだ16拍子です。条件Cは、1周そのものが15で、頭が1ステップ早く戻ってきます。BとCは似ていますが、問いが違います。Bは「最後に休符が入ると聞こえ方が変わるか」、Cは「周期そのものが変わると聞こえ方が変わるか」を確かめます。
準備するもの
用意するのは次の4つです。
- WAVE / WAVE(ブラウザで開きます。保存があるので、作ったパターンは後から開き直せます)
- ヘッドホンまたはスピーカー(3条件で同じ機器を使います)
- 記録用のメモ(表は後述します)
- 条件Cを鳴らす小さなHTMLファイル
条件Cは、次のコードを 15.html のような名前で保存し、ブラウザで開けば動きます。外部ライブラリは不要で、ステップ数とテンポの欄を変えるだけで、16にも15にも戻せます。
<!doctype html>
<meta charset="utf-8">
<button id="b">開始/停止</button>
<label>ステップ数 <input id="n" type="number" value="15" min="8" max="16"></label>
<label>テンポ(BPM) <input id="t" type="number" value="100" min="60" max="180"></label>
<script>
let ctx, timer = 0, i = 0, when = 0;
const K = [0, 4, 8, 12], S = [4, 12];
function hit(t, f, d, g, type) {
const o = ctx.createOscillator(), v = ctx.createGain();
o.type = type; o.frequency.value = f;
v.gain.setValueAtTime(g, t);
v.gain.exponentialRampToValueAtTime(0.001, t + d);
o.connect(v); v.connect(ctx.destination);
o.start(t); o.stop(t + d);
}
function tick() {
const n = +document.getElementById("n").value;
const len = 60 / +document.getElementById("t").value / 4;
while (when < ctx.currentTime + 0.2) {
const s = i % n;
if (K.includes(s)) hit(when, 80, 0.2, 0.9, "sine");
if (S.includes(s)) hit(when, 220, 0.1, 0.4, "square");
hit(when, 2000, 0.03, s % 4 ? 0.05 : 0.12, "square");
when += len; i++;
}
}
document.getElementById("b").onclick = () => {
if (timer) { clearInterval(timer); timer = 0; return; }
ctx = ctx || new AudioContext();
ctx.resume(); i = 0; when = ctx.currentTime + 0.1;
timer = setInterval(tick, 25);
};
</script>キックを0・4・8・12、スネアを4・12、ハットを全ステップに置いた最小のパターンです。ステップ数を15にすると、12番目のキックの次は2ステップ先ではなく、3ステップ先で頭のキックに戻ります。
手順:3条件を同じ土俵で聴き比べる
1. 条件Aを作る
WAVE / WAVEで、4つ打ちに近い単純なパターンを作ります。3つのお手本から近いものを選んでもかまいません。お手本の読み込み方や、ステップを増減させる操作は、作品を開いて確かめてください。キック、スネア、ハットの位置は、上のコードと同じ位置(キックは1・5・9・13番目、スネアは5・13番目)にそろえると、条件Cとの比較が公平になります。ここでのステップ番号は、1から数えた場合の位置です。
テンポは100BPM前後に固定し、スウィング(跳ねる揺れ)は最初はオフにします。条件ごとに変える要素は、ステップ数だけにするためです。
2. 条件Bを作る
条件Aのパターンから、16番目のステップのハットなど、鳴っている音をすべて消します。ループの長さは16のままなので、頭に戻る位置は条件Aと同じです。その代わり、最後の1つだけ無音になります。
3. 条件Cを鳴らす
保存したHTMLを開き、ステップ数を15、テンポを条件AとBと同じ値にして、開始を押します。コードが鳴らす音色はWAVE / WAVEと違います。音色による差を避けたいときは、WAVE / WAVEの音色にできるだけ近い、低音・中音・高音の3つのトラックを選んで比べてください。
4. 順番と回数を決める
聴く順番は、A→B→Cの固定にしません。たとえば1回目をA→B→C、2回目をC→A→B、3回目をB→C→Aとし、各条件を合計3回聴きます。1回の長さは、ループ12周ほど(約30秒)を目安にします。最初の数周は「何が起きているか」を探す時間になりやすいので、後半の数周で評価します。
5. 記録を取る
1回聴いたら、1分以内に次の表をメモします。
- 条件(A/B/C)、記録のしかた:他の人に聴いてもらう場合は、条件名を伏せて記号だけで記録します
- 手拍子、記録のしかた:4拍子で手拍子をして、ずれずに最後まで続けられた周数を記録します
- 頭の分かりやすさ、記録のしかた:ループの頭がどこか、1〜5点で記録します
- つんのめり感、記録のしかた:次の周に入るときの違和感を、1〜5点で記録します
- 一言メモ、記録のしかた:「急に戻る」「休んだ」など、感じたことを短く書きます
点数は感覚で構いませんが、評価の基準は3回の間で変えないでください。
結果の読み方
数字がそろったら、条件ごとに平均を出し、次の順に読みます。
AとCを比べます。 手拍子を続けられた周数や頭の分かりやすさに差が出たなら、1ステップの違いが体感できる大きさだったと判断できます。差がほとんどないときは、テンポを速くしたり、ハットを消してキックとスネアだけにしたりして、条件を単純にしてもう一度聴きます。ハットが刻みの手がかりになって、周期の違いを隠している可能性があります。
BとCを比べます。 「頭に戻る場所」と「最後の休符」のどちらが違和感の原因か、ここで分かります。Bの違和感が小さくCの違和感が大きいなら、休符よりも周期が変わることの影響が大きいと読めます。逆にBの違和感がCと同じくらい大きいなら、違和感の主な原因は、16拍の中に生まれた不規則な間にあると考えられます。
Aと「慣れた後のC」を比べます。 Cを聴く回数を重ねると、違和感が変化するかもしれません。1回目と3回目の点数を並べて、変化があったかを見ます。変化が出た場合、それは15拍子そのものの性質というより、耳が慣れる過程の可能性があります。
どの結果でも、3回の試行だけで「15は聴きにくい」「15は気持ちいい」と一般化しないでください。ここで分かるのは、自分の耳と、このパターン、このテンポでの傾向です。
誤りやすい点
- 条件Bを15ステップだと思い込む:Bは周期16のままです。休符が入っただけなので、Cとは別の条件として扱います。
- テンポが違うまま比べる:15ステップは1周が短いため、体感が速くなったと感じることがあります。数字のテンポを必ずそろえます。
- 音量や音色が違う:コードの音とWAVE / WAVEの音は別物です。音色の違いを見たいのではないので、3条件のうちどの比較でも、同じ音の組み合わせで比べるのが理想です。条件Cだけ別の音になってしまうなら、条件Aも同じコードで鳴らす(ステップ数を16にする)方法も使えます。
- ミュートを使わず要素が多すぎる:トラックごとのミュートが使えます。まずキックだけ、次にキックとスネアだけ、と減らして聴くと、どの音が周期の手がかりになっているかが分かります。
- スウィングが入ったまま:スウィングは1ステップごとの長さを不均一にするので、周期の違いと区別がつかなくなります。最初はオフで始めます。
- 聴く順番が毎回同じ:最初に聴いた条件が基準になってしまいます。順番を入れ替えます。
- ブラウザの音の遅れを周期の違いと取り違える:開始直後の数周は、音の出だしが不安定なことがあります。評価は後半の周に限ります。
次の行動
まずWAVE / WAVEで、キックとスネアだけの16ステップのパターンを作り、2分ほど聴いてみてください。次に、16番目のステップを空にして条件Bを作り、最後に上のHTMLでステップ数を15にして条件Cを聴きます。3回分の記録表がそろったら、自分の耳が「どこで頭を見失うか」を一言で書き出してみましょう。

