小时候,我有一架300公斤级的真实苏维埃钢琴,我喜欢弹奏钢琴,甚至从音乐学校毕业后还弹奏一些东西。 钢琴很酷,很正宗,但一点都不实用。 为了使灵魂绝对简单明了,您还需要架子鼓,五根高跟电吉他,单簧管,西塔琴和采样环...

当然,现在不再需要在公寓中建造一个车库工作室来存放六笔薪水,而在PC上安装一个免费的音乐编辑器就足够了。 但是,这一切都不舒服。
PC键盘根本不像键盘乐器,这里不是。 而且,这对于教孩子来说根本不合适。 似乎别无选择,只能购买合成器。 但是怀疑仍然使我失望。
什么是合成器? 带有音乐键盘的大型设备,该设备应放在适当的位置。 内置声音功能,但我已经有了带扬声器的接收器。 内置了漂亮的PC,但是我有好的PC。
事实证明,除了键盘之外,我花了4万美元购买了质量最好的东西。 这只是一些最大的非理性支出。
为了寻找单独的键盘,我遇到了诸如USB MIDI键盘之类的设备。
在我看来,MIDI始终来自专业音乐活动领域。
但是现在所有音乐都可以在任何方便的地方在PC上制作,这意味着音乐家需要可轻松装入背包的移动音乐键盘。
在这里!
一个计划立即在我脑海中浮现。 我们将MIDI键盘连接到基于Raspberry Pi 3的家庭媒体中心,软件合成器正在该Raspberry Pi 3上旋转,任何人都可以随时实现自己的下一个杰作。 通常,在这些MIDI键盘上,有一组旋钮和其他按钮,它们被编程用于各种效果或其他乐器。 看起来和听起来很酷!
设备越来越大,价格越来越贵,价格也略便宜。 我选择了大约5次通话的选项。 他有两个八度,一个普通大小的键,一个鼓手按钮,一个音调旋钮,这是新手电子音乐家梦can以求的。
我在PC上创作音乐并不特别,因此很难找到实现我的想法的方法。 信息必须一点一点地收集。 这个难题逐渐成形,结果是我提出了一个可行的解决方案,我将与您分享。 奇怪的是,在Raspbian / Debian的标准发行版中,有需要的一切,我什至不必连接外部存储库。
Fluidsynth用作音序器(播放MIDI文件的应用程序)。
MIDI键盘可通过ALSA立即检测到,并可用于连接音序器。
要播放各种乐器的声音,请使用SoundFont2格式打开的样本数据库。 首先,请全部安装。
sudo -s apt-get update apt-get -y install alsa-utils fluid-soundfont-gm fluidsynth
我们将MIDI键盘连接到Raspberry,并在服务器模式下启动音序器:
fluidsynth -i -s -a alsa -g 3 /usr/share/sounds/sf2/FluidR3_GM.sf2
我们执行命令:
aconnect -o
结果,我们将看到可用的MIDI客户端列表:
client 14: 'Midi Through' [type=kernel] 0 'Midi Through Port-0' client 20: 'VMini' [type=kernel] 0 'VMini MIDI 1 ' 1 'VMini MIDI 2 ' client 128: 'FLUID Synth (1628)' [type=user] 0 'Synth input port (1628:0)'
在这里,重要的是要记住键盘和音序器客户端的编号,然后将它们与以下命令连接:
aconnect 20:0 128:0
现在我们准备弹奏Yamaha钢琴(这是默认乐器)。 阅读
fluidsynth手册,那里有许多有趣的命令,例如,将乐器更改为鼓声或风声,设置混响或合唱的数量。
让我们方便地使用我们的软件合成器。 为了不每次都将键盘手动连接到音序器,我们将编写一个简单的恶魔,它将在启动时自动执行此操作。
cat > /etc/init.d/fluidsynth << EOF #!/bin/bash ### BEGIN INIT INFO # Provides: fluidsynth # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Fluidsynth deamon to play via MIDI-keyboard ### END INIT INFO startDaemon() { sleep 30s && fluidsynth -i -s -a alsa -g 3 --load-config=/home/osmc/midi-router >/var/log/fluidsynth & sleep 60s && aconnect 20:0 128:0 & } stopDaemon() { pkill -9 fluidsynth &> /dev/null } restartDaemon() { stopDaemon startDaemon } case "$1" in start) startDaemon ;; stop) stopDaemon ;; restart) restartDaemon ;; status) ;; *) startDaemon esac exit 0 EOF
注册守护程序以自动运行:
chmod 755 /etc/init.d/fluidsynth update-rc.d fluidsynth defaults
请注意,现在在启动时,配置文件(/ home / osmc / midi-router)包含将键盘变成真正的合成器的命令,该文件已传输到音序器。
就是这个 键盘上的每个按键和旋转键都发送带有其自己编号的特定事件。 据我了解,没有特殊标准,因此每个制造商都可以做自己想要的事情。 例如,我想用方形键来敲鼓,其余的键来弹钢琴,用旋钮控制音量,混响和合唱。
因此,我需要将事件代码从键盘映射到不同的乐器,并将事件代码从句柄映射到音序器可以理解的代码。 在Fluidsynth中,这是使用路由器完成的。 这些命令包含在配置文件中。
这是我的配置文件的示例,其中包含有关其功能的注释。
cat > /home/osmc/midi-router << EOF # , - load /usr/share/sounds/sf2/FluidR3_GM.sf2 load /home/osmc/241-Drums.SF2 # select 1 2 128 0 select 2 1 0 0 # 0 # router_begin note router_chan 0 0 0 1 router_par1 36 48 1 0 router_end # router_begin note router_chan 0 0 0 2 router_par1 0 35 1 0 router_end router_begin note router_chan 0 0 0 2 router_par1 49 255 1 0 router_end # , , # fluidsynth router_begin cc router_chan 0 0 0 2 router_par1 14 14 0 98 router_end router_begin cc router_chan 0 0 0 2 router_par1 15 15 0 11 router_end router_begin cc router_chan 0 0 0 2 router_par1 16 16 0 91 router_end router_begin cc router_chan 0 0 0 2 router_par1 17 17 0 93 router_end # 0, # # cc 0 7 0 EOF
要找出设备生成的代码,您需要使用以下实用程序:
aseqdump -p 20:0
她通过控制台上的MIDI键盘收听并显示事件。 按下按钮或旋转旋钮,您将看到类型,通道和事件代码。 您可以按自己的方式对键盘进行编程,而不必采用开发特定合成器的工程师的方式进行编程。 为此,要感谢fluidsynth,alsa,SoundFont2,Raspberry和V-Mini的开发人员。
顺便说一下,有关DIY合成器的这一主题反映在多项发明中,我建议进行研究:
一次和
两次 。