真的不是「玩具」:Stylophone CPM DS-2 与 DF-8深度测评

Mureka V9.5 发布,引领 Al 音乐行业从模仿时代进入创作时代

Avid 疯了:返校季教育版订阅史低,更有团购和套装折上折,Pro Tools 和 Sibelius 全线订阅折扣开启

最强的平价口袋合成器?M-VAVE FM-1 深度使用一个月的感受

经典灵魂,重塑声场:MIDIPLUS 全新专业音频均衡器 EQ·73

Vibe Coding 氛围编程:人人都能写插件——AI 生成代码的技巧与方法

安小匠 添加于 2026-07-28 ·

分享到微信

暂无评论

心里有个插件点子,却完全不懂编程?别急,继续往下看……

如果你用电脑做音乐,想必你早已离不开插件。它们无处不在:音序器、采样器、乐器、插入效果(inserts)、效果器,还有频谱分析器(spectrograms)、MIDI效果器(MIDI filters)之类的实用工具,比比皆是。可你有没有想过自己也动手做一款插件?也许你心里正藏着一个市面上还没有的插件创意,只是不知该如何亲手把它做出来。

想自己动手做一款VST、AU或AAX插件?放在以前,这几乎是个遥不可及的事,除非你自己会编程,还愿意砸时间把想法一点点搭出来;除非你有足够的预算请人代劳;又或者你名气够大,有厂商争着把你的名字冠在他们的插件上。但现在,局面变了,多了另一种选择:一种叫“vibe coding(氛围编程)”的全新方法。它的流程就是:你用自然语言描述想做的软件,然后让大语言模型(LLM)替你写代码。至于那些代码,你看不看、懂不懂,都无所谓。

大语言模型(Large Language Models,通常简称LLM),就是所谓的“人工智能(AI)”,它们在海量跨领域的文本中接受训练,这让它们能生成各式各样的内容,从文章、论坛帖子到计算机代码,都不在话下。如果你已经用过ChatGPT等LLM,就会发现氛围编程也差不多:就像跟人聊天那样,只不过聊的是你想做的那款软件。你需要的只是把想法写成文字的能力,以及哪怕开发过程中脱轨也要坚持到底的毅力。而这些本事,你在写歌的时候早就用过了。接下来,我会把自制插件的流程给你梳理清楚,并拿一个具体项目来演示。

译者注:原文将ChatGPT当作LLM。实际上ChatGPT并不是LLM,它本身是聊天机器人(chatbot)工具,实时调用GPT系列的LLM来分析用户的发言、给用户回答。]


先定好方向

在动手折腾AI写代码之前,你得先想清楚自己要做什么。一切都从一个问题开始:你到底想要什么、需要什么?

也许你想处理MIDI数据:过滤信号、生成旋律,或者捣鼓出一些稀奇古怪的新爵士(new jazz)和弦。又或者你想直接处理音频,对采样回放进行调制,让军鼓反拍(backbeat)在整首歌里持续变化、不断演变。这些都能实现,还有很多别的点子也一样。我唯一的建议是:第一次尝试的时候,挑你能想到的最简单的东西来做。你得先把整个流程摸熟,再考虑用氛围编程去挑战复杂的插件

译者注:new jazz是一种现代电子音乐流派,发源自SoundCloud上的说唱歌手,特点是具有梦幻色彩的旋律、和弦编排,以及标志性的808鼓组节奏。)

你也得把控好预期:有些东西你试了就是行不通。别指望能做出跟那些精准给管弦乐团建模的插件相抗衡的东西,也别指望能对采样回放的每个参数都进行精细控制。具备这些功能的商业插件复杂得很,需要专家才能打造。最好还是把氛围编程当成一种手段,用来打造独一无二、市面上根本买不到的东西。不过,你也别小看它!我经常惊讶于自己能把氛围编程推进到多远,结果往往比我想象的还要好。

