gpt4 book ai didi

python - 在 Python 中将频率转换为音符

转载 作者:行者123 更新时间:2023-12-05 00:55:27 27 4
gpt4 key购买 nike

我正在尝试将频率值转换为注释,例如 400 hz 打印“A4”的输入,但我不想在我的代码中编写完整的频率表。有没有办法做到这一点?

最佳答案

基于 Wikipedia 上的转换函数:

import math

def freq_to_note(freq):
notes = ['A', 'A#', 'B', 'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#']

note_number = 12 * math.log2(freq / 440) + 49
note_number = round(note_number)

note = (note_number - 1 ) % len(notes)
note = notes[note]

octave = (note_number + 8 ) // len(notes)

return note, octave

示例:freq_to_note(440) 返回 ('A', 4)

另一种方法是使用可用的软件包。
你可以使用 librosa 包:

import librosa

librosa.hz_to_note(440.0)
# will return ['A5']

或者我写的一个小包,叫freq_note_converter:

import freq_note_converter

freq_note_converter.from_freq(440).note
# will return 'A'

顺便说一句,它们都支持四舍五入,例如,430 或 450 仍会返回 'A'。

关于python - 在 Python 中将频率转换为音符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64505024/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com