Sndctl-plugin

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Beschreibung

Autor: Thomas Hildebrandt

Dieses Plugin wurde inspiriert und neuentwickelt aus dem avolctl-plugin von Martin Prochnow (vielen Dank dafür). Es steuert die Lautstärke verschiedener Regler der Soundkarte in Abhängigkeit von der Lautstärkeregelung des VDR.

Diese Anforderung allein ist durch das avolctl-plugin bereits gut abgebildet. Darüberhinaus kann es jedoch verschiedene Wege geben, wie die Regler der Soundkarte von der VDR-Lautstärke abhängen. Diese Wege (oder Profile) nenne ich Soundsets.

Ein Soundset für 'normales' Stereo unterscheidet sich von einem Dolby Digital Soundset, sprich, andere Soundkarten-Regler bewegen sich, wenn sich die VDR-Lautstärke ändert.

Mit sndctl lassen sich beliebig viele Soundsets anlegen, zwischen denen aus dem VDR-Menü umgeschaltet werden kann.

Status

Version:

  • 0.1.2

Kompiliert und getestet unter:

Entwicklungsumgebung

  • Linux 2.6.8.1 (LFS 6.0)
  • VDR 1.5.1
  • ALSA-Lib 1.0.10
  • g++ (GCC) 3.4.1


Bedienung

Im VDR-Hauptmenü gibt es einen Eintrag Sound control (kann anders lauten, wenn die Standard-Einstellung verändert wurde). Dieser liefert eine Liste der derzeit konfigurierten Soundsets. Das derzeit aktive Soundset ist gekennzeichnet. Mit 'Hoch' und 'Runter' wählt man das gewünschte Soundset, 'Ok' oder 'Rot' aktivieren das Soundset (und beenden das Menü).

Ein neues Soundset wird mit 'Blau' angelegt, ein bestehendes mit 'Grün' verändert und mit 'Gelb' entfernt.

SVDRP Befehle

Das Plugin stellt die folgenden SVDR Kommandos zur Verfügung.

SSET [ name ]

  • setzt oder zeigt das aktive Soundset (mittels Name)

SSID [ id ]

  • setzt oder zeigt das aktive Soundset (mittels ID)

LIST [ names | all ]

  • zeigt ohne Parameter eine Liste der ID's aller Soundsets, mit 'names' eine Namensliste und mit 'all' eine Liste mit ID und Name

Beispiele

svdrpsend.pl plug sndctl list
svdrpsend.pl plug sndctl list all
svdrpsend.pl plug sndctl sset
svdrpsend.pl plug sndctl sset Stereo

Hardwareanforderungen

  • von ALSA unterstützte Soundkarte

Softwareanforderungen

Installation

Source

cd $SOURCEDIR
tar xzf vdr-sndctl-<VERSION>.tgz
ln -sf sndctl-<VERSION> sndctl
make plugins
make install-plugins


Konfiguration

Die Konfiguration teilt sich in zwei Bereiche. Allgemeine Einstellungen finden sich wie üblich im VDR Einstellungsmenü für Plugins. Die Konfiguration der Soundsets selbst erreicht man über den Hauptmenüeintrag.

Allgemeine Einstellungen

Eintrag im Hauptmenü verstecken

Wenn auf 'ja' gesetzt, wird das Plugin im VDR-Hauptmenü nicht angezeigt.

Menü Name

Unter diesem Namen taucht das Plugin im VDR-Hauptmenue auf.
(Ich bevorzuge es z.B., den Eintrag 'Sound Manager' zu nennen.)

Lautstärke beim Start

    -1: Die VDR-Lautstärke wird beim Start gesetzt
0..100: Statt der VDR-Lautstärke wird diese Lautstärke gesetzt. Das erste
        Betätigen der VDR-Lautstärke stellt diese dann ein

        Wozu ist das gut?
        Wenn der VDR sich allein einschaltet (z.B. wegen anstehender
        Aufnahme[n]) und sich (wie bei mir) die 5.1-Boxen gleich
        dazuschalten, soll natürlich der Ton ausgeschaltet bleiben.
        Dazu könnte man den VDR auf eine Startlautstärke von 0 stellen.
        Wenn man den VDR aber manuell einschaltet und fernsehen möchte,
        muss man jetzt die Lautstärke erst bis auf ein 'normales' Maß
        regeln.
Lösung: Ist der Startwert des Plugins auf 0 gesetzt, ergibt sich der
        Effekt eines stumm startenden VDR, der aber bei der ersten
        Lautstärkenbetätigung sofort auf die VDR-Lautstärke geht.

Standard Soundset

