I'm vainly trying to get chuck to work with my Via Epia CN10000EG in 5.1surround sound. It's running XP SP2. I'm able to play 6 channel audio files using mplayer. When I probe for audio devices I don't get any 6 channel capable devices: =========================================================== [chuck]: found 4 device(s) ... [chuck]: ------( chuck -- dac1 )--------------- [chuck]: device name = "Primary Sound Driver" [chuck]: probe [success] ... [chuck]: # output channels = 2 [chuck]: # input channels = 0 [chuck]: # duplex Channels = 0 [chuck]: default device = YES [chuck]: natively supported data formats: [chuck]: 8-bit int [chuck]: 16-bit int [chuck]: supported sample rates: [chuck]: 8000 Hz [chuck]: 96000 Hz [chuck]: [chuck]: ------( chuck -- dac2 )--------------- [chuck]: device name = "Vinyl AC'97 Audio (WAVE)" [chuck]: probe [success] ... [chuck]: # output channels = 2 [chuck]: # input channels = 2 [chuck]: # duplex Channels = 2 [chuck]: default device = NO [chuck]: natively supported data formats: [chuck]: 8-bit int [chuck]: 16-bit int [chuck]: supported sample rates: [chuck]: 11025 Hz [chuck]: 22050 Hz [chuck]: 44100 Hz [chuck]: [chuck]: ------( chuck -- dac3 )--------------- [chuck]: device name = "Primary Sound Capture Driver" [chuck]: probe [success] ... [chuck]: # output channels = 0 [chuck]: # input channels = 2 [chuck]: # duplex Channels = 0 [chuck]: default device = YES [chuck]: natively supported data formats: [chuck]: 8-bit int [chuck]: 16-bit int [chuck]: supported sample rates: [chuck]: 11025 Hz [chuck]: 22050 Hz [chuck]: 44100 Hz [chuck]: [chuck]: ------( chuck -- dac4 )--------------- [chuck]: device name = "Vinyl AC'97 Audio (WAVE)" [chuck]: probe [success] ... [chuck]: # output channels = 2 [chuck]: # input channels = 2 [chuck]: # duplex Channels = 2 [chuck]: default device = NO [chuck]: natively supported data formats: [chuck]: 8-bit int [chuck]: 16-bit int [chuck]: supported sample rates: [chuck]: 11025 Hz [chuck]: 22050 Hz [chuck]: 44100 Hz [chuck]: [chuck](via RtMidi): RtMidiIn::initialize: no MIDI input devices currently available. [chuck]: ------( chuck -- 0 MIDI inputs )------ [chuck]: [chuck]: ------( chuck -- 1 MIDI outputs )----- [chuck]: [0] : "Microsoft GS Wavetable SW Synth" [chuck]: =========================================================== Launching chuck doesn't fare much better. I tried using each different dac, in turn, but same results every time. =========================================================== $ chuck --dac0 -o6 chucksrc/inc.ck [chuck]: (via rtaudio): no devices found for given stream parameters: ... RtApiDs: requested channels (6) > than supported (2) by device (Primary Sound Driver). ... RtApiDs: requested channels (6) > than supported (2) by device (Vinyl AC'97 Audio (WAVE)). ... RtApiDs: requested channels (6) > than supported (0) by device (Primary Sound Capture Driver). ... RtApiDs: requested channels (6) > than supported (2) by device (Vinyl AC'97 Audio (WAVE)). [chuck]: cannot initialize audio device (try using --silent/-s) =========================================================== Does anyone have any insight? Thanks, James
Does anyone have any insight?
Yes... For one thing it's not you or your card. Multi channel ChucK on Windows simply doesn't work yet, it's a known issue. It doesn't work on my own EMU or a friend's RME either. The good news is that ASIO is on the wishlist and that ASIO should get rid of the latency that Windows users have (because of DX being a slug on opium, not ChucK) and also in one swoop make multi-channel easier. No fix but at least you can now stop trying to get it to work which I know is no fun at all. Yours, Kas.
James, I can't speak to what the current implemenation is, but I've been in the underlying code before. The PortAudio audio library and DirectX don't entirely play well together due to conflicting assumptions and featuresets. Part of the problem with DirectX, increasingly so recently, is that there's no resonable way to enumerate available device modes, short of probing for them. This makes some sense. Consider the case of an audio device that will support arbitrary audio rates, that max out at 96khz, if there are 4 channels or fewer, but maxes out at 48khzif there are more than 4 channels. Essentially an audio device with an infinite number of modes, but with restrictions. PortAudio insists on enumerating all available device modes before it actually starts up, by doing probes of a finite, but very large set of audio modes. PortAudio is also based on the premise that 6 channels are 6 arbitrar independent channels; while directx insists that a channel should also be identified by a speaker position (a very unfortunate assumption when dealing with pro-audio, where a channel doesn't have a speaker position). Newer DirectX device drivers support WAVEFORMATEXTENSIBLE, which allows applications to request 6 channels, and also specify which six speakers those channels are associated with. For a given number of speakers, there are multiple reasonable configurations: e.g. 4 channels could be (Front L Front R Rear L Rear R), or (FL, FR, Center, subwoofer), or (FL FR, Center, Rear center). Currently, some DirectX devices will allow requests for 6 channels/(no speaker spec) via a non-extensible WAVEFORMAT spec, while others absolutely require a fully specified WAVEFORMATEXTENSIBLE, specifying the position of each speaker, before they will allow advanced audio modes. I have devices that will - support requests for 6 channel (no speaker spec). - will not support request for 6 channel (no speaker spec). - indicate that they will support various speaker/sample-rate configurations when probing, but fail to initialize in some of them. And things get even worse when there are input channels: the number of available output channels and/or the sample rates avaialble may depend on whether there is a running instance of a capture device. So portaudio's assumption that valid audio modes can be pre-enumerated fails. Total chaos. Mostly Microsoft's fault. Microsoft's position is probably that WAVEFORMAT requests with 6 channels are not legal; if you want 6 channels, yo8u must use WAVEFORMATEXTENSIBLE, and you must specify speaker postion. I get the impression that the message that this is a silly model for pro-audio devices may be sinking in, but I don't have high hopes. A plausible fix would be to extend portaudio to allow specification of speaker postion, or use WAVEFORMATEXTENSIBLE, and enumerate valid speaker configurations (in decreasing probability) until you find one that works. The probelm with the latter approach is that, increasingly, in Vista especially, a request for a particular speaker configuration may succeed even if the physical speakers don't match. (The mixer will remix channels). So, what would happen is that you may end up playing 6 channel audio (FR FL Subwoofer, RR RL, RC), even though your actual speaker configuration is (FR FR Center RR RL RC). PortAudio doesn't support WAVEFORMATEXTENSIBLE (I don't think). So, you may or may not be out of luck with respect to 6.1 support, depending on what your driver does. The simple solution, most probably, is to use ASIO drivers. Although chances are not good that a VIA chipset has ASIO drivers.
at Robin Davies; Thanks for the very interesting extra info, I'll chime in some more about this last bit;
The simple solution, most probably, is to use ASIO drivers. Although chances are not good that a VIA chipset has ASIO drivers.
Fortunately there exists something called ASIO4ALL which does exactly what the name implies and which I heard nothing but good things about from people who had no "pro" level cards but still needed ASIO type performance. Considdering what that driver is meant to accomplish the chances of it working should actually increase the more mundane the hardware in case is. http://www.asio4all.com/ (didn't try this personally) I would expect ASIO4ALL to help people like James accompish surround-ChucKing or analogue/hardware mixing as soon as we would get ASIO into ChucK. I gather this would/should be easy to accomplish but is being held-back by a lack of Princeton ASIO workstations. Kas. (who likes analogue desks)
participants (3)
-
James Hughes
-
Kassen
-
Robin Davies