Arduino + TDA7439DS + HEF4051 5.1 DIY remote controlled audio mixer with Output Mapping

My Audio Mixer

What is in it:

AtMega328P-PU with Arduino bootloader
4x TDA7439DS Audio stereo processor with digital interface (4channel multiplexer, Bass, Middle, Treble, Volume, Gain, Attentuation)
6x HEF4051 analog Multiplexer for output channel Remapping
2x PT2399 surround processor
1x PCA9545 I2C switch
74HC595 shift registers
MCP4261 digital pot
20x2 LCD display
A2DP Bluetooth receiver

TSOP38238 IR receiver

2x TLC5925 + 32LEDs for VU meter
and more...

What it can do:

I wanted to build an audio mixer for my computer speakers with channel remapping (my computer is on a side of the room) and room correction. This can map any input to any output, has build in Gain, 3 band Equalizer, Room correction, surround module, Volume, Attentuation, Remote controller receiver, 4channel VU meter, LCD display, it can play simple sounds (Tone library) and has 2x 5.1 input, stereo input and build-in bluetooth receiver.

Description of operation:

TDA multiplexer will select one input channel:

Channel 1: 5.1 input (computer) - Front, Rear, Center + Woofer
Channel 2: 5.1 input (Media Player) - front, Rear, Center + Woofer
Channel 3: Stereo input (TV) - Front, Rear is wired to front, so is Center + Woofer
Channel 4: A2DP Bluetooth receiver (Bought on eBay, mapping same as with channel 3)

Next is GAIN (+30dB) for quieter inputs

Arduino Tone Output is connected using analaog multiplexer to Monitor on all TDA's. It is also connected to Arduino Analog pin to monitor Voltage Levels for VU meter

TDA then has Volume (-79dB) , Bass, Middle, Treble (+-15dB) and attentuation Left & Right) (-79dB)

After TDA's there is 6 HEF4051 8 channel Multiplexers that will direct ANY channel to ANY or multiple Speakers (Output from TDA is around 4V - it has internal op-amps, therefore the 4051 is working at around middle range with power 9V)

(Rear left can become front right, front right can be front left ... any way you want)

From the rear speakers the signal goes also to the Surround Board (with two PT2399) and they can be turned on and mapped to surround speakers.

Another Function is STEREO - on 5.1input channels, it can direct front inputs to rear speakers to Fill the room in case rear input is quiet.


Menu button, 4 channel select, UP/DOWN + Select buttons are on the front panel
When you're not in Menu, UP/DOWN is Volume, SELECT will turn on Night Mode (LEDs are OFF, LCD is dimmed).

Whole unit is controlled with universal remote (NEC protocol) and has quite messy but working custom interrupt driven IR procedure with address and command (+ verification).

Everything is displayed on 20x2 LCD display and 4x8 LED Vu meter with animation if signal isn't present

Menu Items:
Mode - Select 5.1 or stereo operation ** 
SubWoofer - BASS adjustment **
Surround - ON/ OFF **
Equalizer - 6 presets + CUSTOM (every channel individually)**
Channel Remap - This is where you will set speaker placement (eg Front Left -> Rear Right)
Gain  - gain settings (for input volume level correction)
Surround Settings - 4 settings of Surround module - DELAY
Room correction - Every speaker can be attentuated up to -79dB

** - dedicated Remote buttons

Remote also has:
 Volume  Up / Down
 Bass Up / Down (Woofer only)
 Channel Select
 Night Mode

IR setting:
If you want to assign address and commands form remote, change debug constant from 0 to 1 and the unit will switch into IR check and will display all codes received on the LCD display. With them codes you can then assign functions to buttons (constants again)

All TDAs have the same I2C address, I used PCA9545 I2C multiplexer
To save some pins - 8 to 3 encoder is used for the switches
and LCD is driven with 74HC595 shift register so are all HEF4051 analog multiplexers and TLC5925 LED drivers - everything with SPI @ 8Mhz (clock / 2)

Switch and IR decoding has its own Interrupt routine (speed) and all other procedures are prioritized in the LOOP

 All settings are stored for each input individually (Volume, Mapping, Equalizer ...) and restored every time the input is changed.

All settings (except for volume) are written to EEprom on every change and restored during startup

In original design there was an opamp that was connected to the VU input, but didn't work (bad design) and was replaced with decoupling capacitor (updated in schematics). For better VU acquisition it should be re-designed and added, for lower signals

tone library is used to create sounds (button push, max / min volume or settings)

Quality of sound: I'm not an expert, but I would say great. No noise, perfectly quiet if no signal is present, no interference, no sound (like a bang) if channels are changed, equalizer is working beyond expectations, just great (I'm sure someone will say it can't be because ... )

Schematics & Board:

Eagle Files,  Source Code,  Libraries Download

Contact - email me


24 komentářů:

  1. Hey, nice project! I'm curious, you have 1xTDA7439DS per channel, right? Those have only 1 stereo output. Does it mean you multiplex 5.1 input to stereo and then output it to all channels in 5.1 output?

  2. hi, great work,
    I have a project for you.
    Need to make audio streaming system. Let me know if you are interested.
    email me at

  3. Liztek's Bluetooth Receiver is really best because it's features include simple to use Power & Pairing button, Blue and Red LED indicator lights, 3.5mm female jack for headphones, 3.5mm male to male connector for home and car stereos.

  4. i can,t download this
    any body help me

    my id

  6. awesome!! open your own industry.

  7. bom dia
    este é meu e-mail
    gostaria de conversar sobre seu projeto.

  8. Wow,Can you share code??
    I newbie

    1. i have ic audio processor tda7442 (4input Channel)
      i can't progam i2c
      would you like to share code tda7439??
      thanks for sharing the code tda7439 for me

    2. Can u share me the project files?

  9. Thanks for the post checkout the best surround sound equalizer app for android.

  10. How you made the front panel covering professionally covering the push button?

  11. Hello
    The link to the code does not work, could you fix the link?

  12. Are you a Gemini user who is fed up of the issue where you are unable to send bitcoin from your Gemini account? Gemini is usually seamless with their system and seldom does an user face troubles in Gemini but if you are facing this issue then dial Gemini customer care number to directly get in touch with an executive from the Gemini customer service team. The Gemini team is extraordinary in their approach and come up with pin point answers pertaining to your Issues.

  13. Can you share the complete project file with me thanks.

  14. Please send code