Updated
5 months
ago.
No love.
1 follower.
Description
I own a pair of Adam Audio A7V active studio monitor speakers. They have ethernet connectors that allow changing their settings remotely using the A Control software. From Windows :-( I couldn't find any open source alternative for Linux besides AES70.js library.
Goals
- Create a command-line tool for controlling the speakers.
- Python is the language of choice.
- Implement only a simple tool with the desired functionality rather than a full coverage of AES70 standard.
TODO
- ✅ discover the device
- ❌ get device manufacturer and model
- ✅ get serial number
- ✅ get description
- ✅ set description
- ✅ set mute
- ✅ set sleep
- ✅ set input (XRL (balanced), RCA (unbalanced))
- ✅ set room adaptation
- bass (1, 0, -1, -2)
- desk (0, -1, -2)
- presence (1, 0, -1)
- treble (1, 0, -1)
- ✅ set voicing (Pure, UNR, Ext)
- ❌ the Ext voicing enables the following extended functionality:
- gain
- equalizer bands
- on/off
- type
- freq
- q
- gain
- ❌ udev rules to sleep/wakeup the speakers together with the sound card
Resources
- https://www.adam-audio.com/en/a-series/a7v/
- https://www.adam-audio.com/en/technology/a-control-remote-software/
- https://github.com/DeutscheSoft/AES70.js
- https://www.aes.org/publications/standards/search.cfm?docID=101 - paid
- https://www.aes.org/standards/webinars/AESStandardsWebinarSC0212L20220531.pdf
- https://ocaalliance.github.io/downloads/AES143%20Network%20track%20NA10%20-%20AES70%20Controller.pdf
Result
- The code is available on GitHub: https://github.com/dmach/pacontrol
- The command-line tool works fine and implements basic operations for controlling the speakers nearly as planned
- There are still couple things I need to implement later such as
- querying and displaying all the details about the devices
- setting up Ext voicing mode (it would be great to load room corrections exported from REW)
- udev rules for sleeping the speakers when a sound card is turned off
- packaging as RPM
Lessons learned
- Trying to understand the aes70 standard first wasn't the best idea. It is quite complex and and it hold me from writing any actual functionality for a while.
- Capturing packets and writing code that would simply reply them to achieve desired functionality would be a way better start.
- The original A Control software sometimes accepted the changes I made from the command-line and even changed the displayed value, but sometimes it was forcing the settings, making me think that my code doesn't work at all. I wasted several hours before I realized that.
- Also, some of the commands sometimes did not work when A Control was not running on the same network. Turning the speakers off and on again helped. Maybe I messed something up with sessions. Also caused several hours wasted.
Looking for hackers with the skills:
This project is part of:
Hack Week 24
Comments
Be the first to comment!
Similar Projects
This project is one of its kind!