0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何创建基于DCO的音频合成器

摩尔学堂 来源:摩尔学堂 2023-04-13 10:04 次阅读

在此项目中,学习使用 Arduino Nano 或 Arduino Uno 创建数控振荡器或基于 DCO 的音频合成器。

我喜欢音乐,也喜欢电子产品。多年来,我一直在制造音乐电子设备,主要是为我的电吉他演奏服务。在构建和修改了几个电子管放大器和效果踏板之后,我决定涉足音频合成领域。我经常梦想创建自己的 Eurorack 合成器,一次一个模块,但对于我的第一个合成器项目,我决定从一个独立的键盘开始。我的成品——一个改装过的玩具键盘。

在这个项目中,我移除了现有的电子设备,并用一个以Arduino Nano为核心的基于数控振荡器 (DCO) 的音频合成器取而代之。虽然我使用的是 Arduino Nano,但也可以使用Arduino Uno 。让我们深入探讨如何制作基于 DCO 的合成器。然而,在走得太远之前,让我们先谈谈在合成器中使用振荡器。

振荡器:任何合成器的心脏

任何合成器的关键要素是其振荡器电路。模拟合成器通常有两个或多个独立可控的振荡器。但是,任何进入过模拟压控振荡器 (VCO)原理图的互联网兔子洞的人都知道它们通常很复杂且杂乱无章。一些混乱来自可以优雅地处理的功能,例如多个控制电压输入。然而,即使最简单的振荡器电路在原理图中被隔离,剩下的部分仍然很复杂,因为热反馈技巧使振荡器在其组件预热时保持调谐。

当我考虑创建自己的合成器时,VCO 电路的复杂性和混乱一直是我的绊脚石,即使我喜欢模拟合成器,我也无法克服它凌乱的电子软肋。当我欣赏Roland Juno 系列合成器时,这一切都改变了。

Roland 的 Juno-6于 1982 年上市,作为当时其他和弦合成器的更实惠的替代品。它也是第一个使用 DCO 代替传统 VCO 的合成器。与替代品相比,这显着提高了仪器的调谐稳定性,因为 DCO 使用数字电路来控制振荡器模拟信号的频率。考虑到这一点,使用 DCO 而不是 VCO 当然需要权衡取舍。许多人喜欢两个略微失谐的 VCO 齐声演奏的“温暖”声音,这是很难用基于 DCO 的合成器模拟的。然而,调制效果可以应用于 DCO 的干输出信号,以产生丰富、优美的声音。

总的来说,Arduino Uno 和 Nano 开发板的普遍性和低成本,再加上这些数字平台预装了 16 MHz晶体振荡器,使得创建便宜的 DCO 变得异常容易。

使用微控制器定时器模块创建 DCO

查看任何现代微控制器的数据表,您会在其外围设备中找到定时器模块。定时器模块允许嵌入式设计人员在独立于CPU(中央处理器)的嵌入式系统后台设置运行计数器。此外,定时器模块可以在多种情况下中断 CPU,例如当它们溢出计数寄存器或达到特定计数时。嵌入式设计人员可以配置中断条件以满足其特定应用的需要。

对于这个项目, ATMega328P的定时器模块——Arduino Nano 和 Uno 的大脑——充当合成器的 DCO。通过配置定时器模块的时钟源和最大计数值,可以实现音频触发定时器模块中断。DCO 输出是通过在这些周期性中断的中断服务例程 (ISR) 期间操纵微控制器的 GPIO 引脚来实现的。

在接下来的部分中,我将讨论这个项目背后的硬件和软件设计,然后展示这个自制合成器的一些音频片段。

使用 Arduino Nano 的音频合成器硬件

在深入了解该项目中涉及的不同硬件以及它们如何协同工作之前,表 1 显示了 BOM(物料清单)。

数量 成分
1个 Arduino 纳米 v3.x
4个 470 nF电容
1个 2.1 毫米筒式千斤顶
1个 1/4" 单声道开关插孔
2个 4.7k电阻
3个 47k电阻
7 100k电阻
1个 100k电阻
2个 100k电位器
1个 1M电位器
23 SPDT微型瞬时开关
1个 开关式DC-DC 转换器(5 V 输出)
1个 MicrochipMCP23017I/O 扩展器
1个 LF411运算放大器(运放)

接下来,让我们看一下图 2 的系统图,它显示了这个合成器的各个部分是如何组合在一起的。

a8c12b5e-d957-11ed-bfe3-dac502259ad0.png

图 2.合成器的硬件系统图。

键盘部分由一组 23 个 SPDT 开关组成,每个开关一个。其中 16 个键被路由到 MCP23017 I/O 扩展器,其余 7 个键直接路由到 Arduino Nano 上的 GPIO 输入。MCP23017 然后通过I2C连接到 Arduino Nano 。

