Operator feedback in the scheduler event domain

Options
gentleclockdivider
gentleclockdivider Member Posts: 350 Advisor
edited July 4 in Reaktor

This is mostly pure for visual and educational purposses and it's happening completely in the event domain no audio whatsoever , sadly this is not possible in reaktor because it requires a feedback loop.
The typical aliasing that occurs when an operator is fed back to itself , turning it into a saw and eventually collapsing into noise .

I tried an event delay in the feedback loop , but no luck
Reaktor versus pure data
Pure data can handle feedback loops thorugh iteration , even in the scheduler domain
Showcase 2 operator fm strucuture , modulator fed back into itself

Not really a big deal but it does put ahalt on how far we can take the pure procedural gui processes



Pure Data

«1

Comments

  • gentleclockdivider
    gentleclockdivider Member Posts: 350 Advisor

    Pure data , operator feedback in the scheduler domain

  • colB
    colB Member Posts: 1,116 Guru

    Please try to remember that just because you don't know how to do something in Reaktor doesn't mean it can't be done (often easily) in Reaktor.

    Maybe instead of posting:

    "Reaktor can't do this thing, but pure data, max (whatever) can"

    Why not:

    "I'm trying to do this thing in Reaktor, but I can't work it out, can someone tell me how"

  • colB
    colB Member Posts: 1,116 Guru
    image.png

    A very quick example.

  • gentleclockdivider
    gentleclockdivider Member Posts: 350 Advisor
    edited July 5

    Not working over here
    SOme guidelines would be appreciated , no uploads please since I'm still on 6.4.

    3

  • colB
    colB Member Posts: 1,116 Guru

    indeed…

    Things to consider:

    Phase modulation and frequency modulation are not the same.

    Orange wires in core are a warning.

  • gentleclockdivider
    gentleclockdivider Member Posts: 350 Advisor
    edited July 5

    Why are you even implying that I don',t know the differnece between phase modulation and frequency modulation , i'm not frequency moduating anything , how do you even suspect that ?
    It's calculating the cosine function of a linear ramp from the iterator , feeding this back into the cosine is operator feedback phase modulation
    See the pure dat screenshot ..that is PUre phase modulation and operator feedback and the exact same principle , and also have a look at the numerous ensembles I've uploaded ..

    https://www.native-instruments.com/en/reaktor-community/reaktor-user-library/entry/show/15517/

    https://www.native-instruments.com/en/reaktor-community/reaktor-user-library/entry/show/8291/
    I appreciate your help and knowledge verry much but sometimes you're assumming I'm a complete noob .
    And yes orange indicates a feedback loop , which is what I want in the first place , I could insert a z-1 and maybe that 's needed becasue of the gui only process .

    I tried to replicate the exact same steps in reaktor versus pure data , so if you have any tips , you're welcome .
    Phase modulation in the audio domain , shown below with the dreaded Primary ;)

    image.png
  • colB
    colB Member Posts: 1,116 Guru

    re. phase modulation. I misread your code. You are just adding to the phase, aka phase modulation, so that's not the issue.

    And yes orange indicates a feedback loop , which is what I want in the first place

    The orange wires are a warning that there is an implicit feedback look. Meaning you haven't explicitly defined how the feedback loop functions, ie. where in the code the unit delay (or some other delay) should be. Or what clock should be driving the feedback. So Reaktor must guess. Hence the warning. If Reaktor guesses wrong, then the code won't work.

    I'm really not sure how this would work in the context of a GUI only core cell. Normally an implicit feedback loop would be driven by SR.C (I think), but there is no sample rate clock in a GUI only core cell.

    Always explicitly define feedback loops using one of the z^-1/latch[-1] constructs in the library, or just using and OBC chain.

  • colB
    colB Member Posts: 1,116 Guru

    Confirmed. Reaktor will default to using the SR.C clock to drive the unit delay in an implicit feedback loop.

  • gentleclockdivider
    gentleclockdivider Member Posts: 350 Advisor
    edited July 5

    So how did you do it then ?
    Once again , now in it's most basic form, olnly ONE operator

    Pure data : iterator ( 512 ) / 512

    Then an expression module 2pi*iterator output
    Calculate cos.function

    Feed cosine back to itself ( and thus modulate the phase of the integrator-ramp wave )
    Exact same procedure in reaktor , everything except iterator is done in a core gui cell

  • colB
    colB Member Posts: 1,116 Guru

    I used the iterator driving the waveform display as the clock. Best approach is to use an 'XR pack' to override the SR clock bundle, then you can use regular library components to build the rest… So Library FM Op, with a regular z^-1 feedback module etc.

    (in this case the implicit feedback also works, because the SR clock is now an iterator driven by the display clock, so its still just GUI events!)

    I set the sample rate to the width of the waveform display (300 in this case, although it could be generalised to auto-fit if the multi picture size is altered). That way, setting frequency of the operator to 1, 2 or 3 gives exactly 1, 2 or 3 cycles of the wave on the display.

    You can use this approach to calculate and display various things. e.g. a factory saw wave through a wavefolder… it will all be calculated using the iterator on the GUI events… by magic ;)

    Here is a pulse wave through a filter, calculated on the GUI events that drive the multi display, but using unedited factory audio processing modules. Just override the SR clock bundle…

    image.png

    Here, the iter is pumping out 300 iterations on each diplay clock… one per object… one object per pixel…

  • gentleclockdivider
    gentleclockdivider Member Posts: 350 Advisor
    edited July 5

    Is the iterator outside the core cell ?
    I can't even get the bundle distribution to light up


    1.jpg

    It seem slike a overly complicated task for what is n esence something verry simple
    Why are the objects even iterated , set to ( -6 line ) only once should do the job , no ?

  • colB
    colB Member Posts: 1,116 Guru

    That code is also rendering the waveform

  • gentleclockdivider
    gentleclockdivider Member Posts: 350 Advisor

    Well that was the point of this thread .

    Rendering only requires index and two coordinates x1 , y1 ( when set to line )

    Either way , It's not a straight forward process and I am still not getting any wiser - getting this done in core

  • colB
    colB Member Posts: 1,116 Guru

    It's pretty simple really. As I explained, you can't just use implicit feedback, you need to make it explicit, and need to drive the unit delay with a clock that is not the audio clock, because GUI cells don't have access to the audio clock… OR you need to override the SR bundle so that the clock is one that the GUI core cell can use…

    Here are the key points:

    image.png image.png

    'no' is the number of objects in the multi display.

    (SR only lights green when something in the same scope is using it)

    That overrides SR so that instead of using the audio clock, it now uses the iteration events as it's clock.

    Now regular library stuff will 'just work' in a G cell, and even implicit feedback will usually work in simple cases

  • gentleclockdivider
    gentleclockdivider Member Posts: 350 Advisor
    edited July 5

    That part I already figured out , will have a look tommorow

Back To Top