The Challenge
My ears and speakers will last a lifetime (I hope), but home theatre audio standards do not. My old stereo amplifier works fine, why can't I get an HDMI upgrade module that gives it CEC (control via TV remote)? If I buy a 5.1 channel amplifier, why do I have to throw it in the bin to upgrade to Atmos?
A modern AVR (Audio-Video Receiver) is a fantastic piece of technology, but they are available only in certain fixed configurations and are not easily modifiable.
How Will We Alleviate The Problem?
- A modular "hub" that allows incremental upgrades, e.g. an extra analog input, an extra two channels of amplification, or even another hub...
- Compatibility with other open source projects in this field.
- Ability to make use of readily available (cheap!) modules from China.
- Compatible with Arduino and Raspberry Pi, so you can work with open source home automation software (e.g. limit the volume and turn off the subwoofer if someone's in bed, or play your wake-up alarm at rock concert levels throughout the house)
The modular system will be entirely open-source so that any interested person can make their own module to serve their unique needs (or for fun). Eventually I would like to see compatible modules available from multiple vendors (much like Raspberry Pi & Arduino add-ons).
(Notes Working Towards) The Specification
It's still a work in progress!
A very preliminary draft is on github.
The first stage will be electrical & communications protocol only.
Currently, I am going with the same connector as FreeDSP. But I'd like something better - if anyone knows a connector that is a reasonable pitch (0.5 - 2mm), keyed, upwards-compatible with extra pins (e.g. a 16-pin plug can fit into a 20-pin socket), and cheap, please get in contact!
Previously, I started a similar project using a backplane, because edge connectors are cheap, but the design I was using had the switching complexity by necessity in every module, was difficult to integrate into a chassis, and did not offer full flexibility for multiple simultaneous outputs. Now I will move that complexity to a "hub" board.
Each module should (yes, it's optional) have an ID EEPROM & accept a few basic commands (Enable, select channel) via I2C. This can be achieved via a PCA9500 I/O expander or ATtiny, for example. Modules without the ID/Control interface will require more configuration effort and might waste a bit more power (the central hub will not have power switches per module).
The hub will be controlled by I2C, and a C++ library will be provided that will be usable via Arduino and Raspberry Pi. The hub will be able to be daisy-chained.
Why You No Video?
Yes, I would love to do video too. However, it's proving difficult to get my hands on the right chips. Once the audio hub is finished, video will be a future project :)
The Modules
This project is all about the hub.
- Hub - a multiplexer used to select between multiple source and/or sink modules. I'm aiming for 8 connections, which are each able to be used as input, output, or processing loop. They'll be connected via a crossbar topology such that any input can be sent to any number of outputs. Multiple inputs will be able to be sent to multiple outputs simultaneously.
But, a hub alone is worthless. I will be using a Raspberry Pi as the central controller, with Arduino compatibility a key design consideration (the central controller only has to send some fairly simple I2C commands). And of course we need some modules to interconnect to do anything useful, so here are some that I'll probably be starting with:
- Analog Input - 6 channels, configurable as one group of 5.1, or 3 groups of stereo
- Analog Output - as per input
- Amplifier - 2 channels, will be based on some cheap class D module
- Headphone Amplifier - 2 channel, high quality op-amps
- Control Interface - IR/serial...
any progress?! this is an excellent project.