Dieses Soundset wird beim Start des Plugins aktiviert.
Sollte die Dolby Digital Automatik eingeschaltet sein, ist das auch das
Soundset, auf das geschaltet wird, wenn ein Nicht-Dolby-Digital-Audio-Kanal
gewählt wird.

DD Automatik

Wenn aktiv, versucht das Plugin zu erkennen, ob der Audio-Kanal auf
Dolby Digital geschaltet wird und aktiviert ein entsprechendes Soundset.

DD Automatik Soundset

siehe vorher ... Dieses Soundset wird im Falle eines erkannten Dolby
Digital Kanals benutzt.

Soundflash aktivieren

Aktiviert die 'Soundflash'-Funktion.
Wenn unmittelbar hintereinander die Lautstärke hoch und wieder herunter
geregelt wird, setzt das Plugin die Lautstärke kurz sehr laut und gleich
wieder auf den Normalwert.
Wozu ist das gut?
Eine evt. an den Ausgängen der Soundkarte hängende Gerätschaft mag eine
automatische Standbyfunktion haben; sie schaltet sich bei allzu leisen
Lautstärken aus. Man muss dann die Lautstärke soweit erhöhen, dass sich
alles wieder einschaltet und wieder heruntersetzen, falls man es so laut gar
nicht wollte.
Lösung: Soundflash -> Lautstärke kurz hoch und wieder runter und durch
        die ebenso kurze Lautstärkenerhöhung schaltet sich das Equipment
        wieder ein. Die kurzzeitige hohe Lautstärke ist nicht zu hören;
        bis die externe Technik soweit ist, ist die Lautstärke längst
        wieder normal.

Stumm beim Beenden

Schaltet beim Beenden des VDR auf stumm.

Soundset Einstellungen

Name

Der Name des Soundsets.

Alle weiteren Parameter sind die Namen der einzelnen Regler der Soundkarte. (Nicht alle, sondern nur 'sinnvolle'). Jeder Regler hat einen zugeordneten Wert, welcher festlegt, was mit ihm getan wird, wenn sich die VDR-Lautstärke ändert.

Der Aufbau dieses Wertes ist immer gleich und muss STRIKT eingehalten werden.

Operand (bestimmt, die Rechenoperation)
|
|   Minimum (der Regler geht nicht unter diesen Wert)
|   |
=80;1;90
 |    |
 |    Maximum (der Regler geht nicht über diesen Wert)
 |
 Wert (VDR-Lautstärke wird per Operand mit diesem Wert verknüpft)

Bis auf den Operand können die anderen Werte u.U. wegfallen.

Ein paar Beispiele, die das Verfahren demonstrieren:

~

tut gar nichts, der Regler wird nicht 'angefasst'
(Standardwert für alle Regler in einem neuen Soundset)

=0

setzt den Regler dauerhaft auf den angegebenen Wert (hier 0)
(bei mir z.B. Bass =40 / Treble =60)

+10

addiert den Wert (hier 10) zur VDR-Lautstärke hinzu
(z.B. folgt "+0" der VDR-Lautstärke direkt)

-5

subtrahiert den Wert (hier 5) von der VDR-Lautstärke

%10

der Reglerwert ist immer 10% von der VDR-Lautstärke

+10;1

plus 10, aber nie weniger als 1
Wozu dies?
Der 'LFE' Regler meiner Soundkarte, der den Subwoofer bedient, ist mit nur
32 Stufen nicht so fein aufgelöst, was zur Folge hat, dass die Hardware bei
kleinen Werten den Regler schon mal ganz auf 0 zieht, obwohl vielleicht 5%
gemeint waren. Die Minimum-Einstellung verhindert das.


Hinweise

  • sndctl rechnet mit Lautstärkewerten von 0 bis 100
  • die folgenden Operationen (erstes Zeichen) sind möglich:
    • ~ > gar nichts tun (so ein Regler wird aus den Parametern entfernt)
    • = > Regler wird immer auf denselben Wert gesetzt (gut für 'Bass' und 'Treble' oder um einen Regler "still"zulegen)
    • + > Regler bekommt die VDR Lautstärke, erhöht um diesen Wert
    • - > Regler bekommt die VDR Lautstärke abzüglich dieses Wertes
    • % > Regler bekommt x Prozent vom VDR Lautstärke-Wert
  • falls dein VDR nicht mit root-Rechten läuft, benötigt der VDR user Rechte für den Zugriff auf den Mixer der Soundkarte; evt. muss der VDR user Mitglied der Gruppe 'audio' sein

Bugs

  • beim Versuch, ein Soundset zu ändern, das gerade nicht aktiv ist, stürzt das Plugin ab (und nimmt den VDR gleich mit)


Links

  1. Download
  2. ALSA
In anderen Sprachen