Tape start effect - the curve

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

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

Post

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 12:57 pm, edited 1 time in total.

Post

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

Post

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 1:20 pm, edited 1 time in total.

Post

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

Post

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

Post Reply

Return to “DSP and Plugin Development”