制作MIDI琶音合成器的教程分享

2023-06-20  

通过这个项目将 CHIP 变成一个随时可用的简单合成器,能够创建各种各样的声音。用 MIDI 键盘甚至 OSC 控制它!


作为一名长期的电子音乐爱好者和爱好者,我能够将任何技术视为声音的来源。由于芯片具有内置音频、电池供电功能和方便的 USB 插孔,我知道它可以作为一款出色的小型便携式交互式噪音盒,并且发出各种出色的声音。


实现 CHIP-MAS 的第一步是找到一个用于编程合成器的好平台。有几种不同的路径可供选择:C++ 和音频框架,如asoundlib 或Jamoma 、python 和Pyo ,一种专业语言,如Faust ,或者,如果你想用样本做一些简单的事情,Pygame或Pysound 。我选择了Pure Data (又名 Pd),这是一个开源、可扩展的图形编程环境。Pure Data 旨在生成和处理声音,是快速原型化和创建音乐制作新方式的好方法。


一旦我决定了一个编程环境,就该开发合成器了。我使用了 Pure Data 示例 ( C08.analog.sequencer.pd ) 中一个更有趣但 CPU 使用率较低的示例,因为它有一个有趣的波表合成器和一个音序器。我做了很多工作以使合成器具有更多的声音多样性,并集成了一个 MIDI 键盘来创建琶音序列。


概述

基本步骤是

启动芯片

安装纯数据

获取 Git (repo)

设置合成器以在启动时启动

安装纯数据

第一步是安装 Pure Data 程序。Pure Data 有“extended”和“vanilla”版本。如您所料,“extended”提供了更多功能,但是,我不需要这些附加功能,因此我安装了“vanilla”。从 CHIP 上的命令行安装很容易:

sudo apt-get update

s

人类是非常敏感的倾听者。音乐编程的挑战之一是从“执行动作”(按下钢琴键盘上的一个键)到“听到声音”的时间尽可能短。一般这被称为“延迟”,对于电子音乐制作人和程序员来说,这是一个巨大的妥协话题。

Pure Data 最好为操作系统提供高优先级,并且可以通过一些配置来完成。在 nano 编辑器中编辑配置文档:

sudo nano /etc/security/limits.conf

添加行的位置:

@audio - rtprio 99

@audio - memlock unlimited

到文件的末尾。现在您可以重新启动 CHIP 以确保它生效

sudo reboot

为了让这些东西真正起作用,Pure Data 需要从带有“实时”标志的 CHIP 终端启动,如下所示:

pd -rt

如果您想制作自己的合成器或修改我制作的合成器,您可能还想在您的“日常”计算机上安装 Pure Data应用程序。CHIP 是一台很棒的计算机,但如果你有一台速度更快、显示器分辨率更高的计算机,你可能会发现使用 Pure Data 编程更容易,因为它往往会占用大量屏幕空间。

获取软件合成器

转到您的 Documents 文件夹,然后提取 git repo:

cd ~/Documents

git clone https://github.com/nyboer/CHIPMAS.git

一些合成器细节

如果您对合成器的工作原理感兴趣,这里有几件事值得一提。在制作合成器时,我希望能够创造出各种各样的声音:打击乐、噪音、明亮、简单、干净、激进等等。但是,我不想占用过多量的 CPU。所以我选择了一个波表合成器设计,它可以扫描不同大小的表,从一个波中产生几个复杂的波形。之后我创建了一些可以混合的表,产生了很多可能的音色。添加同步低通滤波器、幅度和表扫描包络,我们就有了一个非常通用的合成器。

pYYBAGMN086AX17HAAIAM5nrHKU062.png

所有参数都可以通过Open Sound Control (OSC) 进行控制,这也意味着这款微型合成器是可联网的。但是针对于这个比较简单的案例,我准备围绕一个便宜的 Akai Synth Station 25 键盘设计了它。我通过这种方式,可以插入 USB MIDI 控制器,启动 CHIP,并拥有一个复杂的合成器声音。

您会注意到本文下方的跳转 git 存储库还有一个名为“graintable.touchosc”的文件,它是适用于 Android 和 iOS的Touch OSC应用程序的文件。它使你可以控制 CHIP-MAS 中的多个参数,以及使用手机运动传感器控制声音的选项。

连接控制器

