Jan's contributions


#1

Forum profile: @Jan
Contribution prefix: jho

objects
jho/filter/notch.axo - notch filter object
jho/filter/para.axo - parametric equalizer object
jho/osc/phasor fast sync.axo - phasor with signal rate reset suitable for voice/formant-simulation
patches
none yet

firmware
none yet


Help needed with SINE2TINTERP function
#2

jho/filter/notch.axo

status

For Axoloti 1.0.9. First version, any feedback is welcome

description

A simple biquad notch filter (or band-stop filter, band-rejection filter) with two parameters: pitch and reso.


#3

jho/filter/para.axo

status

For Axoloti 1.0.9. First version, any feedback is welcome

description

A biquad parametric equalizer stage. In addition to the common parameters freq and reso, the parameter gain allows a boost/cut of +/- 20 db.

Important: To cut frequencies with maximum resonance (Q=infinity) is not possible because of self-oscillation. For sound corrections, a value of 63.5 (Q=64.6) or lower should be used.


How to build an equalizer?
#4

Thanks for sharing, works well;

So, this is the "opposite" of a band pass filter?


#5

Yes, a notch filter is the opposite of a band pass filter.

By the way: I found a good tutorial about parametric eq's:
How to Use a Parametric Equalizer

To build a similar equalizer as used in this tutorial, you would have to chain five para-objects, one high-pass and one low-pass in series. I guess it would be best to place the high pass filter as first object (to get rid of unwanted low frequencies which can cause distortion), the parametric filters in the middle and the low pass at the end (that way the high frequency part of rounding noise of the other filter stages will be reduced).


VOSIM Possible in Axolotl?
#6

jho/osc/phasor fast sync.axo

status

For Axoloti 1.0.9. First version, any feedback is welcome

description

Phasor with signal rate reset. An abrupt decrease at the sync inlet resets the phase. This way, the factory phasor object (which doesn't necessarily go back to zero at the beginnig of a new cycle due to the wraparound technique) can be used as sync input. The help-file phasor fast sync.axh shows an implementation of the VOSIM-algorithm (classic voice/formant-simulation, see W. Kaegi 1983).


#7

Hey @Jan :smile:

Awesome collection of modules you have added :+1:

When I was looking through them, I noticed that the jho/filter/downsample has got a Hamming window for sync. I looked through the code(noob) and I could not find out how it was implemented.

Could you give a tip on where the Hamming function comes from? I would like to try and extract it and create a regular window function(like the Hanning that Axoloti all ready has got).

Thanks!


#8

Thanx @jaffasplaffa

I haven't documented the oversampling objects yet, but you can check out the help files. For an optical feedback I would recommend a spectrum analyzer like the free Voxengo SPAN.

These oversampling filters are really cool for center frequencies above 14 kHz - you can create brutal filter sweeps.

I'm not shure though for standard juse - center freq below 14 kHz. I just made a blind test with my classical guitar, filtered by one vcf, standard versus oversampling version. (using the phi/probabiltiy bang as a random switch). It's hard for me to tell the difference.

About the code. Have a look at: dsp_book_Ch16.pdf. Everything is in there. In my table jho_downsample_coefs_q30 (see file jho_oversampling.h), the sinc-function is allready windowed (otherwise it would be infinitely long). I simply calculated the table with open office calc.


#9

Thank you for the info :smile:

Will look into it :smile:


#10

Hi Jan,

If I wanted to make a 2x oversampled oscillator object, could I use your downsampling object to downsample back to 48kHz?

If so, is there anything special I need to add to my oscillator code, other than having it create two buffers and output them through two outlets, as you do with your oversampled objects?

I'm assuming your downsampling object also applies anti-aliasing filtering to attenuate frequencies above the Nyquist limit before downsampling (or is that done 'upstream' of the downsampling object)?

a|x


#11

No, that's all - the first outlet should contain the first 16 samples, the second outlet the remaining 16 samples. My downsample object uses an FIR anti-aliasing filter (for details yo can take a look at the comments in jho_oversampling.h)

Jan


#12

That's great, thank you Jan!

Maybe in the longterm, there should be an inlet/outlet type for oversampled audio signals.

a|x


#13

Using a double wire for 2x oversampling works fine for me. And for 4x oversampling or even higher ressources would become a problem.


#14

It's a novel way of doing it, but if it works, then, yeah, why not?

Have you thought of porting any of the oscillator algorithms from the Mutable Instruments Braids Euro module? I was toying with the idea of giving it a try myself, but not knowing how to handle oversampling (along with a general lack of knowledge of all things DSP) held me back.

There's a cornucopia of cool oscillator types to be mined there, though, and it's all available on GitHub.

a|x