最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

Raspberry Pi的吉他调谐器(2)

时间:2017-05-18 09:27来源:未知 作者:admin 点击:
步骤4:在代码的深度阐释 要运行的代码,只需运行Python freqdetect .py终端后,导航到你的代码中的目录。 停止程序,使用Ctrl+C组合键。 代码也改变了默认的一个,你可以收听一个选项。 当调整,通常音乐家使用440

步骤4:在代码的深度阐释

要运行的代码,只需运行“Python freqdetect .py”终端后,导航到你的代码中的目录。停止程序,使用Ctrl+C组合键。

代码也改变了默认的一个,你可以收听一个选项。当调整,通常音乐家使用440赫兹的调整。然而,不同风格的音乐可以定义一个不同的调整的结果,我们的程序允许你对任何一个在415赫兹到445赫兹的曲调。指定优化,运行:

Python freqdetect.py <一>一些频率

如果你没有代码的细节感兴趣,你可以跳到下一步!这是所有你需要的指导让它运行。

如果房间里很安静,你会看到很多的调试信息,随着“检测频率。按Ctrl-C退出。”然后,演唱或演奏一个E,A,G,D,B!你应该看到一股“你扮演的是一个__!”或“你__!”LED应把绿色调,红色和蓝色的锐利,平。

频率检测:

而真正的:
而_stream。get_read_available() < num_samples:睡眠(0.01)
 audio_data = fromstring(_stream。读(
 _stream。get_read_available()),D =短)[:] num_samples 
 #每个数据点是一个有符号的16位号码,所以我们可以规范分32×1024 
 normalized_data = audio_data 32768 
 
 W =汉明(2048)
强度= ABS(W * FFT(normalized_data))[ 2 ]:num_samples / 
 
如果输出:
 =强度[ 1 ]。argmax() + 1 
 #使用二次插值在最大
 adjfreq =!= Len(强度)1:
 Y0,Y1,Y2 = log(强度[ which-1:+ 2:])
 X1 =(Y2 - y0)* 5 /(2×y1 - y2 y0)
 #找到频率和输出:它
 thefreq =(+ X1)* sampling_rate / num_samples 
如果thefreq < min_frequency或thefreq > max_frequency:
 adjfreq = - 9999 
别的:
 thefreq =,* sampling_rate / num_samples 
如果thefreq >

这一部分是修改后的版本中发现的原源

这是频率检测的主要部分。我们可以用pyaudio,样品流的音频是由USB麦克风捕获。这是分配给audio_data,这是一个系列的16位数字。然而,16位数字是艰苦的工作,所以它是标准的漂浮物(主要是小数位)。

然后用<em>快速傅立叶变换</em>(<strong>FFT</strong>)来转换数据的样本空间。然后用汉明窗函数的卷积来隔离我们的样本(2048)。

一旦我们在样本空间的数据,我们寻找最大值在所有的样品和使用插值计算赫兹的频率。然后,这个值是检查是否高于我们的笔记我们想检测阈值(50赫兹,在这种情况下)。如果是的话,那价值传递到下一节。否则,我们输出一个可能的值作为一个标志。

分转换:

#美分转换
如果(adjfreq!= 9999):
 adjfreq = 1200 * log2(relative_freq / adjfreq)/ 100 
 adjfreq = adjfreq % 12 <BR>

如果值是有意义的(不是9999赫兹)将频率分。最后一节,我们检测到的频率数据的最高点。<trans data-src="If you were thinking, " wait="" a="" sec,="" doesn't="" that="" mean="" we="" might="" get="" harmonic="" as="" our="" frequency="" which="" was="" specifically="" mentioned="" in="" step="">如果你在想,“等一等,并不意味着我们可以为我们的频率是第一步特别提到得到调和吗?”你是<strong>绝对正确的</strong>。这就是仙来。

