• Zet de balans!

    Luisteren in stereo is natuurlijk mooi en meestal heb je dan als luisteraar een zogenaamde ‘hot-spot‘, de plek tussen je speakers waar je lekker zit en de muziek in balans is. Nu is het niet vanzelfsprekend dat de afstand tussen deze hot-spot en de beide luidsprekers exact hetzelfde is, oftewel, soms zit je niet in balans. Op versterkers kun je dan de balans zodanig zetten dat het midden ‘verschuift’ zodat je een nieuwe balans vindt.

    Maar hoe doe je dat dan met de MusicPlayer AMP?

    De MusicPlayer AMP maakt gebruik van een ALSA-audio board, de ‘HifiBerry AMP2’ en de twee kanalen kunnen met software ingesteld worden. Hiervoor is de ‘amixer‘ aanwezig en dit dient dan vanaf de command prompt gebruikt te worden.

    Dus eerst even ssh aanzetten via http://volumio.local/dev en vervolgens kun je met een terminal-programma inloggen in de MusicPlayer. Het commando is dan:

    $ ssh volumio@volumio.local

    (of volumio@musicplayer.local als de naam ‘musicplayer’ is) Het wachtwoord is standaard ‘volumio’

    Om de alsa devices op te vragen is er het commando:

    $ amixer controls

    en dat geeft dan bv. de volgende output waarbij we willen weten wat het ‘numid‘ is van het ‘Digital Playback Volume‘ device:

    numid=1,iface=MIXER,name='Digital Playback Volume'

    in dit geval is dat dus numid=1

    Het volgende commando geeft de status van dit device weer:

    $ amixer cget numid=1
    
    numid=1,iface=MIXER,name='Digital Playback Volume'
    ; type=INTEGER,access=rw---R--,values=2,min=0,max=207,step=0
    : values=117,117
    | dBscale-min=-103.50dB,step=0.50dB,mute=1

    De values in de output geeft het volume per kanaal aan, in dit geval dus 117 voor zowel het linker- als het rechterkanaal. Om nu de balans naar rechts te verschuiven, zet het volgende commando het volume van het rechterkanaal 10 eenheden harder dan het linkerkanaal:

    $ amixer cset numid=1 117,127

    De balans naar links is hetzelfde commando maar dan de twee values verwisseld, het is immers L,R

    Dit commando kunnen we in een bash-script zetten en dat ziet er dan zo uit:

    #!/bin/bash
    amixer cset numid=1 117,127

    Dit script noemen we dan /home/volumio/balance.sh en om het uitvoerbaar te maken zetten we de flags met:

    $ chmod +rx /home/volumio/balance.sh

    Nu kan dit script in de opstartfase van de MusicPlayer gezet worden (/etc/rc.local) maar bedenk wel dat als we het volume via de GUI harder of zachter zetten is de balans weer gelijk voor links en rechts.

    Wat als we een percentage zetten voor links en rechts?

    Dat commando zal dan alsvolgt zijn:

    $ amixer cset numid=1 80%,100%

    OK, dat werkt dus ook niet, blijkbaar is er geen instelling om de balans permanent te zetten, althans, ik vind het niet.

    Push button gebruiken voor balans

    Een alternatief zou kunnen zijn om de shutdown-button op de voorkant van de MusicPlayer te gaan gebruiken om de balans te zetten en het uitzetten van de MusicPlayer dan voortaan via de GUI te doen. Hiervoor maken we dan een python script die de GPIO poort kan uitlezen.

    Eerst wat software installeren:

    $ sudo apt install -y python-dev
    $ sudo apt install -y python-rpi.gpio

    Nu maken we een python script genaamd /home/volumio/balance.py met de volgende inhoud:

    # balance.py
    # by Nico Oosterwijk (nico@digitalhifi.nl)
    # SWITCH is between pin 33 (GPIO13) and pin 1 (3.3V)
    import RPi.GPIO as GPIO
    import time
    import os
    
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(13, GPIO.IN)
    
    try:
      while True:
        if GPIO.input(13):
          os.system('/home/volumio/balance.sh')
        time.sleep(.250)
    
    except KeyboardInterrupt:
      # GPIO netjes afsluiten
      GPIO.cleanup()

    Elke 1/4 seconde ‘kijkt’ dit script of het signaal op GPIO13 gewijzigd wordt en zoja, dan zal het bash-script balance.sh uitgevoerd worden. De KeyboardInterrupt zal in dit geval nooit bereikt worden maar staat er voor de volledigheid in mocht je het script op de command line willen uitproberen. Stoppen kan dan met CTRL+C.

    Om dit script tijdens opstarten van de MusicPlayer uit te voeren, zetten we de volgende regel in /etc/rc.local:

    python /home/volumio/balance.py &

    Na een reboot van het systeem zal met de button op de voorkant de balans (en volume) van het linker- en rechterkanaal ingesteld worden.

    Permanent instellen

    Het is ook mogelijk om deze ALSA instellingen op te slaan in het bestand /var/lib/alsa/asound.state met het commando:

    $ sudo alsactl store

    (Terug)zetten van deze instellingen kan dan met:

    $ sudo alsactl restore

    maar dat zou ook automatisch gaan met opstarten. Desalniettemin wordt dit weer tenietgedaan door via de GUI het volume te wijzigen maar in ieder geval worden de instellingen gezet na een herstart van de MusicPlayer!

    Happy playing!

Comments are closed.
Secured By miniOrange