Waveform tables
-
- KVRAF
- 3404 posts since 15 Sep, 2002
I have tables of 4096 values for my waveforms. My current plan is to have those for each of the first 12 harmonics, these are the "big," "loud" harmonics, and the others trail off in relative quietness.
As has been pointed out to me, these higher ones, though, quiet, are important to have. I'm thinking of storing these higher ones in tables that are much smaller. Said tables will lack the first 12 harmonics. When I generate the sounds, I'll have the first 12 generated the standard way, from the nice, accurate tables, then add in these higher ones as if they were a cheap hair extension.
Does that seem reasonable?
As has been pointed out to me, these higher ones, though, quiet, are important to have. I'm thinking of storing these higher ones in tables that are much smaller. Said tables will lack the first 12 harmonics. When I generate the sounds, I'll have the first 12 generated the standard way, from the nice, accurate tables, then add in these higher ones as if they were a cheap hair extension.
Does that seem reasonable?
-
- Banned
- 36 posts since 3 Aug, 2006
I wouldn't know, I haven't done Wavetable synthesis.
But are these mostly trivial waveforms? Saw, Pulse? If so, you might find it quite a bit easier to use BLEP synthesis instead. Its easy to understand (I'd be glad to help you step through it), and its plenty faster than WT too.
But if you're using weird WT shapes, then just ignore me.
-- Chris
But are these mostly trivial waveforms? Saw, Pulse? If so, you might find it quite a bit easier to use BLEP synthesis instead. Its easy to understand (I'd be glad to help you step through it), and its plenty faster than WT too.
But if you're using weird WT shapes, then just ignore me.
-- Chris
-
- KVRAF
- 1718 posts since 3 Sep, 2003
toaster > I can't think of a reason why it wouldn't work. It's a plain additive manouver. Given that you will use two diferent table sizes you could get some slight misalignments in phase or frequency due to float imprecision, but I doubt it would be audible..or even meassurable.
bslf > It's not strictly speaking wavetable synthesis in the conventional sense, but rather a table based oscilliator if I understand right. I'm not sure it's possible to make anything faster than a non interpolated lookup table?
But I'd enjoy a quick outline (or link) on bleps either way because I know jack about them.
bslf > It's not strictly speaking wavetable synthesis in the conventional sense, but rather a table based oscilliator if I understand right. I'm not sure it's possible to make anything faster than a non interpolated lookup table?
But I'd enjoy a quick outline (or link) on bleps either way because I know jack about them.
-
- KVRAF
- Topic Starter
- 3404 posts since 15 Sep, 2002
How could a BLEP be faster than a table? Doesn't the BLEP come out of a table?
>>toaster > I can't think of a reason why it wouldn't work. It's a plain additive maneuver. Given that you will use two different table sizes you could get some slight misalignments in phase or frequency due to float imprecision, but I doubt it would be audible.
That's my idea--keep all the small errors in places where it doesn't matter. Gives me more memory for resolution where it counts. I'll keep them power-of-two tables and I shouldn't get too much in the "weird" department.
I am using linear interpolation, since my tables are so big. But I'll probably use one of the elephant paper's interpolators for the smaller tables.
Also, seems though most of my current waves have a lot of symmetry. I can cut most of them into 1/4 size. And a couple of them into 1/2 size.
Smaller the tables, probably better the caching.
>>toaster > I can't think of a reason why it wouldn't work. It's a plain additive maneuver. Given that you will use two different table sizes you could get some slight misalignments in phase or frequency due to float imprecision, but I doubt it would be audible.
That's my idea--keep all the small errors in places where it doesn't matter. Gives me more memory for resolution where it counts. I'll keep them power-of-two tables and I shouldn't get too much in the "weird" department.
I am using linear interpolation, since my tables are so big. But I'll probably use one of the elephant paper's interpolators for the smaller tables.
Also, seems though most of my current waves have a lot of symmetry. I can cut most of them into 1/4 size. And a couple of them into 1/2 size.
Smaller the tables, probably better the caching.
-
- KVRAF
- Topic Starter
- 3404 posts since 15 Sep, 2002
Go ahead and step me through BLEPs. I'll use them next time around. I'm supporting some "classic" digital synth sample ROMs in this synth, so makes sense to keep this one table-based.
Last edited by mistertoast on Wed Dec 06, 2006 11:33 pm, edited 1 time in total.
-
- KVRAF
- 1718 posts since 3 Sep, 2003
Did you see any noticable improvments? (Or did you cover this in one of the other threads?)mistertoast wrote:I am using linear interpolation, since my tables are so big.
-
- KVRAF
- Topic Starter
- 3404 posts since 15 Sep, 2002
Yes, I absolutely noticed a difference. A huge difference. Crispness, noise floor.
In fact, I'm going to let the user flip a switch on the "classic" waveforms to interpolate them or not. I'll use an elephant paper interpolator because those old skool tables are hella small.
In fact, I'm going to let the user flip a switch on the "classic" waveforms to interpolate them or not. I'll use an elephant paper interpolator because those old skool tables are hella small.
-
- KVRAF
- 8389 posts since 11 Apr, 2003 from back on the hillside again - but now with a garden!
-
- Banned
- 36 posts since 3 Aug, 2006
Do you want it explained in terms of how to do it or in terms of how it works?mistertoast wrote:Go ahead and step me through BLEPs. I'll use them next time around. I'm supporting some "classic" digital synth sample ROMs in this synth, so makes sense to keep this one table-based.
-- Chris
Last edited by bslf on Wed Dec 06, 2006 11:41 pm, edited 1 time in total.
-
- KVRAF
- Topic Starter
- 3404 posts since 15 Sep, 2002
Hey DSP, that's sweet. Code!
-
- KVRAF
- Topic Starter
- 3404 posts since 15 Sep, 2002
Chris,
Actually, I'd prefer the "how it works."
Actually, I'd prefer the "how it works."
-
- KVRAF
- 1718 posts since 3 Sep, 2003
LOL, your gui is going to look like the togglebutton national convention.
Not that there's anything wrong with that. 
-
- Banned
- 36 posts since 3 Aug, 2006
mistertoast, I'd recommend writing it yourself anyway, because (1) You can then specify your own tradeoffs (2) You can design it to conform to your current way of doing things, instead of creating a wrapper or modifying it through and through and hoping you didn't forget a piece of context (3) Its fun! 
For some reason, that code looks familiar, but I don't know why ...
-- Chris
For some reason, that code looks familiar, but I don't know why ...
-- Chris
-
- KVRAF
- Topic Starter
- 3404 posts since 15 Sep, 2002
>>LOL, your gui is going to look like the togglebutton national convention.
Hmm. Maybe I need one of those "hidden pages" where you tweak the guts of the machine, to handle switches like that.
Hmm. Maybe I need one of those "hidden pages" where you tweak the guts of the machine, to handle switches like that.
-
- KVRAF
- Topic Starter
- 3404 posts since 15 Sep, 2002
Actually, that toggle could be a slider to let the user choose on a smooth scale between old skool raunch and interpolated.

