Emulate Tape Delay at Half Speed

realshafer's icon

Hi,

I'm working on retrofitting a piece from the 70s in Max that used two tape machines to create a fairly simply tape delay. One basic function has me stumped a bit:

Basic tape delay is altered by setting machines to half speed. Pitch is lowered by an octave, rhythms recorded onto tape are twice as slow, and the delayed material gets progressively further and further away from real-time. The total length of the piece is about 10 minutes.

So, the only solution I can come up with at the moment is to use tapin / tapout with a 10-minute buffer on the tapin and the phasor driving the tapout at half speed.

In the original piece, the tape was simply collected on the uptake side and not fed back to the recording head (ie. this is not a circular buffer). To emulate this in Max I just need a really long buffer, correct?

brendan mccloskey's icon

Hi
a lot depends on whether you're using pre-recorded material or live audio input. Both the [groove~] object, and now also [splay~], will loop audio files and allow you to manipulate pitch and speed. For example, Akihiko Matsumoto built this simple file re-stretch/pitch patch:
http://akihikomatsumoto.com/maxmsp/pitchshifting.html

Chris Muir built a tape delay emulator - I've not used it yet despite the fact it's been around for years, so I'm not sure if it handles live input, very likely does:
http://www.xfade.com/max/TLA/

Max Patch
Copy patch and select New From Clipboard in Max.

And just search here for "tape delay" or "time stretch" - you'll be spoiled for choice it's such a popular idea; and my own granular stretcher/repitcher (Granary) will no doubt pop up in that search too. Here's a simple octaver and delay example:

Brendan

realshafer's icon

Hi Brendan, thanks for your very kind reply. To answer your first question. This is a live input. And to be very clear, I'll explain the function of the two tape machines this way:

TapeMachine1 and TapeMachine2 are running at the same speed, there is no feedback, so the live input is recorded on TapeMachine1, delayed by a certain amount of time and then played back on TapeMachine2.

NOW, I press half speed on TapeMachine2 only. As you can imagine, the once taut tape between the two machines will now be slack and gradually creating a pile of tape waiting to be played. Audio-wise, the live input will initially be delayed by twice as long as before, will sound an octave lower, and over time will fall further and further behind the live input.

Does this make sense? In this case, I'm not sure that any of your suggestions will work. I'm still thinking that I need a delay line as long as the piece in order to accomplish this. I'm I still missing something? Thanks!!

Mike S's icon

You can create a buffer~ of five minutes length for the delay, then when you want the slower speed delay to start (machine2), record in to the buffer and start playing it back with groove~ at a speed of 0.5 (1 octave lower).

Max Patch
Copy patch and select New From Clipboard in Max.

Example :

realshafer's icon

Thanks Mike! Great example patch. I think this is probably the solution I was looking for.

Wetterberg's icon

remember the filtering, too!

Cayko's icon

Hey RealShafer, I am working on making a patch for this same piece, and came to the same roadblock. Thank you for this thread!! I just have a question about how you triggered the count~ to start the poke~. Did you manually trigger it with a bang? I am using a little midi controller to run the faders and I have a bunch of buttons I can use to trigger things as well and it seems to be working the way I need it to. However I haven't rehearsed the piece with the trumpet player yet and I am worried about timing issues. Did you perform the piece? Any tips?