Selecting one output from a multichannel ndef?


I’ve been trying to model some basic logic chips (flip-flops, counters, etc.) in SC to make a kind of virtual lunetta synth. And I’ve been drawn to JITLib and Ndefs as a way of playing with them in a modular-like way. I’m new to JIT and have never used Ndefs before…so I’m sure I’m missing something…but here’s my question.

Say I have a Ndef that outputs different things on multiple channels. For instance, on one channel it outputs a square wave, and on the other it outputs the inverse of the square wave (ie. when one is high, the other is low, etc – kind of like Q and barQ on an old logic chip). Or say I have an Ndef that is acting like a counter: for each trigger it receives, it will output a pulse, first on channel zero, the next on channel one, the next on channel two, etc. until it reaches, say ten, then it starts over.

Here’s the question: how can I grab only one of an Ndef’s multiple outs and route it into another Ndef? I’d like to be able to do something like this piece of fantasy code…

Ndef(\someOscillator).set(\theOscillatorGate, Ndef(\counter).out(3));

It is the Ndef(\counter).out(3) part that I’m curious about. How can I grab, say, only channel 3 of that Ndef’s output, so I can plug it into another Ndef?

I’m sure there is some simple solution, but I haven’t been able to find it. Any help from the collective hive mind would be appreciated.


Dr K,

Have you tried using an array index like mya:

Ndef(\a, { [, 0, 1),, 0, 0.2),, 0, 0.1)] }).mold(3);

Ndef(\b, {\a)[0]*400), 0, 0.1) });


Sorry if the code is ugly. Ndef is not my native tongue.


The output bus of an Ndef is available via Ndef(\foo).bus. And, you can use the subBus method on a bus to extract one channel of a multichannel bus. So, in combination, you should be able to do Ndef(\foo).bus.subBus(0) to get the 0th channel of the multichannel bus. An example:


Ndef(\stereo, {[1.3333, 1.2])

Ndef(\delay, {
	var in = \;
	in +, 1, 1/3, 4)

	\in, Ndef(\stereo).bus.subBus(1).asMap

1 Like

Scott and Sam,

Thanks to both of you for your help! All hail collective hive mind!

The Ndef(\foo).bus.subBus(n).asMap did the trick.

All best,