Wavetable package

Options
2»

Comments

  • Laureano Lopez
    Laureano Lopez Member Posts: 102 Advisor
    Options

    Well done Rolando

    Almost forgot to thank for that, I feel like the plumber lover of a successful lawyer in a mexican soap opera (?)

    Is there an ensemble I can use to play with?

    I've not done anything, but plug it somewhere and see what happens! 😊

  • ANDREW221231
    ANDREW221231 Member Posts: 299 Advisor
    edited April 2022
    Options

    but 3rd order has wider holes at multiples of 2pi so it's cleaner below ~4k @44.1.

    so it is! hadn't noticed that, i would say that is actually an advantageous tradeoff in favor of the wavetable, as in the aliasing below 4kz is going to be the stuff you'd rather want removed. otherwise, it is almost noteworthy how similar they are... remembering that thread on KVR showing comparing frequency graphs of different antialiasing methods there was quite a diversity in shape/distribution of foldovers.. even between the same method at different orders iirc

    That's because it's not noise, it's the rest of the harmonic spectrum successively folded at sr/2 and 0. It's inharmonic with respect to the signal when the fundamental is not a submultiple of sr, but it's still periodic.

    i suppose i was using the word noise a little broadly to mean anything but the signal of interest. of course it would still be periodic. actually, i think its possible to use undersampling and be able to reconstruct an aliased signal, if you know enough about the signal to presume there is only signal energy in a certain foldover/range

    what i was getting at was more like taking the concept of the missing fundamental even further, that there is a ghost of the fundamental frequency preserved not only in the harmonic overtones, but also in the residual inharmonic foldovers

    the table is read backwards when the frequency is negative, and you go into negative frequency all the time when modulating phase. If you start reading with a 1 sample offset each time the frequency goes negative, you get a discontinuity at those points

    that made it click! i could see the discontinuity in my minds eye. you know, you're a bit like Prometheus bringing the fire of knowledge with these explanations. i still don't quite get what this interpolation is for though:

    is it what you were referencing here??

    Because at frequencies around 0 Hz I switch to plain interpolation, I can offset this read instead, which is stateless, so there's no risk of big clicks.


  • Laureano Lopez
    Laureano Lopez Member Posts: 102 Advisor
    Options

    is it what you were referencing here?

    Yes. For frequencies below the natural frequency of the table, preintegration is worse than plain interpolation. The "natural frequency" is sr / table length, the speed at which there's no interpolation, each sample of the table goes right to the output. Say you're reading 20 times faster than that: your read position goes 0, 20, 40, 60... you'd need a 20-point interpolator to avoid discarding samples between reads. With preintegration, you get the average of those samples in between: for example, at read position 20 you get the average of all samples from 1 to 20. Now, if you're reading 5 times slower than the natural frequency, your read position goes 0, 0.2, 0.4, 0.6... there are no samples to average between positions.

    So I switch to plain interpolation below the natural frequency of the table. pos.hi is the read position for the preintegrated table, which is read constantly, even when it's not used, because the differentiators' states need to be updated. pos.lo is the read position for the plain, non-preintegrated table, only with DC removed -I call it "lo" because it's only active at low frequencies, between -sr/length and +sr/length Hz. This position gets adjusted in the oscillator macro, to match the shift of the differentiated output at negative frequencies.

  • Jonathan Tremblay
    Jonathan Tremblay Member Posts: 12 Member
    Options

    trying to read through, but this is beyond me haha 😅

Back To Top