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

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

几年前,我写了可以将色彩分配给每个音符的算法,叫做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)——它不仅能发出声音,还能亮出颜色。

相关资讯
TCL电子2025年第一季度全球市场表现深度解析

2025年第一季度,TCL电子在全球电视市场交出了一份亮眼的成绩单。根据公司最新发布的未经审计数据,该季度全球TV出货量达到651万台,同比增长11.4%;受益于中高端产品占比提升,销售额实现22.3%的同比增幅,成功实现年度"开门红"。这一增长态势背后,是TCL在技术创新、产品结构优化及全球化战略上的多维突破。

产业深度:2025深圳国际半导体展(SEMI-e)的战略布局与技术前瞻

2025年9月10-12日,SEMI-e深圳国际半导体展将携手中国国际光电博览会(CIOE),在深圳国际会展中心构建覆盖32万平方米的全球半导体产业生态平台。本届展会由集成电路创新联盟与CIOE联合主办,预计吸引超1000家国际头部企业参展,涵盖芯片设计、晶圆制造、先进封装、核心设备及材料等全产业链环节。展区规划聚焦六大核心领域——IC设计与应用、半导体制造、化合物半导体、先进封装技术、设备与材料、AI算力基础设施,集中展示第三代半导体、Chiplet封装、车规芯片等前沿技术成果,推动半导体与光电、汽车、通信等产业的交叉创新。

全球晶圆厂陷投产僵局:技术迭代与成本压力下的战略调整

全球半导体产业正经历深度结构性调整,龙头企业集体陷入"投产困局"与"亏损漩涡"的双重考验。三星电子美国泰勒工厂设备进口延期、台积电海外基地运营成本失控等标志性事件,暴露出行业面临市场需求周期性下行、地缘政治扰动加剧、技术迭代成本陡增等系统性压力。贝恩咨询数据显示,2023年全球晶圆代工板块平均毛利率下降8.2个百分点,而3nm以下先进制程研发支出激增42%,印证产业步入"高投入、低回报"的战略转型深水区。在此背景下,头部企业通过技术联盟重构、区域产能优化等创新策略,试图在行业洗牌中重塑竞争优势。

性能对标国际品牌!南芯SC25042Q为智能汽车打造高性价比通信方案

在智能汽车高速发展的浪潮下,车载通信网络正面临数据传输速率、信号完整性及国产化替代的多重挑战。近日,南芯科技推出的车规级高速CAN/CAN FD收发器SC25042Q,以5Mbps传输速率、自主振铃抑制技术及全场景兼容性破局而生。该产品通过AEC-Q100认证,对标国际品牌性能,不仅解决了传统CAN总线在复杂拓扑下的信号失真和误码率难题,更依托全国产化供应链实现成本优化,为智能座舱、车身控制及新能源高压系统提供了高可靠通信方案,成为国产车载芯片突围高端市场的关键落子。

6000元补贴撬动百亿市场:国产手机品牌集体“狂飙”

根据Counterpoint Research最新报告,2025年第一季度中国智能手机市场销量同比增长2.5%,延续了2024年以来的温和复苏趋势。这一增长主要得益于国家补贴政策的刺激:自1月启动的“国补”计划覆盖售价低于6000元人民币的机型,单机最高补贴500元,直接拉动中高端市场消费活力。数据显示,补贴政策实施首月(1月20日-26日)单周销量同比激增65%,显示出政策对换机需求的显著撬动作用。