“最好把氛围编程当成一种手段,用来打造独一无二、市面上根本买不到的东西。”

这是个创意的过程,所以我建议你以开放的心态来对待。你的插件将在一场人机对话中诞生:你向机器抛出想法,机器再向你抛回新的想法。

在这个示例里,我们会用Cockos Reaper来加载自己生成的插件,原因有二:Reaper的JSFX格式内置了编译器,而且Cockos给新用户提供了整整一个月的免费试用,相当大方。写代码这块,我们选Anthropic的Claude——它同样有慷慨大方的免费版,而且在我实测中,代码生成效果始终比OpenAI的ChatGPT和Google Gemini更出色。不过Claude的免费版确实有限制:每六小时能生成的代码量有上限,所以你可能得等额度重置,或者考虑付费订阅。

译者注:如果你使用其他DAW,可以使用Cockos提供的ReaPlugs VST2插件,其中的ReaJS也可以运行JSFX插件。同时,第三方项目ysfx也提供了开源免费跨平台的JSFX插件运行环境,读者可参考本站文章:《让其他 DAW 也享有 Reaper的效果器阵容:浅玩 JSFX 运行环境 ysfx


动手写提示词

我要介绍的这套氛围编程流程,风险其实并不大。和所有软件一样,bug和崩溃是难免的,让Reaper运行有问题的代码也确实可能把它搞崩,但至少我从来没遇到过。另一个关于LLM的顾虑是个人隐私泄露,但这点完全由你掌控。最要紧的是:永远别跟LLM透露任何能识别你身份的信息。另外值得一提的是,Anthropic允许你自己决定他们能否用你的对话来训练模型,开关就在Claude设置菜单的隐私选项中。

我来把我自己做插件的完整流程给你走一遍。虽然你的目标可能跟我不一样,但遵循的步骤是相通的,而且永远都要从“最终成品应该是什么样”这个问题开始

1、明确你想做的插件。

2、用自然语言描述它。

3、让Claude写代码。

4、在Reaper里测试。

5、如有需要,重复第3、4步来优化功能、修复bug。

6、能用就停(别等到完美才收手)。

说说我想做的这款插件。

我特别喜欢Acid House合成器;偶尔我会用音序器来写一些可以循环的旋律和节奏型。这次我想用氛围编程来写一个音序器,灵感来自Roland TB-303内置的鼓点模式编辑器(patterncreator),但要有几处明显的不同。我希望单个模式能提供超过16步(step),而且总的步数可以由用户自己设定;我想要一个可视化界面,一眼就能看到序列里的所有音符,而不只是当前那一步对应的那个音;我希望每个音符都能任选八度,而不是只能在默认八度上下各一个八度里挑;另外,我想用更宽的力度范围来替代303原本的“accent(强调)”功能。

动手之前,得先把软件备好。如果你还没用过Claude,先去注册一个账号。注册完,它会自动打开一个新的聊天窗口,这个先别关。接着启动Reaper,新建一个工程,添加一条轨道,然后点击轨道上的“FX”按钮。接下来还有两个步骤:在弹出的窗口里点击菜单栏上的“FX”菜单文字,再从下拉菜单里点选“Create newJS FX...(创建一个JS效果器)”。这时会再弹出一个新窗口,保持它打开,然后回到Claude那边就行。

图 1在REAPER的“添加效果器”窗口中,点击“添加JS效果器(Create new JSFX...)”菜单项。(图片来源:本文译者)

现在我们可以进入氛围编程的状态了。我心里清楚想做什么,接下来得把它变成文字。这份描述就是我输入Claude聊天窗口的“提示词(prompt)”——给LLM提供构建插件所需的信息。写出有效的提示词其实有点门道[有人把这门手艺叫做“提示词工程(prompt engineering)”],不过用多了自然就顺手了。网上有不少论坛专门讨论这个,但说到底,核心就是高效地给出指令。一条好的指令是具体明确的,涵盖所有关键信息,而且常常把大块内容拆成小块来传达。好在LLM一直在进步,越来越能理解我们的需求,所以你不必费劲去琢磨一个“完美”的提示词。


