×

speakEZ MIDI驱动程序

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-16

丁冬芹

分享资料个

描述

我喜欢做音乐。但齿轮通常会变大、昂贵、不透明且功能有限。i.MX RT 系列为制造商和制造商提供了将他们自己的灵活合成器应用程序制作成小型、廉价和节能设备的机会。

有了 speakEZ、MIDI 控制器、4 美元的 USB 适配器和 MIMXRT1010-EVK,您就拥有了交互式声码器合成器应用程序的构建块,该应用程序将支持创造性的音乐技术。这只是触及这些 MCU 的音乐和 DSP 应用的表面。

对于那些没有 MIDI 键盘/控制器的人,不要害怕!重置 EVK 时按住用户按钮 (SW4),您可以弹奏几个预建的和弦来尝试“机器人你”的声音。按相同的开关改变和弦。

 

speakEZ 包含一个使用 USB 主机 CDC 示例框架的基本 MIDI 驱动程序。待定更新将包括 MIDI 2.0 类合规性。该标准刚刚被MIDI 制造商协会采用。未来的工作在“限制”部分列出。

[更新 2020 年 11 月 13 日:由于我缺乏测试 MIDI 2.0 的硬件,我将在可预见的将来推迟对该驱动程序的进一步工作。如果您尝试过此类设备并认为它对开源社区有价值,请务必发表评论!]

特点总结:

  • 波表合成器框架(可选表,全复音)
  • 用于音频输出的耳机插孔(3.5 毫米 TRS)
  • 带声码器调制的内置麦克风
  • USB MIDI 控制器的 USB OTG 连接

使用的 i.MX RT1010 外围设备:

  • LPI2C (1x)
  • 赛 (1x)
  • LPUART (1x)
  • GPIO (2x)
  • PIT(周期性中断定时器)(1x)
  • USB OTG 作为主机 (1x)

术语

语音编码器——“语音编码器”将人声编码为频谱以进行压缩、转换或加密。在音乐中,这种转换后的数据可用于调制带有语音共振峰的载波波形,使其听起来好像在“说话”。

共振峰- 口语中区分元音的频率成分。忽略一个单词的基本音高,前三个或四个最响亮的频率峰值是从“æ”或“u”等中识别“uh”的声音。

MIDI—— “乐器数字接口”的缩写,是一种用于发送和接收电子音频信号的硬件和通信标准。MIDI 的 USB 解释是它自己的野兽。在此处查看更多信息

复音- 用于描述具有多个同时音高和速度的声音生成。这转化为钢琴和弦、歌唱合唱等。

Sibilance - 高频语音内容,可用于识别单词中的辅音(s、t、f 等)以及识别独特的人声。声码器很难捕捉到这种能量。

引擎盖下

首先,更多的背景。音乐声码器收听音频输入,通常是人声,并分析频率内容。它测量不同频段的声音强度,形成功率包络。这个包络本质上映射了使每个语音音素听起来像它的方式的共振峰。换句话说,这是我们用来说话的元音的骨架。

该幅度包络用于实时缩放带通滤波音频。在这种情况下,带通载波是自定义波表。缩放这些频段将声音传输到您想要的任何音频上,包括MIDI控制的复音这个过程不擅长转移齿音为此,我们需要从麦克风中提取更高频率的声音,并将它们直接与声码音频混合。

借助 MIMXRT1010-EVK 上的 speakEZ,我们使用 WM8960 编解码器来接收语音音频并传输我们转换后的合成器音频。

我们的合成器是一个波表合成器,每个 CODEC 样本更新一次。它使用一个预先初始化的点数组,代表我们选择的波形的单个周期。每次更新合成器时,它都会根据采样率和所需的音符在波形中插入适当的点。这就是一组固定值可以生成任何形状的任何频率波的方式!合成器以指定的速度(幅度)对任意数量的不同键进行求和。这就是使它成为和弦的原因。

最后,我们使用 MIDI-over-USB。USB OTG 外围设备被配置为主机以接受来自我们的 MIDI 控制器(设备)的信号。因为传统的 MIDI 主机有一个全尺寸的 USB-A 母端口,所以我们需要我们的适配器来连接我们的 OTG 插孔。(当然,如果您有一根带有适当末端的电缆,则不需要适配器。)自定义驱动程序用于接收和解析 MIDI 的批量数据包。这是一个简化的解释。我鼓励您探索提供的 usbmidi.h 和 usbmidi.c 文件。

使用说明

警告:如果放大,此软件可能会产生有害声音。插入耳机和打开设备电源时要小心。进入麦克风的响亮声音和削波失真会导致额外的噪音。为了您的安全,请监控您对响亮声音的暴露程度。

一个小小的声音可以走很长的路。聆听您的房间声学以放置麦克风并确定合适的说话音量以达到预期的效果。