Arduino Nano 从这里开始处理来自键盘的输入,并根据这些按键在 D11、D12 和 D10 上生成三个独立的振荡器输出。Arduino Nano 上这些数字引脚的输出被路由到加法放大器电路,其原理图如图 3 所示。

a8d4849c-d957-11ed-bfe3-dac502259ad0.jpg

图 3.加法放大器电路原理图 [点击图片放大]。

求和放大器包含三个电位器。它们独立控制振荡器 2 和 3 的音量以及乐器的主音量。放大器电路的输出直接路由到 ¼” 单声道音频插孔,可以轻松直接插入吉他放大器。

为了给这个乐器供电,我使用了一个标准的 2.1 毫米 9 V DC 吉他踏板桶形插孔。此外,来自该插孔的 +9 V 被路由到小型 DC-DC 开关电源转换器以生成 5 V 电源连接。+5 V 电源为 MCP23017 供电。Arduino 由 +9 V 电源通过其 Vin 引脚供电。运算放大器的 V+ 和 V- 由桶形插孔的 +9 V 和接地连接提供,5 V 电源用作运算放大器的浮动接地连接。

图 4 显示了该系统的所有部分如何连接的示意图。

a8df42f6-d957-11ed-bfe3-dac502259ad0.jpg

图 4.整个系统的示意图 [点击图片放大]。

创建音频合成器的软件方面

该项目软件的主要任务是解释来自键盘按钮的输入并相应地操作定时器模块寄存器(有关代码,请参见此处的 Arduino 草图 PDF)。在草图中的 setup() 函数之前,声明了几个全局变量,包括两个大型二维数组的定时器模块寄存器值对应于音符。setup() 函数的过程遵循图 5 的流程图,其中仅涉及:

设置 GPIO 输入和输出

启动 I2C 通信

初始化三个定时器模块

启用中断

选择定时器 B 模块的时钟源作为定时器 A 的时钟

启用全局中断

a8ebfcee-d957-11ed-bfe3-dac502259ad0.jpg

图 5.该仪器的 Arduino 草图的 setup() 函数流程图。

图 6 显示了表示 Arduino 草图的 loop() 函数的流程图。

a8f993f4-d957-11ed-bfe3-dac502259ad0.jpg

图 6.该仪器的 Arduino 草图的 loop() 函数流程图 [单击图像放大]。

循环函数执行三个主要任务:

检测键盘上按下的键

根据特定键的音符设置定时器模块参数

设置门变量以允许将振荡器信号转发到它们各自的 GPIO 引脚

循环函数一次评估连接到键盘的每个 I/O 端口,直到检测到按下的按钮。端口的评估顺序是键盘上从最低音符到最高音符,这意味着较低的音符实际上具有较高的优先级。当我考虑使用 GPIO 和 I2C 中断来处理键盘按钮按下时,我最终使用了连续轮询方法,并且我没有注意到任何不利的性能结果。

最后,图 7 表示 ATMega328P 中三个定时器模块中每一个的中断服务例程。

a9047f94-d957-11ed-bfe3-dac502259ad0.jpg

图 7.Arduino Nano 的 ATMega328P 定时器模块的中断服务例程流程图。

如果设置了门变量,这些 ISR 中的每一个都会切换其输出引脚值。这种切换是为每个振荡器生成音频输出的原因。

产生的声音样本和潜在的改进

您可以在下面找到该项目的两个音频样本。请务必单击播放按钮图像进行播放 - 请注意,音频将在单独的窗口中打开并播放。

声音剪辑 1.音频合成器演示。

正如您从第一个音频样本中听到的那样,该合成器产生了一种漂亮的斯巴达式低保真声音。该样本首先演示了根音振荡器,然后是根音和八度向下振荡器,最后是根音、向下八度和 7 个半音向上振荡器。

声音剪辑 2。带有效果器和鼓的音频合成器演示。

第二个示例通过一些延迟和相位效果展示了合成器,并覆盖了多个轨道。所有旋律声音都来自 Arduino 合成器,但鼓声来自 Roland 808 风格的鼓机 vst 插件。

总而言之,我对这个项目的结果感到非常兴奋,但我确实认为这个基于 Arduino 的合成器可以实现许多潜在的改进。例如,我想为这个 Arduino 合成器实现一个 USB midi 接口。我还想使用这些方法创建一个可扩展的复音合成器。然而,就目前而言,这个项目的玩具屋已经变成了一种有趣、适合舞台的低保真乐器,具有非常坚韧的低音。

从基础到高级的ADC讲座,将涵盖高速ADC设计的原理、传统架构和最先进的设计。第一部分首先回顾了ADC的基本知识,包括采样、开关电容和量化理论。接下来,介绍了经典ADC架构的基础和设计实例,如闪存、SAR和流水线ADC。然后,本教程将对混合型ADC架构进行总体概述,这就结束了第一部分。在第二部分,首先描述了ADC的度量。然后,介绍混合或非混合架构的各种先进设计。该教程最后将以数字辅助解决技术结束。

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

    关注

    48

    文章

    6809

    浏览量

    147636
  • 振荡器
    +关注

    关注

    28

    文章

    3518

    浏览量

    137638
  • 合成器
    +关注

    关注

    0

    文章

    247

    浏览量

    25134
  • 音频
    +关注

    关注

    28

    文章

    2600

    浏览量

    79969
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184833

