Hi , i been trying to run the code Joel posted.
Im still noobie and i havent worked with classes before on chuck.
I created 2 .ck files, one called MyFunc.ck with the class and another
called Phasor.ck with the rest of the code.
ive tried "chuck MyFunc.ck Phasor.ck" in my commnand line but im
getting this error message:
[Phasor.ck]:line(1): undefined type 'MyFunc'...
[Phasor.ck]:line(1): ... in declaration ...
any idea what am i doing wrong?
2013/12/27, Joel Matthys
Of course this isn't exactly what you asked about, since it takes in an 8-bit number and you want to take in a number [0-8000], but maybe this will get you started.
Maybe Steve can help with how to pass an expression as a reference, which would make it possible to change the expression on the fly.
Joel
On 12/27/2013 06:13 PM, Joel Matthys wrote:
On 12/27/2013 05:08 PM, Steve Morris wrote:
It is a mystery to many of us exactly why users are not allowed to know how to do this. Questions to this list are basically ignored except by other users. I suspect that ChucK developers don't read this list and the real point of this list is to hope users will support each other and stop bothering the developers. It is also possible that there are no real developers, that ChucK development consists of an occasional grad student who shows interest for a while then moves on to more productive endeavors.
There is a ChuGen example in the examples/extend folder; it's extremely straight-forward. I know the devs read this list, but honestly this is exactly the kind of question we as a community should be able to help with. Let's light some candles rather than curse the darkness.
Now, ChuGen takes floats in the range [-1,1] for its calculations, but you want to work on 8-bit ints, so you'll have to have functions that convert itof and ftoi. Then you can write your expression to work on those samples directly. A Phasor UGen then provides the 0-1 samples in. Try this:
-- // ChuGen // Create new UGens by performing audio-rate processing in ChucK
class MyFunc extends Chugen { 8 => int _b; // default 8 bits
fun float tick(float in) { ftoi (in, _b) => int ival; // convert in sample to int my_expression(ival) % (1 << _b) => int fval; //calculate and mod into range return (itof (fval, _b)); // convert back to float }
// your custom expression goes here fun int my_expression (int t) { return t * ( t >> 8 * ( t >>15 | t >> 8) & 20 | ( t >>19) * 5
t | t >> 3); }
// helper function to convert float [0,1] to b bits fun int ftoi (float in, int b) { return (in * (1 << b)) $ int; }
// helper function to convert b bit integer to float [-1,1] fun float itof (int in, int b) { return (in * 1.0 / (1 << (b-1))) - 1; }
// allow user to set number of bits fun void bits (int b) { b => _b; } }
// phasor powers the function with numbers ascending 0-1 Phasor p => MyFunc f => dac; 1 => p.freq;
while(true) 1::second => now;
/// END ///
Joel _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users