Better Waveforms

Sound synthesis techniques, DSP and related mathematics

Moderators: electrogear, exonerate

Postby angstrom on Tue May 13, 2008 6:13 pm

Acrobat wrote:thx AngS , now it leaves up to the question about single cycle waveforms...but they fall in the "regardless of length", I guess.


yes, But I think that you may get away with it quite easily (!) depending on circumstance. EG:
It would be a sharp ear indeed who could tell a roland sine wave from an Arp sinewave from a sinewave you cooked up yourself. I doubt very much there would be a court battle over an anonymous triangle wave.
Even with those more complex waves such as those on the Casio CZ range, it would be tricky and pointless for Casio to pursue in court. I very much doubt that would happen.

But, when you start looking at things like PPG wavetables it might become a little more obvious ... and finally if you market your synth as the " V-PPG wavetableizer featuring PPG waveforms" then it's probably tempting fate if your synth ever begins to make money.

So I think it's actually worth making your own.
I think that PPG (and Dave Smith) only used 256 length tables for their oscillators, so we can actually make much better ones in SM than they had access to. There are a wealth of tools on this forum to make interesting waves via green maths or additive harmonic tweaking, and then write them to the wavetable oscillator.
I think it's probably worth spending a couple of days cooking up an OSM to generate some spectacular tables yourself rather than relying on some 20 year old implementation of a wavetable and hoping that some of the old magic will rub off.

Just my opinion
:)
User avatar
angstrom
smanatic
 
Posts: 724
Joined: Tue Apr 26, 2005 12:46 pm

Postby Osseous on Tue May 13, 2008 6:28 pm

Can you save an array inside a single index of another array for storing wavetables?

For example, say you have 50 wavetables, could you store the text data of values for a full wavetable (all 256, 512 or whatever of them) inside a single index in another array? That way you could have all of you wavetables stored inside one array.
User avatar
Osseous
essemist
 
Posts: 52
Joined: Sat Apr 12, 2008 5:16 pm

Postby exonerate on Tue May 13, 2008 6:45 pm

Osseous wrote:Can you save an array inside a single index of another array for storing wavetables?

For example, say you have 50 wavetables, could you store the text data of values for a full wavetable (all 256, 512 or whatever of them) inside a single index in another array? That way you could have all of you wavetables stored inside one array.


Yeah you can, if you have the wavetables in text components you can save each one to it's own index of a string array.
The Developer Toolkit -- A collection of over 150 modules and counting. Available from the Registered Users forum.
User avatar
exonerate
smaniac
 
Posts: 1487
Joined: Sat Dec 30, 2006 1:57 pm
Location: England, West Yorkshire, Huddersfield

Postby Osseous on Wed May 14, 2008 2:53 pm

So does that mean when you load wavetables from text files, you also have to load them into a text primitive first before passing them into an array module?

I can't seem to get wavetables to load from text files into SM any other way, unless i'm missing something obvious.
User avatar
Osseous
essemist
 
Posts: 52
Joined: Sat Apr 12, 2008 5:16 pm

Postby exonerate on Wed May 14, 2008 3:02 pm

Osseous wrote:So does that mean when you load wavetables from text files, you also have to load them into a text primitive first before passing them into an array module?

I can't seem to get wavetables to load from text files into SM any other way, unless i'm missing something obvious.


Yeah you need to use a string component, SM automatically converts to an array from the string component, it doesn't do it other wise.
The Developer Toolkit -- A collection of over 150 modules and counting. Available from the Registered Users forum.
User avatar
exonerate
smaniac
 
Posts: 1487
Joined: Sat Dec 30, 2006 1:57 pm
Location: England, West Yorkshire, Huddersfield

Postby Osseous on Wed May 14, 2008 3:28 pm

It seems to take a second or 2 longer to do it that way than to load directly from a wave and then convert it into an array of floats for use as a wavetable.
User avatar
Osseous
essemist
 
Posts: 52
Joined: Sat Apr 12, 2008 5:16 pm

