“如此错误的事情听起来从来都不那么正确。”
Kiss of Shame 在 2014 年洛杉矶音频工程学会大会上首次亮相,是一款开创性的 DAW 插件,它利用商业 UX/UI 设计原则来塑造其磁带 + 电路仿真算法。
为了在竞争激烈的专业音频插件市场中脱颖而出,The Kiss of Shame 引入了突破性的功能,包括交互式、多点触控 GUI 和模拟磁带退化模拟,以实现独特的音频效果。
Kiss of Shame 是世界上第一个(也许是唯一一个)磁带/模拟电路仿真插件,它可以真实地模拟磁粒子不稳定性、润滑剂损失、基板变形、漂移、刮擦颤动、透印和卷轴膨胀/收缩的影响。一套用于声音设计和音乐制作的 FX 处理工具。
它也是第一个利用机器学习来解决磁带和模拟电路固有的巨大非线性的技术。最后但并非最不重要的一点是,它是唯一具有完全交互式卷轴的模拟磁带仿真,支持触摸,并且可以像真正的模拟磁带座一样即时编写法兰自动化。
观看简短的演示视频
《耻辱之吻》尚未完全完成,也从未发行过。源代码由其所有者于 2024 年慷慨地捐赠给开源社区。
这个开源项目的目标是:
注意:捐赠的源代码不包含描述中的所有功能。值得注意的是,只有一种磁带类型和一种环境(飓风桑迪),并且缺少直印功能。在当前形式下,该插件只能在 44100 Hz 采样率下正常工作。也就是说,它仍然是一个有趣的插件,具有很酷的 UI,并且可以从源代码中学习很多东西!
笔记:
️ 目前该工作正在进行中。插件可能有问题。使用风险自负!️
Mac 版本的插件已签名并经过公证。
如果 AU 版本的插件在 DAW 中不可见,请打开“应用程序/实用程序/终端” 。输入以下内容并按 Enter 键:
killall -9 AudioComponentRegistrar
然后重新启动您的 DAW。现在插件应该是可见的。如果没有,请重新启动计算机。
在两种不同的磁带类型之间进行选择:
S-111 – 一种在 50 年代到 70 年代流行的高级卷轴格式,是许多工程师首选的参考磁带。 《耻辱之吻》推出了首款数字仿真,将这种传奇格式带入了数字世界。
A-456 – 这种经典的高输出/低噪音格式是无数作品中使用的主要录音格式。虽然存在许多软件模拟,但没有一个能够像这样重新创建它。采用独特的数字娱乐策略来捕捉其本质。
注意:磁带类型选择按钮当前不起作用。
从风化到天气:
年龄– 该旋钮允许用户规定所选磁带类型经受所选“环境”的假设时间量,以操纵相应效果的严重程度。
环境- 在几种模拟存储条件之间进行选择,以对源材料造成诸如磁粒子不稳定性、氧化、润滑剂损失、磁带包膨胀/收缩、“醋综合症”等因素的声波影响。用户甚至可以选择“飓风桑迪”设置来访问根据浸没在风暴洪水中然后从洪水中恢复的磁带进行建模的处理过程。
注意:仅实施飓风桑迪环境。
现实世界的障碍:
耻辱- 耻辱之吻再现了这些因素的全部范围,例如漂移、哇、颤动和刮擦颤动,用户可以通过中心旋钮传递这些因素。它可以将您的源信号从浅色变为完全损坏。
Print-Through – 也称为“渗透”,该仿真捕获模拟录音中存在的机械速度波动。虽然它们过去给工程师带来了挑战,但它们成为了经典唱片的标志。
注意:未实现直印功能。
伸出手触摸胶带:
Kiss of Shame 是第一个具有动画、交互式卷轴的磁带插件,只需单击或触摸即可操作。这使得用户可以实时访问真实的模拟磁带法兰,而无需两个物理磁带卡座,并且只需要很短的时间。所有参数,包括卷轴运动,都是完全自动化的,并且为了优化屏幕空间,卷轴是可折叠的并且完全可定制。
提示:要进行翻边,请拖动卷轴。要折叠卷轴,请双击 UI 中的任意位置。
简要说明:
目前仅测试:
要设置 CMake 构建,请确保安装了 CMake 和 Ninja。默认情况下,Ninja 配置为快速编译时间,但如果您不想使用它,请从下面的配置脚本中省略“-G Ninja”并手动指定作业数量。检查 CMake 文档以了解如何执行此操作
配置您的项目(获取 JUCE、设置 JUCE 项目):
cmake -B "build" -G Ninja
构建您的项目:
cmake --build "build" --config Release --target all --
将“--config Release”替换为“--config Debug”以进行调试版本。
构建会自动复制到适合您的目标平台的合理文件夹中(例如: C:Program Files (x86)Common Files/VST3/
for Windows),以便在开发过程中在 DAW 中轻松打开此插件。构建也将位于build/TheKissOfShame_artefacts/(Release or Debug)
下。
AAX 编译未启用,但可以通过将AAX
添加到/CMakeLists.txt
中juce_add_plugin
下的FORMATS
定义来启用。要针对 AAX 进行编译,您需要使用juce_set_aax_sdk_path(" ... ")
指定 AAX SDK 的位置。这还没有经过测试。
我已在代码中添加了注释来解释它的作用,但要了解完整的演练,请查看我的博客文章。
原始代码是使用JUCE 3.1编写的。它要求用户将包含图像和声音文件的文件夹复制到/Users/Shared/KissOfShame
。这些参数不会暴露给 DAW,并且会在编辑器重新打开时重置。
此存储库中进行了以下更改:
我发现的错误(或者介绍的呵呵):
beginGesture
被调用两次。这不是一个大问题,但也不是很大。代码中可以/应该改进的其他内容(欢迎志愿者!):
prepareToPlay()
和reset()
方法添加到DSP 类。重置方法应该清除旧状态。audioGraphProcessingBuffer = audioBuffer
,这可能会分配(至少第一次)。Envelope
和EnvelopeDips
)可以跟踪上一个和下一个点,因此我们不必在每个时间步循环遍历所有点。audioProcessor.curPositionInfo
使用已弃用的 API。rand()
和srand()
。替换为juce::Random
。或许:
targetDepth = depth * depth * 1000.0f
。)版权所有 (C) 2014-2015 埃洛斯·马塞洛
原开发商:
Eros Marcello — 创始人、首席产品架构师
Brian Hansen — DSP 工程/算法开发
Yannick Bonnefoy — GUI
Matthijs Hollemans 和贡献者的更新和改进。
该程序是自由软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证(许可证的第 3 版)或(由您选择)任何更高版本的条款重新分发和/或修改它。
此存储库中的一些代码( Granulate
类)取自 Perry R. Cook 和 Gary P. Scavone 的 The Synthesis ToolKit in C++ (STK)。
JUCE 版权所有 © Raw Material Software。
VST® 是 Steinberg Media Technologies GmbH 在欧洲和其他国家注册的商标。