# Reaktor promary , impulse FM , notstarting on sync

Member Posts: 93 Helper
edited June 2022 in Reaktor

Two impulse fm modules triggering an AD envelope

One running at 1 hz(top) , the other ar 2 hz , they never start on sync even after resetting Reaktor engine .

A constant of 1 or gate ( value 1 ) into the impulse fm Amp input doesn't make any difference.

• Member Posts: 93 Helper
edited June 2022

impulse sync does the job , but after a while just drifts ( p input receives enough negative value )

Upper strucutre (left speaker ) receives a hertz value of 4/2=2 hz

The lower (right speaker ) receives 4/7=0.571429Hz

So if the upper structure plays 7 impulses ,the lower plays two , but like I said it drifts after a while

So what we are essentially doing is playing a 2Hz (4/2) impulse against a 0.571429Hz(4/7) impulse which results in polyrytm

In supercollider everything just says supertight , here's the supercolldier code

• Member Posts: 93 Helper
edited June 2022

C'mon guys this is a serious issue ..so much drift and no event timing is used at all .

The upper(left ) now plays at a frequency of 2Hertz (4/2) which means the impulse is triggering the envelope every 500Milliseconds.

The lower (right speaker ) is using 4/5 , using the same numerator as above but this time divided by 5

So 4/5=0.8Hz , so the envelope is triggered every 1.25 seconds

As you can see the relation between both , we have a simple polyrytm since 500ms goes exactly 2.5 times in 1.25seconds . so the left channel does five beats while he right channel does 2

But like I said , the difference when both hit at the same time is around 10-30ms afte a minute of recording

• Member Posts: 676 Guru

C'mon guys this is a serious issue ..so much drift and no event timing is used at all .

Not so sure it is. It would be a serious issue if core didn't exist, but it has for a long time, and building something like this in core shouldn't be too difficult for an experienced builder. I totally get that it's annoying when stuff doesn't work the way you expect or need, but I think most of the builders that have got to that point have also bitten the bullet and moved over to core for this type of process. Primary is just too janky for so many things.

For the kind of synchronisation you want, I think you would either need to develop the process in a different way explicitly maintaining sync throughout e.g. find the greatest common factor (or at least an equivalent of that after scaling) between the two frequencies, run a third oscillator at that rate, and sync both the others to it. Or you would need to use 64bit processing for everything - in core.... or run a fast clock (like midi does) and only allow frequencies that are divisions of this master clock - that buys you synchronisation at the expense of ultimate flexibility.

FWIW These Primary modules are from a different era where I think you would only use 64bit where absolutely necessary for cpu issues, so unless your use case was the intended use for the module, it maybe wouldn't support that. (I'm guessing here, it could be 64bit, and just have a bug that causes timing to drift marginally per impulse)... I remember muon software making a big sales pitch about using 64bit processing internally on one of their soft synths. That was some years after Reaktor was released... Reaktor was at V3 or V4 by then...

If you think about it a different way, you are really talking about pitch accuracy, and it seems to be pretty good here, just not perfect (which is impossible due to numerical error)

One thing I found playing with it is that to get the impulse to fire as close to sync as possible, the phase should be set to 1.99997, which is just very odd... so definitely something funky going on with this module - the range for this parameter is -1..1 according to the tool tip