Postby exonerate on Wed May 14, 2008 3:42 pm

Osseous wrote:It seems to take a second or 2 longer to do it that way than to load directly from a wave and then convert it into an array of floats for use as a wavetable.


Yeah the conversion to array can be pretty slow, especially with large arrays.

Using this Module should be much faster.

Cheers ;)

Exo
The Developer Toolkit -- A collection of over 150 modules and counting. Available from the Registered Users forum.
User avatar
exonerate
smaniac
 
Posts: 1487
Joined: Sat Dec 30, 2006 1:57 pm
Location: England, West Yorkshire, Huddersfield

Postby Osseous on Wed May 14, 2008 4:48 pm

Thanks exonerate, i'm using that now.

I think part of my problem was that i was taking in the text file, converting it to a wavetable, sending it to a graph function and out of the loader where they both converted it back to a float array before sending it out to the mod thing where the 4 different waves were combined and it got converted back to a wavetable again to be played. I didn't need most of that stuff, i just needed to keep it as a float array all the way through until the end when it gets played by the incoming midi notes from a wavetable primitive.

Sometimes, you can't see the wood for the trees. :)

I don't know how you guys come up with these little CPU saving things ;)

Cheers

Oss

p.s. I've been building a bunch of my own wavetables. Do you think using 2048 size tables is going a bit over the top? It's definitely slowing down the mod view for combining the 4 of them.
User avatar
Osseous
essemist
 
Posts: 52
Joined: Sat Apr 12, 2008 5:16 pm

Postby Osseous on Fri May 16, 2008 1:08 am

Exonerate, one thing i noticed about your wavedraw mod 1.1 is that it is quite a lot faster than my version (despite the fact mine is pared down a lot), but it still has lag if the XY control for adjusting the balance between the 4 waves is done too quickly.

I was thinking of trying to pre-calc the full range of values for the arrays based on the XY mod position when a new one is loaded but realised that since it is floating point values which come out of the mod screen it would probably be impractical (take too long and use a lot of memory).

I was hoping it might be a nice control for users to adjust the synthesised sound but it doesn't look like that can happen now.

Can you think of any other way to speed things up?

I know the calcs are all being done using green data and not poly or mono but i'm hoping you might have an answer that can fix it. I guess i'm asking if there is any way to do calcs on float arrays (as is done in the combine modules in your example) at sample rate and not the rate that green data uses. ;)
User avatar
Osseous
essemist
 
Posts: 52
Joined: Sat Apr 12, 2008 5:16 pm

Postby infuzion on Fri May 16, 2008 6:02 am

Osseous wrote:Exonerate, one thing i noticed about your wavedraw mod 1.1 is that it is quite a lot faster than my version (despite the fact mine is pared down a lot), but it still has lag if the XY control for adjusting the balance between the 4 waves is done too quickly.

{from earlier post this thread}
Everytime the XY pad values change the wavetable has to be created again. Would it be better to create 4 wavetables for the 4 morph sounds and then mod them in the XY after that rather than before
You have to choose, green or stream:
green: low CPU, unless you want constant fast updating (as in LFO), using green in automation usually if the changes are slow enough.
stream: higher CPU, but better if you want fast updates (with LFO, envelopes, etc).

If you want a closer emulation of the K4 series & other morphing-sounds-with-a-LFO/OSC, then you'll need 4 OSCs then crossfade their audio-stream outputs.
Need help? First search the forum & WiKi, then post in the help forum with a clear topic, request, & OSM. Then please WiKi the correct solution. If you want my personal assistance, I charge by the hour or for an exchange of services.
infuzion
smstar
smstar
 
Posts: 6163
Joined: Wed May 04, 2005 8:02 pm
Location: Earth, USA, CO, Denver

Postby exonerate on Fri May 16, 2008 9:10 am

Osseous wrote:Can you think of any other way to speed things up?


I think putting a redraw limiter just before the trigger to the Wave Table should help and also I'd put a redraw limiter before the redraw component also.

