(音乐可视化项目)Light-Dancer为音乐而生

序言:
这是以我为项目组长所做的一个训练项目,项目结题之后笔者决定拿出来跟诸位分享,希望对你对我都有所帮助

一.成果简单介绍:

(1)Reading-LED(作品)

(5)分析电脑声卡的作用:
a.配合我的可视化程序,相当于代替了声音传感器的工作,可视化程序从 PC机默认的音频输入设备(由操作系统设置)中传输音频。即意味着可以在计算机上播放音乐,并将回放直接连接到可视化程序中。
b.基于此我启用立体声混音,并将其设置为默认设备。那么我的音频回放现在应该用作可视化程序的音频输入源。启用程序后将自动使用我的默认录音设备(麦克风)作为音频输入。
(6)python代码的核心内容:
A.配置和设置部分(config.py)为 ESP8266设置好 IP地址,设置灯带中 LED的数量,设置好相
应的麦克风采样率(我设置 FPS恒为 60)
B .录音与麦克风部分(microphone.py):配置项目调用麦克风,用麦克风记录音频;
C .数字信 处理部分(dsp.py)设计简易的指数平滑滤波器,处理成低延迟信 ;
D .三维可视化部分(visualiz.py)在 PC端创建一个可视化窗口,实现音频可视化;
E .通过 WiFi向 ESP8266发送像素信息(led.py);
(7)Arduino代码核心内容:
A.为ESP8266设置相应的IP地址, 关和子午掩码,使芯片连接到电脑的Wi-Fi
B.编写接收数据包的程序
C.添加时间抖动和伽马矫正,以获得更加自然的光强轮廓

(8)项目一实现的功能
结合PC机和ESP8266,PC机的声音处理对于我们来说就是一个天然完美的声音传感器,我们从PC机的默认音频输入设备的音频回放接入程序中用作我程序的音频输入,就是数字信 处理和音乐可视化,得到的结果是一个较为即时的像素信息,而我们已经写好了ESP8266的底层通过配置和设置(IP地址,子午掩码,默认 关等内容)使得ESP8266处于和PC所在的同一个局域 中,从而使得PC端Python处理所得的像素信 通过WIFI传入了ESP8266,ESP8266端内部程序运行,开始执行像素信 数据包裹的接收和处理,并最终转化为led灯色彩的跳转和抖动,同时产生相应的灯带轨迹变化及混叠效果(与音频的高低潮匹配),实现音乐可视化效果
(9)项目一的不足之处:
a.ESP8266支持最多256个led灯,这就造成了整体效果没有那么完美。
b.我们发现这个像素信息也不是那么完美,有时候会太过于集中分布,造成整体效果不佳
c.我们发现先开启程序与先开启音频播放的效果相差较大,其中缘由仍未解决
d.之前用普通5v手机充电器效果不是很理想,出现灯的亮度不均甚至局部熄灭,选用什么样的电源能保证既不烧毁芯片,又不损坏灯带,同时经济适用。

项目二 Listening-LED

(1)简易框图展示

(3)硬件连接:

为了更清晰的说明对本项目的影响,进行以下仿真

由仿真我们很容易得出结论:
1)顺序平均值的方法对声音响度的响应更快,更敏感,同时我们也可以看到,顺序平均值让我们很真切的感受到高潮和低谷
2)而常规平均值由于长时间的读取,数据的大量累积,即使大的声音波动也几乎没有变化,系统无法及时的做出响应,是很不利的
因而我们最终采用顺序平均值的概念!

4.4.关于灯亮度的衰减(主函数调用此模块做光强淡化)(Fade()函数)

上述的就是此模块的原函数:
A.首先定义变量damper必须在0~1之间,保证每一次都是淡化的;
B.接着检索当前位置的颜色;
C.如果是黑色的,就不能再褪色了,直接跳出循环;
D.如果不是黑色,用for语句将RGB三基色循环淡化,之后将丹化后的颜色归位;
E.整体嵌套for循环,使等待上每一个LED都被遍历淡化到;

4.5.近似模拟频谱分析(变量bump)
因为我们做这个项目的时候,并没有用到频谱分析仪,使用的是音量强度和音量波动,起初
以为可能会出现与拍子不对称的情况,但是实际效果还是很让人满意的。
Bump的基本概念就是一个相对大的,正的音量变化,Bump其实就是在模仿歌曲的节拍,意
图实现节奏的跟随。
如何能更好的实现节奏的跟随,查阅相关资料:

项目三 手机端控制 【SmartLED】

注:参考Ian Buckley[U]的GitHub文章
Add Wi-Fi Controlled Lighting to Your Computer With NodeMCU

(一)知识储备
a.我们所使用的开发平台依旧是项目二之中的 Arduino IDE,使用的开发板依旧是项目一之中的ESP8266,关于二者在此处不再赘述;
b.关于 Blynk:
具有以下特性:
1.其由服务器端、app端、设备端组成,可以部署到几乎所有物联 平台
2. app端支持 ios、android
3.设备端可以使用蓝牙、WiFi、MQTT等方式接入,支持 Arduino、freeRTOS、mbedOS、Linux等开发平台
4.服务器端可以部署到阿里云、腾讯云、 OneNET、百度云、AWS、google cloud等平台,通过界面布局器,DIY用户可自己拖拽布局设备控制界面,自由打造物联 设备

(二)所需材料及电路连接
5v像素LED灯带WS2811,NodeMCU,220-500欧姆电阻,100-1000微法电容器,拨动开关或断路器,Molex母头连接器,面包板, 5v电源(用于测试)原型板和电线(用于安装电路),各种连接线

(音乐可视化项目)Light-Dancer为音乐而生
(四)编程代码核心思想阐述:
a.引用必要的库文件,选择正确的板和端口,包含库FastLED,BlynkSimpleEsp8266等;

b.添加定义,声明引脚,灯的数量,基础亮度;

c.定义LED的RGB变量,及模式切换开关;

d.设置 关信息,连接上个人Wi-Fi,与Blynk建立通信;

e.保存移动端数据,接收不同模式下执行不同的操作,同时接收Blynk端对RGB的调整;

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年10月15日
下一篇 2019年10月15日

相关推荐