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

Something to keep Spogg busy during self-isolation

For general discussion related FlowStone

Something to keep Spogg busy during self-isolation

Postby tulamide » Wed Apr 01, 2020 8:27 am

Hey Spogg,

listen to this:
noefx_bell_strings.ogg

What you hear is exactly one oscillator with no effects/filters whatsoever!
The algorithm used for this is new and called "PADsynth algorithm". The author of this algorithm uses it in his synth that he sells for at least $45 (pay fair price model), but he opened the algorithm for free, in the hope it spreads more. I know of at least two projects that currently implement this algorithm, and from those you can hear "it's rather simple to build". But for me it's still highest guru stuff.

Here's the complete documentation with further links to source material and so on.
https://zynaddsubfx.sourceforge.io/doc/PADsynth/PADsynth.htm

I expect a first Quilcom PADsynth in, let's say, 2 weeks from now? :mrgreen:

Have fun exploring the algorithm, Spogg!
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2687
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: Something to keep Spogg busy during self-isolation

Postby Spogg » Wed Apr 01, 2020 2:21 pm

Totally fascinating tulamide, thanks. :shock:

There’s stuff in there I don’t fully understand though, but I will return to this at some point because the sounds are so nice. I really don’t get, with all that movement evident in the sound, how the guy can claim it creates seamless loops. I worked out it should create a wav about 6 seconds long, but what happens when it wraps around? Maybe someone here can elucidate…

Also the maths would have to be done really fast, and I only know how to do it in green. For a single cycle it’s fast enough but for 6 minutes worth…? I don’t know, but he uses C++ so that’s a clue.

But I very much like the idea of starting the sound at random points in the created clip. Only good for pads I think, but that’s the idea I guess.

Also, this is the first time I’ve ever read anything about phase scrambling (randomising phases) before IFFT.

Thanks agin!

Spogg
User avatar
Spogg
 
Posts: 3323
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: Something to keep Spogg busy during self-isolation

Postby martinvicanek » Wed Apr 01, 2020 5:50 pm

Thanks for the link, Tula, that's quite interesting!

When you IFFT an array, the result will be periodic hence seamless*. You can use this for instance to create tileable patterns for backgrounds of Web pages. The trick is to make it long enough so the periodicity is barely noticeable. I agree with Spogg, 6 seconds or more would be good.

As the author notes, you'll need to resample the wavetable to play it at different pitches. But resampling will only be possible for limited ratios without aliasing, so you will need a number of wavetables, perhaps three or four per octave. May result in a footprint comparable to a sampler. The good thing is you have complete freedom and control over the harmonic structure, and the wavetable will be seamless per se, no fiddling with loop points etc. Hmmm.
________________
* unless you deliberately align phases to create a step at the seam.
User avatar
martinvicanek
 
Posts: 1318
Joined: Sat Jun 22, 2013 8:28 pm

Re: Something to keep Spogg busy during self-isolation

Postby trogluddite » Wed Apr 01, 2020 6:19 pm

Spogg wrote:Also the maths would have to be done really fast, and I only know how to do it in green. For a single cycle it’s fast enough but for 6 minutes worth…? I don’t know, but he uses C++ so that’s a clue.

Even using C/C++ or ASM, and disregrading the complication of wavetables to avoid aliasing, I think it would be best treated as an "off-line" form of synthesis - polyphonic real-time modulation of the harmonic parameters would be asking rather a lot of even the zippiest CPU!

However, as Martin says, it's certainly a very interesting way to generate samples for "rompler-style" oscillators - thanks tula!
All schematics/modules I post are free for all to use - but a credit is always polite!
Don't stagnate, mutate to create!
User avatar
trogluddite
 
Posts: 1730
Joined: Fri Oct 22, 2010 12:46 am
Location: Yorkshire, UK

Re: Something to keep Spogg busy during self-isolation

Postby tulamide » Wed Apr 01, 2020 11:20 pm

