DIY设计:音乐也能有七彩的颜色?一颗Wi-Fi芯片就能做到

发布时间:2016-10-29 阅读量:1183 来源: 发布人:

几年前,我写了可以将色彩分配给每个音符的算法,叫做ColorChord。它的奇妙之处在于,我每弹一个音符,就会分配给它一个颜色(同一个音符颜色相同)——无论是否有八度音阶。利用这些色值来控制LED,我有了一种把和弦与旋律视觉化的全新方式。可惜的是,算法有点粗糙。当时可用的奔腾处理器在实时运行算法方面存在困难,迫使我使用了专用的图形处理器。

几年后,一位朋友研究了我的算法,发现可以极大地提高它的速度。在他的基础上,我又把算法重写了两次。最终,它可以很轻松地在台式机的CPU上运行了,经过进一步的调整和修改,它可以在168兆赫STM32F407/417微控制器上运行。最后,我又想,它还能不能在更简单的设备上运行呢,比如Wi-Fi桥接模块一类的设备?

平心而论,我确实想到了一款Wi-Fi桥接设备:性能优越的ESP8266,来自乐鑫信息科技(上海)有限公司(以下简称乐鑫公司)。ESP的功能差不多相当于一个连接Wi-Fi设备的串口,可以将它插入你最喜欢的控制器里,利用AT格式的调制解调器命令接入无线网络。但黑客社区很快意识到,可以对ESP的板载处理器进行重设,实现更多功能。

ESP8266使用的是泰思立达处理器核心,出厂设置为80兆赫,但可以超频运行160兆赫。它的特性包括通用输入/输出端口(GPIO);具备直接内存访问(DMA)的集成芯片间声音(I2S),可进行快速数据传输;提供脉宽调制硬件支持,以及一个模数转换器(ADC)。通过在ESP上运行代码,可以让物联网设备和服务器拥有丰富的基于网络配置的图形用户界面。有了WebSockets,运行在ESP上的应用程序会以超过600赫兹的速度更新并接收远程用户的输入。
黑客社区开发了固件工具、一台编译器、演示和集成开发环境(IDE),可以实现在ESP上运行Arduino和NodeMCU代码。幸运的是,乐鑫公司抓住了这一机遇,发布并更新了其软件开发工具包(SDK),并发布了文档,而非把它藏在堆成山的保密协议后面。结果,ESP也从一块价值2美元的芯片(分线板大概价值10美元)发展成为一个32位的全功能无线微控制器,且追随者越来越多。

我想在ESP上运行ColorChord,以便它听声音、判断色值,然后再用它们去控制一系列WS2812B LED。WS2812B是可分别单独控制的色彩LED模块。每个LED都会接受一个串行信号,具体说明某一颜色的8比特RGB(红-绿-蓝)值。在串行里,每个模块会从它看到的前3个字节里选取它的颜色,脱去这些字节,然后将剩余内容传递给下一个模块。

对很多项目来说,许多人认为Arduino IDE和它的Wiring语言是理想选择。不过,我选择的是C语言,再搭配官方的Espressif SDK来打造我自己的固件。虽然它使用起来不太方便,但SDK提供了所需的所有功能,并提供了优化代码的能力。可以利用GCC编译器和SDK制作固件,然后通过一个串行端口将它上传至ESP。

在为我的项目写软件的时候,我便知道需要对板载ADC进行采样,分析来自附属连接的驻极体麦克风的声音。虽然官方SDK提供了可读取ADC的功能,但并没有精准到足以产生ColorChord算法所需的连续波形音频。在做了一些网上调查研究后,我找到了能够解决利用精确处理器中断请求读取ADC的人。通过中断请求,我发现我能以16千赫的速度读取ADC,并获得一个没有跳跃或抖动的恰当波形。

下一个问题是控制WS2812B串行。它们需要精确的计时操作,而要移出一长串行的所有色值需要花费一点时间。我想起了ESP的I2S总线和DMA。I2S总线一般用于读取或写入音频数据,不过也可以用做一个美化后的移位寄存器。将这条总线与DMA引擎连接起来,大量缓冲数据便能通过一个单独的引脚移至LED模块了,整个过程都没怎么使用CPU。