仙是一个计量单位,线性笔记就调谐频率,在我们的情况下,任何一个我们所选择的频率。一切都是那么的调谐频率relative_freq步骤一些整数的数量来衡量的。然而,这并不能完全解决我们的问题,作为一个低E2依然会迷路。较低的E2是29,而高E4是5。

为了解决这个问题,我们采取<em>模</em>这一步的距离相对于一个倍频程(12注)。这给了我们一个纯净的音符,不管它是因为我们线性数据距离从A.,所有的笔记可以用一个整数表示。全音阶的E可以减少距离,半步半步,走的是从(这恰好是5:E,F,G,G F #,#,A)。关于谐波的思维,他们都是一些整数倍的根本。因此,乘以整数不会改变的距离,由模产生的余数是相同的。整洁的!

这分转换通过案例陈述。

案例陈述:

<P> #案例陈述<BR>如果ABS(adjfreq - note_e4)<1:
 
 #调E 
如果ABS(adjfreq - note_e4)<0.1:
打印(“你扮演一个E
 GPIO输出(5,GPIO。低)
 GPIO输出(6,GPIO。低)
 GPIO输出(13,GPIO。高)#绿色
 #夏普E 
 elif(adjfreq - note_e4)<0:
打印(“你是锋利的
 GPIO输出(5,GPIO。高)#红
 GPIO输出(6,GPIO。低)
 GPIO输出(13,GPIO。低)
 #平E 
 elif(adjfreq - note_e4)> 0:
打印(“你是平的
 GPIO输出(5,GPIO。低)
 GPIO输出(6,GPIO。高)#蓝
 GPIO输出(13,GPIO。低)< /

现在的分值与它的距离理想的分值。如果是在0.1从理想的注意,我们把它调。连接到绿色引脚上的LED的GPIO引脚设置为高。

否则,如果分值低于理想,从而更接近,我们说这是锋利的。连接到红销LED设置为高,其他所有GPIO引脚是低的,我们没有得到一个组合的RGB。

最后,如果该值大于理想的距离,越来越远了,它是平的。连接到LED蓝腿的GPIO引脚设置为高,LED变成蓝色。

如果你想得到更多或更少的宽容是在调整,调整0.1在每个case语句的敏感性都适合您的需要。

步骤5:参考资料与演示

这里提供的是:

  • 该芯片14引脚和7段显示参考表和引脚布局。
  • 文件说明如何确定频率和音调算法代码。
  • 链接到项目日志:https://storify.com/fouriers_cat

还包括我们的代码演示视频和电路工作。

 
  •  Raspberry Pi的吉他调谐器sa03-11ewa.pdf
    下载
  •  Raspberry Pi的吉他调谐器47.pdf
    下载
  •  Raspberry Pi的吉他调谐器yin_algorithm.pdf
    下载
  •  Raspberry Pi的吉他调谐器mpm_pitch.pdf
    下载

步骤6:(未来实现):七段显示器的电路

 Raspberry Pi的吉他调谐器

本节是一个不完整的实现。我们有问题是,PI无法到7段提供5V,9V电池,使用包括使用一个分压器,增加了复杂的电路。风险自负,记住,<strong>永远尊重电流限制。</strong>

在你想插你的七段显示器的电路。你必须确保每一丝被送入七段显示器是通过电阻(470欧姆),第一次喂,七段显示不超载。你也需要一个驱动芯片(sn74ls47n)让您输入的代码将被翻译成正确的硬件。无论是芯片和七段显示器将由5V电源供电(电池),将接地以附加文件的硬件。当你插入电线从芯片到七段显示确认通知信的芯片的数据表进行匹配与字母在七段显示图。堵这两个设备连接在一起的结果应该允许硬件跟随电路的输出功能。确保插头输入可编程逻辑为驱动芯片或将有显示无输出。输入要插入芯片作为代码指令。

 
  •  Raspberry Pi的吉他调谐器sa03-11ewa.pdf

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
相关文章
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片