poYBAGMN09SATvTeAAIg2kGlR_4367.png

我用 MIDI 键盘设计了这个作品。您只需按下一个和弦,音符就会按照您按下琴键的顺序播放。使用调制和弯音轮更改滤波器截止频率和波表之间的交叉渐变。如果您使用 Akai Synth Station 25 键盘,您可以使用八个按钮中的六个来更改预设(顶部的按钮行)或更改速度(向上或向下,以 4 BPM 为增量)。

在启动 CHIP 之前,您需要连接键盘,以便程序可以找到键盘。

发出声音

只需按下键盘上的键,移动弯音轮和调制轮,能够发出一些奇怪的声音。

最终成品

pYYBAGMN09mAVhvjAAMboJG_Gc0016.png

最后,我想把它变成一个完整的项目成果,可以通过一系列步骤使用:插上键盘,打开芯片,插上耳机,然后退出。

不过这还挺容易做到的,必要的服务文件包含在 git 存储库中。该服务脚本只是告诉 Linux 在特定服务可用后打开我们的合成器补丁。您应该仔细检查该行:systemd

ExecStart=/usr/bin/pd -nogui -rt /home/chip/Documents/CHIPMAS/CHIPMASsynth.pd

确保 pd 和 CHIP-MASsynth.pd 的绝对路径是正确的。

将您的目录更改为您拥有 git 存储库的任何位置,然后将存储库中的服务文件复制到正确的位置:

sudo cp chipmassynth.service /etc/systemd/system/chipmassynth.service

现在我们需要让我们systemd知道这项新服务:

sudo systemctl daemon-reload

sudo systemctl enable chipmassynth.service

您可以使用以下命令测试服务:

sudo systemctl start chipmassynth

systemctl status chipmassynth

sudo systemctl stop chipmassynth

Pure Data 补丁在“pd init”子补丁中有一些特殊信息,确保它可以抓取第一个 MIDI 设备,关闭音频输入,并打开第一个音频输入(CHIP 的内置音频)以保证合成芯片启动后即可播放。

让 CHIP 独一无二

CHIP 通过 `avahi` 启用了“零配置网络”,但我想充分利用这一点。我周围有几个 CHIP,所以如果它们有唯一的名称会更好。

简而言之,您需要编辑几个文件并将“chip”更改为“synth”(或您想要的任何名称)

sudo nano /etc/hostname

sudo nano /etc/hosts

另外,我在 Mac 上,所以我喜欢添加苹果服务:

sudo nano /etc/avahi/services/afpd.service

并添加以下内容:

重启avah:

sudo /etc/init.d/avahi-daemon restart

免密码登录

能够使用 `ssh` 和 `scp` 来控制和复制文件到 CHIP 也很不错,而无需每次都输入密码。

在您的计算机上生成 SSH 密钥对

ssh-keygen -t rsa

并将其保存到

~/.ssh/id_rsa.pub

将其复制到 CHIP:

scp ~/.ssh/id_rsa.pub chip@:~/

在 CHIP 上,您需要安装rsync,为 ssh 设置它,然后将公钥复制到它的授权密钥文件中:

cd ~/

sudo apt-get install rsync

mkdir .ssh

cat id_rsa.pub 》》 .ssh/authorized_keys

rm id_rsa.pub

chmod go-w ~

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

现在,在您的主机上,可以轻松移动所有 PureData 补丁,而无需登录:

rsync -avzu CHIPMAS/ chip@boer04.local:~/Documents/CHIPMAS

可能的扩展

我很高兴在 CHIP 上以如此便宜的价格完成了一个简单的合成器即使我开始构建一些非常简单的东西,实际上这个合成器中正在进行相当多的信号计算,因为它同时扫描 4 个波表并混合它们以及噪声信号,并用包络对它们进行调制。

即使它没有经过优化,它仍然只需要大约 25% 的 CHIP 的 cpu。我认为合成器可以被简化和修复,以关闭那些不被使用的东西。它还可以使用一些过采样来改善音质,并且可以删除 CPU 密集度更高但听起来更好的 Moog 模拟“bob~”滤波器来代替 Pure Data 的“vcf~”。

最后,需要利用 CHIP 的内置网络。CHIP 非常便宜,在单独的 CHIP 上运行 6 到 8 个这样的合成器并通过网络同步和控制并不是不合理的。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。