大部分低层输入和输出都是由配套硬件处理的,所以ESP核心便得到了解放,无须运行ColorChord算法这一繁重的任务。我把用于桌面版、经过高度优化的ColorChord C代码放在ESP上,然后运行。令我震惊的是,ESP竟然没有崩溃。它与我家的网络相连,当访问它的网页界面时,一切好像都在运行。为了让自己相信它真的在运行,我对着麦克风哼哼——LED发出了亮黄色。而且ESP的运行速度是80 兆赫,还不到它潜力速度的一半!对网页界面添加了其他特性后,我可以对算法进行设置、调整,查看所有音符的状态,甚至还能通过示波器看到麦克风收到的波形。我成功了!

整个装置很小巧,足以附着在萨克斯风上。然后我把LED放在萨克斯风管口里面,这样的话,有人吹萨克斯风时——比如我的朋友大卫·查普曼(David Chapman)——它不仅能发出声音,还能亮出颜色。

几年前,我写了可以将色彩分配给每个音符的算法,叫做ColorChord。它的奇妙之处在于,我每弹一个音符,就会分配给它一个颜色(同一个音符颜色相同)——无论是否有八度音阶。利用这些色值来控制LED,我有了一种把和弦与旋律视觉化的全新方式。可惜的是,算法有点粗糙。当时可用的奔腾处理器在实时运行算法方面存在困难,迫使我使用了专用的图形处理器。

几年后,一位朋友研究了我的算法,发现可以极大地提高它的速度。在他的基础上,我又把算法重写了两次。最终,它可以很轻松地在台式机的CPU上运行了,经过进一步的调整和修改,它可以在168兆赫STM32F407/417微控制器上运行。最后,我又想,它还能不能在更简单的设备上运行呢,比如Wi-Fi桥接模块一类的设备?

平心而论,我确实想到了一款Wi-Fi桥接设备:性能优越的ESP8266,来自乐鑫信息科技(上海)有限公司(以下简称乐鑫公司)。ESP的功能差不多相当于一个连接Wi-Fi设备的串口,可以将它插入你最喜欢的控制器里,利用AT格式的调制解调器命令接入无线网络。但黑客社区很快意识到,可以对ESP的板载处理器进行重设,实现更多功能。

ESP8266使用的是泰思立达处理器核心,出厂设置为80兆赫,但可以超频运行160兆赫。它的特性包括通用输入/输出端口(GPIO);具备直接内存访问(DMA)的集成芯片间声音(I2S),可进行快速数据传输;提供脉宽调制硬件支持,以及一个模数转换器(ADC)。通过在ESP上运行代码,可以让物联网设备和服务器拥有丰富的基于网络配置的图形用户界面。有了WebSockets,运行在ESP上的应用程序会以超过600赫兹的速度更新并接收远程用户的输入。

黑客社区开发了固件工具、一台编译器、演示和集成开发环境(IDE),可以实现在ESP上运行Arduino和NodeMCU代码。幸运的是,乐鑫公司抓住了这一机遇,发布并更新了其软件开发工具包(SDK),并发布了文档,而非把它藏在堆成山的保密协议后面。结果,ESP也从一块价值2美元的芯片(分线板大概价值10美元)发展成为一个32位的全功能无线微控制器,且追随者越来越多。

我想在ESP上运行ColorChord,以便它听声音、判断色值,然后再用它们去控制一系列WS2812B LED。WS2812B是可分别单独控制的色彩LED模块。每个LED都会接受一个串行信号,具体说明某一颜色的8比特RGB(红-绿-蓝)值。在串行里,每个模块会从它看到的前3个字节里选取它的颜色,脱去这些字节,然后将剩余内容传递给下一个模块。

对很多项目来说,许多人认为Arduino IDE和它的Wiring语言是理想选择。不过,我选择的是C语言,再搭配官方的Espressif SDK来打造我自己的固件。虽然它使用起来不太方便,但SDK提供了所需的所有功能,并提供了优化代码的能力。可以利用GCC编译器和SDK制作固件,然后通过一个串行端口将它上传至ESP。

在为我的项目写软件的时候,我便知道需要对板载ADC进行采样,分析来自附属连接的驻极体麦克风的声音。虽然官方SDK提供了可读取ADC的功能,但并没有精准到足以产生ColorChord算法所需的连续波形音频。在做了一些网上调查研究后,我找到了能够解决利用精确处理器中断请求读取ADC的人。通过中断请求,我发现我能以16千赫的速度读取ADC,并获得一个没有跳跃或抖动的恰当波形。

