[chuck-users] ChucK w/Lion and many audio devices, was: SUCCESS! Re: Most recent Chuck for Lion?

Charles Turner vze26m98 at optonline.net
Sun Mar 4 15:39:41 EST 2012


Hi all-

Poking around a bit and discovered the following:

My "default devices" are:

> [chuck]: ------( chuck -- dac6 )---------------
> [chuck]: device name = "Apple Inc.: Display Audio"
> [chuck]: probe [success] ...
> [chuck]: # output channels = 2
> [chuck]: # input channels  = 1
> [chuck]: # duplex Channels = 1
> [chuck]: default output = NO
> [chuck]: default input = YES
> [chuck]: natively supported data formats:
> [chuck]:   32-bit float
> [chuck]: supported sample rates:
> [chuck]:   44100 Hz
> [chuck]:   48000 Hz

and

> [chuck]: ------( chuck -- dac2 )---------------
> [chuck]: device name = "Apple Inc.: Built-in Output"
> [chuck]: probe [success] ...
> [chuck]: # output channels = 2
> [chuck]: # input channels  = 0
> [chuck]: # duplex Channels = 0
> [chuck]: default output = YES
> [chuck]: default input = NO
> [chuck]: natively supported data formats:
> [chuck]:   32-bit float
> [chuck]: supported sample rates:
> [chuck]:   44100 Hz
> [chuck]:   48000 Hz
> [chuck]:   88200 Hz
> [chuck]:   96000 Hz

plus, I built an aggregate device which uses the default output, plus another input that has 2 channels:

> [chuck]: ------( chuck -- dac9 )---------------
> [chuck]: device name = "Apple, Inc.: My Agg Device"
> [chuck]: probe [success] ...
> [chuck]: # output channels = 2
> [chuck]: # input channels  = 2
> [chuck]: # duplex Channels = 2
> [chuck]: default output = NO
> [chuck]: default input = NO
> [chuck]: natively supported data formats:
> [chuck]:   32-bit float
> [chuck]: supported sample rates:
> [chuck]:   44100 Hz
> [chuck]:   48000 Hz
> [chuck]:   88200 Hz
> [chuck]:   96000 Hz

So I can ask for this and get sound out of the left channel:

> etla:/Volumes/Namring/Documents/ChucK$ chuck --in1 --out1  foo.ck

But when I try my aggregate device I get no sound:

> etla:/Volumes/Namring/Documents/ChucK$ chuck --verbose --in2 --out2 --dac9 foo.ck
> [chuck]:(2:SYSTEM): setting log level to: 5 (INFORM)...
> [chuck]:(2:SYSTEM): initializing virtual machine...
> [chuck]:(2:SYSTEM):  | behavior: HALT
> [chuck]:(2:SYSTEM):  | locking down special objects...
> [chuck]:(2:SYSTEM):  | allocating shreduler...
> [chuck]:(2:SYSTEM):  | allocating messaging buffers...
> [chuck]:(2:SYSTEM):  | real-time audio: YES
> [chuck]:(2:SYSTEM):  | mode: CALLBACK
> [chuck]:(2:SYSTEM):  | sample rate: 44100
> [chuck]:(2:SYSTEM):  | buffer size: 256
> [chuck]:(2:SYSTEM):  | num buffers: 8
> [chuck]:(2:SYSTEM):  | devices adc: 0 dac: 9 (default 0)
> [chuck]:(2:SYSTEM):  | adaptive block processing: 0
> [chuck]:(2:SYSTEM):  | channels in: 2 out: 2

[SNIP]

> [chuck]:(2:SYSTEM): initializing synthesis engine...
> [chuck]:(3:SEVERE):  | initializing 'dac'...
> [chuck]:(3:SEVERE):  | initializing 'adc'...
> [chuck]:(3:SEVERE):  | initializing 'blackhole'...
> [chuck]:(2:SYSTEM):  | initializing 'real-time' audio...
> [chuck]:(5:INFORM):  |  | exception caught: 'RtApiCore::probeDeviceOpen: the device (6) does not support the requested channel count.'...
> [chuck]:(5:INFORM):  |  | trying 0 input 2 output...
> [chuck]:(3:SEVERE):  | allocating buffers for 256 x 2 samples…

[SNIP]

