小编Spe*_*ill的帖子

从Raspberry Pi上的麦克风读取频率

有没有一种简单的方法来录制几秒钟的声音并将其转换为频率?我有一个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

python audio frequency audio-recording raspberry-pi

2
推荐指数
1
解决办法
5460
查看次数

缩短代码

有没有办法缩短这段代码?它运作良好,但必须有一种方法,使它看起来更好.

#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 optimization performance if-statement

-1
推荐指数
1
解决办法
73
查看次数