下一个问题是控制WS2812B串行。它们需要精确的计时操作,而要移出一长串行的所有色值需要花费一点时间。我想起了ESP的I2S总线和DMA。I2S总线一般用于读取或写入音频数据,不过也可以用做一个美化后的移位寄存器。将这条总线与DMA引擎连接起来,大量缓冲数据便能通过一个单独的引脚移至LED模块了,整个过程都没怎么使用CPU。

大部分低层输入和输出都是由配套硬件处理的,所以ESP核心便得到了解放,无须运行ColorChord算法这一繁重的任务。我把用于桌面版、经过高度优化的ColorChord C代码放在ESP上,然后运行。令我震惊的是,ESP竟然没有崩溃。它与我家的网络相连,当访问它的网页界面时,一切好像都在运行。为了让自己相信它真的在运行,我对着麦克风哼哼——LED发出了亮黄色。而且ESP的运行速度是80 兆赫,还不到它潜力速度的一半!对网页界面添加了其他特性后,我可以对算法进行设置、调整,查看所有音符的状态,甚至还能通过示波器看到麦克风收到的波形。我成功了!

整个装置很小巧,足以附着在萨克斯风上。然后我把LED放在萨克斯风管口里面,这样的话,有人吹萨克斯风时——比如我的朋友大卫·查普曼(David Chapman)——它不仅能发出声音,还能亮出颜色。

相关资讯
台积电涨价10%背后:黄仁勋的“价值论”与全球芯片博弈

近期,台积电(TSMC)宣布酝酿调涨晶圆代工报价10%,引发全球半导体产业链高度关注。英伟达(NVIDIA)CEO黄仁勋公开表示,尽管台积电先进制程价格高昂,但其技术价值与产能保障“非常值得”,此举被业界视为对台积电定价策略的强力背书,亦凸显双方在AI芯片领域的深度绑定。

博通第三代200G CPO技术重塑AI算力基础设施格局

在全球人工智能算力需求激增的背景下,光互连技术正经历革命性突破。2025年5月15日,博通(Broadcom)正式发布第三代单通道200G共封装光学(CPO)产品线,标志着光电子集成技术进入全新发展阶段。该技术突破不仅解决了超大规模AI集群的带宽瓶颈,更通过系统性创新重构数据中心架构设计逻辑。

AMD 2025年Q1 x86处理器市场表现深度分析

全球权威调研机构Mercury Research于5月17日发布的最新数据显示,AMD在2025年第一季度实现多项市场突破。在x86处理器领域,该企业凭借技术创新和产品组合优化,在服务器、桌面及移动端市场均取得显著增长,展现出强大的市场竞争力。

中国AI产业突破封锁的韧性发展路径及未来展望

在全球科技博弈背景下,美国对华AI芯片出口限制政策持续升级。腾讯总裁刘炽平在2025年第一季度财报会上明确表示,腾讯已具备应对供应链风险的充足储备与技术创新能力,标志着中国AI产业正加速走向自主化发展道路。本文结合产业动态与政策趋势,剖析中国AI产业的战略转型与突破路径。

重塑全球供应链格局:ASM International战略布局应对贸易壁垒

在全球半导体产业链加速重构的背景下,荷兰半导体设备巨头ASM International(以下简称“ASM”)近期通过一系列战略调整引发行业关注。2025年5月15日,该公司宣布将通过转嫁关税成本、加速美国本土化生产及优化全球供应链,应对地缘政治风险与贸易壁垒。面对美国近期加征的“对等关税”政策(涵盖钢铁、汽车等商品,未来可能扩展至半导体领域),ASM展现出显著的供应链韧性:其亚利桑那州工厂即将投产,新加坡基地产能同步扩充三倍,形成“多区域制造网络”以分散风险。与此同时,中国市场成为其增长引擎——2025年中国区销售额或突破预期上限,占比达总营收的20%,凸显其在差异化竞争中的技术优势。这一系列举措不仅反映了半导体设备行业对关税政策的快速响应,更揭示了全球产业链从“效率优先”向“安全韧性”转型的深层逻辑。