Multitap Delay Confusion

I am sure that I must be missing something, but can anyone explain how I can use the multitap delay device to create a ping pong delay that mimics the following behaviour:

Line 00 Note On (Clap sample)
Line 08 Delayed signal, panned hard left, -3dB
Line 16 Delayed signal, panned hard right, -6dB
Line 24 Delayed signal, panned hard left, -9dB
Line 32 Delayed signal, panned hard right, -12dB
Line 40 Delayed signal, panned hard left, -15dB
Line 48 Delayed signal, panned hard right, -18dB
Line 56 Delayed signal, panned hard left, -21dB

The exact amounts of decrease in volume isn’t important, but gives the effect I’m trying to achieve.

I normally use Mykrasound Stereo Echo to achieve this in seconds, but the plugin is old and unsupported and occasionally crashes, so I’d much rather do this natively in Renoise. Thanks!

I’ve given up trying to understand the multitap and the thoughts behind it. I tried the same like you and it seems it’s just not possible to achieve decreasing volume with each pan tap. You can achieve things like

Line 00 Note On (Clap sample)
Line 08 Delayed signal, panned hard left, -3dB
Line 16 Delayed signal, panned hard right, -3dB
Line 24 Delayed signal, panned hard left, -6dB
Line 32 Delayed signal, panned hard right, -6dB
Line 40 Delayed signal, panned hard left, -12dB
Line 48 Delayed signal, panned hard right, -12dB

only.

The reason is, when you setup one tap and pan the first feedback right with a delay of 4 lines and the second feedback left with 8 lines, then it’s still only one tap for the device, no matter if it’s in fact two. The PingPong settings actually should be called “PingPongPang”, because it has 3 feedbacks and similar stuff more.

I don’t know who’s thought out this thing, but it doesn’t make much sense at all. The device is a pure mess. I’ve bought the Rob Papen Delay instead, because I’m not gonna wait a year for a delay device update, after you’d first have to convince someone of the fact the device doesn’t work properly.

This is a preset, that does the decay double-stepwise, means lowering with each second echo. Hope this helps. What you really wanted, doesn’t work with this device. But this sounds at least pretty similar.

Just copy the XML code and paste it in the Mixer view to your track. Hope, this helps you a bit out.

