Support

If you have a problem or need to report a bug please email : support@dsprobotics.com

There are 3 sections to this support area:

DOWNLOADS: access to product manuals, support files and drivers

HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects

USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here

NEW REGISTRATIONS - please contact us if you wish to register on the forum

Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright

interpolated delays and delaytimechanges?

DSP related issues, mathematics, processing and techniques

interpolated delays and delaytimechanges?

Postby Nubeat7 » Mon Nov 11, 2013 9:46 pm

hi all,

i`m working on a delay with modulated time after trying out different interpolated versions i see the same problem everywhere, when delay time changes there is always this "grainy pitch effects" happening, pitch down when time goes longer and pitch up when time goes shorter

how could i avoid this effect on fast time changes.... it really makes my delay unusable :(

i was reading about to "window" the delay buffer in SM Forum, trying to follow cyto`s delays.. but no way to follow his advanced asm coding..
Last edited by Nubeat7 on Wed Nov 13, 2013 1:24 pm, edited 1 time in total.
User avatar
Nubeat7
 
Posts: 1347
Joined: Sat Apr 14, 2012 9:59 am
Location: Vienna

Re: interpolated delays and fast delaytimechanges?

Postby tester » Tue Nov 12, 2013 12:36 am

Remove "hop" or at least reduce it to range somewhere between 2 and 32 (in ASM values are like "hop-1", because they are counted from 0). And check all modules for hop setting on that line. Max hop should not exceed your desired max.

If this does not helps, then I don't know. But let know if this worked.

hop=32 means, that at 44100Hz samplerate, you have only 1.4kHz resolution (or to be more precise - half of it?); anyway any modulator will start grainy far below that ("squared sinus" so to speak).

For balancing performance - just see how it works. hop=2, CPU usage reduction = 50%. But there is no big difference with hop 32 and 64, because both - 1/32 and 1/64 are only a fraction of your CPU (1.5-3% of non-hoped).
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
tester
 
Posts: 1786
Joined: Wed Jan 18, 2012 10:52 pm
Location: Poland, internet

Re: interpolated delays and fast delaytimechanges?

Postby Nubeat7 » Tue Nov 12, 2013 12:51 am

