skip to content

Tape emulation

loading...

I’m always looking for new and better ways to emulate degraded tape. That wobbly, fluttery sound just does something to my Xennial brain. Logic, Helix, and other platforms all have their tape emulation plugins.

Using HYPERBLAM, I’ve arrived at a pretty realistic and satisfying algorithm using a filter (<filter-blam>), an LFO controlling the <pads-blam>s detune property (which modulates pitch, creating a vibrato) and a couple of <blam-blam>s.

<chain-blam out="bus">
  ...
  <filter-blam freq="1000">
    <blam-blam prop="freq" value="8000|8000|1500|750" from="sequencer-blam" chance="0.75" ramp="0.333"></blam-blam>
  </filter-blam>
</chain-blam>
<lfo-blam prop="detune" gain="66" beats="1">
  <blam-blam prop="beats" value="3|3|0.25|0.125|0.0625" from="sequencer-blam" chance="0.25" ramp="0.125" revert></blam-blam>
  <blam-blam prop="gain" value="50|50|25|100|300" from="sequencer-blam" chance="0.25" ramp="0.125" revert></blam-blam>
</lfo-blam>

The <blam-blam> elements listen for events. In this case: events sent from <sequencer-blam>, containing beat/sound scheduling data. Think of <sequencer-blam> as a kind of metronome.

The first <blam-blam> randomizes a filter’s frequency value, using a ramp to interpolate between each successive frequency. This emulates wear: a tape will—unnevenly—lose the ability to reproduce higher frequencies over time. Another <blam-blam> controls the frequency (in beats) of the LFO attached to detune. This creates “flutters” in the pitch modulation, emulating chewed up tape and the turbulent playback it produces. A final <blam-blam> fluctuates the gain of the LFO; the depth of the pitch modulation. Some parts of the tape are in worse condition than others.

Importantly, each <blam-blam> takes a chance of less than 1. By only responding to some events, the modulation pattern is realistically uneven and intermittent.