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

Paul's stretch

For general discussion related FlowStone

Paul's stretch

Postby tulamide » Wed Aug 12, 2020 4:20 pm

There is this age-old tool, existing for like 20 years or so. It is an extreme audio stretching tool. Not comparable to what we use in our DAWs with Elastique and the like. What caught my attention is the insanely good quality of a sound that you stretched like 80 times. I link to a video.

Now, for obvious reasons, I would never run that tool on my PC. So here's your chance: Could someone take on the task and try to recreate it? In the same insamely good output quality? Rendering up to hours? (Or at least a dozen of minutes) As an executable (I see no reason in making this into a plugin)?

My everlasting worshipping would be with you!

https://youtu.be/T3dS6QS59bk
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2714
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: Paul's stretch

Postby adamszabo » Wed Aug 12, 2020 6:44 pm

There is a vst plugin version of it here also ;) https://xenakios.wordpress.com/paulxstretch-plugin/
adamszabo
 
Posts: 667
Joined: Sun Jul 11, 2010 7:21 am

Re: Paul's stretch

Postby tulamide » Wed Aug 12, 2020 10:32 pm

adamszabo wrote:There is a vst plugin version of it here also ;) https://xenakios.wordpress.com/paulxstretch-plugin/

Great find! Thank you!
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2714
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: Paul's stretch

Postby Spogg » Thu Aug 13, 2020 7:33 am

I’d heard of this before but assumed that stretching had moved on, but the video was great fun. I love that guy!

Obviously it uses a granular technique, but where I would be completely lost is rendering a large wav file in FS.
User avatar
Spogg
 
Posts: 3358
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: Paul's stretch

Postby tulamide » Thu Aug 13, 2020 1:08 pm

Spogg wrote:... the video was great fun. I love that guy!

Guy Michelmore is my favorite YT address for all things music. Wether he reviews sample libraries or gives composing tips, he always enjoys what he does. And it is so easy to understand, when he presents it. He's also not afraid to show errors and mistakes, to show that it is part of the creative process.

But I'm surprised you don't know him! Not only is he a well known british composer, working for film and tv. Working with Marvel, he has done the scores for pretty much every animated series and animation film, Marvel ever did. Also, he is the founder of ThinkSpace. But why I thought you would know him is because he was also a news presenter in the early 90s. I even found a clip of him spilling coffee just seconds before going live:
https://www.youtube.com/watch?v=wqVB2x3IATo


p.s. regarding the stretch, don't think about it anymore. The plugin, while not really useful in runtime, is from 2019 and further sticks to programming rules that proved totally fine with today's PCs (VST 2.4). So I have no worries making use of it. But you are right. He must use a system quite similar to Propellerhead's REX format, which can also stretch to extremes by using what today might be called grains, that were overlapping each other a lot. If you add fft to this basic technique to retrieve frequency information and somehow keep these freq intact for a long time, you're probably already close to Paul's Stretch. Maybe he's stretching without pitch correction to get the texture base and mixes it with the frequency information from the fft of the original in terms of grains?
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2714
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: Paul's stretch

Postby Spogg » Thu Aug 13, 2020 1:57 pm

You know I thought I recognised him! I think I’ve seen him before on YT and the on that coffee news clip he looks familiar.

You say "don’t think about it anymore". That’s like telling me not to think about an elephant wearing a dress! :lol: I need to have a look and listen and see if I can figure out what’s going on. My Harvester can time-stretch but the result isn’t clean like Paul’s. It’s more of a specific type of effect than a true stretch.

I’m now thinking, based on your idea, that it’s not really granular at all. From the video it seems to take a while to process the file, so maybe it’s making a spectrogram by FFT using small windows and regenerating the sound window by window, at a lower rate than original. In which case you could say it's grains in the frequency domain and not time.
I shall investigate further.

Even if I can’t do it in FS (very likely) I do like to know how stuff works, at least in principle.

EDIT:
I just read the details of Paul’s stretch. Turns out this is the same guy that made ZynAddSubFX (harmonics with bandwidth thing).
Based on what he wrote it is all about dynamic spectral analysis.
A very clever man!
User avatar
Spogg
 
