[ Startseite Messwerterfassung ] [ Übersicht Soundkarte ]

Die Delphi Komponente TAudioMixer.

Dreamteam: Soundkarte und Delphi.

Mit Intensitäts-Frequenz-Wandlern und Spannungs-Frequenz-Wandlern kann man Lichtintensitäten und Spannungen (und alles, was sich in solche wandeln läßt) in Tonfrequenzen umsetzen, die man einer Soundkarte zuführen kann. Langsame Änderungen der einfallenden Lichtintensität oder der angelegeten Spannung führen dann zu langsamen Änderungen der eingespeisten Tonfrequenz.
Mit geeigneten Kompontenten wie z.B. TAudio von John Mertus lassen sich problemlos Programme in Delphi selbst schreiben, die in definierten zeitlichen Abständen die gerade aktuelle Frequenz am Line-In Eingang ermitteln und so über Frequenzverläufe f(t) z.B. Spannungsverläufe U(t) erfassen und verarbeiten können.

Die Qual der Wahl.

In der Praxis stellt sich jedoch das Problem, ob man wirklich das "richtige" Signal analysiert:

Gerade Laptops haben oft eingebaute Mikrofone, die natürlich auch Geräusche im Raum, das Surren der Festplatte oder Lüftergeräusche aufnehmen. Je nachdem, was im Windows-Mixer als Quelle mit welcher Intensität eingestellt ist, analysieren Sie dann unter Umständen das Raumgeräusch statt dem Nutzsignal am Line-In Eingang, oder auch eine Überlagerung von beiden Quellen!

Ein Benutzer des Programms müsste also bei jeder Messung zunächst daran denken, vor der Messung im Windows-Mixer die "richtigen" Quellen anzuwählen und die "falschen" auszuschließen.

Es wäre natürlich viel eleganter und benutzerfreundlicher, wenn das Programm selbst ihm diese Denkarbeit abnehmen würde!

Gibt es hier nicht auch eine Komponente, mit der man die Einstellungen des Windows-Mixers vom Programm selbst aus beeinflussen kann?

Die Komponente TAudioMixer.

Als ich dieser Frage nachging, stieß ich in Tschechien auf die Freeware Delphi-Komponente TAudioMixer von Vit Kovalcik. Sie finden die Seite unter der Internet-Adresse http://www.pastel.cz/programming/#delphi

Nach dem Download wird die Komponente mit WinZip z.B. in einem dafür angelegten Unterordner innerhalb des "Lib" Verzeichnisses von Delphi entpackt. Anschließend wird die Kompontente mit "Komponente installieren" in Delphi eingebunden. Im Eingabefeld "Name des Package" wird dabei der Pfad zur entsprechenden Unit angegeben. (also z.B. "c:/programme/borland/delphi/lib/tAudioMixer"). Die zu kompilierende Datei heißt "AMixer". Die dabei entstehende .dcu-Datei habe ich dann in "Lib" kopiert, damit sie im Default-Pfad auch gefunden wird. Nun läßt sich die Komponente einfach über das Icon in das Formular des entstehenden Programms ziehen ( wie Menü- oder Speicherdialoge).

Pegel beeinflussen mit Mixer.SetVolume.

Mit "SetVolume" kann man die Stellung der "Regler" im Windows Mixer beeinflussen. Als Parameter erwartet die Routine folgende Angaben:

  • Destination: betrifft es die Wiedergabe (Line-out) oder die Aufnahme (Line-In, Mikro) ? Eine 0 bedeutet, es betrifft "Volume Control" also die Ausgabe, eine 1 bedeutet, es betrifft die "Recording Control" also die Aufnahme.
  • Device: welches "Gerät" betrifft es, geht es um Line-In, Mikro, Wave usw.?
    Der Summenregler ist dabei "-1", die Geräte sind ab 0 aufwärts nummeriert.
  • ValueL: welche Stellung soll der "Lautstärkeregler" für den linken Kanal haben?
    Eine "0" würde den angesprochenen Regler auf 0 setzen, der Wert 65535 (16 Bit) setzt ihn auf Maximum.
  • VolumeR: dasselbe für den rechten Kanal.
  • checked: hier kann man das Gerät "aktiv" setzen (=1) oder deaktivieren (=0).

Beispiel: Mixer.SetVolume(1,0,65535,0,1) setzt also den Aufnahmepegel (1) des Line-In Eingangs (0) im linken Kanal auf Maximum (65535), im rechten Kanal auf Minimum (0) und aktiviert das Gerät.

Auf diese Art und Weise kann man Geräte gezielt an- und abschalten und die Aufnahme- oder Wiedergabepegel setzen.

Zustände sichern mit Mixer.GetVolume.

Wenn Sie ganz gewissenhaft sein wollen, können Sie beim Starten ihres Programmes auch die Pegel all der Geräte, die Sie im Programm ändern wollen, zunächst mit GetVolume erfassen und die Daten zwischenspeichern, um sie dann am Programmende wieder zurückzuschreiben. Der Anwender merkt dann gar nicht, dass das Programm seine Einstellungen im Windows-Mixer zeitweise verändert hat um sinnvoll agieren zu können. GetVolume hat noch mehr Parameter.

Mit der Aktivierung der Ausgabekanäle hatte ich unter Win98SE etwas Probleme. Vielleicht haben Sie mehr Erfolg!?

Klaus-Dieter Grüninger, Landesbildungsserver


[ Startseite Messwerterfassung ] [ Übersicht Soundkarte ]