111
from pydub import AudioSegment from pydub.playback import play
Load các sample âm thanh
kick = AudioSegment.from_file("kick.wav") snare = AudioSegment.from_file("snare.wav") hihat = AudioSegment.from_file("hihat.wav")
Cấu hình thời lượng cho 1 bar
bpm = 120 # tốc độ beat beat_duration_ms = int((60 / bpm) * 1000) # 1 nốt đen = 500ms ở 120bpm
bar_length = 4 * beat_duration_ms # 4 nốt đen = 1 bar = 2000ms
Tạo 1 ô nhịp trống
bar = AudioSegment.silent(duration=bar_length)
Thêm kick và snare
bar = bar.overlay(kick, position=0) # beat 1 bar = bar.overlay(snare, position=beat_duration_ms) # beat 2 bar = bar.overlay(kick, position=2 * beat_duration_ms) # beat 3 bar = bar.overlay(snare, position=3 * beat_duration_ms) # beat 4
Thêm hi-hat mỗi 1/8 (250ms)
for i in range(0, bar_length, beat_duration_ms // 2): bar = bar.overlay(hihat - 6, position=i)
Tạo track lặp lại
track = bar * 8 # 8 bars
Phát beat
print("▶️ Đang phát beat kiểu 'buông hàng'...") play(track) print("✅ Phát xong!")
Source: jiaaro/pydub