music_processor.py 文件源码

python
阅读 25 收藏 0 点赞 0 评论 0

项目:aurora-sdk-mac 作者: nanoleaf 项目源码 文件源码
def process_music_data(data_in, is_fft, is_energy, n_output_bins, n_fft, is_visual):
    # length is len(data_in)/4
    data_np = np.fromstring(data_in, 'Float32')

    # visualizer
    if is_visual:
        visualizer(data_np)

    # energy
    if is_energy:
        energy = np.abs(data_np) ** 2
        energy = energy.sum()
        energy *= 2**5
        energy_output = energy.astype(np.uint16)
    else:
        energy_output = np.zeros(2).astype(np.uint16)

    # fft
    if is_fft:
        global sample_rate

        # down-sample by 4, with filtering, energy not scaled
        data_np = librosa.resample(data_np,
                                   sample_rate,
                                   sample_rate/4,
                                   res_type='kaiser_fast')

        # short time fft over n_fft samples
        fft_data = librosa.stft(data_np, n_fft,
                                hop_length=n_fft,
                                center=False)

        fft_data_mag = np.abs(fft_data[0:n_fft//2]) ** 2

        # magnitude scaling
        fft_data_mag *= 2**3
        fft_output = get_output_fft_bins(fft_data_mag, n_output_bins)
        fft_output = fft_output.astype(np.uint8)
    else:
        fft_output = np.zeros(n_output_bins).astype(np.uint8)

    return fft_output, energy_output
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号