So, I found that by drilling down to the airfoil executable in the app bundle and creating multiple copies of that executable (airfoil1, airfoil2, airfoil3, etc.) that I could then dblclick on those separate copies and effectivly launch separate instances of airfoil. ps ax |grep Airfoil in Terminal correctly shows the renamed executable with unique PIDs. What's more interesting is that with multiple instances running, I am able to send one source to one remote speaker, and a different source to another. I've only tried it with 3 sources/instances and 4 'zones', which were mixtures of ATVs, AF remote speaker clients on Mac and PC, and the remote speaker app on my iPhone. It worked as expected, correctly routing or merging zones depending on what I clicked in the AF instances.
Here's the question: How can I control those multiple instances using AppleScript? I've tried various combinations of telling "application process" and/or "unix id" to do something but I've had no luck in getting it to work. "Tell application" seems to work in a fifo manor - controlling the earliest-launched copy of the executable.
I just priced out a few 'true' whole house audio systems for the new home we're building and the prices are in the $6,000 to $7,000 range. I'd much rather buy a dozen Air Port Expresses and then figure out a way to control multiple instances of Airfoil through Indigo. BTW, for sources - at a minimum I'm looking at iTunes, possibly two Pandora clients (the command line pianobar app piped through two virtual audio devices created with Soundflower) and possibly something piped through the line-in jack on the mini...
Thanks in advance,
Terry