Cheers

  
<?xml version="1.0" encoding="UTF-8"?>  
<filterdeviceclipboard doc_version="0"><br>
  <deviceslot type="MultitapDevice"><br>
    <isactive>true</isactive><br>
    <isselected>true</isselected><br>
    <selectedpresetname>BA Ping Pong</selectedpresetname><br>
    <selectedpresetismodified>true</selectedpresetismodified><br>
    <ismaximized>true</ismaximized><br>
    <visibletap>0</visibletap><br>
    <visiblepanel>true</visiblepanel><br>
    <mutedrysignal><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </mutedrysignal><br>
    <tap1delayleft><br>
      <value>299</value><br>
      <visualization>Device only</visualization><br>
    </tap1delayleft><br>
    <tap1delayright><br>
      <value>749</value><br>
      <visualization>Device only</visualization><br>
    </tap1delayright><br>
    <tap1inputamount><br>
      <value>1.0</value><br>
      <visualization>Device only</visualization><br>
    </tap1inputamount><br>
    <tap1amount><br>
      <value>0.707945764</value><br>
      <visualization>Device only</visualization><br>
    </tap1amount><br>
    <tap1lfeedback><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap1lfeedback><br>
    <tap1rfeedback><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap1rfeedback><br>
    <tap1invertfeedback><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap1invertfeedback><br>
    <tap1previoustapinput><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap1previoustapinput><br>
    <tap1lefttappan><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap1lefttappan><br>
    <tap1righttappan><br>
      <value>1.0</value><br>
      <visualization>Device only</visualization><br>
    </tap1righttappan><br>
    <tap1filtermode><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap1filtermode><br>
    <tap1filtertype><br>
      <value>1.0</value><br>
      <visualization>Device only</visualization><br>
    </tap1filtertype><br>
    <tap1filterfreq><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap1filterfreq><br>
    <tap1filterresonance><br>
      <value>11.1066723</value><br>
      <visualization>Device only</visualization><br>
    </tap1filterresonance><br>
    <tap1filterdrive><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap1filterdrive><br>
    <tap1linesync><br>
      <value>1.0</value><br>
      <visualization>Device only</visualization><br>
    </tap1linesync><br>
    <tap1lsynctime><br>
      <value>2</value><br>
      <visualization>Device only</visualization><br>
    </tap1lsynctime><br>
    <tap1rsynctime><br>
      <value>4</value><br>
      <visualization>Device only</visualization><br>
    </tap1rsynctime><br>
    <tap1lsyncoffset><br>
      <value>2.23517413e-010</value><br>
      <visualization>Device only</visualization><br>
    </tap1lsyncoffset><br>
    <tap1rsyncoffset><br>
      <value>-2.23517413e-010</value><br>
      <visualization>Device only</visualization><br>
    </tap1rsyncoffset><br>
    <tap2delayleft><br>
      <value>299</value><br>
      <visualization>Device only</visualization><br>
    </tap2delayleft><br>
    <tap2delayright><br>
      <value>749</value><br>
      <visualization>Device only</visualization><br>
    </tap2delayright><br>
    <tap2inputamount><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap2inputamount><br>
    <tap2amount><br>
      <value>0.707945764</value><br>
      <visualization>Device only</visualization><br>
    </tap2amount><br>
    <tap2lfeedback><br>
      <value>0.5</value><br>
      <visualization>Device only</visualization><br>
    </tap2lfeedback><br>
    <tap2rfeedback><br>
      <value>0.5</value><br>
      <visualization>Device only</visualization><br>
    </tap2rfeedback><br>
    <tap2invertfeedback><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap2invertfeedback><br>
    <tap2previoustapinput><br>
      <value>0.707945764</value><br>
      <visualization>Device only</visualization><br>
    </tap2previoustapinput><br>
    <tap2lefttappan><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap2lefttappan><br>
    <tap2righttappan><br>
      <value>1.0</value><br>
      <visualization>Device only</visualization><br>
    </tap2righttappan><br>
    <tap2filtermode><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap2filtermode><br>
    <tap2filtertype><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap2filtertype><br>
    <tap2filterfreq><br>
      <value>1.0</value><br>
      <visualization>Device only</visualization><br>
    </tap2filterfreq><br>
    <tap2filterresonance><br>
      <value>9.61333466</value><br>
      <visualization>Device only</visualization><br>
    </tap2filterresonance><br>
    <tap2filterdrive><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap2filterdrive><br>
    <tap2linesync><br>
      <value>1.0</value><br>
      <visualization>Device only</visualization><br>
    </tap2linesync><br>
    <tap2lsynctime><br>
      <value>4</value><br>
      <visualization>Device only</visualization><br>
    </tap2lsynctime><br>
    <tap2rsynctime><br>
      <value>4</value><br>
      <visualization>Device only</visualization><br>
    </tap2rsynctime><br>
    <tap2lsyncoffset><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap2lsyncoffset><br>
    <tap2rsyncoffset><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap2rsyncoffset><br>
    <tap3delayleft><br>
      <value>299</value><br>
      <visualization>Device only</visualization><br>
    </tap3delayleft><br>
    <tap3delayright><br>
      <value>749</value><br>
      <visualization>Device only</visualization><br>
    </tap3delayright><br>
    <tap3inputamount><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap3inputamount><br>
    <tap3amount><br>
      <value>0.562341332</value><br>
      <visualization>Device only</visualization><br>
    </tap3amount><br>
    <tap3lfeedback><br>
      <value>0.299999952</value><br>
      <visualization>Device only</visualization><br>
    </tap3lfeedback><br>
    <tap3rfeedback><br>
      <value>0.299999952</value><br>
      <visualization>Device only</visualization><br>
    </tap3rfeedback><br>
    <tap3invertfeedback><br>
      <value>1.0</value><br>
      <visualization>Device only</visualization><br>
    </tap3invertfeedback><br>
    <tap3previoustapinput><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap3previoustapinput><br>
    <tap3lefttappan><br>
      <value>0.309999973</value><br>
      <visualization>Device only</visualization><br>
    </tap3lefttappan><br>
    <tap3righttappan><br>
      <value>0.680000305</value><br>
      <visualization>Device only</visualization><br>
    </tap3righttappan><br>
    <tap3filtermode><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap3filtermode><br>
    <tap3filtertype><br>
      <value>3</value><br>
      <visualization>Device only</visualization><br>
    </tap3filtertype><br>
    <tap3filterfreq><br>
      <value>0.180000141</value><br>
      <visualization>Device only</visualization><br>
    </tap3filterfreq><br>
    <tap3filterresonance><br>
      <value>8.21333313</value><br>
      <visualization>Device only</visualization><br>
    </tap3filterresonance><br>
    <tap3filterdrive><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap3filterdrive><br>
    <tap3linesync><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap3linesync><br>
    <tap3lsynctime><br>
      <value>2</value><br>
      <visualization>Device only</visualization><br>
    </tap3lsynctime><br>
    <tap3rsynctime><br>
      <value>5</value><br>
      <visualization>Device only</visualization><br>
    </tap3rsynctime><br>
    <tap3lsyncoffset><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap3lsyncoffset><br>
    <tap3rsyncoffset><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap3rsyncoffset><br>
    <tap4delayleft><br>
      <value>299</value><br>
      <visualization>Device only</visualization><br>
    </tap4delayleft><br>
    <tap4delayright><br>
      <value>749</value><br>
      <visualization>Device only</visualization><br>
    </tap4delayright><br>
    <tap4inputamount><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap4inputamount><br>
    <tap4amount><br>
      <value>0.501187205</value><br>
      <visualization>Device only</visualization><br>
    </tap4amount><br>
    <tap4lfeedback><br>
      <value>0.200000048</value><br>
      <visualization>Device only</visualization><br>
    </tap4lfeedback><br>
    <tap4rfeedback><br>
      <value>0.200000048</value><br>
      <visualization>Device only</visualization><br>
    </tap4rfeedback><br>
    <tap4invertfeedback><br>
      <value>1.0</value><br>
      <visualization>Device only</visualization><br>
    </tap4invertfeedback><br>
    <tap4previoustapinput><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap4previoustapinput><br>
    <tap4lefttappan><br>
      <value>0.359999925</value><br>
      <visualization>Device only</visualization><br>
    </tap4lefttappan><br>
    <tap4righttappan><br>
      <value>0.656666696</value><br>
      <visualization>Device only</visualization><br>
    </tap4righttappan><br>
    <tap4filtermode><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap4filtermode><br>
    <tap4filtertype><br>
      <value>2</value><br>
      <visualization>Device only</visualization><br>
    </tap4filtertype><br>
    <tap4filterfreq><br>
      <value>0.153333515</value><br>
      <visualization>Device only</visualization><br>
    </tap4filterfreq><br>
    <tap4filterresonance><br>
      <value>5.78666687</value><br>
      <visualization>Device only</visualization><br>
    </tap4filterresonance><br>
    <tap4filterdrive><br>
      <value>0.546666682</value><br>
      <visualization>Device only</visualization><br>
    </tap4filterdrive><br>
    <tap4linesync><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap4linesync><br>
    <tap4lsynctime><br>
      <value>2</value><br>
      <visualization>Device only</visualization><br>
    </tap4lsynctime><br>
    <tap4rsynctime><br>
      <value>5</value><br>
      <visualization>Device only</visualization><br>
    </tap4rsynctime><br>
    <tap4lsyncoffset><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap4lsyncoffset><br>
    <tap4rsyncoffset><br>
      <value>0.0</value><br>
      <visualization>Device only</visualization><br>
    </tap4rsyncoffset><br>
  </deviceslot><br>
