Proper tablet reading for wavetable synths


#45

So how should I approach it:

If I have a sample that is 482 byte and want to make it 512 byte:
512 - 482 = 30
(30/482) * 100 = 6.22%

How do I apply 6.22 stretch in a manner that doesnt produce artifacts? I cant figure out how to do it with the Audacity Nyquist plug in. It need command lines and I am not sure how to do that.

To be honest I am not sure stretching the files are the best solution, anyway.


#46

Why sample-rate-convert the wavetables?
The transposition error resulting from that can be compensated during playback.
It is more important to preserve the power-of-two length (1024, 2048 etc). So I suggest not to sample-rate-convert, only make it raw.
I do not expect any realistic increased quality resulting from a 32bit resolution wavetable over a 16bit wavetable. Interpolation algorithms are far more important to the sound quality.


#47

The wavetables from Serum is 31 bit float 44.1khz. I thought that Axoloti only used 16/32 bit depending on what you choose and 48khz sample rate?
.
Therefor I thought it was necessary to sample rate convert. If you say there is no need for it, Ill take your word and test it out. Then in theory it is pretty easy to use since a 128 wavetable from serum fits perfectly in a table/alloc 16b with 512 buffer size.


#48

Certainly convert from 32bit float to 16bit or 32bit fixed point. 32bit fixed point will hardly give any noticeable improvement for wavetables.

The size attribute in Axoloti is number of samples regardless of sample size, so select 128 for a 128 point wavetable.


#49

Ups sorry I said something wrong here... All those numbers i just went through....
32bit float and 44.1khz calculations:
128 tables that is 8 bytes is 1024 bytes.
64 tables of 8 byte is 512.

Anyway going to test now. I just made now.


#50

the solution is the quickest for me right now - of course having a nice converter that is intelligent enough to pitch stretch to the closest power of 2 would be neato but whatever.

you need to use this plugin http://forum.audacityteam.org/viewtopic.php?f=42&t=64003 - the second attached file in the thread.

it uses time but you can specific very exact lengths so you can get the right amount of samples.


#51

Ahh an explanation about the plug in. Thanks :smile: But I will still prefer not to stretch anything if possible..... And i think it is possible without stretching..


#52

well its re pitching so i think its good. might be wrong though, but i didn't hear artifacts and code seems super simple (you can open the file).

the EASIEST thing to do would be making your own tables at the correct lengths.


#53

Yes exactly what I am trying to do. And if we can make Serum wavetables fit in Axoloti we dont even have to make them ourselves, because there are thousands already now. I think it is too much of a hassle having to repitch every single wavetable file you want to load in axoloti. WOuld be must simpler if we can just drag them in and set buffer size.


#54

pretty sure batch processing works with this plugin but i havent tried it yet. I want to use old ripped wavetables from some classic machines and no way in hell im doing them by hand hehe


#55

Ok still learning here. I though the table alloc object sets the size in bytes not samples? That is why I pay attention to the tablesize in bytes not in samples.

And a Serum wavetable is 512 bytes, not samples. And therefor I have set table alloc for 512.

Would really like to read a proper explanation of how table alloc works in general. It seems like i get things mixed up.


#56

All the classics are already made for Serum. Again it would be much better to put a little effort into solving this issue that having to repitch all of them... I dont trust the repitch idea....

Since the sizes of Serum wavetable and Axoloti table alloc are compatible it is much better to find out how to make this work perfectly. Then you just download whatever wavetable you need and use it... Much better in my opinion.


#57

i guess so..i've looked at serum .wavs and they are mostly different sizes also? in anycase i have actual rom rips :smile:


#58

Yes you can make serum files any size between 8 byte and 2048 bytes(2megabyte). Serum waves are 8 bytes long each and

The example I have posted and made is based on a 128 wavetable and each wavetable is 4 bytes. SOOO

128 wavetables * 4 bytes = is 512 bytes.

