PE1PzN audiometers, Linux
=========================

Twee meetprogramma's:

  rtw_meter.py   stereo peakmeter met PPM-ballistiek, fasemeter en uitlijntoon
  msd600.py      analyser met goniometer, spectrum, tertsbanden en EBU R128

De uitleg staat in handleiding-meter.html en handleiding-analyser.html.
Open die met je browser.

Dit is broncode, geen kant-en-klaar programma. Python staat op vrijwel elke
Linux al geinstalleerd, maar een paar modules moet je er eenmalig bij zetten.


1. INSTALLEREN
--------------

Debian, Ubuntu, Mint, Raspberry Pi OS
(getest op Ubuntu 24.04 met Python 3.12)

  sudo apt update
  sudo apt install python3-tk python3-numpy python3-sounddevice \
                   python3-scipy python3-pil.imagetk

Fedora

  sudo dnf install python3-tkinter python3-numpy python3-sounddevice \
                   python3-scipy python3-pillow-tk

Arch, Manjaro

  sudo pacman -S tk python-numpy python-sounddevice python-scipy python-pillow

openSUSE

  sudo zypper install python3-tk python3-numpy python3-sounddevice \
                      python3-scipy python3-Pillow


Wat waarvoor nodig is
  python3-tk           het venster zelf, hier kan niets zonder
  python3-numpy        het rekenwerk, hier kan niets zonder
  python3-sounddevice  praat met de geluidskaart, zonder deze krijg je
                       alleen het proefbeeld te zien
  python3-scipy        alleen voor de R128-meting in de analyser
  python3-pil.imagetk  alleen om het logo netjes te schalen


2. STARTEN
----------

  ./start-meter.sh
  ./start-analyser.sh

of rechtstreeks:

  python3 rtw_meter.py
  python3 msd600.py

Zegt hij "Permission denied" bij de startscripts, dan mogen ze nog niet
uitgevoerd worden:

  chmod +x start-meter.sh start-analyser.sh

Start hem de eerste keer vanuit een terminal en niet met een dubbelklik.
Gaat er iets mis, dan lees je daar meteen waarom.


3. DE INGANG KIEZEN
-------------------

Onderin het venster staat een lijst met alle opname-ingangen van je systeem.
Kies je geluidskaart, je USB-interface of je mengpaneel.

Wil je meten wat er uit je luidsprekers komt, dan heb je op Linux geen
extra driver nodig. PulseAudio en PipeWire maken van elke uitgang ook een
opname-ingang. Die heet meestal "Monitor of ..." of eindigt op ".monitor".
Kies die en je meet precies wat je hoort.

Zie je geen monitor-ingang, installeer dan pavucontrol en kijk bij het
tabblad Recording welke bron het programma gebruikt. Daar kun je hem
tijdens het meten omzetten naar de monitor van je uitgang.

  sudo apt install pavucontrol


4. ALS ER "GEEN AUDIO, PROEFBEELD" STAAT
----------------------------------------

Dan draait het programma wel, maar mist het de module die met je
geluidskaart praat. Wat je dan ziet bewegen is een testsignaal, geen meting.

Controleer het zo:

  python3 -c "import sounddevice, numpy; print('ok')"

Komt daar "ok" uit, dan zit het probleem ergens anders en staat de echte
foutmelding onderin het venster en in de terminal.

Komt er ModuleNotFoundError uit, dan is het pakket niet geinstalleerd, of
geinstalleerd voor een andere Python dan waarmee je start. Kijk met welke
je werkt:

  python3 -V
  which python3

Komt er een fout over libportaudio, dan mist de bibliotheek eronder:

  sudo apt install libportaudio2


5. ALS JE PAKKETBEHEER SOUNDDEVICE NIET HEEFT
---------------------------------------------

Op een recent Ubuntu of Debian mag pip niet zomaar in de systeem-Python
schrijven. Dat is met opzet. Twee manieren eromheen.

Met toestemming, blijft naast je pakketbeheer bestaan:

  sudo apt install libportaudio2
  pip install --user --break-system-packages sounddevice

Of netjes in een eigen omgeving, dan raak je het systeem niet aan:

  sudo apt install python3-venv python3-tk libportaudio2
  python3 -m venv --system-site-packages .venv
  .venv/bin/pip install sounddevice numpy scipy pillow
  .venv/bin/python rtw_meter.py


6. OPDRACHTREGEL
----------------

  python3 rtw_meter.py --list        alle ingangen tonen en stoppen
  python3 rtw_meter.py --device 3    meteen een bepaalde ingang
  python3 rtw_meter.py --scale Radio andere schaal (TV of Radio)
  python3 rtw_meter.py --mode peak   zonder PPM-integratie meten
  python3 msd600.py --list           idem voor de analyser


7. INSTELLINGEN
---------------

Bij het afsluiten worden de gekozen ingang, de schaal en de vensterafmeting
bewaard in instellingen-peakmeter.json en instellingen-analyser.json, naast
de programma's. Weggooien mag altijd, dan begint hij met de standaardwaarden.

Een eigen schaal maken kan met schalen.json, daar staat een voorbeeld in.
Een eigen logo kan ook: zet een png met "logo" in de naam ernaast.


PE1PzN, pe1pzn.nl/meters/
