Network Amplifier

Network enabled amplifier that consolidates many audio routing needs

Similar projects worth following
Network enabled amplifier that consolidates many audio routing needs. Powered by a Raspberry Pi.

I bought an XMS amplifier from a friend years ago and although it was serving it's purpose I got quite frustrated with having to toggle the loudness feature every time the input was changed. This was the beginning of what has now become my network enabled amplifier. Initially, I had set out to automatically toggle the loudness feature permanently on when the amplifier's input was switched so I bought a USB-UIRT so that I could use it (via infrared) to change the amplifier input and then toggle the loudness feature in one single command. I entertained the fact that I could perhaps trigger the command from a computer / mouse click etc. Then I opened the amplifier and to my delight found the main audio processor / mixer to be an i2c enabled 4-channel PT2314! This was a game changer since now, not only was I able to do as I originally wanted, I could now take total control of the amplifier via i2c and simply remove the original control board and display altogether. A Raspberry Pi was a natural choice for the project since it natively supports i2c and doesn't need more than a USB WiFi dongle to allow it to be networked enabled.

The main i2c control software is written in Python and uses separate threads for updating the 16x2 LCD and gaining positional information from the rotary encoder used for volume control (salvaged from the original control board). The excellent Python Twisted web server is used to act as a REST server that responds with JSON. There is also a HTML page served on port 80 that anyone connected to the local network can use to control the amplifier. This was the first major milestone, I had network control of my amplifier!

The next improvement to the project was creating an Android app that would communicate with the amplifier via the REST web server. I completed this but was unimpressed with the overall look / feel as it lacked a lot of design flair. It was at this time that I secured the services of a designer that helped me gain a more acceptable controller look / feel. Armed with SVGs and screenshots from the designer, I had a Javascript enabled web page up after a short time that now could control the volume, bass, treble and toggle the mute. 

Being an engineer, I couldn't stop here, not now that I had a way of adding more features via HTML / Javascript on the frontend and adding more Python on the backend. The next addition was to install MPD (music player daemon) on the Raspberry Pi and using the MPD API to communicate to and from the HTML frontend. The analog audio output of the RPi is connected to one of the original amplifier inputs. This now enabled the amplifier to now also be a convenient music player, connected to both my NAS for the music file(s) source and connected to my main living room speakers. Now if only I could add a radio...

Adding a radio to the list of features was next, this consisted of a Si470x i2c radio module. The addition of this module was relatively simple with the Raspberry Pi but for some reason, the two i2c devices were not playing nice with each other. I researched the fact that the PT2314 was being logic level converted to 5v (from 3.3v) while the radio module was not. In the end I ended up enabling the second i2c port on the RPi (which btw disables the use of the RPI's native camera slot) and thus kept the two totally separate from one another. As with the music player (MPD) addition, the analog output of the radio module is connected to yet another input of the original amplifier. This overall has been one of the best features added yet as I switch to radio all the time during TV ad breaks.

The latest feature added was to connect the last original amplifier audio input to a standard RCA to 3.5mm stereo cable that is used as an Auxiliary. Adding this was trivial compared to the other more complicated features already added. Friends that come over can now easily connect their audio source to the main speakers.

From the electronic side, as mentioned above the PT2314 is coupled to the...

Read more »

  • 1 × PT2314 based amplifier
  • 2 × Switch with LED indicator One has a yellow LED for cycling inputs, the other has a red LED for Mute
  • 1 × HD44780 based 2x16 LCD w/ backlight
  • 1 × Si470x i2c radio module
  • 1 × 3.3v <--> 5v logic level convertor Used to couple the RPi with the PT2314

View all 10 components

  • Added lirc (remote control) support

    ronald04/24/2015 at 08:06 0 comments

    I've recently added lirc support so that I can use my TV remote to also control the amplifier.

    Input switching, volume, mute, changing radio station presets, mpd (mp3 player) controls and tone controls (bass / treble) are all possible now from the remote control in addition to the network commands already there.

    The inspiration for this feature was that it still took far too much time to perform an action if my mobile / tablet wasn't already nearby, on, browsed to the correct web address etc.

    After all, a very strong goal for this project from the beginning was to be able to hit the 'mute' button quickly when TV ads came on :) Even though the TV remote naturally has a mute button, it doesn't mute audio coming out of it's main audio output sockets, only that of the internal speakers (annoying I know).

    Selecting unused buttons on the remote was fairly easy as this particular model includes a section to optionally control a DVD or VCR (which is ignored by the TV) so I just mapped those buttons for the above mentioned features. I did however map the original mute button as it doesn't make a difference for the TV (as the volume is always zero) and the advantage of this was that a small mute symbol appears on the TV (if it's switched on of course).

    The lirc hardware interface is a USB-UIRT but you can use whatever works as this is certainly overkill but I already had bought the UIRT for this project on day one.

    All the updated source code is on Github, which can be found under this project's links section.

View project log

Enjoy this project?



Chris wrote 06/22/2015 at 19:59 point

Great project!

Have you considered Bluetooth in addition to the 3.5mm jack for guest audio? I bought one of those Logitech Bluetooth to 3.5mm receivers from Best Buy for my receiver and loved that it would automatically pair as soon as I was home, plus I could pair both my phone AND tablet simultaneously!

  Are you sure? yes | no

Yago wrote 04/29/2014 at 20:14 point
Cool B)
I would add some cheap usb "soundcard", as the pi audio output have some noise.

  Are you sure? yes | no

ronald wrote 04/29/2014 at 21:22 point
True but the cheap soundcard might end up being worse! I bought a cheap USB soundcard to give the pi an audio input (separate project) and the noise floor was terrible :)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates