[chuck-users] Jack Server shuts down ChucK client ...

Niklas Reppel nik at parkellipsen.de
Tue Mar 31 13:26:39 EDT 2015


Hmm i'm using this a lot elsewhere, so i don't think so ...

Strange thing is, if i don't use a class, but two plain methods, the 
problem doesn't occur any longer ...

I can live with that, though i'd say using a class would b eslightly 
more intuitive here ...

NEW VERSION: 
https://github.com/the-drunk-coder/graa/blob/master/shreds/buzz.ck


OLD VERSION:

class MyBuzzer {
	SawOsc saw => LPF lp => ADSR e => Dyno dyn;	
	ADSR filt => Gain fg => blackhole;
	10 => fg.gain;
	
	Step s;
	s => filt;
	1 => s.next;

	// one-shot sine spork

	fun void buzz(float freq, float gain, int a, int d, int sus, int r) {
		
		a + d + sus + r => int overall;

		freq => saw.freq;

		e.set( a::ms, d::ms, gain, r::ms );

		filt.set( a::ms, (sus - r)::ms, gain, r::ms );

		dyn.limit;

		gain / 4 => dyn.thresh;

		if(d == 0){

			0 => e.decayRate;

			0 => filt.decayRate;

		}

		now + overall::ms => time then;

		spork ~ filteradsr(then, freq);	

		e.keyOn();

		filt.keyOn();

		sus::ms => now;

		e.keyOff();

		filt.keyOff();

		r::ms => now;

		// disconnecting doesn't really help here ...
		dyn !=> dac;

	}

	fun void filteradsr (time then, float freq){

		while (now < then){

			float currfilt;

			filt.last() * 800 + 100 => currfilt;

			currfilt => lp.freq;

			1::ms => now;

		}

	}

	fun void connect(UGen ugen){

		dyn => ugen;

	}

}

// create our OSC receiver

OscRecv recv;

// use port 6449 (or whatever)

6449 => recv.port;

// start listening (launch thread)

recv.listen();

// create an address in the receiver, store in new variable

recv.event( "/buzz, f f i i i i" ) @=> OscEvent @ oe;

// infinite event loop

while( true )

{

// wait for event to arrive

oe => now;

// grab the next message from the queue.

while( oe.nextMsg() )

{

oe.getFloat() => float freq;

oe.getFloat() => float gain;

oe.getInt() => int a;

oe.getInt() => int d;

oe.getInt() => int s;

oe.getInt() => int r;

MyBuzzer buzzer;

buzzer.connect(dac);

spork ~ buzzer.buzz(freq, gain, a, d, s, r);

}

}





On 31.03.2015 19:14, Robert Poor wrote:
> Is there any chance that oe.nextMsg() is returning false, as in:
>
> while( oe.nextMsg() )
>      { ...
>      }
>
> ?
>
>
> On Tue, Mar 31, 2015 at 9:52 AM, Niklas Reppel <nik at parkellipsen.de> wrote:
>> So, i'm trying to write a simple SawOsc-Synth with Polyphony, triggered by
>> OSC messages ...
>>
>> You can check it out here:
>> https://github.com/the-drunk-coder/graa/blob/master/shreds/buzz.ck
>>
>> As i want to use a filter with adsr, i can't just spork a single method
>> right ?
>>
>> But, with the current version, the Jack-Server (i'm on Linux) shuts the
>> client down,
>> with the following message:
>>
>> (JACK) the JACK server is shutting down this client...
>>      ... stream stopped and closed!
>>
>> Anyone's got an idea why ?
>>
>> Regards,
>> Nik
>> _______________________________________________
>> chuck-users mailing list
>> chuck-users at lists.cs.princeton.edu
>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users



More information about the chuck-users mailing list