Therefor in my head the Table//alloc must be set to 512 to be able to play all the 128 step. If i set it to only 264 only the first 64 waves will be inside the reach of the table alloc? Or is this wrong?

WOuld be nice if we could find a standard format that just fits perfectly and dont need any post Serum stretching. Like the 128 example I have made....


#59

That is extremely short for a wavetable.


#60

yeah..are you sure @jaffasplaffa? i looked at the files and some are very long..even the drum attacks (6000b lol)
smallest in my demo install is a 114byte drum attack.


Polyphonic morphable wavetable oscillator
#61

Yes I am pretty sure. From Serum manual page 11:

Edit i mean 8 kilobyte

The wavetables in Serum consist of up to 256 sub-tables, or single-cycle
waves which will be referred to hereafter as frames. This is probably best thought of as (up to) 256 discrete waveforms, which are joined together end-to-end in the parent file on disk.In normal circumstances you hear one of these 256 tables at a time, but you can automate (using the WT Pos knob) to have the sound 'animate' though various tables. Technically it
is possible to hear multiple tables simultaneously, by enabling Unison
(for multiple simultaneous voices) and the Unison WT Pos control (to
have said multiple voices play different sub-tables, see Global settings
chapter for more on this control).

Technically speaking, when Serum loads a wavetable it is using 2048
samples for a sub-table of the wavetable set. This means the
maximum file size would be 2048(samples) x 256(sub-tables) x 32(bits)
(which is exactly 2 megabytes).

Most wavetable files won't be this large however. It is common to have
a good sounding wavetable which may consist of just a few sub-tables.

From serum manual page 13:
While this uses hard disk space (how much size depends on how many frames you
use in the Wavetables, from 8k to 4 Megabytes) the benefit is that you
can exchange presets with others, or open your song in the future,
without having to worry about table file management. so there is no
need to save wavetables unless you want your wavetable to appear in
the Wavetable Menu.


#62

8 kilo bytes might be short but it is fine here. I know on Blofeld they are made of 128 waves of 64 sample length, so they are much longer.

Anyway try yourself. Here is the patch I am working on. I have included the .raw file used and also the wavefile before it is converted to raw.

@johannes Please take a look at the indexing of the table. If you scan through the wavetable the first 11 tables should be different than the rest. From 12 and up it is the same stativ saw wave. So if you want to check if indexing is correct you can check if selecting wave 12 and up changes the sound alot. You can check the wavefile in wave editor.

Link for patch and samples. I think it is pretty good as it is now, but should probably be setup in a different way. I used table play pitch cause I need to be able to select position(wavetable). Any updates and help is welcome. WOuld be really awesome too get this right :smile:

https://mega.nz/#!7Yh23AoZ!ndn0GcQzT5-Kc8yzOL4RgpG_Zn9Eo-nCz9y7pstQmco


#63

maybe useful to anyone using audacity to adjust sound lengths with the stretch plugin mentioned above. These are the time values that correspond to the exact number of samples

mono 48k 16bit raw bytes - 16bit samples at 48000hz - time equivalent

4 - 2 - 0.00004
8 - 4 - 0.00008
16 - 8 - 0.00016
32 - 16 - 0.00032
64 - 32 - 0.00065
128 - 64 - 0.00132
256 - 128 - 0.00266
512 - 256 - 0.00533
1024 - 512 - 0.01066
2048 - 1024 - 0.02133
4096 - 2048 - 0.04266
8192 - 4096 - 0.08533
16,384 - 8192 - 0.17066
32,768 - 16384 - 0.34133
65,536 - 32768 - 0.68266
131,072 - 65536 - 1.36533
262,144 - 131072 - 2.73066
524,288 - 262144 - 5.46133
1,048,576 - 524288 - 10.92266
2,097,152 - 1048576 - 21.84533
4,194,304 - 2097152 - 43.69066


#64

i came here via search but found that actually 64 = 100% so if you want 50% through the table you need 32.