有没有一种简单的方法来录制几秒钟的声音并将其转换为频率?我有一个USB麦克风和一个覆盆子pi 2 B.
在发布的文件(convert2note.py)中,我想知道如何使f等于从麦克风获得的频率. 这是该程序到目前为止的样子
#d=69+12*log(2)*(f/440)
#d is midi, f is frequency
import math
f=raw_input("Type the frequency to be converted to midi: ")
d=69+(12*math.log(float(f)/440))/(math.log(2))
d=round(int(d))
notes = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"]
print notes[d % len(notes)]
Run Code Online (Sandbox Code Playgroud)
非常感谢提前:D
有没有办法缩短这段代码?它运作良好,但必须有一种方法,使它看起来更好.
#d=69+12*log(2)*(f/440)
#d is midi, f is frequency
import math
f=raw_input("Type the frequency to be converted to midi: ")
d=69+(12*math.log(float(f)/440))/(math.log(2))
d=round(d)
Run Code Online (Sandbox Code Playgroud)
上部是转换器,下部区域是需要缩短的区域......
if d==127:
print("G")
elif d==126:
print("F#")
elif d==125:
print("F")
elif d==124:
print("E")
elif d==123:
print("D#")
elif d==122:
print("D")
elif d==121:
print("C#")
elif d==120:
print("C")
elif d==119:
print("B")
elif d==118:
print("A#")
elif d==117:
print("A")
elif d==116:
print("G#")
elif d==115:
print("G")
elif d==114:
print("F#")
elif d==113:
print("F")
elif d==112:
print("E")
elif d==111:
print("D#")
elif d==110:
print("D")
elif d==109:
print("C#")
elif …Run Code Online (Sandbox Code Playgroud) python ×2
audio ×1
frequency ×1
if-statement ×1
optimization ×1
performance ×1
raspberry-pi ×1