首先,确保您有 MIMXRT1010-EVK 板(带有 USB 电缆)和一副耳机。在https://github.com/wandering-sounds/speakEZ/archive/master.zip下载最新的提交存档

  • 将您的 EVK 插入您的 PC。Micro-B 端应连接到调试 USB 端口(J41)。
  • 打开 MCUXpresso IDE。在快速启动面板中选择“从文件系统导入项目...”。
  • 在“项目存档 (zip)”下,选择“浏览...”按钮。找到并选择您下载的存档 ZIP。
  • 单击“下一步”,然后单击“完成”。speakEZ 项目应该出现在 Project Explorer 中。
  • 单击项目文件夹。然后,单击顶部栏中的 GUI Flash Tool。
  • 一个窗口应显示 EVK 的调试探针。选择“确定”。
  • 在“目标操作”>“程序”>“选项”下,找到“要编程的文件”。单击“工作场所...”按钮。
  • 找到并双击../Release/speakEZ.axf。单击“运行”以刷新芯片。

确保如下图所示连接您的设备,然后按下重置开关:

pYYBAGN2_taAE9BvAAD_cqsFO80814.png
speakEZ 的 MIMXRT1010-EVK 连接图
 

要在没有 MIDI 控制的情况下尝试多个演示和弦,请按住用户按钮 (SW4),同时按下 POR 引脚复位 (SW9) 以重新启动 MCU。这将进入无 MIDI 演示。在此模式下,再次按下 SW4 将切换正在播放的活动和弦。任何连接到 OTG 连接器的 USB 设备都将被忽略。如果您想退出此模式,请自行按下重置开关以启用常规模式。

将 MIDI 控制器的 USB 电缆连接到适配器,然后将适配器连接到 USB OTG 连接器 (J9)。按下键盘上的音符将使用 speakEZ 波表合成器播放相应的音符。按下多个键将同时演奏多个音符。在此模式下按 SW4 将切换正在使用的波表。这些表是:

  • 锯(默认,标准声码器声音)
  • 新颖的波形(刺耳,坚韧,适合单音)
  • 正弦(几乎无声,用于演示目的)
  • 三角形(比正弦波略厚)

尝试与声码器交互的不同方法。试着对着它说话,然后对着它唱歌。试着过分强调你的元音。耳语可以产生整洁的效果。

如果您愿意进行一些编码,请尝试在 speakEZ.h 中编辑带通中心频率 (bandpassBiquadF0)、带宽 (analysisBiquadBWs、ShapingBiquadBWs) 和齿音截止 (kResample_Sibilance_HP)。这些都可以根据您的需要进行更改。我对分析/整形带使用了对数间距。如果你让频段密度低于 1kHz 会怎样?如果你添加更多的乐队呢?我发现大约 20 个频段开始导致性能瓶颈。

锯波从声码器产生传统声音,这就是为什么它是默认音调。我添加了另一种独特的波表形状来测试。为什么不在表库中添加更多内容?充满谐波的丰富音调使用声码器创造出最有趣的声音。

限制

  • 即使是简单的锯齿波也具有非常高的频率成分。这些可能会在相对较低的音符上产生混叠,并导致不需要的刺耳声音。任何消费类或专业产品中使用的波表都应该是带限制的,以防止这种情况发生,无论是在初始化时还是在运行中。
  • 尽管此应用程序适用于 MIDI 设备,但它不包含控制更新或调制。MIDI 的功能远不止这些!今年 MIDI 2.0 发布时,我打算构建一个完整的驱动程序供我自己使用并相应地更新项目存储库。[请参阅介绍部分中的相关更新。]
  • 声码器应该有一种有效的方法来归一化包络跟随器以防止出现峰值。也许用便宜的 ADSR 平滑瞬态最大值。我还没有找到算法,但那是有可能的。
  • 在可靠的专业产品中采用这种逻辑将受益于线路电平音频输出。应删除此 EVK 上未使用的外围设备,并在需要时以更高的成本改进组件。
  • 在未使用的引脚上有更多可用的 GPIO 和模拟输入。定制 PCB 的可能性很多。为什么不添加电位器控制、正交编码器或外部控制电压?speakEZ 的核心结构和信号链可以通过额外的控制方法来增强,所以去尝试吧!

执照

该项目的内容在 3-Clause BSD 许可下获得许可,如下所示:

版权所有 2020 Brady Etz

版权所有。

如果满足以下条件,则允许以源代码和二进制形式重新分发和使用,无论是否经过修改:

1. 源代码的再分发必须保留上述版权声明、此条件列表和以下免责声明。

2. 二进制形式的再分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、此条件列表和以下免责声明。

3. 未经事先书面许可,不得使用版权所有者的姓名或其贡献者的姓名来认可或推广从本软件衍生的产品。

本软件由版权所有者和贡献者“按原样”提供,并且不提供任何明示或暗示的保证,包括但不限于对适销性和特定用途适用性的暗示保证。在任何情况下,版权所有者或贡献者均不对任何直接、间接、偶然、特殊、惩戒性或后果性损害(包括但不限于采购替代商品或服务;使用、数据或利润损失;或业务中断),无论是由何种责任理论引起的,无论是在合同、严格责任或侵权行为(包括疏忽或其他方式)中以任何方式使用本软件引起的,即使已被告知存在此类损害的可能性。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !