我一直对现场编码音乐着迷。 诸如Chuck,Supercollider,Overtone,Extempore和Sonic PI之类的框架,以及像Sam Aaron和Andrew Sorensen之类的受欢迎的表演者和音乐家,都从未间断过对我产生启发和启发。
就是说,每当我尝试使用其中一种工具或框架来创作自己的音乐时,我总是会很快放弃。 也许是因为我懒惰,学习新事物很困难,但是我一直告诉自己,这是因为我使用的工具与编程音乐的风格不符 。 从语法,人机工程学和概念上讲,这些工具并没有发挥作用。
- 反朋克帮派由布伦特·奥尔登(Brent Alden)发出的虚假警报/停止朋克摇滚帮派Kaos 13杀手..
- 第14/15天对我来说,第22/23天对PB。 – Lucinda Livingstone –中
- WAR的李·奥斯卡(Lee Oskar)与99号高速公路上的《近乎丹尼尔》(Nearly Dan)助阵
- 观察生物。
- 法律18:不要建造要塞来保护自己的隔离是危险的
然后我偶然发现了J。
J和整个APL语言家族对正在处理的数据都具有简洁而紧密的联系。 从根本上说,它们还设计为可在数组上运行,数组是一种易于音乐演奏的数据结构。 我已经说服自己,如果我可以学习J,那么我将能够构建自己梦想中的实时编码环境!
这是一个很大的目标,但我正在采取一些步骤。 今天,我将向您展示如何用J发出声音。
我用J制作噪音的计划实际上并不涉及我的J软件直接产生任何噪音。 相反,它将充当控制器,指示我的计算机上的其他软件代表它发出声音。
产生噪音的软件将为SimpleSynth,这是一个小型,易于使用的MIDI合成器。 如果您继续学习,请随意使用任何其他MIDI合成器,或者使用Ableton甚至GarageBand等完整的音频工作站。
当我们启动SimpleSynth时,它会询问它应该使用哪个MIDI源。 MIDI是一种协议,使我们可以在不同设备之间传递音乐信息,例如某些音符的播放时间和音量。 SimpleSynth正在询问应该听和播放哪些音符。
我使用MacOS的内置MIDI Studio创建了一个名为“ J”的虚拟MIDI通道,并带有一个名为“ Bus 1”的MIDI端口。确保虚拟设备在线后,我在SimpleSynth中选择了它。
最后一个难题是找到某种方式,通过我的“ J Bus 1”以编程方式发送MIDI消息,由SimpleSynth播放。 Geert Bevin的SendMIDI命令行工具可以达到目的。
安装后,我们可以使用SendMIDI从我们的命令行将MIDI音符发送到SimpleSynth:
sendmidi开发“ J巴士1”在60 100
on
音符60
并以100
的速度有效地以全音量演奏中间C。
现在我们在做音乐!
下一个挑战在于让J执行sendmidi
命令。
经过大量搜索和抓挠头后,我了解到J在“外国”( !:
:)动词下展示了各种各样的杂项功能。 调用2!:1 y
可以生成一个新进程,运行通过y
传递的任何命令。
让我们尝试使用sendmidi
命令调用生成动词:
2!:1'sendmidi dev“ J Bus 1” on 60 100'
|接口错误
| 2!:1'sendmidi dev“ J Bus 1” on 60 100'
经过更多的搜索和抓挠之后,我意识到在进行呼叫时需要使用完全限定的sendmidi
路径:
2!:1'60 100'上的/ usr / local / bin / sendmidi dev“ J Bus 1”
我听到声音了! 成功!
尽管这很好,但是直接从命令行运行sendmidi
命令并没有多大好处。 使我们变得更好的是,如果我们可以构建一个自己的play
动词来演奏传递给它的所有音符。
例如,如果我要运行:
播放60 64 67
我希望J构建并执行我们的sendmidi
命令,该命令应该演奏C大调和弦:
sendmidi开发人员“ J Bus 1”在60100上在64100上在67100上
在J上玩了几个有趣的周末之后,我想到了这个版本的play
动词:
on =:('on',5 |。'100',“ :)” 0
播放=:[:2!:1'/ usr / local / bin / sendmidi dev“ J Bus 1”',[:,/ on
on
动词将整数音符转换为'on 100 '
格式的“ on字符串”,而play
动词产生了将'/usr/local/bin/sendmidi ...'
附加到映射对象的结果。应用于y
。
简而言之,它构造并执行了sendmidi
命令。
我们可以演奏C大调和弦:
播放60 64 67
或我们想要的任何其他和弦:
播放60 63 54 70 73
请记住,我是J的新手,甚至是默认编程的新手。 如果您发现任何可以改进,澄清或纠正的内容,请告诉我。
在使用J时,我仍然感到笨拙和缓慢。构建这行两行程序花费了我数小时的时间。 就是说,我觉得这里有潜力。 随着我逐渐习惯于默认的范式并使用与DAW和其他音频制作人互动的其他方式,我觉得J可能会变成我理想的音乐创作环境。
时间会证明一切。
最初于 2018年7月2日 发布在 www.petecorey.com 上。