</filterdeviceclipboard>  
  

Agree with BitArts there is definitely something fundamentally wrong with the MultiTap device (which I’d had more time recently to play with things and surprised more wasn’t caught in the beta rounds.) At work again now and trying to remember from very brief preliminary checks last night.

I can give a DSP chain for true ping pong using a MultiTap, LFO plus Hydra but that really shouldn’t be needed!

I could do with the picture of the routing diagram to confirm how things are meant to work but something seems like it must be awry.

First problem. You always get a repeat on both left and right, even if one of the Feedbacks is set to 0%. Why is there always a first repeat on both channels based on the Amount slider? Makes no sense!

Ignore the Ping-Pong button for now (didn’t test it well enough) but trying to do this via automating with an LFO. Right Feedback at 0%, Left Feedback at a positive amount. Create the Ping-Pong by sending the LFO to Left Out Pan.

If the Pan is after the Feedback tap then you would get a perfectly normal ping-pong from there, as you are effectively delaying a single channel and panning it afterwards. This is not the case though.

Now if the Pan is before the Feedback loop points you would expect to get the first repeat, then it would try and go via the feedback loop set to 0% and silence the signal. This is not what happens! You get repeats on one side twice as often as the other, with the repeats where both channels are creating sound not being as load. The R Pan position appears to determine the position of this erroneous sound (so having it set to centre will give you almost ping-pong but not hard panned to either side.) Not quite managed to work out why this is and how it works, hope the diagram may help, as only had a few minutes to look at things last night and no Renoise here at work.

But definitely agree the device needs some investigation and possibly a reworking.