I've noticed on mine I never did this, but with my wavetables being 256 points slow down is not as noticable. Morphing between wavetables of 2048 points will be sending a large amount of triggers, so using the redraw limiter should help.

Cheers ;)

Exo
The Developer Toolkit -- A collection of over 150 modules and counting. Available from the Registered Users forum.
User avatar
exonerate
smaniac
 
Posts: 1487
Joined: Sat Dec 30, 2006 1:57 pm
Location: England, West Yorkshire, Huddersfield

Postby Acrobat on Fri May 16, 2008 10:20 am

Osseus, are you sure that modifying a float array for waveform purposes is a good idea? Me not - I think it can't work sufficiently fast - users might desire to make fast changes on the joystick, I'm sure all those moves can't be executed so fast, the solution is Infuzion's one: four different streams mixed with a XY control, there's the Oddson one.. far far simplier and it will not glitch or delay... even Korg WS works with simple linear volume changes, it doesn't involve waveforms neither in vectorization neither in sequences. SO the Prophet VS and I bet also the K4.
User avatar
Acrobat
smaniac
 
Posts: 1660
Joined: Mon Jun 04, 2007 10:50 pm
Location: Roma, Italia

Postby Osseous on Fri May 16, 2008 1:57 pm

I'd first planned to just mod the gain of 4 audio streams but i really liked the way that the wavetable mod 1.1 looks. i.e. the big picture of the amalgamated wavetable.

I realised that part of my problem with slowdown and jerkiness was with the graph redraw on the big wavetable. If you have waveforms with a lot of points (not simple like sine or saw etc) the table was having to recalc the gradient for the wave on the GUI element so i turned that off which helps a lot, but the mod isn't adjusting the wavetables at sample rate.

I couldn't figure out a way to get the same kind of display using the method you suggested acrobat, although i did try it. I could just display the waveform but that would only show up when a note is playing, at least that was the only way i could find to do it. Assuming i did do it that way i guess i'd have to make the max gain of each waveform 0.25 in case you get all 4 waves peaking at the same point and going outside of the maximum float values of 1.0 and -1.0 for audio streams?

Do any of you have any other suggestions for displaying the waveform to get the same sort of look as in the wavetable mod 1.1?

Thanks for your help guys.

Oss
User avatar
Osseous
essemist
 
Posts: 52
Joined: Sat Apr 12, 2008 5:16 pm

Re:

Postby Acrobat on Sat May 17, 2008 4:35 am

Osseous wrote:Assuming i did do it that way i guess i'd have to make the max gain of each waveform 0.25 in case you get all 4 waves peaking at the same point and going outside of the maximum float values of 1.0 and -1.0 for audio streams?


yes, for the XY math:
http://www.outsim.co.uk/forum/viewtopic.php?f=7&t=3299&start=30&st=0&sk=t&sd=a&hilit=xy+pad
User avatar
Acrobat
smaniac
 
Posts: 1660
Joined: Mon Jun 04, 2007 10:50 pm
Location: Roma, Italia

Re: Better Waveforms

Postby Zephyr on Tue Jan 13, 2009 10:47 am

Kinda of topic here, but if you listen to a song called Uranium from the Uranium EP by Radioactive Man, you'll hear a truly unique sound. It gets my synthesis juices flowing every time i hear it. :)

Oss


Wow is all I can truly say about this sound. I have Napster, so I can hear pretty much anything that I want to. I see what yoru saying about that sound. It's almost 3 dimentional in nature. How did he make that sound I wonder? It's a distorted grinding sound that is yet very pleasing to the ear. Good find Oss.
Likewise, if you can imagine a sound, and choose the right waves to make it a reality, you're well on the way to becoming a sound designer. Gordon Reid - SOS Magazine
User avatar
Zephyr
essemer
 
Posts: 30
Joined: Mon Jan 12, 2009 8:35 am

PreviousNext

Return to Sound

Who is online

Users browsing this forum: No registered users and 0 guests