CHO RDA, COMPC, COMPA, and all that sort of stuff

Algorithm development and general DSP issues

Moderator: frank

Post Reply
Digital Larry
Posts: 338
Joined: Mon Nov 12, 2012 1:12 pm
Contact:

CHO RDA, COMPC, COMPA, and all that sort of stuff

Post by Digital Larry »

I'm wondering about the example from the Knowedge Base, whether possibly the highlighted line below should have a COMPC instead of COMPA? Please confirm.
=============================================
If COMPA is not used, as in the code above, then the COMPC will need to be used in the first line only, but if COMPA is used, then COMPC should be in the second line:

cho rda,sin0,sin|reg|compa,cdel+100
cho rda,sin0,sin|compc,cdel+101

Notice that the first line specifies a midpoint in the CDEL memory space, and the second line indicates a position that is 1 memory location greater.

For a wild set of chorus outputs, you can set up a single sine LFO and get 4 outputs, that we'll call c1 through c4:

cho rda,sin0,sin|reg|compc,cdel+800
cho rda,sin0,sin,cdel+801
wrax c1,0
cho rda,sin0,sin|reg|compa,cdel+400
cho rda,sin0,sin|compa,cdel+401
wrax c2,0
cho rda,sin0,cos|reg|compc,cdel+1100
cho rda,sin0,cos,cdel+1101
wrax c3,0
cho rda,sin0,cos|reg|compa,cdel+1400
cho rda,sin0,cos|compc,cdel+1401
wrax c4,0
=============================================
Thanks,

DL
frank
Posts: 1244
Joined: Wed Oct 19, 2005 12:26 pm
Contact:

Post by frank »

If you use COMPA it must be used in both cho instructions of the pair like:

cho rda,sin0,sin|reg|compa,cdel+100
cho rda,sin0,sin|compa|compc,cdel+101
Frank Thomson
Experimental Noize
Digital Larry
Posts: 338
Joined: Mon Nov 12, 2012 1:12 pm
Contact:

Post by Digital Larry »

Thanks Frank,

I'll be putting this to the test soon. If that's true, then both chorus taps using COMPA in the Knowledge base are in error.

While I have you on the line, can u please clarify this for me?

Let's suppose that we allocate "X" bytes for a chorus delay buffer.

Presuming that your chorus center (the value in CHO RDA) is at the middle, i.e. buffer^ and buffer^+1, then the # of bytes you can go in either direction is going to be X/2, or to play it safe, (X/2 - 1).

However, in all examples I've found, the "WIDTH" parameter given to the WLDS instruction is actually X * 2.

Izzat right?

I've just started goofing around with the CHO RDA and it sounds like, with the exception of really really slow sweeps, that sweeping the entire width of the buffer gives WAY too much pitch bend, unless you're going for that Tilt-a-Whirl effect.
frank
Posts: 1244
Joined: Wed Oct 19, 2005 12:26 pm
Contact:

Post by frank »

Yeah, that is basically correct, the actual value is from the equation in the app note so not exactly 2X . We probably could have done it different in the s/w to make it the delay length in WLDS then converted that to the amplitude coefficient the h/w needs but I had done it this way for so long and Keith was used to my method that we wrote it as we used it.
Frank Thomson
Experimental Noize
Digital Larry
Posts: 338
Joined: Mon Nov 12, 2012 1:12 pm
Contact:

Post by Digital Larry »

frank wrote:Yeah, that is basically correct, the actual value is from the equation in the app note so not exactly 2X .
I've read that app note 6.28 x 10^23 times but somehow didn't make the connection till just now. Thanks!
Post Reply