Tape start effect - the curve

DSP, Plug-in and Host development discussion.
itoa
KVRist
489 posts since 3 Sep, 2009 from Poland

Post Wed Jan 22, 2020 2:45 am

Ok, I'm making a tape stop / start effect. Stop is trivial, playhead speed is decreasing until it stops.

Problems begin with start, that need to be perfectly synchronized at the end (delay length = 0). Tried different curves, all of them sound unnatural, because playhead must move faster than recording head to reach it. So the pitch must be greater than pitch of the original signal (this doesn't really sound like a tape start).

Any solutions / tricks? :)
giq

signalsmith
KVRer
18 posts since 5 Jul, 2018 from Cambridge, UK

Re: Tape start effect - the curve

Post Wed Jan 22, 2020 4:53 am

I've never implemented a tape stop, but could you skip a section of audio as it resumes, with a cross-fade or something?

Without that, if you don't want the speed to go faster than 1x, then you end up needing lookahead/latency. During the "start" section, the read-head is moving slower than the write head, so to end up at the same point then the read-head would need to have started ahead of the write-head.
Last edited by signalsmith on Wed Jan 22, 2020 4:57 am, edited 1 time in total.

itoa
KVRist
489 posts since 3 Sep, 2009 from Poland

Re: Tape start effect - the curve

Post Wed Jan 22, 2020 4:56 am

Remember the buffer is running. I start reading before current buffer position with increasing speed, but... to "catch a running buffer" the speed must be greater than actual playback speed :) and starting position doesn't really matter, playhead needs to move faster than recording.

This is possible with static buffer or with bigger latency, but seems impossible in a runtime situation. However some plugins seem to do it.
giq

signalsmith
KVRer
18 posts since 5 Jul, 2018 from Cambridge, UK

Re: Tape start effect - the curve

Post Wed Jan 22, 2020 5:16 am

I'm suggesting that you get back up to speed, and then cross-fade to skip the delay you've accumulated.

If you don't want your playback speed to go above 1x, then your average playback speed is (by definition) less than 1x - which means you will need to skip a bit of the buffer at some point. If you're not using latency, then the final bit of the "skip" needs to happen at the end, i.e.

Code: Select all

 in: 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19
out: 1  2   3    4  .. (silent) ..  11    12   13   14  15
                                                        16  17  18  19
        ^-- stop                    ^--- start          ^- cross-fade                
That is: you let it fall behind during the "stop", then jump ahead as the "start" begins, then have an extra (cross-faded) skip right at the end to get back in sync.
Last edited by signalsmith on Wed Jan 22, 2020 5:20 am, edited 1 time in total.

itoa
KVRist
489 posts since 3 Sep, 2009 from Poland

Re: Tape start effect - the curve

Post Wed Jan 22, 2020 5:19 am

So speeding up and the same time crossfading with original signal (position). I could try this.
giq

itoa
KVRist
489 posts since 3 Sep, 2009 from Poland

Re: Tape start effect - the curve

Post Wed Jan 22, 2020 11:27 pm

This sounds exactly as expected: speeding up and crossfading (with all phasing issues) ;)
giq

Return to “DSP and Plug-in Development”