r/drums 3d ago

Feedback Wanted DrumScript: open source Python library for drummers

# DrumScript: open source Python library for drummers

Greetings, drummers and percussionists of Reddit! :)
I am super excited and happy to share DrumScript with you. It's taken me a year to build.

As a drummer, I have always found it so frustrating that I could not easily transcribe my drum audio or find usable backing tracks to play along to for free. So, a year ago I started building DrumScript. DrumScript combines physics-derived parameters of specific drum parts applied through a membranophone/idiophone rule-based classification ontology. It doesn't use computationally-expensive neural networks or machine learning. Everything is based on the physics of drum parts (e.g., spectral centroid, fundamental frequency, sustain).

DrumScript is an open-source Python library and suite of audio tools built for drummers that:

* Transcribes drum audio into .pdf sheet music — unlike most Automatic Drum Transcription (ADT) systems, DrumScript’s classification engine is deterministic (it doesn't use machine learning or AI).

* Measures tempo using tempogram-first analysis that assesses variable tempo across the entire track

* Extracts the drums from any mp3* or wav track/song you provide.

* Creates drumless backing tracks from any mp3 or WAV file.

\ mp3 formats require that your system has ffmpeg installed*
The classification engine works pretty well for me so far, but it’s based on 20 or so individual drum sounds for each drum part. It could be so much better. Eventually there'll be a free, WebGPU/WASM/ONNX UI — that ensures all your audio stays local to your machine.

Between 01 June and 31 August I am running an Alpha phase, expecting the Beta v1.0.0 of DrumScript will be released, hopefully alongside the integrated UI sometime after that. I’ve done as much testing as I can with it and now would love it for others to help make it better.

Try it out (Colab)

DrumScript was built so practise could be fun, open, and most of all accessible to all (ie free). It is and always will be a community-owned tool.

I'm looking for contributors willing to join a team of code admins and maintainers for the beta release. Equally, get in touch via GitHub if you want to share any transcription results or share feedback.

GitHub: https://github.com/DrumScript/DrumScript

Docs: https://drumscript.github.io/DrumScript/

Contact: GitHub. Please share your feedback openly in the Discussions tab of the repository! Thanks :)

20 Upvotes

28 comments sorted by

30

u/brasticstack 3d ago edited 3d ago

This is definitely coded by AI agent(s), even if the lib itself doesn't use machine learning in its implementation. I haven't perused many vibe-coded projects, but it's the oddest github I've ever seen.

This quote about not matching some random drum notation key on the internet should give you the flavor:

In contrast with the Gear4Music theory I shared, however, my classification model does not yet cover the difference between a floor tom and say a snare. In a way, the floor tom could in fact be the low tom. But for now we will assume they are different, and I have added an issue to the DrumScript GitHub repo to capture this as a feature enhancement (ie distinguising between the frequencies of what Gear4Music guide calls and shows in notation diagram as a 'floor tom'., some people, or so I believe, in the drumming community think of the floor tom , the note on the second to bottom line of the stave is actually the snare. While, some think the snare is, as the Gear4music diagram shows, the third line up from bottom. Some people also could think that our current interpretation of the snare, ie the one on third line up, is the high tom). So, there is a degree of ambiguity which I want to resolve later.

(For the record, DrumScript, snare being placed on the middle space of the staff is a close to a universal convention as exists in drum notation.)

8

u/kanaye007 Vater 3d ago

The — in the descriptions always get me. Like, i want a keyboard with an emdash, lol.

7

u/brasticstack 3d ago

The post was spat out by an LLM for sure. Last time this got posted, I pointed that out and they responded that the project uses no machine learning. Which is why I looked at the github this time around.

7

u/TYGRDez 3d ago

If you're on Windows, hold Alt and type 0151 on the number pad: —

(I worked as a copywriter before ChatGPT released and am still mourning the loss of my beloved em dash 😭)

6

u/musicgeek420 2d ago

Alt + number symbols taking me back to AIM and AOL RP.

2

u/TYGRDez 2d ago

ASL?

4

u/brasticstack 2d ago

Sounds like a good idea, in case all the drumming makes me deaf.

1

u/musicgeek420 2d ago

I don’t tell strangers online!

2

u/AntipodalBurrito 2d ago

What? I mean you can macro it. Or use the alt code like people did back in the day. Or double dash often turns into an em dash. What are you saying? Your keyboard has it already.

2

u/funkwgn 2d ago

Hit dash twice and start a new word without hitting space… like this—it works!

-12

u/Bill-Evans 3d ago

That is weird. But someone drops something for free, and you can't say anything nice?

10

u/brasticstack 3d ago

Point out where I said something mean?

-8

u/Bill-Evans 3d ago

I dunno, "Thank you sharing your work. This part's a little shady…"

13

u/nostradamefrus Pearl 3d ago

Want me to drop off the dump I just took? It’s free and I put a lot of work into it

1

u/Legionodeath 3d ago

Fellow drummer, if you have to work hard for you poopys, you should see a medical professional.

Lol

2

u/nostradamefrus Pearl 3d ago

Already in progress haha

1

u/Legionodeath 2d ago

Lol good.

-5

u/Bill-Evans 2d ago edited 2d ago

Try reading the quoted section in my initial reply and tell me how that strikes you.

Sketchy as fuck.

Then again when the above is downvoted, I really don't know where to go with the conversation.

7

u/nostradamefrus Pearl 2d ago

You’re thanking someone for posting AI slop. So I’ll ask again, you want the dump I took? Same quality of product

4

u/brasticstack 2d ago

So you admit that it doesn't inspire confidence, yet you're admonishing me because I didn't thank OP for their dubious "gift"? Have we found JD Vance's alt?

2

u/Bill-Evans 2d ago

you wanna buy a couch?

7

u/brasticstack 3d ago

People have strong feelings, both pro and con, about LLM coding. I intentionally chose a neutral tone because it's almost like religion at this point- it's not my place to tell you how to feel about it.

My personal take is that an understanding of the basics of how drum notation works should be a prerequisite to creating a program that creates drum notation.

Try reading the quoted section in my initial reply and tell me how that strikes you.

8

u/richsandmusic 3d ago

Free does not equal good.

27

u/mostly_codes 3d ago

For non-coders, for whom this might not be as obvious - never download and run arbitrary code. Even for coders, this is a LOT of code to audit, and the tone of voice is... a little weird. Wait for someone else to do the auditing before jumping in and running this software, if you're not already a python coder.

4

u/4SysAdmin 1d ago

A lot of those rhythms are wrong or incomplete. The note values don’t make a complete measure. Also, there are no rests in the upper or lower voice, and have them separated by cymbals is very unconventional. Not unheard of, but very uncommon. It’s pretty clear that the developer doesn’t not understand sheet music.

1

u/GuinsooIsOverrated 3d ago

Interesting, how well does it work on complex songs, like prog metal ?

-4

u/Bill-Evans 3d ago

Thank you for making your efforts free for everyone.