Keeping the stereo concept of the old delay for the multitap was nonsense and destroyed more, than it added. You simply CAN’T handle two different feeds as one tap, if you don’t offer full and total flexibility to the feedback- and tap-routing at the same time. A common ping-pong delay is a mono-in device anyway, with the same signal on both sides, where the left feedback feeds the right channel and vice versa. But self-feeds aren’t possible in Renoise. The only device capable of them is the multitap, but it’s not able to handle them in the necessary way. Even if you do a mockup and try to simulate this, using one initial multitap to feed a second one, you’d have later then to feed a third one with both feedbacks. All happening on a separate send channel, because otherwise each feed carries the origin input with it.

So, absolutely nothing has changed in comparision to the “simple” delay. It’s all exactly the same issues, when you try to setup a simple stereo ping-pong.

EDIT: “Yes, I know, it’s complicated, but we copied the device from some book and it’s right this way.” doesn’t help anyone at all, because it’s definetely NOT right that way. But that’s what I meant, when I said, I rather bought a new VST delay, instead of trying to convince someone of the fact, the native multitap doesn’t work properly. Who cares about the fact everyone seriously trying to handle it and to understand its concept is saying, it’s not right this way? None, because the book said, it’s right.

Here’s an example song which does exactly what you want:
3203 dblue-ping-pong-delay-example.xrns

(Only difference is that I’ve used a 4 line delay instead of 8, but you get the idea)

The main thing to understand here is that Tap 1 and Tap 2 will be handling the left channel, while Tap 3 and Tap 4 will be handling the right channel. It’s important to set it up this way because of how the taps are processed and how they feed into each other. It won’t work exactly the way you want if you simply use Tap 1 for left and Tap 2 for right.

Diagram for reference:
3206 pingpong.png

Setup:

