跟 ChatGPT 聊两句就能帮你做出个 VST 插件来,但这样的格局还不够大
ChatGPT是OpenAI开发的人工智能语言模型,通过聊天对话的形式来做任何事。最近有人尝试跟它聊天让它做出来了一个带UI的可以使用的VST效果器。
最近YouTube网红Burned Guitarist做了一件让人惊讶的事情,他依靠跟ChatGPT聊天居然做出了一个Tube Screamer的复刻VST效果器插件,他所作的只是引导ChatGPT写代码,可以说这个插件是完完全全由ChatGPT这个聊天AI开发出来的。
有跟ChatGPT的聊天视频为证(原始地址 https://youtu.be/Ra7WUfaQNrM):
以下是聊天过程的截图复现:
问:你好GPT,你知道 Tube Screamer 吗?
是的,我熟悉 lbanez Tube Screamer。它是一种超驱效应踏板,常被吉他手用来增加吉他的增益和持续时间。该踏板最早生产于 1970 年代,已成为各种音乐流派中吉他手的热门选择。Tube Screamer 使用基于操作放大器(op-amp)和一对截止二极管的电路设计来产生超驱效果的声音。它以温暖、爆裂、略带失真的声音而闻名,并被许多著名的吉他手在他们的录音和现场表演中使用。
问:正确!你能写一个 Tube Screamer VST 插件的代码吗?
这是一个用 C++ 编写的 Tube Screamer VST 插件的简单示例。此代码旨在向您展示 Tube Screamer 插件的实现方式,但不是一个完整功能或生产准备就绪的插件。
此代码定义了一个简单的 TubeScreamer 类,具有三个参数:“驱动”、“音调”和“水平”。“process”函数是音频信号的实际处理地点,它调用“applyDrive”和“applyTone”函数来将超驱效果和音调效果应用于输入信号。您需要在“applyDrive”和“applyTone”函数中实现 Tube Screamer 效果的实际算法。
我希望这能帮助您了解 Tube Screamer 插件的实现方式。如果您对此代码或一般 VST 插件开发有任何进一步的问题,请不要犹豫,随时询问。
问:谢谢!你能写一个更具体的实现吗?
ChatGPT:当然,这是用 C++ 编写的更具体的 Tube Screamer VST 插件实现。此代码包括 Tube Screamer 效果的实际算法,应该是一个完全功能的插件。请注意,这仅仅是 Tube Screamer 效果实现的一种方法,有许多其他方法可以达到同样的效果。
此代码定义了一个 TubeScreamer 类,有三个参数:“drive”,“tone”和“level”。
“process”函数是实际处理音频信号的地方,它调用“applyDrive”和“applyTone”函数将简单的增益和音色效果应用到输入信号上。
“applyDrive”函数实现了 Tube Screamer 电路中用于产生过载声音的剪切功能。它将“drive”参数范围缩放到 [-1,1),然后使用简单的公式将其应用于输入信号。
“applyTone”函数实现了一个一阶低通滤波器,以形成过载信号的音色。它将“tone”参数缩放到范围 [-1,1] 并使用简单的滤波器算法将其应用于过载信号。
问:谢谢,你知道用于部署VST插件的任何框架吗?
这是关于部署 VST(虚拟工作室技术)插件的几个框架。一些流行的选择包括:
1. VST SDK:这是由 VST 标准的创建者 Steinberg 提供的软件开发工具包(SDK)。它包括了您开发和部署 VST 插件所需的一切,包括文档、样例代码和用于测试您的插件的 VST 主机应用程序。VST SDK 可用于 Windows 和 macOS。2. JUCE:JUCE(Jules Utility Class Extensions)是一个跨平台的C++开发音频软件的框架。它包含了一个内置的VST包装器,可以让您使用C++轻松构建VST插件。JUCE还包括许多其他对音频有用的功能。
3. LV2:LV2(LADSPA Version 2)是一种类似于VST的插件标准,但它设计为更加模块化和可扩展。它在数字音频工作站(DAW)和其他音频软件中被广泛支持。有多种用于在C/C++中开发LVZ插件的库可用,如lv2plug.in和siv2。
4. AudioUnit:AudioUnit是由苹果开发的插件标准,用于macOS和iOS。它类似于VST,但仅支持苹果平台。有几个用于开发AudioUnit插件的框架,包括Core Audio和AudioKit。
希望这对于您了解一些可用于部署VST插件的选项有所帮助。如果您对这些框架或开发VST插件的一般问题有任何进一步的问题,请随时询问。
问:非常感谢,您能否为我提供第一个框架的代码?
以下是如何使用VST SDK开发和部署VST插件的示例代码。此代码使用C++编写,定义了一个生成正弦波的简单插件。
首先,您需要包含来自VST SDK的必要头文件:
接下来,通过继承 VST SDK 提供的 AudioEffectX 类来定义插件类:
接下来,您需要通过VST SDK提供的AudioEffectX类定义您的插件类:AudioEffectX类为符合VST标准所需的许多功能提供了一个基础实现,例如“processReplacing”、“setParameter”和“getParameter”。您需要在插件类中重写这些功能,以为插件提供所需的行为。
在插件类的构造函数中,您需要调用基类构造函数并传入由主机应用程序提供的audioMaster回调函数:
问:可以,你可以在这个框架中实现一个Tube Screamer吗?
当然可以!以下是如何使用VST SDK在C++中实现Tube Screamer VST插件的示例。此代码基于我先前提供的Tube Screamer效果的更具体实现,但已被修改以适合使用VST SDK的ST插件的结构。
首先,您需要包含VST SDK的必要头文件:
问:可以生成applyTone和applyDrive函数吗?
当然可以!这里是我先前提到的“applyTone”和“applyDrive”函数的定义。这些函数应该添加到TubeScreamer类定义中:
这是ChatGPT生成代码所做出来的VST插件(不带UI界面):
问:你能让插件更平滑吗?它应该像超驱一样表现,而不是像模糊踏板。
确实!这里是如何修改"applyOverdrive"函数以获得更平滑的点压效果的示例:
问:能否为这个插件创建一个可视化图形界面的模板?
当然可以!这是一个使用Steinberg VST SDK和C++编程语言的Tube Screamer VST插件的视觉GUI模板的样例:
问:请为uidesc文件中的可视化图形界面提供一个模板好吗?
当然!这是一个uidesc文件中Tube Screamer VST插件可视化图形界面的模板:
问:请把背景改成绿色好吗?此外,请使用旋钮代替滑块?
当然可以!这是带有绿色背景和使用旋钮代替滑块的 GUI 模板的修订版本:
这是ChatGPT按照聊天描述所生成的软件界面(虽然声音不太像Tube Screamer效果器):
我摊牌了,其实上面所有的中文翻译也都是我让ChatGPT帮我做的:
到这里我才发现,其实最先失业的可能是我们Midifan?哈哈哈哈哈小丑竟是我自己!?
用中文让ChatGPT开发VST插件:
最后,我开始尝试自己让ChatGPT帮我开发VST插件,看看到底它是不是有这么神奇。以下是我们的聊天记录:
在我继续让ChatGPT把DSP算法做到VST插件框架里之后,它出错了,且无法继续恢复对话。这可能是现在ChatGPT算力不够造成的,而且在我让ChatGPT帮我做翻译的过程中,经常出现请求过多的错误提示只能重新来过。
不过OpenAI官方正在准备推出付费服务,让它可以在有限的算力下优先进行服务。
只是让ChatGPT做插件属于格局小了:
让我们有理有据的想一下,只要ChatGPT有足够的算力,你为啥要让它帮你做插件呢?你直接把一段录音扔给它,告诉它你想要啥效果(比如可以再扔给它一些参考音轨),然后它可以根据你的需要自己写DSP算法,直接处理音频。
在它输出给你结果之后,你可以挑各种毛病,继续让它按照你的要求最终做出你要的声音效果。
甚至它也可以自己写声音合成算法,你描述一个声音,或者给它一个参考的声音,让它照着做,它就等于是一个万能的合成器了。
你还需要效果器和合成器插件嘛?你跟ChatGPT好好聊上一个晚上,什么都有了。
甚至于你还需要亲自编曲混音嘛?我相信以目前AI的学习能力,你只要投喂给它足够多的优秀声音参考示范,它就可以按照你的描述生成需要的编曲和混音结果。
这个事情是一定会发生的(其实已经发生了,参考之前的新闻《Google 做了一个输入描述文字就可以自动生成歌曲的 AI》),而且很可能就在这一两年,AI的拐点已经到来,每个人都要提前想一想,自己如何能做到尽量不被AI所替代,又如何能在此基础上让AI变成自己的得力小帮手,而不是自己的掘墓人。
亲自体验革命:
ChatGPT官网(暂未向中国大陆开放注册,需要想办法搞一个国外的虚拟手机号注册,网上有很多教程):https://chat.openai.com/
文章出处 https://www.musicradar.com/news/chatgpt-ibanez-tube-screamer-plugin
转载新闻请注明出自 Midifan.com