Table Filter (mip-map creator)

Pre-filters a wavetable to prevent aliasing (Table Osc Mod included)

(7 Votes)
1.4 (Updated 11 years ago)
362.6kB
September 19, 2013
Reaktor 5 or lower
Instrument Other

DESCRIPTION

New version:
- Added Compression and Windowing, for the porpuse of creating granular-like wave-tables. (also works on traditional tables)
- Possibility to turn-off the DC remover.
- "Read Offset" to exclude the first waves. Typically when an audio file is used.
- "Target Table" accessible on Front Panel.
- No need to connect anything in the filter macro to convert a 512 point table to 1024 anymore.
- "Pre-Listen" option.
- various improvements (the Lowest Significant Tap was inactive, better normalize calculation,...).
- Lighter download.
- "Original - Oki" and "Original - Carbon (de-mip-mapped)" included (the non-filtered version of these tables).

-----

Edit: a more complete version of the modified Table Oscillator (with fades-in/out + more) is available here: https://co.native-instruments.com/index.php?id=userlibrary&type=0&ulbr=1&plview=detail&patchid=13362

-----

The goal here is to create, from a simple wave table, a prefiltered table.
It creates multiple versions of the original table, each one being more and more low-pass filtered, and put them in a single final table.

Once read by the modified Table Oscillator (included), it switches betwen each sub-table depending on the note played and the S.R.
The goal is to prevent aliasing.

This classic technique is called mip-mapping.
Here, this is not the drop-sample version, each sub-table having the same length.
This version creates tables that are 5 times bigger than the drop-sample version, but it is used in the Table Oscillator Mod to cross-fade betwen sub-tables by cross-fading only the 4 samples BEFORE the interpolator to gain CPU consumption.
Not implemented in the test oscillator of this download because the result is so perfect that even at 48 KHz, and using strong Pitch Bend modulation, the click heared while jumping from a sub-table to another is very quiet.

Keys:
- Phases of each partials are the same in each sub-tables
- Amplitude of each partials are the same in each sub-tables, except, of course, the filtered out octaves.
- FIR filtering used, based on a Salamanderanagram ensemble created in a nireaktor.com tutorial.
The taps coefficients are wrapped around and the symetry is used so that the actual number of taps is 1/2 the number of point in a single cycle wave (ie 512 taps for a 1024 point wave), even when filtering the lowest octave with 30721 "virtual" taps.
- Automatic DC remover
- Semi-auto Normalize fonction.
- Possibility to create a table from multiple tables.
- Possibility to convert a 512 point length wavetable to 1024 point length.
- Audio files can be loaded instead of classic tables, to create granular-like prefilterd wavetables.
- Works in 64 bit precision.
- Included a bunch of windowing fonctions to extend your creativity !

When Saving/loading the created table:
- .txt format won't need to have been normalized but will have, apparently, a more limited total length than .wav format.

Procedure explained on front panel.


Ensemble created by Romain Gervais, based on the FIR Filter Designer created by Salamanderanagram in a tutorial on nireaktor.com.
Contains some window fonctions based on "Polynomial interpolators for high-quality resampling of oversampled audio" by Olli Niemitalo.
Contains high resolution Sin/Cos macros from Jan Brähler.

COMMENTS  (3)

Jonathan Canupp
10 years ago
This is surely one of the most important and inspiring ensembles I've seen in a long time. Being 'self-taught' in DSP as I am (ha!) - one of the biggest barriers has been a lack of tools such as this - with demonstrated/participatory implementations of DSP theory WITHIN the context of Reaktor itself. You've provided an amazing resource here --- and for anyone else who may be in a similar situation, you'll discover this to be a thorough exhibition processes critical to effective DSP programming. A rather thorough implementation of myriad windowing functions, up/downsampling, fast tap, etc. Demonstrated in a modular, comprehensible manner such that one can more effectively learn from it (via reverse engineering in my case). That's all a rather long and sleep-deprived way of expressing my gratitude. Thank you for providing this amazing and indispensable tool. Also hugely impressed by the Table Oscillator you mentioned in the description here. Looking forward to utilizing these tools - exploiting all of this power you've so kindly dispersed.
Romain GERVAIS
11 years ago
The idea of pre-filtering a table is not mine, and this was already implemented in the original oscillator. But the original "drop-sample" version would have lead to a huge amount of CPU when implementing the cross-fade (wich is also a classic technique). Just to be clear. The point is that the original mip-map table haven't been filtered properly, and there was a problem of different levels between each sub-tables. (and probably different phases, wich I think is unavoidable with the drop-sample technique). I originaly created this ensemble just to create my Table Oscillator Mod. But it took so long to do it that I thought it would be good to share this and not just filter my 2 tables on my own :-) I'll certainly upgrade it in the next days with 2 options for the "audio to granular table": - compression (saturation) - windowing
Paule
11 years ago
That's a good idea - thanks.
now