The Kiss Of Shame v1.0.0 WiN MAC [FREE]
22/04/2024 | VST3 AU WiN MAC | 226 MB
The Kiss of Shame – Tape Desecration Processor
Recently I was donated the source code to The Kiss of Shame, a magnetic tape emulation plug-in from 2014, originally developed by Eros Marcello and friends. The plug-in was never finished or released, but Eros has graciously allowed it to become open source. As part of my plug-in archeology project, I’ve been hacking away at the code to get it up and running again. In this blog post I’ll explain in detail how this plug-in works.
The Kiss of Shame was one of the first analog tape degradation simulations. Quoting from a LinkedIn post by the original author:
It’s the worlds first (and to my knowledge) only tape / analog circuitry emulation plugin that realistically models the effects of magnetic particle instability, lubricant loss, substrate deformation, drift, scrape-flutter, print-through and reel expansion/contraction into a suite of FX processing tools for sound design and music production. We were also the first to leverage machine learning to account for the vast nonlinearities inherent in magnetic tape and analog circuitry.
I don’t know how much of that actually got implemented — I’m not an expert on reel-to-reel tape recorders — but it’s an interesting plug-in nonetheless. ?
All parameters, including reel movements, are fully automatable, and for screen real estate optimization, the reels are collapsible and fully customizable.
Choose between two distinct tape types:
S-111: A superior reel format popular from the 50s to 70s, was the preferred reference tape for many engineers.
A-456: This classic, high-output/low-noise format is a recording staple used in countless productions.
Print-Through – Also known as “bleed-through”, this emulation captures the mechanical speed fluctuations present in analog recordings. While they posed challenges for engineers in the past, they became a hallmark of classic records.
The parameters
In the original code, the parameter system was unfinished: parameters were not exposed to the host and would get reset whenever you (re)opened the editor. Of course, those were the JUCE 3 days, when JUCE did not have the AudioProcessorValueTreeState yet. I ripped out all that old parameter code and replaced it with an APVTS.
That said, The Kiss of Shame was never completely finished and so I don’t feel like I’m being untrue to the original by adding the missing bits and fixing the issues. Here are some things that can still be improved:
Don’t hardcode the sample rate to 44100 Hz.
Add prepareToPlay() and reset() methods to the DSP classes.
Replace the biquads with TPT / SVF filters.
Replace rand() with juce::Random.
Parameter smoothing.
Use oversampling on the saturation stage.
…and more…