Posts: 3358
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: Paul's stretch

Postby RJHollins » Thu Aug 13, 2020 5:39 pm

you just had to bring up the 'elephant wearing a dress' :roll:
RJHollins
 
Posts: 1571
Joined: Thu Mar 08, 2012 7:58 pm

Re: Paul's stretch

Postby martinvicanek » Fri Aug 14, 2020 5:17 pm

Here is an attempt to implement time stretching and pitch shifting. The idea is to take snapshot spectra at consecutive time intervals and resynthesize sound from them for as long as needed. Each spectrum is decomposed into a set of peaks corresponding to individual sinusoids. The extracted frequencies and amplitudes are then passed to an oscillator bank. The tricky part is peak tracking to ensure consistent mapping of parameters to oscillators across different spectral snapshots.

The source material need not be monophonic. The rendering quality is not overwhelming, though. Transients are smeared over the length of the analysis window (2048 samples). This might not be very severe if the goal is extreme time stretching. However, spurious peaks occur in noisy regions, erroneously interpreted as random short time sinusoids, giving rise to quite audible artifacts.

Fun to play with anyway.
extractSinusoids3.fsm
(114.69 KiB) Downloaded 1064 times

Edit: It turns out that extractSinusoids3 is buggy. Fixed in extractSinusoids4.fsm. Sounds cleaner now.
Attachments
extractSinusoids4.fsm
(38.35 KiB) Downloaded 990 times
Last edited by martinvicanek on Mon Aug 31, 2020 6:52 pm, edited 1 time in total.
User avatar
martinvicanek
 
Posts: 1328
Joined: Sat Jun 22, 2013 8:28 pm

Re: Paul's stretch

Postby Spogg » Sun Aug 16, 2020 4:04 pm

Oh wow Martin that’s so impressive! :o

Especially as it looks like it took you only 2 days to make that. Incredible! :shock:

I took some time out from decorating to check this out and got drawn into a comparison with yours and Paulstretch. I used the same few clips to test and listened carefully on headphones using similar stretch values.

The impression I got was the sound produced is very different. That’s no criticism of course; why not have 2 stretch tools that produce different results? Choice is good.

Paulstretch still has a granular aspect to my ears. On a vocal solo it sounds like there are multiple grains overlapping and gives a kind of reverberant/echo quality, whereas yours sounds somehow cleaner and less processed but with a slight “ringy” aspect.

On Paul’s you can set the size of the “grain” to perform FFT on. He says about 7-12KB is generally good but you can change it and the effect varies with the source material. From my understanding the size of the grain or section in samples has a bearing on the FFT resolution in terms of frequency vs. time resolution. Your window is fixed at 2048 so it might be fun to make that variable, if that’s possible.

So let’s say we have a 2048 sample grain to perform FFT on. Does the next grain start at the end of the first grain or is there an overlap, to give more points and smoother transitions? Are the spectrum snapshots interpolated to give intermediate iFFT values?

I feel very lucky and privileged to be able to ask these questions of such a brilliant mind like yours.

Thank you!
User avatar
Spogg
 
Posts: 3358
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: Paul's stretch

Postby martinvicanek » Mon Aug 17, 2020 8:34 am

@Spogg, thank you for the comparison. I had most of the code lying around when the topic came up. It took definitely more than two days altogether!

My scheme takes a snapshot every 512 samples and calculates the spectrum (using a windowed 2048 point FFT). Based on the extracted frequencies and amplitudes, it will drive sine oscillators for the next 512 samples. After that, the next snapshot is used to update the osc frequencies and amplitudes, and so on. There is some sooth interpolation regarding the amplitudes in order to avoid jumps every 512 samples.

So not exactly granular synthesis. How would you synthesise an arbitrary (not single ppitched) sound from grains?
User avatar
martinvicanek
 
Posts: 1328
Joined: Sat Jun 22, 2013 8:28 pm

Next

Return to General

Who is online

Users browsing this forum: Google [Bot] and 66 guests