从头开始

图 2用于创建音序器插件第一版代码的初始提示词。(图片来源:BenjaminMcCulloch)

提示词:可否为我编写一款JSFX插件的代码?我在构想一款可视化音序器,它可以让我自行指定音序器运行的总步数。然后,它要有一个可视化界面(简洁,并且功能分明),我可以查看所有的步(按X轴排列),并在12个半音的音域里选择音符(按Y轴排列)。在Y轴中,还要配备一个下拉菜单,可以让我选择音符的八度(范围是0~9);同时配备另一个下拉菜单,用于设定该音符的连接方式(articulation),可在“标准”(在序列中,演奏下一步之前,note-on与note-off都有触发)和“滑音”(在序列中,进入下一步时,当前音符保持note-on的演奏状态)之间二选一。

图 2展示了我发给Claude的第一条提示词。如你所见,我并没有一次性把所有细节都交代清楚。我想先看看Claude会做出什么,再在几轮迭代中逐步打磨。这有点像写歌:你尝试、调整、增增减减,随着时间推移,好东西或许会如我所愿慢慢浮现出来!一按下回车发送提示词,Claude就立刻开始生成代码。第一次目睹这个过程时,你会相当震惊。程序员在动手编码前,通常要花很长时间把问题想透彻,而AI直接一头扎了进去!

顺带一提,如果你拿完全相同的提示词去问Claude,得到的答案和代码很可能都不一样。因为像Claude这样的LLM,每次被提问时都会从头生成全新的回答。

图 3Claude生成代码后(右侧),即可复制粘贴到Reaper的插件窗口中。(图片来源:Benjamin McCulloch)

下一步就是测试Claude生成的代码了。在Claude界面里,右侧会弹出一个独立窗口,里面显示着刚生成的代码。这个窗口的右上角有个Copy按钮,点一下,保持浏览器里的Claude页面开着,然后切换到Reaper。

这时候Reaper里应该还开着“New JS Effect”窗口(图 4)。系统会提示你给作品命名,暂时先起个简短好记的名字,比如“My 303 Sequencer”。点“OK”,就会看到一个崭新的、最简化的JSFX插件(图 5)。点击“Edit”,会打开插件的代码编辑窗口,里面已经预置了一些基础代码。

图 4 REAPER会让你填写效果器的文件名和简介。(图片来源:本文译者)

图 5创建JS效果器后,你需要点击图中的“Edit...”按钮(图中红框处),才能打开代码编辑器的界面。(图片来源:本文译者)

全选这些代码,把它们删掉,从零开始(如图 6所示)。然后把你从Claude那儿复制的代码贴进去,保存。

图 6选中并删除Reaper默认的插件代码(图中蓝色高亮部分),再粘贴Claude生成的代码。(图片来源:BenjaminMcCulloch)

到这一步,会出现两种结果。要么代码窗口底部显示“Recompiled OK!(重新编译成功!)”,说明插件已准备好测试;要么就会看到报错。两种情况都很正常,也都是积极的进展!迟早你会遇到障碍,但别担心,这些都能轻松解决。

如果插件已经准备好测试,那就放手去试。只是要记得“在情境中(in context)”测试——就像你真的处在一段音乐制作过程中一样。比方说,音序器本身不会发声,所以要确认它是否正常工作,你得在它后面再接一个能从MIDI数据生成声音的插件。所以,尽情摆弄吧!试试你的第一版,看看会发生什么。这可能是某个不可思议之作的开端!当然,也有可能你的代码完全跑不起来;又或者虽然编译通过了,但生成的插件表现不如你所愿。稍后我会告诉你如何逐一解决这些问题。


新方向

我的第一版音序器如图 7所示:

图 7我开发的第一版音序器。(图片来源:Benjamin McCulloch)

