Physical source selector using GPIO

Hi everyone.

I wondered if, beyond the digital source selection available in Volumio, someone has already thought at controlling a physical input selector through GPIO pins current levels.

In this thread, you will find a physical source selection board which source is selected electronically by arduino GPIO : Audio Switcher (Arduino) : 5 Steps - Instructables

I would find very elegant to use Volumio to select DAC or RCA (I.e for a turntable or other analog device) input to output to the amplifier in a self contained streamer+amplifier setup. (Volumio is used as input selector in this case, as the sound signal is obviously not passing through the software when another rca than the dac is selected)

It might be feasible by adaptation of a plugin like GPIObutton. Ideally, this input selection should be available from a tile/button on the main screen.

In a nutshell my request aims at having a GPIO pins current combination (group of 3 pins or more) selection available on the main screen to drive extra electronic boards.

If you are aware of such functionality or have an idea to implement it, I would be happy to discuss it.

Benoit

Using 2 GPIO pins to select and input, should not be hard to accomplish. I would then opt for something like the HiFiBerry DAC+ADC, so you can connect the common to the ADC.
In this case you can use the full features of Volumio for all you inputs.

I do have some doubts on added noise, connecting multiple low’s from different sources to one board without channel seperation, as this might come with earth loops. (4052G only has one common)

The I2S source selection from GPIOs controlled by a MCU is what we have done with Integro.

So it is definitely possible to do so, but it requires some knowledge with electronics and embedded programming.

I won’t provide deep details, but if you want to thinker a bit I can give a hint: the easiest way is to use I2S level shifters with the signals of portB connected in parallel; at any moment, only one level shifter should be enabled (the one from the selected source)