> [chuck]:(3:SEVERE): starting real-time audio...
> ^C[chuck]: cleaning up...
> [chuck]:(3:SEVERE): requesting STOP virtual machine...
> [chuck]:(5:INFORM): detaching all resources...
> [chuck]:(5:INFORM):  | (via STK): detaching file handles...
> [chuck]:(5:INFORM):  | detaching MIDI devices...
> [chuck]:(5:INFORM):  | shutting down KBHitManager...
> [chuck]:(5:INFORM):  | shutting down HID...
> [chuck]:(2:SYSTEM): shutting down virtual machine...
> [chuck]:(2:SYSTEM):  | unprotecting special objects...
> [chuck]:(2:SYSTEM):  | shutting down real-time audio...
> 
> RtApiCore::closeStream(): no open stream to close!

[SNIP]

> etla:/Volumes/Namring/Documents/ChucK$

You'll notice that in spite of asking for -dac9 (my aggregate device), ChucK seems to want to open "device (6)": my 1-channel default audio input.

[EDIT]

I realized that perhaps I should be asking for an -adc as well as -dac here, so I tried this:

> etla:/Volumes/Namring/Documents/ChucK$ chuck --verbose --in1 --out2 --dac2 --adc6 foo.ck
> [chuck]:(2:SYSTEM): setting log level to: 5 (INFORM)...
> [chuck]:(2:SYSTEM): initializing virtual machine...
> [chuck]:(2:SYSTEM):  | behavior: HALT
> [chuck]:(2:SYSTEM):  | locking down special objects...
> [chuck]:(2:SYSTEM):  | allocating shreduler...
> [chuck]:(2:SYSTEM):  | allocating messaging buffers...
> [chuck]:(2:SYSTEM):  | real-time audio: YES
> [chuck]:(2:SYSTEM):  | mode: CALLBACK
> [chuck]:(2:SYSTEM):  | sample rate: 44100
> [chuck]:(2:SYSTEM):  | buffer size: 256
> [chuck]:(2:SYSTEM):  | num buffers: 8
> [chuck]:(2:SYSTEM):  | devices adc: 6 dac: 2 (default 0)
> [chuck]:(2:SYSTEM):  | adaptive block processing: 0
> [chuck]:(2:SYSTEM):  | channels in: 1 out: 2

[SNIP]

> [chuck]:(2:SYSTEM): initializing synthesis engine...
> [chuck]:(3:SEVERE):  | initializing 'dac'...
> [chuck]:(3:SEVERE):  | initializing 'adc'...
> [chuck]:(3:SEVERE):  | initializing 'blackhole'...
> [chuck]:(2:SYSTEM):  | initializing 'real-time' audio...
> [chuck]:(5:INFORM):  |  | exception caught: 'RtApiCore::probeDeviceOpen: the device (1) does not support the requested channel count.'...
> [chuck]:(5:INFORM):  |  | trying 0 input 2 output...
> [chuck]:(3:SEVERE):  | allocating buffers for 256 x 2 samples…

[SNIP]

> [chuck]:(3:SEVERE): starting real-time audio...
> ^C[chuck]: cleaning up...
> [chuck]:(3:SEVERE): requesting STOP virtual machine...
> [chuck]:(5:INFORM): detaching all resources...
> [chuck]:(5:INFORM):  | (via STK): detaching file handles...
> [chuck]:(5:INFORM):  | detaching MIDI devices...
> [chuck]:(5:INFORM):  | shutting down KBHitManager...
> [chuck]:(5:INFORM):  | shutting down HID...
> [chuck]:(2:SYSTEM): shutting down virtual machine...
> [chuck]:(2:SYSTEM):  | unprotecting special objects...
> [chuck]:(2:SYSTEM):  | shutting down real-time audio...
> 
> RtApiCore::closeStream(): no open stream to close!

[SNIP]

> etla:/Volumes/Namring/Documents/ChucK$ 


So, with a manual request for my default devices, ChucK seems to want to tell me about it's difficulty with "device (1), " whatever that may be.

If I go back to my dac9 aggregate device, it seems to play "foo.ck" (ie the shred runs to completion in about 2 seconds), but I hear no sound. Amadeus, for example, is perfectly happy playing back using my aggregate device.

I'm gonna start looking at the source, but if someone has a bright idea, please let me know!

Thanks, Charles



More information about the chuck-users mailing list