Here is one of the two projects I know of that make use of the algorithm. Look at the video. He presents the wavetable creation (it sounds ugly because he's just rushing through to present the controls, not to design a pleasant sound), and it seems he makes changes to the whole spectrum with different options, then clicks on "refresh wavetable", which mutes the sound for fractions of a second. From the description you can read that during these fractions 136 wavetables are generated, one per midi note up unitl close to nyquist. Realtime modulations seem to only be done to the finished wavetables on tab one, liike unison, pitch, filter and such.

https://www.kvraudio.com/product/cubicp ... -by-uhhyou
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2687
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: Something to keep Spogg busy during self-isolation

Postby Spogg » Thu Apr 02, 2020 3:22 pm

Very interesting! :o

I downloaded the synth, all excited to listen carefully, but it won’t work for me in any DAW. I updated C++ redist and put the files where it said to. But when Reaper scanned it, it said that it violated something or other. This was on Widows 7 64 bit.

My best guess is that it’s for a later version of Windows than 7. Dammit.

Has anyone tried it in Windows 10? I really wanted to know what happens if you hold down a note for say 10 seconds…

From what I read it would seem that a “harmonic” is not an integer partial here, but a mix of closely pitched partials which produce an “undulation” due to beating. Hence we have a “harmonic” with a “bandwidth” which can be varied but kept in the correct relation to the nominal fundamental. That’s also what I heard in one of the demo clips.

If you create all these tones beating away at different rates how on earth can it all resolve into a large file that loops perfectly? All sounds in the harmonics would have to terminate at the exact starting point values, and going in the right "direction".

Also I find it astonishing that so many tables, amounting to over 13 minutes of audio, can be rendered in well under a second. That’s a total of about 36 million sample points, not counting the CPU cost of doing the maths for calculating each one.

Sadly I think it’s well beyond what FS could achieve, and certainly beyond me.

But it’s been fascinating to look into.

Cheers

Spogg
User avatar
Spogg
 
Posts: 3323
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: Something to keep Spogg busy during self-isolation

Postby Duckett » Thu Apr 02, 2020 4:16 pm

I think the key issue here is stated on the KVR page- Requires CPU with support for AVX or later SIMD instruction set.

Yeahhh... the cliff is rapidly approaching, where pretty much nothing released will still be compatible with Win 7.

I feel your pain, since I've been utterly loath to leave an OS I know like the back of my hand, and was current when I built my "hot rod" tower in 2011. I'm just a grumpy middle-aged curmudgeon who doesn't care much for the way everything's now designed around mobile devices and always-connected paradigms.

"Flat" UI design I'm fine with. The truism I'm tired of in OS updates/releases is

"We've made it so much easier!" almost always equals

"Screw what you've spent years with- now you're going to have to re-learn how to accomplish common tasks; also, we had to make up the difference for any saved cycles or increased efficiency, by adding plenty of useless (but sexy) bells and whistles- enjoy".

Oh, yeah- almost forgot: for forum member reference convenience, here's a link to the paper from 2011(!) by Paul Nasca describing the algorithm: https://zynaddsubfx.sourceforge.io/doc/PADsynth/PADsynth.htm

Also, here's a Wayback Machine link for Padpal3, a tiny VSTi released in 2009 as freeware by Rock Hardbuns, that is basically the PADSynth algorithm with a nice GUI and buttons for partials: https://web.archive.org/web/20091005141450/http://sites.google.com/site/rockhardbuns/padpal3
We have to train ourselves so that we can improvise on anything... a bird, a sock, a fuming beaker! This, too, can be music. Anything can be music. -Biff Debris
User avatar
Duckett
 
Posts: 132
Joined: Mon Dec 14, 2015 12:39 am

Re: Something to keep Spogg busy during self-isolation

Postby Spogg » Thu Apr 02, 2020 5:13 pm

Thanks Duckett

I have an intel core i7 2nd generation and it's supposed to support AVX, so it's looking like it's a Windows version issue.

I tried your link to Padpal 3 but it's not available. Maybe you could post it here, or link to it...?

And I love your take on OS updates. I'm with you 100% on that.

Cheers

Spogg
User avatar
Spogg
 
Posts: 3323
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: Something to keep Spogg busy during self-isolation

Postby trogluddite » Thu Apr 02, 2020 5:52 pm

Spogg wrote:If you create all these tones beating away at different rates how on earth can it all resolve into a large file that loops perfectly? All sounds in the harmonics would have to terminate at the exact starting point values, and going in the right "direction".

Yes, you're totally correct - and this is exactly the requirement which using the inverse-FFT ensures.

When doing FFT "forwards", the result is something like this...

Bin 0: DC offset.
Bin 1: Amplitude/phase for the frequency whose wavelength fits the window exactly once.
Bin 2: Amplitude/phase for the frequency whose wavelength fits the window exactly twice.
Bin 3: Amplitude/phase for the frequency whose wavelength fits the window exactly three times.
...etc...
Bin N: Amplitude/phase for the frequency whose wavelength fits the window exactly N times.
...up to the highest N that the sample rate can resolve.

Importantly, all bins represent a constant frequency/amplitude/phase for the entire window.Treating any apparent changes in level/frequency/timbre as nothing more than interactions between the "static" sine waves of the bins is perfectly correct, and perfectly reversible - for any window size!

But there's a huge caveat!...

The FFT algorithm assumes that the data in the window represents exactly one or more cycles of a periodic signal. Only in this case is a perfect analysis possible. And, of course, in many of our real-world applications, this assumption isn't true - the window is often a slice out of a non-periodic signal, and the window size is usually static and chosen for ease of computation. This is why we can usually only treat FFT as an approximation and have to deal with artefacts such as "spectral leakage" - component frequencies which don't exactly match a bin frequency are "smeared" across the closest available ones.

However, when done in reverse, we'll always get a perfect fit to FFT's assumptions! Doing an inverse-FFT on any set of FFT data guarantees exactly the requirement that you stated. By definition, every single partial (bin) must have a wavelength that fits the sample length (FFT window) exactly an integer number of times, and so must have the same phase at the end of the sample as at the start. It is also implicit that all apparent "modulations" due to interference between partials must have a period which exactly fits the sample length, too.

As always with time-domain to frequency-domain transformations, the longer the window is, the finer the frequency resolution. So, by using a very large set of FFT data, PADsynth spaces the bins much more closely than we'd normally use - close enough that the "bandwidth" of a harmonic can be simulated by a cluster of several bins centred around the bin representing the frequency of the harmonic itself. But the partials within that cluster are not spaced arbitrarily - the inverse-FFT ensures that they all meet the "integer cycle count" requirement.

IMHO, that's exactly what's so clever about PADsynth - it's making an asset out of a limitation of FFT that usually gives us major headaches!
All schematics/modules I post are free for all to use - but a credit is always polite!
Don't stagnate, mutate to create!
User avatar
trogluddite
 
Posts: 1730
Joined: Fri Oct 22, 2010 12:46 am
Location: Yorkshire, UK

Re: Something to keep Spogg busy during self-isolation

Postby deraudrl » Thu Apr 02, 2020 8:33 pm

Spogg wrote:I tried your link to Padpal 3 but it's not available. Maybe you could post it here, or link to it...?
Here:
...or not, I got the "attachment quota" error. (Which I think makes it official that it's not per-user: I can count on my fingers the number of attachments I've done since I got here.)

FWIW, it worked fine in Vista (when I first downloaded it), worked fine in Win7, and still works fine in Win10.
I keep a pair of oven mitts next to my computer so I don't get a concussion from slapping my forehead while I'm reading the responses to my questions.
deraudrl
 
Posts: 239
Joined: Thu Nov 28, 2019 9:12 pm
Location: SoCal

Next

Return to General

Who is online

Users browsing this forum: No registered users and 8 guests