this is clear. since essentially you cannot go below 16 samples delay. as soon as you go below that (or try to) the pitch will stay the same/be out of tune.
Wavetables.....Again..... How do I playback only 1 cycle of a wavetable?
Yes exactly, it cant go below the 16 samples for a round trip
In pure data to do the same you also have to use "block~ 1" to be able to get the right tuning, to be able to work around the standard block of 64 samples that PD works in.
i don't think that is right. maybe it can be made with block~ 1 but i think it will be more expensive... see example G05.execution.order.pd (in the documentation) there everything is explained. basically you have to put the delwrite~ and vd~ objects into sub patches to make sure they are executed in the right order.
I have a tiar/delay/read tuned object with an offset param that can be set to -16 to compensate for the intrinsic delay (there is an help file to show how to use it)
Oh yeah it might be possible in other ways to, I will not question that. But one way to be able to go below the block of 64 samples is to use "block~ 1" in a subpatch, it is pretty common to do that.
Almost all of the karplus strong algos that I have tried in PD, uses that method to achieve correct tuning. For simple stuff like karplus strong I would argue that it is not something that will bring you CPU down.
i see. still does not mean that is it the "right" way. but i guess you are right, that it does not matter that much for a small patch.
Yes true Its the simple way, where you dont really have to take order of execution in to consideration. Which can be a bit hard to understand. For example all the select objects and so on are processed from right to left. Took me damn long time and a lot of head scratching before I realised that. After I realised it, everything seemed to work as supposed. That is what you get for not reading the manuals, hehe Which I think alot of people dont do, they just play around until they got it right. But order of execution, is super important if one wants to make complicated patches and do things "the right way"
Thank you for the explanation!
I though this is most critical when the modulator is a complex signal, right?
Even with simple sines, a small amplitude discontinuity can produce a glitch.
I think that the main trouble with complex signal PM or FM is aliasing. That's why I have added the tiar/osc/PIW objects. Pre Integrated Waves allow to reduce aliasing, even in the case of PM. With x2 oversampling, it is able to antialias a phase modulated fractal waveform (you can try the help patch Help->Library->community->tiar->PIW->O2osc to get an idea).
@lokki I've tried the wavetable_pm.axp and is very close to what I was looking for, thank you!
But I found that the xfade isn't working... Can you get to work again?
@sebo that is very strange since i did not change that part of the code. maybe you have to enable interpolation to make it work? i will add a version where the only change is the pm input, can you try that? i have switched to a system where i make all my wavetables and fades on a pc and upload the final 2048 points and 256 waves to the axoloti, no need for xfade, and it is much lighter on the cpu as well.
wavetablepm.axp (4.6 KB)
I've tried with interpolation on and off, and is always te same. I wil try the new object.
Thank you!
I have finally finished some wavetable objects that use integro-differential aliasing limiting.
I have made a loader compatible with your wavetable raw files (64 tables x 256 samples x 2 bytes little endian) from 60wavetables
You can test the help file. 'Help -> Library -> community -> tiar ->XT -> load'
Note: Change the load object's mode to "vintage" to disable sample interpolation and get the typical grit on bass sounds (anti aliasing and inter wave interpolations are still enabled in this mode).
Looks awesome.
Was just trying it out with some wavetables I already had, which are 128 waves of 2048 samples each. They don't look right. Such big waves, I guess will not work?
nbWaves is how many waves? And length is the size of each individual wave?
Thanks!
The preparation for antialiasing implies 8 bytes per sample... and you've got 8MB of RAM...
not 100% sure what that means?
What size should I make wavetables in to be able to use them with this object?
Sorry for the short answer, i was in the metro.
Now i'm in front of my computer and i can answer more accurately.
The length of the waves are limited to 512 (that's because of arithmetic limitations of the anti aliasing algorithm).
A wave should represent a cycle of a waveform.
The number of waves can go up to 1024.
Many instances of the load object can be used but the total SDRAM used cannot go beyond 1 mega samples.
Hi @SmashedTransistors, the wavetable objets are great. The interpolation and the phase modulation sounds amazing! Thank you!!!
Just a few questions:
What disto exactly does? It seem to no work properly to me. When active I get a very low frequency signal...
What loadAtinit does?
Also I'm starting to experiment with the sss/SuperTable object that can play a detuned stack of waves (like a supersaw but with wavetables). But it works with 32 bit wavetables, so I have to convert mine to 32 bit. Also I think your phase modulation sounds better (I have to do furter comparitions). Can you add somenthing like the supersaw feature?
Thank you.