[chuck-users] 8-bit?
Tom Lieber
tom at alltom.com
Sat Nov 27 22:42:00 EST 2010
On Thu, Nov 18, 2010 at 10:44 AM, Andrew Turley <aturley at acm.org> wrote:
> You could build a generator using Gen7 or CurveTable. That might be a
> little more efficient, but maybe not worthwhile.
2010/11/18 Kassen <signal.automatique at gmail.com>:
> How about a Lisa set to sync? If you feed that with a arbitrary signal at
> gain .5 mixed with a step set to a value of .5, (which would turn a signal
> from range -1 to 1 into one from 0 to 1) you can set any mapping you'd like.
> Filling that LiSa with a line from -1 to 1 would get you your original
> signal back, a "staircase" would give bit-depth reduction, etc.
> Multiple mappings could be made and by changing the loop start and end these
> could be selected.
I'm grateful that Kassen dropped some code for LiSa, because I didn't
understand his description until I was knee deep in CurveTables and
had finally worked through all the problems Kassen's succinct proposal
addresses. While I got the CurveTable working, I can't get real sharp
transitions between the quantization levels because CurveTable crashes
if I give it a coefs array with more than 35 points.
So I think I'll be using LiSa because it doesn't crash with longer
buffers to get around the linear interpolation. Thanks everybody,
especially Kassen and Andrew.
(here's the CurveTable code:
SinOsc s;
CurveTable c;
Step dc;
s => c => dac;
dc => c;
.49 => s.gain;
.5 => dc.next;
35 => int res; // # of CurveTable points
4 => int levels; // # of quantization levels (/ 2)
// build CurveTable coefs
levels => float flevels;
float coefs[res * 3 + 2];
for( 0 => int r; r < res; r++ ) {
((r $ float) / res) * 2 - 1 => float f; // [0, res) -> [-1, 1)
// the triplet
r => coefs[r * 3]; // time
((f * levels) $ int) / flevels => coefs[r * 3 + 1]; // value
0 => coefs[r * 3 + 2]; // curvature (linear)
}
res => coefs[res * 3]; // time
1 => coefs[res * 3 + 1]; // value
coefs => c.coefs;
day => now;
)
--
Tom Lieber
http://AllTom.com/
http://favmusic.net/
More information about the chuck-users
mailing list