考虑到我只花了几分钟琢磨自己想要什么,代码就当场生成了,这已经相当不错了!我没告诉Claude我想要多少步数的音序器,但它直接给了我一个1到32步范围的插件,正合我意。可视化界面很直观,步进从左到右排,音符从下到上排——不过要是能知道这些具体是什么音符就更好了。八度和演奏法(普通或滑音)都有下拉菜单。Claude还额外加了一个我没想到的功能:MIDI通道选择器。我没要求这个功能,但确实很实用,而且让我想到,高级版本说不定可以支持给每一步单独设置MIDI通道。

初版最突出的问题是,刚把插件挂到轨道上,它就开始自行运转,完全不受Reaper走带控制的约束。更奇怪的是,它甚至还能脱离Reaper的主速度,单独设置自己的BPM。与其说是bug,不如说是一次意外突破——Claude生成的代码再次给了我一个前所未有的灵感。我向来喜欢复节奏(polyrhythms)和古怪的拍号。听到这个音序器独立于Reaper走带运行,我立刻想到:能不能获得比常规细分节奏(四分音符、八分音符、十六分音符,以及三连音选项)更自由的控制?这让我不禁想:能不能让插件把任意数量的步进均匀铺在一小节音乐里?比如设为4步,就每四分音符触发一步;但如果设成13这种奇数,它也能把13步均匀分布满一整小节。正是这种创意过程中不断涌现的意外想法和可能性,让我兴奋不已。于是我决定试着让Claude把这个新点子实现出来,作为对代码的一次改进。

对了,你可能会发现自己的插件界面不太好看,甚至有点简陋。我建议先把功能打磨到位,再去管界面长什么样。因为功能上的每一次改动,都会连带影响到界面呈现,所以先把内在逻辑理顺,再调整外在样貌,效率会高得多


进阶排错

代码完全跑不动,或者表现不如预期?那就让Claude来修、来改!保存代码时如果报错,就把错误提示原样复制下来,准备贴给Claude。

图 8这个插件代码产生了错误,显示在Reaper JSFX窗口底部的浅蓝色区域。(图片来源:Benjamin McCulloch)

图 8是我做某个插件时遇到的报错情况。比较烦人的是,Reaper里没法选中错误消息的文字来复制。我的变通办法是:把报错信息截图,然后上传到免费网站提取图片里的文字。

复制好错误信息后,给Claude发一条新消息。开头写“我收到了一个错误——”,然后把错误信息贴进去。Claude会尝试替你排查代码里的bug,然后给出更新版本。

另一种情况是,插件编译运行都没问题,但你想进一步优化功能。这时,你要用清晰、具体的语言描述需要改动的地方,让Claude来优化代码。最好的策略是先挑最重要的改动,而且一次只改一项。每更新一次就测试一次。你可能会陷入“打地鼠”的困境——刚修好的地方又冒出新bug,但这本就是过程的一部分。拿到更新后的代码,回到插件的编辑窗口,把里面的代码全部清空,粘贴新版本,保存,然后测试。

从这儿开始,直到你对插件满意为止,基本就是这么个循环:在Reaper里测试最新版本,收集反馈,然后一条接一条地丢给Claude,让它继续改进代码。这样工作的好处在于,如果你塞了太多想法进去导致插件不稳定,你随时都能回退到上一个版本。

回到我自己的插件,最让我兴奋的还是实现那些非常规节奏(odd timings):把小节拆成任意奇数步来细分。

图 9你可以像跟人类开发者讨论一样,跟Claude聊聊某件事到底做不做得到。(图片来源:Benjamin McCulloch)

在图 9里,你会看到一种稍有不同的提问策略。我不想把时间浪费在注定行不通的东西上,所以先问Claude这事能不能成,暂时不让它生成代码。如你所见,它的解释里有个小错误:在4/4拍里分成7步,每步应该占1/7小节。但通读完整回复后,我觉得它已经抓住了这个想法。这就是对话,有时你可以通过对话来征求意见,而不是生成代码

