I'm thinking on doing a similar set up.
I'm in a stage of gathering some info now.
What kind of sound cards are you using?
I have a onkyo reciver that also has multizone capabilities.
I know have a functional multiroom setup. The solution was to split the original RX-V1x00 template into three different templates, because the original template missed the possibility to connect the squeezebox within the connection wizard. So I setuped three different templates for each Zone the Receiver has. Each template is a standard GSD device, containing the Ruby codes for its own zone.
* Template RX-V1700 (Mainzone) controlling the Mainzone
* Template RX-V1700 (Zone 2) controlling Zone #2 located in a different room
* Template RX-V1700 (Zone 3) controlling Zone #3 located in a different room
How did you split the Device template.
Did you create a new device template for each zone? and use the regular template for the main zone?
you use the same one three times?
How did you handle the same "COM Port on PC"? for the three
It's possible for you to post your GSD device Ruby codes, the device template data base is broken now and I cannot retrieve the GSD from the database. To start looking at some code.
I'll try to answer your questions. More info is here, although page is a bit outdated.... http://wiki.linuxmce.org/index.php/Marantz_SR5600
My pretty well done multizone template for Marantz is somewhere in mantis thread and being commited to sqlcvs, but I don't know if it will enter new release cause of known problems with main database...
I'll try to use template exporter in next few days - maybe that will help you a bit more...
Anyway, my thinking goes like this:
1. I've added needed commands to this device: Zone #1867 , so now it's fully compatible audio zone (you can also attach pipe to it, it will autoselect input etc...)
2. In device template you can define child devices that will be also added when you add device based on this template :
Device Template Related
#1867 Zone My Child Extra 12|2|186|Line Out Delete
#1867 Zone My Child Extra 12|1|186|Zone MultiRoom Delete
#1867 Zone My Child Extra 12|0|186|Zone Main Delete
3. so now you can connect your players to those zones.
4. you get everything that happens in your main, parent device, so you do all the processing in GSD code for the parent device (that's because child devices don't process DCE if setup properly)...
5. I've organized GSD code in similar manner as in Yamaha template. I have Multizone commands, like :
SendMultiZoneCommand(cmd, ["@SRC:H", "@MSC:H", "@MSC:H"])
that is called for instance when you receive command Inputs #169 AM and then subroutine decides based on zone what will be sent to rs232. If command is destined to main zone, then "@SRC:H" is sent, if for zone 3, then "@MSC:H" is sent.
I also did some logic, when certain zone is on/off (for instance you cannot send OFF command to rs232 if not all of zones are off, etc..). I also added some volume normalization logic (so at the end volume levels are between 0-100) etc....