因为在做一个音游...所以通过强大的librosa库实现了一些功能,下面是我定义的一个Music类
# 定义音乐类
import pygame
import librosa
class Music(object):
def __init__(self, path):
self.path = path
# 播放音乐
def play(self):
pygame.mixer.init()
pygame.mixer.music.load(self.path)
pygame.mixer.music.play()
# 返回歌曲节拍总数 beats_time
def beats(self):
y, sr = librosa.load(self.path)
tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr)
return tempo
# 得出歌曲时长times 获取到的时长单位为秒
def times(self):
return librosa.get_duration(filename=self.path) / 60
# 计算歌曲的bpm
def bpm(self):
beats_times = self.beats() / self.times()
return beats_times
# 计算每拍的时间间隔
def interval(self):
times = 60 / self.bpm()
return times