Its been a year since I started working with a small group on getting a Linux driver going for the GadgetLabs GL824 8 channel sound card We’ve got card syncing going so you can have 2 or 3 cards synced for 16/24 channels playback.
During the break I messed with it a bit more as Mike, the project leader, is working on getting a WFS system going – using a speaker array to project sound into free space.
32 channels is a minimum so we’ve been pushing the envelope and working on a system with FOUR GL cards. Up until recently we’ve had no luck getting the 4th card working but we’ve now achieved playback on 32 channels at 44.1k.
The initial blockers included a few driver issues and apparent PCI slot sensitivty but the main one appears to have been that the sync-clock signal (passed from card to card with link cables) degrades from card to card.
The sync signal is generated by the first card in the chain, the master. Its around 16MHz for 44.1K and 18MHz for 48K. Each card filters and buffers the signal before outputting it again, so its not a level problem.
I’m currently working on the theory that each card in the chain introduces jitter to the signal. So by the last card theres enough to upset the DACs on it which causes a continuous static.
After some messing about we’ve stumbled upon a combination of cards and sync cable order where at 44.1K its workable. I’m thinking we need to build a small clock buffer board (eg with a 74Ls14) and then distribute the clock in parallel to the 3 slave cards.
Mike is already imagining syncing 5 cards in one system, or multiple PCs …
This is all for playback. For recording, we’ve found the GL has a very poor transfer rate for samples from the card to the host – 4 times a slow as transferring samples to the card. This makes the maximum practical number of inputs 16 (2 cards).
Also we’re finding that later Linux distros like Fedora Core10 (x64), Ubuntu 8.10 (x64) have made a bit of a dogs breakfast of the ALSA tools, for example ‘arecord’ just doesn’t work properly but the graphical apps are OK.
I’ve gone back to FC8 and get good realtime performance from both the oldish CCRMA realtime kernel 126.96.36.199-1rt3.2 and the lastest FC8 update 188.8.131.52-57. With these and using qjackctl (with its realtime option selected), my system is pretty free of XRUNs.