Create a Drumless Backing Track#

Want to practise along to a song without the original drums getting in the way?

DrumScript can create a drumless backing track from any audio file. It uses Demucs to separate the song into four stems (drums, bass, vocals, other), then re-mixes everything except the drums into a single file.

The result is a clean play-along track with bass, vocals, and instruments intact — and no drums.

Under the hood, ds.extract_stems(drumless=True) calls Demucs for source separation, then uses numpy-based element-wise summation to mix the non-drum stems back together. WAV output is ffmpeg-free; MP3 output requires ffmpeg.

(Note: We are using a copyright-free synthetic track for this demonstration.)


from IPython.display import Audio, display

import drumscript as ds
# 1. Load audio
audio_file_path = "audio/test_track_1.wav"
audio_file = ds.load_audio(audio_file_path)
print("Audio loaded!")
display(Audio(audio_file_path))
# 2. Create a drumless backing track
# This isolates all stems except the drums and mixes them together.
backing_track = ds.extract_stems(audio_path=audio_file_path, output_dir="backing_track/", output_format="wav", drumless=True)
# 3. Playback!
# Workaround: extract_stems currently returns the drum path
# even with drumless=True. Manually find the backing track.
import os

backing_dir = os.path.join("backing_track", "test_track_1")
backing_files = [f for f in os.listdir(backing_dir) if "no_drums" in f]

if backing_files:
    backing_path = os.path.join(backing_dir, backing_files[0])
    print("Created backing track:", backing_path)
    display(Audio(backing_path))
else:
    print("No backing track found — check the output directory.")