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

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

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

相关资讯
NAND Flash第三季价格普涨 512Gb以下芯片领涨15%

随着全球存储产业链产能调控深化,2025年下半年NAND Flash市场正式进入上行周期。据集邦咨询、TrendForce等机构监测数据显示,第三季度全品类NAND Flash合约价涨幅已突破预期阈值。其中256Gb-512Gb中低密度芯片价格环比上涨15%-18%,而1Tb以上高容量产品受企业级长协订单缓冲,涨幅维持在5%-8%区间。此番价格跃升标志着行业历时两年的下行周期终结,供给侧改革成效显著。

英伟达消费级PC CPU遭遇设计挑战,量产时间推迟至2026年

据行业权威媒体SemiAccurate最新报告,英伟达代号为N1及N1X的消费级PC处理器因硬件设计问题需重新流片,发布时间由原计划的2025年推迟至2026年。该系列采用4nm制程工艺,定位Windows系统消费级市场,是英伟达重返CPU领域的战略级产品。

英特尔Nova Lake-AX深度解析:2027移动旗舰处理器技术前瞻

据Wccftech及行业供应链消息,英特尔计划于2027年推出代号"Nova Lake-AX"的高端移动处理器。该芯片将首次实现CPU、GPU与高速缓存的深度异构整合,成为品牌史上首款面向笔记本电脑的"Halo"级旗舰解决方案,剑指超便携工作站及高性能游戏本市场。

中国智能手机市场结束增长周期,2025年Q2出货量同比收缩4%

国际数据公司(IDC)最新发布的2025年第二季度中国智能手机市场追踪报告显示,该季度国内手机整体出货量约6900万台,较去年同期下降4%。此次下滑终结了自2023年第四季度以来连续六个季度的增长态势,标志着市场进入周期性调整阶段。

ASML 2025Q2业绩创新高,High NA EUV光刻机首交付,地缘风险引发市场担忧

全球半导体设备龙头ASML公布2025年第二季度财报,核心指标表现亮眼。报告期内实现净销售额77亿欧元,同比增长23.21%;净利润达22.9亿欧元,同比大幅增长44.9%。毛利率53.7%超出预期,新增订单额激增至55.41亿欧元。技术里程碑方面,全球首台第二代High NA EUV光刻机TWINSCAN EXE:5200B完成交付。