如何跟随鼓手
How to Follow a Drummer

原始链接: https://drummate.app/blog/how-to-follow-a-drummer

电子音乐长期以来迫使人类屈从于僵硬的机器节拍。*DrumMate* 的创作者 Sashyo 认为,真正具有“音乐家”特质的机器应该反过来跟随鼓手。 将鼓点视为指令(如触发器或简单的敲击测速输入)是行不通的,因为鼓手演奏的是音乐而非节拍器;切分音、过门和休止符会干扰标准的节拍跟踪器。为此,Sashyo 开发了一种软件锁相环,将鼓点视为“证据”而非直接指令。该系统使用一种灵活的自由运行的时钟来预测未来的节拍,从而允许自然的节奏转换和“弯曲”,而不是突兀的跳变。 至关重要的是,该系统引入了“滑行”功能——在复杂的过门期间维持当前的节奏预估,而不是在置信度下降时中断同步。通过根据预测来安排音符,而不是对单个鼓点做出反应,该系统消除了延迟,使机器能够精准地在节拍上与鼓手合拍。归根结底,该项目旨在超越量化、机器主导的音乐时代,通过教导技术去倾听、预判并模仿定义人类表演的有机且相互关联的节奏偏差。

这篇 Hacker News 帖子讨论了一篇题为“如何跟随鼓手”的文章,文中详细介绍了开发一款利用人工智能实现数字乐队与现场电子鼓手同步的应用程序所面临的技术挑战。作者解释了起始权重(onset weighting)、强拍推断(downbeat inference)以及音频延迟管理等复杂问题。 然而,大部分讨论集中在关于人工智能生成内容的元讨论上。许多用户对人工智能撰写的文章泛滥表示不满,认为其内容同质化、缺乏人类意图,且表现出对读者时间的不尊重。批评者指出了某些“AI 特征”——例如简短且富有节奏感的句式结构——作为其被过度使用的证据。 反之,一些评论者则持反对意见,认为只要内容清晰连贯,其来源并不重要。他们主张,抱怨人工智能的使用已成为该平台上一种令人疲惫且流于形式的趋势。尽管存在争议,原作者仍积极参与讨论,提供了关于该应用程序开发的各种技术见解,并回答了有关项目内部逻辑的问题。
相关文章

原文
DRUMMATE

Teaching machines the musicianly thing

Almost every electronic music setup makes the human follow the machine. The click is the boss. The sequencer is the boss. The DAW timeline is the boss. Speed up into a chorus and the machine does not care; it just keeps going, and now you are wrong.

I spent the last while building the opposite: a system where the drummer is the boss and everything else follows - tempo, dynamics, feel, fills, endings. It started as an Android app built with a drummer I met online, but the core problem is platform-agnostic and it turned out to be much more interesting than I expected. This post is the writeup, including everything I got wrong.

Hits are not a clock

The first idea everyone has (including me): take the kick drum, turn each hit into a pulse, feed that to your clock input. Done, right?

A real kick pattern is not a clock. Play anything with syncopation and the pulses land on offbeats. Play a fill and you fire six pulses in half a beat. Play a section where the kick lays out for a bar and your clock stops dead. A drummer playing a perfectly steady tempo still produces wildly uneven hit intervals, because the hits are music, not a metronome.

Tap-tempo boxes have the same problem one layer up: most of them just average recent intervals, so one fill yanks the tempo around. And resetting your sequencer's phase on every kick - another popular idea - believes every kick is beat one, which is perfect right up until the drummer syncopates and your whole rig snaps to the wrong downbeat mid-groove.

A hit should be treated as evidence, not as a command. Following a drummer, not obeying one.

Division is free, multiplication is prediction

Here is an asymmetry that took me embarrassingly long to see. Clock division is causal: every incoming pulse just advances a counter, tempo never needs to exist, and it works at any speed. This is why a modular clock divider fed from a drum trigger feels bulletproof.

Multiplication is different. To fire the second 16th note between two hits, you need an opinion about when the next hit will land. Anything that ratchets, arpeggiates, or runs a synced delay is secretly carrying a tempo model. The cheap ones assume a BPM floor and fall apart below it. The honest ones have to solve the actual problem:

Given the hits so far, where is the grid?

The estimation layer

What worked for me is a free-running clock that is steered by the playing rather than driven by it. A software phase-locked loop with a beat-aware front end:

  • Hits arrive as timestamped onsets.
  • The tracker fits them against a grid hypothesis: a period (tempo) and a phase (where beat one is), with the downbeat inferred from accent patterns across kick and snare.
  • Each onset that agrees with the hypothesis nudges the clock proportionally. Onsets that disagree - fills, syncopation, ornaments - are mostly ignored. Confidence builds when hits keep landing where the clock predicted, and decays when they do not.
  • The clock never jumps. It bends. Tempo changes get smeared over about a bar, so everything downstream glides instead of lurching.

The tightrope is sensitivity. If the clock chases every hit, it eats the groove: the drummer's pocket - those deliberate, beautiful deviations - becomes tempo wobble. If it is too stiff, it misses a real push into a chorus. The rule that works: small deviations are feel, sustained drift is tempo. Lean on it for a bar and it comes with you. It will not flinch at one laid-back snare.

Worth noting what this is not: it is not the beat detection in DJ software. Traktor and Rekordbox get the whole track up front and can look ahead, run a second pass, fix mistakes. A live tracker only ever has the hits that already happened, and it has to commit in real time. No lookahead, no undo.

The bug that taught me the most

My worst version of this worked beautifully in testing and fell apart with a real drummer. The tracker would lock, the band would come in, and then - the moment the drummer did anything interesting - confidence would dip, the lock would flicker, and the band would vanish. Play, band starts, band stops, repeat. It felt broken in the most demoralizing way possible.

The fix was coasting: when confidence wobbles but hits are still arriving, the clock keeps running on its last good estimate and waits. It only actually stops on real silence. Obvious in hindsight. A human bandmate does exactly this: when the drummer gets weird for two bars, you do not stop playing, you hold your groove and listen harder.

If you are building any version of this - hardware or software - I suspect coasting is not optional. A follower that gives up during the interesting parts is worse than no follower at all.

Prediction, not reaction

One more architectural point that matters more than it looks: the system schedules ahead. Notes are placed against the clock's forecast of the next beats, not triggered in response to each hit. That keeps the audio latency budget out of the drummer's timing loop entirely - the band is not late-reacting to you, it is meeting you where you were both already going. This is also what a human rhythm section does. Nobody waits to hear beat one before playing beat one.

The part machines still lose

Two references that came out of discussing this with the modular community, both worth your time.

James Holden's human timing work (and the Hennig et al. research underneath it) shows that human timing deviations are not random jitter - they are correlated, drift with memory, which is exactly why quantized backing feels dead and why a follower's clock has to bend rather than snap. Holden's Max patches go further than mine: his machines and humans pull on each other, proper mutual entrainment, coupled oscillators. Mine is deliberately one-way - the drummer leads, the band never pushes back - because that is the premise. But his direction is fascinating.

And the humbling one: a human tapping along is still the best tempo tracker ever built. Brains predict, they do not react. You hear a fill coming and you are already leaning into where the one lands. No algorithm I know of touches that. The only reason to build this in software at all is that a drummer cannot be their own tapper - both hands are busy - and not every jam has a second human attached.

This whole problem is really about teaching the machines the musicianly thing, instead of making the humans play machinely - which is what click tracks and quantized backing have been doing to us for forty years.

Where this lives

I built these ideas into DrumMate, an Android app where you plug in an e-drum kit over USB MIDI and a generated band (bass, keys, lead) follows your tempo, dynamics, and feel - free beta at drummate.app. But most of what is written here applies to any version of the problem: a Eurorack module, a Max patch, a plugin. If you build one, I would genuinely love to compare notes - the community threads that sharpened half these ideas are the best part of working on this.


© 2026 Sashyo & Petty Vendetta. All rights reserved. · drummate.app · more posts

联系我们 contact @ memedata.com