原文标题:如何创建基于DCO的音频合成器

文章出处:【微信号:moorexuetang,微信公众号:摩尔学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    10个节拍声合成器

    10个节拍声合成器
    发表于 10-07 16:14 1152次阅读
    10个节拍声<b class='flag-5'>合成器</b>

    使用 Arduino Nano 创建基于 DCO音频合成器

    在这个项目中,学习使用Arduino Nano或Arduino Uno创建数字控制振荡器或基于DCO音频合成器。 我喜欢音乐,我也喜欢电子。 多年来,我一直在制造音乐电子设备,主要是
    的头像 发表于 05-03 16:03 1285次阅读
    使用 Arduino Nano <b class='flag-5'>创建</b>基于 <b class='flag-5'>DCO</b> 的<b class='flag-5'>音频</b><b class='flag-5'>合成器</b>

    合成器

    1、使用反馈有一种设备与振荡器有关,.称为合成器。在一些情况下,从普通振荡器出来的正弦波不够完美。射频工程师发现如果振荡器与其它电路结合起来,利用反馈,可以使正弦波更完美,这就适合成器的功能:一个振
    发表于 12-06 14:06

    基于DDS的频率合成器设计介绍

    直接数字频率合成(DDS)在过去十年受到了频率合成器设计工程师极大的欢迎,它被认为是一种具有低相位噪声和优良杂散性能的灵活的频率源,基于DDS的频率合成器在许多应用中能比基于锁相环(PLL)频率
    发表于 07-08 07:26

    如何利用FPGA设计PLL频率合成器

    电子技术应用频率合成技术是现代通信的重要组成部分,它是将一个高稳定度和高准确度的基准频率经过四则运算,产生同样稳定度和准确度的任意频率。频率合成器是电子系统的心脏,是影响电子系统性能的关键因素之一
    发表于 07-30 07:55

    什么是频率合成器

      频率合成器是利用一个或多个基准频率,通过各种技术途径产生一系列的离散频率信号的设备。这些频率的稳定度和精度均和基准频率相同,而且频率的转换时间很短,这样才会有效率和实用价值。  频率合成器的实现
    发表于 08-19 19:18

    什么是PLL频率合成器?

    问:什么是PLL频率合成器?
    发表于 09-17 19:00

    锁相环频率合成器是什么原理?

    频率合成器的主要性能指标锁相环频率合成器原理锁相环频率合成器捕捉过程的分析与仿真
    发表于 04-22 06:27

    怎么设计出吉他合成器

    怎么设计出吉他合成器
    发表于 06-02 06:43

    频率合成器,频率合成器原理及作用是什么?

    频率合成器,频率合成器原理及作用是什么? 所谓的频率合成器,就是以一个精确度、稳定度极好的石英晶体振荡器作为基准频率,并利用加、减
    发表于 03-23 11:04 1.5w次阅读

    单环锁相频率合成器,单环锁相频率合成器是什么意思

    单环锁相频率合成器,单环锁相频率合成器是什么意思 频率合成的历史 频率合成器被人们喻为众多电子系统的“心脏”。现代战争是
    发表于 03-23 11:36 913次阅读

    集成锁相环频率合成器,什么是集成锁相环频率合成器

    集成锁相环频率合成器,什么是集成锁相环频率合成器 频率合成的历史 频率合成器被人们喻为众多电子系统
    发表于 03-23 11:45 777次阅读

    基于Arduino的频率合成器

    方案介绍该项目的主要目标是创建一个代码,允许无线电爱好者从菜单配置合成器,而无需为特定任务对其进行编程。合成器也可用于带频段切换的自制收发器。
    发表于 12-26 15:09 2次下载

    pll频率合成器工作原理与pll频率合成器的原理图解释

    pll频率合成器工作原理与pll频率合成器的原理图解释 我们要搞清楚pll频率合成器工作原理与pll频率合成器的原理图就要先搞清楚pll和频率合成器
    的头像 发表于 02-24 18:19 8724次阅读
    pll频率<b class='flag-5'>合成器</b>工作原理与pll频率<b class='flag-5'>合成器</b>的原理图解释

    如何制作一个音频合成器

    合成器电路是能够使用电子设备产生音频信号的电路。现代合成器现在非常流行,因为它提供了制作优质音乐的便利性。您可能已经看到一些类似的合成器电路,例如电子钢琴,MIDI发生器等。该电路可以
    的头像 发表于 05-13 11:29 1368次阅读
    如何制作一个<b class='flag-5'>音频</b><b class='flag-5'>合成器</b>?