-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
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("
play(track)
print("✅ Phát xong!")