就这样逐个修复、逐个调整,我还让Claude在Y轴上添上音符名称、跟随Reaper主走带来控制播放和停止、允许设置“休止步(‘silent’ steps)”,以及给每个步数加上力度控制。最后一项始终没成,Claude试了很多遍也不行;另外还有个问题,每次我点播放,所有设置都会重置。我相信这些都能修好,只是Claude暂时还没找到办法。这就意味着我得先按下“录音”,事后再去添加音符和设置。这感觉像是在即兴玩儿(jamming),但当然,我更希望能把自己的工作保存下来。

“Claude生成的代码给了我一个之前从未有过的灵感。”


差不多就行了

图 10是我这个音序器插件的“最终”版本。

图 10我的最终版音序器。(图片来源:Benjamin McCulloch)

我决定不再折腾它了,因为它已经够我用了。节奏细分功能运转完美,所以我想马上就用它来做音乐;至于力度,我总能找到别的办法来调整,比如先把MIDI录下来再做拟人化(humanize)处理,或者挂个自动化。

和所有跟创意沾边的事一样,“最终”从来都是一个相对的说法!用氛围编程做插件时,你往往很难忍住不去继续微调。如果你发现自己已经投入了太多时间,我的建议是:回头去读一读你最初写下的需求描述。结果离你想要的有多近?如果差得太远,也许是这个想法本身太宏大了。如果已经足够接近、可以拿来用了,那我建议你就直接开始用,别再改了。把东西做完,才能腾出精力去做你的下一个杰作!


其他插件格式

本文里我选用的是Reaper的JSFX格式,因为它上手最直接。当然,其他格式的插件,比如VST和Audio Units(AU),同样可以用氛围编程来做,只是会复杂一些。因为你得在Claude之外再配一个额外的开发工具来写代码,然后再拿到自己的DAW里去测试。

市面上的插件开发工具有不少。如果你本身对代码已经驾轻就熟,想借氛围编程来加快开发速度,那JUCE(有免费版也有付费版)应该是你的首选。JUCE最大的优势在于网上能找到公开的代码示例,讨论它的开发者也很多,这意味着Claude在为你生成代码时,有充足的资料可以参考。至于学JUCE要花多长时间,与其试图给你概括一遍,不如直说:你得做好投入几周甚至几个月的准备。对于只想快速用氛围编程写自己插件的人来说,这大概就违背了初衷。不过话说回来,如果你是Pro Tools用户,JUCE是你制作AAX插件的唯一选择,而且Avid那边有严格的资质要求和审批。

好在对于其他用户,还有一款叫Cabbage Audio的工具可选。它是捐赠软件(donationware),在GNU许可证下免费发布。别因为这个傻名字就打退堂鼓:CabbageAudio完全有能力做出很棒的插件。你需要明确告诉Claude你是为这个平台开发的,这样生成的代码就是CsoundCabbage Audio使用的编程语言)而非JSFX,而界面则要用它自带的可视化设计器来搭建。完成后,你还得从Cabbage Audio把插件导出为VST或AU格式,才能在DAW里测试。学习使用这款工具大概仍需投入几小时到几天(他们网上有教程),但成品应该能在所有支持VST和AU的DAW中正常使用。

图 11作者提及的Cabbage Audio,这是一款简明易用的音频插件开发工具,可以开发精美的插件。(图片来源:CabbageAudio)

译者注:除了上文列举的工具,市面上还有其他的选择,例如DPFiPlug2HISE,三者均可构建跨平台、多格式的插件。)



本文出自《midifan月刊》2026年07月第244期

 

可下载 Midifan for iOS 应用在手机或平板上阅读(直接在App Store里搜索Midifan即可找到,或扫描下面的二维码直接下载),在 iPad 或 iPhone 上下载并阅读。


暂无评论