this has nothing to do with hopping, when changing time on interpolated delays it introduces this pitch shifting artifact, i`m lookingfor ways to reduce this effect..

here is some good information that i found about, sadly my dsp skills are not the best :lol:

http://msp.ucsd.edu/techniques/latest/b ... de113.html
https://ccrma.stanford.edu/~jos/pasp/Fr ... inear.html
User avatar
Nubeat7
 
Posts: 1347
Joined: Sat Apr 14, 2012 9:59 am
Location: Vienna

Re: interpolated delays and fast delaytimechanges?

Postby KG_is_back » Tue Nov 12, 2013 1:09 am

Well... when delay time changes that actually mean that playback speed changes and that naturally results in pitch shifting. Time domain pitch shifters (like tempophon) actually use this effect to change the pitch. Or flanger effect uses modulated delay, to create variations in phrasing and pitch.

If yo what to avoid this effect only thing that comes to my mind is pitch shifting to compensate the pitch change. For example when delay decreases one sample per sample it means the playback speed is doubled and therefore pitch is doubled. You simply put an pitch shifter octave down after the delay.
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: interpolated delays and fast delaytimechanges?

Postby tester » Tue Nov 12, 2013 1:10 am

I see. Anyway hoping also would produce grainy/unstable effects when modulating (tested).

When modulating delay - pitch change is natural to expect, because you expand and compress time, thus - pitch. You can't modulate delay without having pitch changes. Fast modulation = great pitch change.

Sure, you could try, but at some cost. As far I remember, it would require spliting the sound into fractions, applying delays to these fractions, and crossfading these fractions. But it would produce blurry sound.

//edit:
KG might be right. Try to combine delay with Trogs module for frequency shifting. It could work to some degree.
http://synthmaker.co.uk/forum/viewtopic ... &sk=t&sd=a
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
tester
 
Posts: 1786
Joined: Wed Jan 18, 2012 10:52 pm
Location: Poland, internet

Re: interpolated delays and fast delaytimechanges?

Postby Nubeat7 » Tue Nov 12, 2013 10:11 am

thanks for replies, but putting a pitchshifter after the delay will be pretty cpu expensive..

also it just happens while changing time so there are 2 issues, the time of the pitchshift and the direction...
would there be a way to manipulate the playspeed while time is changing directly inside the delay?

one of most promising solutions i read about would be a crossfade on timechange which would be useful on bigger jumps like different synced times https://ccrma.stanford.edu/~jos/pasp/La ... anges.html

this would be that a ccross-fade occurs from one read-pointer to another.
User avatar
Nubeat7
 
Posts: 1347
Joined: Sat Apr 14, 2012 9:59 am
Location: Vienna

Re: interpolated delays and fast delaytimechanges?

Postby tester » Tue Nov 12, 2013 12:16 pm

So instead of "delay", you should look for "time stretch" modules. Using modulation on them - they will act as such "delay without pitch shifting".

But there is a but. I don't know how fast is your modulation, so you may need extreme time stretching/compressing. The only thing that comes to my mind is Paul's Extreme Sound Stretch:

http://hypermammut.sourceforge.net/paulstretch/

I would also check SM forum for time stretching solutions, maybe one of them has better smoothing. Maybe here is something:

http://synthmaker.co.uk/forum/viewtopic ... 81&p=90773
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
tester
 
Posts: 1786
Joined: Wed Jan 18, 2012 10:52 pm
Location: Poland, internet

Re: interpolated delays and fast delaytimechanges?

Postby Nubeat7 » Tue Nov 12, 2013 2:40 pm

tester wrote:So instead of "delay", you should look for "time stretch" modules. Using modulation on them - they will act as such "delay without pitch shifting".

But there is a but. I don't know how fast is your modulation, so you may need extreme time stretching/compressing. The only thing that comes to my mind is Paul's Extreme Sound Stretch:

http://hypermammut.sourceforge.net/paulstretch/

could you port it and build a delay out of it, because i have no idea how to use timestrech as delay?
User avatar
Nubeat7
 
Posts: 1347
Joined: Sat Apr 14, 2012 9:59 am
Location: Vienna

Re: interpolated delays and fast delaytimechanges?

Postby martinvicanek » Tue Nov 12, 2013 4:19 pm

Nubeat7 wrote:one of most promising solutions i read about would be a crossfade on timechange which would be useful on bigger jumps like different synced times https://ccrma.stanford.edu/~jos/pasp/La ... anges.html

this would be that a ccross-fade occurs from one read-pointer to another.

To me this seems the right way to go. The pitch shifter alternative is vast overkill and likely to introduce more artifacts.
User avatar
martinvicanek
 
Posts: 1328
Joined: Sat Jun 22, 2013 8:28 pm

Re: interpolated delays and fast delaytimechanges?

Postby tester » Tue Nov 12, 2013 8:40 pm

Nubeat7 wrote:
tester wrote:So instead of "delay", you should look for "time stretch" modules. Using modulation on them - they will act as such "delay without pitch shifting".

But there is a but. I don't know how fast is your modulation, so you may need extreme time stretching/compressing. The only thing that comes to my mind is Paul's Extreme Sound Stretch:

http://hypermammut.sourceforge.net/paulstretch/

could you port it and build a delay out of it, because i have no idea how to use timestrech as delay?


Ask Martin or MyCo - would be cool to see this one ported to FS. I like this engine, because adjusting the windowing correctly - produces really nice effect.

As for using time stretch as delay - it is simple and not simple. For static delay - you need real delay, and nothing else. But if you wish to modulate it without pitch change (i.e. without doppler effect), then you may need delay (optional; serves as static offset if needed), and you will need time stretch module, that will be modulated. Time stretch: when you expand time of a sound, and have both (processed and original) played paralel, then expanded signal get's delayed to original source (just draw a sine wave and expanded sine wave, to see how it works), and when it's compressed back, then that delay gets to zero. So in essence you just use the "stretch" node (the one where you put these numbers like 50% or 120% for defining amount of stretching) for modulation, and scale input modulator either to sort of 0-1 range to go only one way (depends on how expand/compress is defined), or leave it symmetric in relation to null value (eqivalent of "100%" or 1:1), to go both ways.

I don't know how simpler to explain in words, have no FS under my hand.
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
tester
 
Posts: 1786
Joined: Wed Jan 18, 2012 10:52 pm
Location: Poland, internet

Next

Return to DSP

Who is online

Users browsing this forum: No registered users and 35 guests