doPNSequence question | Synth Book Questions | Forum

guest

— Forum Scope —

— Match —

— Forum Options —

Minimum search word length is 3 characters - maximum search word length is 84 characters

doPNSequence question
Member
Members
July 3, 2017 - 5:34 pm
Member Since: June 30, 2013
Forum Posts: 3
Offline

Hello,

What would I do to change this function to work with doubles in 64 bit environment?

July 4, 2017 - 10:08 am
Member Since: January 28, 2017
Forum Posts: 701
Offline

First, the output of the function is still a double, though internally it uses a 32-bit shift register (unsigned int). To alter it, you would first need to change thatÂ uPNRegister variable from UINT toÂ uint64_t to guarantee you have a 64-bit register.

Next, see the Datorro paper which is the original source of that particular PN generator here:

https://ccrma.stanford.edu/~dattorro/EffectDesignPart3.pdf

Go to table 9 and look at the last column, last row for 64-bit shift registers. It contains the formula for XOR-ing the bits from the 64-bit shift register. Alter the function doPNSequence( ) accordingly. Then in the conversion statement, you'd divide by 2^64 rather then 2^32, casting the variables as doubles rather than floats. You may need to experiment with the division by 16.0 in the last part of that function to get your output on the desired range of [-1.0, +1.0]. The paper has all the details you need to make the PN generator with any sized shift register.

- Will

Member
Members
July 4, 2017 - 12:13 pm
Member Since: June 30, 2013
Forum Posts: 3
Offline

Got it. Â Thank you Will. Â The book is very clear and understandable and the amount of time, research and testing that you must have put into it is very much appreciated. Â

Forum Timezone: America/New_York

Most Users Ever Online: 152

Currently Online:
6 Guest(s)

1 Guest(s)

Top Posters:

Chaes: 56

Skyler: 48

StevieD: 46

Derek: 46

Frodson: 45

Peter: 43

TheSmile: 43

Nickolai: 43

clau_ste: 39

jeanlecode: 37

Member Stats:

Guest Posters: 2

Members: 794

Moderators: 1