Accurate tape effect

Howdy, I was wondering how to make a random number in the Nyquist Prompt box, for a particular function that I use to attempt to create a tape warble effect.

Here is the code currently, with fixed oscillation speed and depth value.

;; speed is in rpm
(setf depth 0.0001)
(setf speed 22)
(multichan-expand #'snd-tapv track 0 (mult depth (sum 1 (hzosc (/ speed 60.0)))) 2)

I change the parameters to change the vibrato frequency, and depth. I wish to put a random number generator in the speed parameter, so that the frequency is constantly changing, and somehow get the pitch to go up and down randomly. I have several VHS captures with this kind of warble in the sound that I wish to recreate digitally without having to record my audio to a VHS tape on my VCR in SLP mode, and then capture it to my computer, which requires patience and lots of cables. (I have all the stuff, it just takes a while.)

If I look at a tone recorded to VHS and captured, the frequency will jump around a little, not staying constant, and does not follow any recognizable pattern.
Here is a screenshot of a note in Spectrum view, and shows the inconstant tone due to variation in tape speed.

Anybody have good ideas on how to recreate this accurately?

There’s a free VCR emulation plugin which works in Audacity3 on Windows…

[ I believe it’s possible to run VST plugins in Linux, but I’ve never done that myself].

The free Chow (audio) Tape emulation plugin is available in Linux flavor …
https://chowdsp.com/products.html#ChowTape
It’s an emulation of domestic reel-to-reel tape, not VCR which has a different quality because of the rotating tape head.

There’s an old Audacity-specific Nyquist plugin “Random Pitch Modulation”

1 Like

It still works in Audcaity3, when installed it appears on the effect list in the “n/a” category

RPM

You can generate a varying sine wave using HZOSC.

Example:

(setf depth 0.01)
(setf rpm 22)

; convert to Hz
(setf speed (/ rpm 60.0))

(defun gen-vardelay (hz depth)
  (setf max-variance (/ hz 2.0))  ; Max variation of speed in Hz
  (setf variance (sound-srate-abs hz (noise)))
  (setf variance (mult variance max-variance))
  (setf variance (force-srate *sound-srate* variance))
  (sum depth (mult depth (hzosc (sum hz variance)))))


(let ((vardelay (gen-vardelay speed depth)))
  (multichan-expand #'tapv *track* 0 vardelay (* 2 depth)))

For the example shown, the values below produce a closer match …

(setf depth 0.0002)
(setf rpm 1000)

I increased the depth for illustration purposes, and the rpm was taken from Beauregard42’s original post. :wink:

At SLP the VHS tape spools could be turning at ~22 rpm,
but the tape head will be spinning at ~1500 rpm.
22rpm+1500rpm

Maybe two passes at those rates would be required for an accurate emulation of the VHS wow+flutter . :thinking:

I’m using the linear audio track on my VCR, which does not get much of anything from the head drum. The capstan is rotated by a motor, which has a fly-wheel, but the tape does not move at an exactly constant speed. Since the audio is recorded linearly, the variations during recording add up with the ones during playback. VHS HIFI audio, however, is recorded as an FM track mixed with the video tracks, which gives, well, Hi Fidelity audio, basically no noise, nearly high frequency response, etc. The tape would be running at about 1.1 centimeters per second, and I will provide an audio sample of what it sounds like.
Also, the tape reels move extremely slowly, the take-up reel spinning once only every 8 seconds or so. Maybe the pinch roller would run at about 22RPM, but not much else. On the RPM value in the original nyquist prompt script, that was pulled off of this website from somewhere about a year ago, where I don’t remember. The RPM is not actually RPM, it is simply the vibrato speed in 60ths of a second. A value of 60 would give a frequency modulation of 1 cycle per second.

I never heard anything like that from VHS. If there was a problem it was usually noise/dropouts and usually the video was screwed-up at the same time.

VHS Hi-Fi sounded “perfect” to me (when there were no glitches). It was better than cassettes or vinyl.

linear audio not coming from the head drum, but the spinning drum will still tug at the tape, causing tape-speed variations.

The audio of the earliest VHS models, (not the later Hi-Fi versions),
was worse than compact-cassette, but better than micro-cassette.

Groovy! I managed to install the random pitch modulation plugin, and it works exactly how I wanted it to. Thanks a lot!

I’ll make sure to send you guys some clips of original audio, real VHS audio, and fake VHS audio. Ciao.

Also, notes: The frequency cut-off for the linear audio track at the slower tape speed is about 4500 Hz, and there is plenty of noise.

If you can obtain a VHS emulation plugin, but need SLP quality,
temporarily double the speed of your track,
then apply the VHS emulation plugin, then half the speed, so it’s back to normal speed.

before-after VHS SLP emulation.

Interesting. I figure it would be 3x, because VHS SLP is 1/3 the speed of SP. But, if it works, it works. Thanks.

You’re correct,
but at 2x the mains-hum & VHS-whine added by the emulation plugin still sound plausible.
At 3x the quality is really bad: speech is only just understandable.

This topic was automatically closed after 30 days. New replies are no longer allowed.