Idea: auto-generating the pitch LFO from a reference kick
Like most of you, when I'm rebuilding a sampled kick in Serum 2, I end up drawing the pitch contour into an LFO by eye and ear, nudging points until it sits right against the sample. It works, but it's slow and never quite exact.
I'm thinking of scripting it instead. Feed in the kick WAV, extract the pitch contour, reduce it to a handful of LFO breakpoints, and write them straight into a Serum 2 preset along with the LFO time, mod depth and root note.
The preset side is more feasible than I expected. Serum 2's .SerumPreset is a Zstd-compressed CBOR document inside an "XferJson" wrapper, and it's been reverse-engineered:
- serum-preset-packager by Kenneth Wussmann unpacks presets to JSON and repacks them: https://github.com/KennethWussmann/serum-preset-packager
- PySerum is a Python DSL built on top of it for generating presets, including mod routings: https://github.com/ThatMajd/PySerum
- serum2-preset-loader converts presets into state blobs for DawDreamer, so you can render them to audio without opening Serum. That's handy for automatically comparing the result against the original sample: https://pypi.org/project/serum2-preset-loader/
The plan would be template-based. Build the kick patch once with the routing, unpack it to JSON, and have the script write the analysed LFO points, mod depth, LFO rate and tuning into it. The format is unofficial, so a Serum update could break it.
Before I put time into it, would anyone here actually use this?
One more thought: Owen, I believe you know the Serum 2 developers personally? If people here think the idea has legs, would you be up for running it past them? Even a quick view on whether something like "extract pitch envelope from sample" could ever be native, or whether they'd be open to the preset or LFO shape format being documented, would save a lot of reverse-engineering guesswork.
UPDATE 14-10-2026
I've finished my initial Alpha test of this.... I've only been using 10 samples, the next step is to use a much larger sample set, I'll start that testing today.
If anyone is interested in playing with this, I can give you access to a private GitHub repo. PM me, just need your GitHub account to invite you
Update 17-10-2026
Basically, I've run out of ideas on how to make this better, but the question remains: DOES IT NEED TO BE BETTER?
I posted my latest research report below.
Thanks to everyone who requested access. Please read the report and let me know if you have any ideas to improve the tooling. I've accepted PRs if you want to take a go yourselves.
Update 18-10-2026
Updated the tool with the Kick technique Owen covered on Thursday's call. New report below
Update 20-10-2026
Come and play....
OK, so I have a hosted version of the tool for people to play with. The UI and analytics run in my homelab K8S cluster, but the Serum2 VST runs on my studio machine, since I didn't want to add Windows nodes and images to my cluster. And yes, I know there is a Linux version of Serum, but that is considered Beta, and that would just add more problems.
It's running off my licence, which I'm not sure I'm allowed to use for these use cases, but since this is a closed beta and I don't plan to host it long-term, I'll beg for forgiveness on this one...
To use it, you will need an account, and because I'm super anal about security, you will also need an Authenticator app on your phone for MFA. If you're not up for that, then don't ask for access.
PM me for access.
See the user guide posted below
7
42 comments
Darren Frewin
6
Idea: auto-generating the pitch LFO from a reference kick
skool.com/owenthegeek
Make Your Best Music
Leaderboard (30-day)
Powered by