![]() |
![]() ![]() ![]() ![]() ![]()
|
next newest topic | next oldest topic |
Author | Topic: waveforms | |
keph Member |
![]() ![]() ![]()
4096 samples 22050 mono .wav ben. IP: Logged | |
pete Member |
![]() ![]() ![]()
Ithought you and others might be interested in the attached module to play them with. Attached are some modules for use with Kephs waveforms. As with all digital analog emulation synths, you always get the problem of aliasing with square waves etc. The way Kyma normaly gets around this problem is by using a bunch of pre filtered waveforms and swapping (crossfading) them as you play different notes. This would mean that you would have to say, five or six waveforms files for each of Kephs files. In the attached file there are three modules. I called this the surbiton oscilator as I haven't heard of anyone using this technic before. But maybe some one can tell me if it has been used before. Maybe David knows of some patent out there. Of cause there are some minor disadvatages of doing it this way but I'm sure some of you will work them out. Care has to be taken if this is used in polyphonic mode as the names of the memory chuncks will all be the same, so if anyone needs poly , let me know. IP: Logged | |
David McClain Member |
![]() ![]() ![]() Hey Thanks to Both of You! Pete, I thought I recognized the name "Surbitron" from the included sound samples with the Kyma. Perhaps these are attributed to you anyway? But I really like your description of how to create anti-aliased wave players. That's a really keen way to do things!! Thanks! - DM IP: Logged | |
pete Member |
![]() ![]() ![]() Yes David The Surbiton Oscilator in the expamles is the same thing but one that Carla made a few minor changes to , and encapsulated into a class for me. This was a way to hide the techneque but still make it useable by Kyma users. I've now desided to share the techneque with the forum and its all open for all to see. IP: Logged | |
CharlieNorton Member |
![]() ![]() ![]()
My friend was dissing me as one of my sounds had some quite obvious aliasing artifacts. Hurrah. What a wonderful technique. I love the way it is calculated on fly with no need for a multisample! So.. I am happy with the above apart from the * 0.75. I would like to understand why this is necessary..... Are there any other threads that discuss this topic? I have had a rummage but this seems to be pretty definitive. I have made a couple of patches that have the ability to swap between the band limited an un-limited versions. One of them is repligated for detune spread obviously. You need to have the waveform collection at the top of the page in your kyma folder.... I did have fun with the spectrum analysis swapping between them and watching the artifacts disappear. I made one of the patches polyphonic and it seems to respond ok. I am pretty sure the patches are functioning as intended. Have a rummage, throw eggs if necessary. Thanks Pete for your hard work and community spirit + ( !Keph ) :-) Charlie
[This message has been edited by CharlieNorton (edited 18 March 2010).] IP: Logged | |
SeanFlannery Member |
![]() ![]() ![]() And thank you Charlie for digging this post up! I discovered this post a fair while ago when I was going back through the archives and only just recently recalled it when encountering some aliasing in a sound I was working on but I couldnt find it (read got distracted with something else). O and I agree the "* 0.75" is a mystery. [This message has been edited by SeanFlannery (edited 19 March 2010).] IP: Logged | |
bar|none Member |
![]() ![]() ![]() So you guys are just digging throug the archives post by post? Alright, I need to do that as well. To many things I don't want to miss. IP: Logged | |
SSC Administrator |
![]() ![]() ![]() To explain the 0.75 factor... As you guys all already know, one can represent frequencies up to half the sample rate in the digital domain. This was proven by Nyquist. In practice, however, one thing we've noticed is something that probably doesn't matter to physicists and mathematicians but does matter to musicians: for frequencies close to the Nyquist limit, there are time-varying changes in amplitude (which we would call Amplitude Modulation). Over long enough time windows, these slow amplitude changes cancel out, so the spectrum, over time, is accurately represented. However, for music, the amplitude modulation actually does matter because we can hear it. That's why we ended up trying to restrict the number of harmonics to three-quarters of the theoretical limit rather than going all the way up to the limit. IP: Logged | |
CharlieNorton Member |
![]() ![]() ![]() Thanks SSC! Makes perfect sense! Bar|None - I am using the forum private search option. Take a bit of time, but once you got it working you can dredge up some interesting posts.... During my continuing rummage.... Not only do they have pictures of the machines the came from, but the encapsulated sound appears to feature alias free oscillators, I wonder if it makes use of the Surbiton Technique? It appears that the file names have been edited/truncated at some stage and it takes a while to rummage the pictures during the load. If I can work out how to swap the file for updated working one on the wiki, I will! Charlie [This message has been edited by CharlieNorton (edited 20 March 2010).] IP: Logged | |
bar|none Member |
![]() ![]() ![]() Charlie, Nice one. I've been thinking that I want to start creating a similar library but for euro modules since I have a modular and I'd love to have some prototypes that approximate key modules like function generators, sources of random, ADSRs, etc.. Keep em coming! IP: Logged | |
pete Member |
![]() ![]() ![]()
I notice with your sounds you've uncovered one of the failing with the Surbiton, as seen with the pulse width mod example. That is that the waveform only gets updated once every 4096 sample and hence the pulse width moves in big steps. One get round would be to make the table 4 times smaller which would make it update 4 times faster and the loss of resolution at low frequencies should be virtually un-detectable. For pulse width, luckily there is a better solution as a pulse width waveform can be made by mixing two identical saw tooth oscillators and inverting and delaying just one of them. Varying the delay varies the PW. In the attached sound, I've used a second OSC module an made use of the FM input to form the delay. FM in the OSC module is the same as used by the DX7 and Synclavier , and this is not FM at all, but is really Phase modulation. By giving it a max range of 2 PI, it will off set the phase by 0 to 360 degs with an input of 0 to 1. Also by turing down the second oscillator the wave form turns back into a saw tooth so the "Square" control fades between squarePW and saw tooth. Also because both saws are alias free and so the final sound is also alias free. Also using the mixed saws technique means that there is never a DC offset in the output unlike the normal PW generator. BTW I love Carla's explanation of the 0.75 in the filter formula and has a lot of points I hadn't considered. I put the 0.75 in the filter formula because there is no such thing as a perfect filter and the true cut off will always extend greater than the calculated cut off frequency. This can be set to taste so you could try replacing the 0.75 with a hot param and tune it to your own taste. I was probably too conservative and my ears preferred the slightly duller sounding waveform. Hope this makes sense Pete IP: Logged | |
bar|none Member |
![]() ![]() ![]() Interesting. that's exactly how the PWM was done for the digeridoo patch I just shared in the other thread, since I copied one of the square wave examples. But in the digeri case, it's a square with PWM FMing another square with PWM. I was wondering why the bother with the 2 saws, but now it makes sense. Thanks for the explanation and the patch. Phase modulation example is also really cool. [This message has been edited by bar|none (edited 21 March 2010).] IP: Logged | |
keph Member |
![]() ![]() ![]() yes, the anti-alias in the synthblocks make use of the same technique that pete published. included sound file should be the expanded versions which show how each osc was create. it will also show the doNotTransformSubSound argument which is handy when encapsulating sounds. these were created before there was the mutli-waveform version of the oscillator we have today. looking at them now, it seems I used a different order filter than pete's original design. not sure why I did that. as for the images always having to be located again. i am not sure what happened there, that wasn't the case before but it happens to me as well. something may have changed in the past 6 years. [This message has been edited by keph (edited 21 March 2010).] IP: Logged | |
CharlieNorton Member |
![]() ![]() ![]() I assumed it was filename lengths, so they where compatible with other systems? [This message has been edited by CharlieNorton (edited 23 March 2010).] IP: Logged | |
PR Member |
![]() ![]() ![]() Hi, thanks for all the tips and upload. I'm looking for a software to create waveforms control for Function Generator Many thanks Julien IP: Logged | |
pete Member |
![]() ![]() ![]() Hi Julien For live you could use InputOutputCharacteristic model fed by a full ramp. You could draw the waveform with a bunch of faders and different smoothing values give different types of curves. You could then use a record to disc module to trigger record when you find one you like. Pete IP: Logged | |
PR Member |
![]() ![]() ![]() Thanks for the tips, i have made some experimentation with that, very useful with the Waveshapers object ! And I found a program, AC toolbox to create waveform : http://www.sonology.org/UK/frameset-uk.html Best, IP: Logged |
All times are CT (US) | next newest topic | next oldest topic |
![]() ![]() |
This forum is provided solely for the support and edification of the customers of Symbolic Sound Corporation.