Tap 1: Left Channel Delay

  • Enable Line Sync and set the desired number of lines until Ping #1 should be heard after the initial input sound.
  • Set Output Pan L and Output Pan R to hard left.
  • Set Input Source to -6dB (Panning both channels to one side with the same delay time will effectively double the volume, so we must compensate for this.)
  • Set Feedback to 0% (We don’t want any echoes here, just the basic delay)
  • Set Amount to -3dB (The desired volume of Ping #1)

Tap 2: Left Channel Echoes/Feedback

  • Enable Line Sync and set the desired number of lines until each Ping should repeat. (Typically this will be double the amount of Tap 1)
  • Set Input Source to -INF (Silence the dry input)
  • Set Input Tap 1 to 0dB (Send the delayed left signal from Tap 1 into Tap 2’s feedback chain)
  • Set Output Pan L and Output Pan R to their default values of hard left and hard right, respectively.
  • Set Feedback to 50% (Each repeating Ping will be half the volume of the previous one)
  • Set Amount to -9dB (The desired volume of Ping #2)

Tap 3: Right Channel Delay

  • Enable Line Sync and set the desired number of lines until Pong #1 should be heard after the initial input sound.
  • Set Output Pan L and Output Pan R to hard right.
  • Set Input Source to -6dB (Panning both channels to one side with the same delay time will effectively double the volume, so we must compensate for this.)
  • Set Input Tap 2 to -INF (We don’t want any of the previous taps feeding in here, we only want the dry input)
  • Set Feedback to 0% (We don’t want any echoes here, just the basic delay)
  • Set Amount to -6dB (The desired volume of Pong #1)

Tap 4: Right Channel Echoes/Feedback

  • Enable Line Sync and set the desired number of lines until each Pong should repeat. (Typically the same amount as Tap 2)
  • Set Input Source to -INF (Silence the dry input)
  • Set Input Tap 3 to 0dB (Send the delayed right signal from Tap 3 into Tap 4’s feedback chain)
  • Set Output Pan L and Output Pan R to their default values of hard left and hard right, respectively.
  • Set Feedback to 50% (Each repeating Pong will be half the volume of the previous one)
  • Set Amount to -12dB (the desired volume of Pong #2)

The master again. I bow down and call myself a liar for telling, it’s not possible. :)

Still this can’t be it, using 4 taps to simulate a simple stereo ping-pong, which normaly would be a single tap only.

Edit: Just to add, why this can’t be it: If you now try to setup a real multitap, based on this or including this, you have to use send channels again, because you can’t separately put through the input signal. I don’t remember the diagram of the device setup, but an additional “cross-stereo-feed” option for the device’s internal ping-pong setting might help here(?).

I’ve seriously analyzed the output of the multitap now, and this is the result and the reason, why a stereo ping-pong delay per single tap - as insert effect - atm doesn’t work with this device:

1st of all: the internal ping-pong handling does work properly. As soon, as there are differences in the L/R Lines per feeback setting, it just becomes very hard to follow or even control the output, because what you initiate there, is a avalanche of cross-stereo changes with each feedback.

Now why does it not do the same and work properly then, when you try to create a simple stereo ping-pong and set your L/R Lines Per Feedback to the same feedback rate? In fact it does. It takes the input and crossfeeds the channels, like it’s told to do. The problem is, it is doing so in stereo and starts on both sides at the same time. It feeds the left channel from the right and the right channel from the left with each feedback. And using a mono sample, center panned, the result is the absolutely same then, as without ping-pong. It’s a simple stereo feedback of a mono sample. Both panorama sides are fed with feedback at the same time. And that’s exactly the point and “problem”. There should only ONE panorama position be fed with an initial feedback.

You can achieve to prove the whole thing works indeed that way, when you take a sample and pan it hard left or right on the mixer input, before you feed the multitap with it. Because then it has the desired effect of a real stereo ping-pong output.

The point is, as soon, as the multitap’s ping-pong option is activated, we’d need the option to tell the device, to handle the whole signal as a mono signal and which pan position to start at with the feedback. And that’s it.

So, the summary is, the device works properly, but its options are not complete yet, to achieve the things, you’d suppose it to do. At least not as an insert effect.

When you use the whole thing on a send and pan your sent signal hard left or right (maybe after making it mono before) before you feed the multitap (mute the source!) with it, you get the desired effect of a properly working ping-pong delay.

Edit: Knowing so, actually a stereo ping-pong should be possible as an insert effect with 2 taps only.But it doesn’t work, because of the device internal panning. This indicates, the panning is applied to the individual taps POST feeding the following tap. This is imo wrong and should be changed. <- WRONG. The panning is done PRE feed. I guess, I simply did something wrong or forgot something to set. So the 2-tap-thing works indeed (see download below).

Here’s a file, that proves the whole thing, generating a stereo-ping-pong from a single tap. The mixer input is just panned hard left. The panorama positions of the feedback are swapped, so the first feedback doesn’t appear on the same side, as the input does.

Download

Here’s a preset, that does a stereo ping-pong in two taps. The first tap makes the signal mono and pans it hard left. The second tap does the ping-pong job, after swapping the panning.

Download “True Stereo Ping-Pong with 2 taps”

He does has access to the Renoise source codes… so he can peek into the routine to see what it actually does…But i guess the added value of support on this is right the reason why he got access to it.

A good decision. He’s the one who to me appears to be the most outstanding competent here on the board. So, honor to whom honor is due. :)

This is true, but I didn’t need to look at the source code. I just took a few minutes to experiment and play around with the device until I found the desired effect. Really wasn’t a big deal.

Definitely a simpler and more elegant solution than my earlier post. (Possibly at the expense of some flexibility? Not quite sure yet. I’ll have to spend a bit more time playing around with this damn device, heh)

Nice work :)

Not really. The only disadvantage is the loss of one tap for the mono-panning. Everything else works with the expected flexibilty. Independent modulation of the pan positions in the first feedback even opens a whole new universe.

@dblue: Would you forward this to the devs, so someone takes care of it?

“as soon, as the multitap’s ping-pong option is activated, we’d need the option to tell the device, to handle the whole signal as a mono signal and which pan position to start at with the feedback” (from the posting #8)

Even if it’s not done that way, at least to let them know, there has to be done something. Because that’s, what the whole confusion with the device is about.

Have to get back to this one more time.

The most simple solution for the ping pong problem would be, to apply the panning of both stereo panels as a PRE FX to each tap. I know, I said this is already handled as a pre-FX. But this was related to the following tap, not to the internal handling of each tap itself.

ATM the panning is applied POST feedback for each tap. That’s why the ping-pong doesn’t work like expected. So again, when the panning of each tap would be applied PRE feedback (of course NOT directly to the origin input signal, which is put through!!), this would already be the solution of all ping-pong problems.

If this way of routing was applied to the whole device, instead of to the ping-pong only, this would of course have the effect, an initial delay would stay on its origin position till the end of its feedback. That means if I move a pan slider from left to right while feeding the channel, each feedback would stay on its initial panorama position, no matter where the slider meanwhile moved to. This would be WAY cool, but ofcourse it would be different from the way it is right now.

So a single additional switch for the panning (per tap) would mean a huge enhancement for the sound capabilities of the multitap, just by choosing between “Pre” and “Post” panning. And it would be the most simple solution to the ping-pong problem.

Another way would be providing a panning interface for both (post & pre) per tap. This would be the most outstanding and awesome thing!