Skip to content
Initial Networking Goals
- Prototype networking software for connecting and communicating between two small, low-powered computers. (most likely a form of raspberry pi)
- Send signals from one computer to the other in order to broadcast connection information for the first computer. (the ip address and port information)
- Confirm that audio data can be transmitted from the server to the client, and that playback timing information can also be sent.
- Develop a generalized means of the server and client for connecting to each other, and a persistent means of identifying unique information for the client, with the goal of having many clients connected while maintaining their own identities.
Hardware Goals
- Rig up a Raspberry Pi, most likely a model 4, to act as a server, running continuously and providing control for the overall audio. Some basic cooling solution would also be good, but can be kept minimal.
- Set up a small array of Raspberry Pi model Zero Ws to act as the individual audio drivers. There will likely be seven in total, although only one or two should be enough for basic development and testing.
- Use the USB audio dongles to allow the Pi Zero Ws to output analog audio for connecting to the amplifier. Some micro-USB to USB-A adapters will likely be necessary for this. It might also be a good idea to get some small USB Hubs to allow for other peripherals. Testing on existing hardware should be sufficient.
- Procure the needed micro-SD cards for this hardware. 8 total will likely be required in the end.
- It may be possible to power the Pi Zero Ws using an externally powered USB hub. We will test to insure that this is an option. If so, we already have all the micro-USB cables required.
Software Goals
- Create a custom server application to run on the Pi model 4. The server will be where the music files are actually stored, and will act as the primary controller.
- Create a custom client application that will run on the Pi Zero Ws. The clients will store client-specific data and settings, but will connect to the server for retrieving audio data, and taking instruction for actual playback.
- Setup a basic web-server on the Pi model 4, and create a custom module for it that will act as a local client that connects to the custom server software. This will provide a control layer between the web-server and the audio server application.
- Develop a web-page that will act as the control interface for the audio server.
- Setup a basic DNS server on the Pi model 4, and use it to map a user-friendly web address for the Pi model 4’s local ip-address on the network. Configure the router to give the Pi model 4 a dedicated ip-address that doesn’t change. With proper pass-through, any device connected to the local network will be able to access the web-page running on the Pi model 4 with ease.
- Create a database that will run on the web-server to store information about the locally-stored audio, and allow the user to search through songs, albums, artists, etc… This database will be tied into the web-page interface.
Functionality Goals
- Provide audio playback of currently stored music on the local server device.
- Allow control access through a locally-hosted web portal, allowing any device with a web browser to serve as an effective control. (tablet, smart-phone, computer, etc…)
- Playback music through all the mounted speakers in the house.
- Allow any individual zone to be muted independently.
- Allow for independent volume control on each of the different zones.
- Allow for playing different songs on different zones, most likely through an abstraction layer. I’m thinking of calling them “conductors.” Zones can be assigned to each of these “conductors” and each “conductor” will have its own play/pause/stop interface.
- Provide creation tools for making lists of songs, and make it possible to play through those lists in various orders. The database will be a good tool for implementing these features.