« Return to Thread: Re: [sc-users] scplug (was: hobnox)

Re: [sc-dev] Print

by Josh Parmenter :: Rate this Message:

Reply to Author | View in Thread

Are you sure that bit of code is actually executing? Try putting the  
Print in the regular function, and see if it works.

Are you sure that the next_ak function is actually running? Check the  
rates on the input of your UGen from the SC side.

best,

Josh

On Jun 19, 2008, at 2:50 PM, Miguel Negrao wrote:

> Dan Stowell escreveu:
>> 2008/6/19 Miguel Negrao <miguel.negrao@...>:
>>> Hi
>>>
>>> I'm making the first steps in UGen building. I need to debug my  
>>> UGen, and
>>> the simplest way to do that is to just print stuff to the console.  
>>> I tried
>>> using Print(...); either in the constructor or in the dsp  
>>> funcition but it
>>> never prints anything. It is supposed to print to the sc console,  
>>> right ? Do
>>> I need to install something else ?
>> No, it should work just fine. Perhaps you could show us exactly what
>> your Print() lines looked like?
>> In fact, one thing to check: are you *sure* that your constructor/dsp
>> functions are being called? Print() should definitely work. So, maybe
>> the ctor never gets called? Which ctor to use is specified during the
>> init() function, using a call like DefineSimpleUnit(FreeVerb2)
>>> ps: is this the correct place for this type of question, or should  
>>> i use
>>> sc-users ?
>> I don't know what the official decision would be... ugen-coding is
>> kind of half-way between the two, so I'd say choose for yourself...
>> Dan
>
> I just cloned PlayBuf code, to make it crossfade on triggers. For  
> example this function should output "bang" on each trigger:
>
> void PlayCFBuf_next_ak(PlayCFBuf *unit, int inNumSamples)
> {
> //float *ratein  = ZIN(1);
> float trig     = ZIN0(2);
> int32 loop     = (int32)ZIN0(4);
>
> float fbufnum  = ZIN0(0);
> if (fbufnum != unit->m_fbufnum) {
> uint32 bufnum = (int)fbufnum;
> World *world = unit->mWorld;
> if (bufnum >= world->mNumSndBufs) bufnum = 0;
> unit->m_fbufnum = fbufnum;
> unit->m_buf = world->mSndBufs + bufnum;
>
> }
> SndBuf *buf = unit->m_buf;
> float *bufData __attribute__((__unused__)) = buf->data;
> uint32 bufChannels __attribute__((__unused__)) = buf->channels;
> uint32 bufSamples __attribute__((__unused__)) = buf->samples;
> uint32 bufFrames = buf->frames;
> int mask __attribute__((__unused__)) = buf->mask;
> int guardFrame __attribute__((__unused__)) = bufFrames - 2;
>
> double cfdur   = 0.001 * ZIN0(5) * unit->mRate->mSampleRate;
> int counter    = unit->mCounter;
> double phase_2;
> double level;
> double slope;
>
> CHECK_BUF
> SETUP_OUT
>
> double loopMax = (double)(loop ? bufFrames : bufFrames - 1);
> double phase = unit->m_phase;
> if (counter != 0)
> { double phase_2 = unit->m_phase_2;
>  double level   = unit->mLevel;
>      double slope   = unit->mSlope;
> }
>    if(phase == -1.) phase = bufFrames;
>
> if ( (trig > 0.f && unit->m_prevtrig<= 0.f) ||(phase > 4410.f )) {
> unit->mDone = false;
> phase_2 = phase;
> phase = ZIN0(3);
> counter = sc_max(1, (int)(cfdur + .5f));
> slope  = 1.0 / counter;
> level  = 0;
> Print("Bang \n");
>
> }
> unit->m_prevtrig = trig;
> for (int i=0; i<inNumSamples; ++i) {
>
> LOOP_BODY_1
>
> if (counter == 0) {
> LOOP_BODY_2
> } else {
> LOOP_BODY_3
> phase_2 += ZXP(ratein);
> }
>
> phase++;
>
> }
>
> unit->m_phase = phase;
> unit->mCounter = counter;
> if (counter != 0) {
> unit->m_phase_2 = phase_2;
> unit->mLevel = level;
> unit->mSlope = slope;
> }
>
>
> }
>
> The constructor:
>
> void PlayCFBuf_Ctor(PlayCFBuf *unit)
> {
> if (INRATE(1) == calc_FullRate) {
> if (INRATE(2) == calc_FullRate) {
> if (ZIN0(6) == 1)
> { SETCALC(PlayCFBuf_next_aa); }
> { SETCALC(PlayCFBuf_next_aa_noint); }
> Print("aa\n");
> } else {
> if (ZIN0(6) == 1)
> { SETCALC(PlayCFBuf_next_ak); }
> { SETCALC(PlayCFBuf_next_ak_noint); }
> Print("ak\n");
> }
> } else {
> if (INRATE(2) == calc_FullRate) {
> if (ZIN0(6) == 1)
> { SETCALC(PlayCFBuf_next_ka); }
> { SETCALC(PlayCFBuf_next_ka_noint); }
> } else {
> if (ZIN0(6) == 1)
> { SETCALC(PlayCFBuf_next_kk); }
> { SETCALC(PlayCFBuf_next_kk_noint); }
> }
> }
>
> unit->m_fbufnum = -1e9f;
> unit->m_prevtrig = 0.;
> unit->m_phase = ZIN0(3);
> unit->mCounter = 0;
> unit->mLevel = 0;
>
> ClearUnitOutputs(unit, 1);
> Print("constructor");
> }
>
> _______________________________________________
> sc-dev mailing list
>
> sc-dev@...
> archive: http://www.listarc.bham.ac.uk/lists/sc-dev/
> search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

******************************************
/* Joshua D. Parmenter
http://www.realizedsound.net/josh/

“Every composer – at all times and in all cases – gives his own  
interpretation of how modern society is structured: whether actively  
or passively, consciously or unconsciously, he makes choices in this  
regard. He may be conservative or he may subject himself to continual  
renewal; or he may strive for a revolutionary, historical or social  
palingenesis." - Luigi Nono
*/


_______________________________________________
sc-dev mailing list

sc-dev@...
archive: http://www.listarc.bham.ac.uk/lists/sc-dev/
search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

 « Return to Thread: Re: [sc-users] scplug (was: hobnox)

LightInTheBox - Buy quality products at wholesale price