# ALSA - Low pass filter für Subwoofer

## Mr_Maniac

Hallo!

Endlich gibt es einen funktionierenden, Multi-Channel fähigen Treiber für meine XFi und nun bin ich dabei, auch mein Surround-Setup einzurichten.

Konkret bin ich gerade dabei, einen Low pass filter für den Subwoofer in meine .asoundrc einzupflegen. Gar nicht so leicht erst mal etwas funktionierendes zu finden, oder etwas funktionstüchtig zu machen.

Hierbei geht es mir in erster Linie darum, Stereo-Quellen auf 5.1 hochzurechnen.

Anfangs hatte ich folgendes gefunden, was auch recht gut funktioniert:

(~/.asoundrc)

```

pcm.ch51dup {

         slave.pcm default

         slave.channels 6

         type route

         ttable.0.0 1

         ttable.1.1 1

         ttable.0.2 1

         ttable.1.3 1

         ttable.0.4 0.5

         ttable.1.4 0.5

         ttable.0.5 0.5

         ttable.1.5 0.5

}

```

Statt default war ursprünglich surround51 angegeben, aber das Modul meiner XFi legt dieses Surround-Device (noch?) nicht an.

Dieses Plug-In/Device Splittet also erst mal nur die vorderen Beiden Kanäle auf alle Kanäle auf.

Somit bekommt aber auch der Subwoofer das "volle" Signal und nicht nur den Bass. Das hört sich dann sehr dumpf an und außerdem ist der Ton nicht mehr gut ausgerichtet, sondern wird zum Subwoofer hin "verschoben".

Also "flugs" nach einem Low Pass Filter gesucht (Suchwörter waren erst mal ALSA Crossover Frequency), denn sowas wird bestimmt schon mal jemand gemacht haben...

Okay... Gefunden habe ich tatsächlich ein paar Beispiele, die "ladspa"-Plug-Ins verwenden. Eines war dummer Weise für 2.1-Systeme gedacht und das andere funktionierte "out of the box" erst mal gar nicht. Nach langem rumsuchen und probieren (Try and Error) hat es dann doch mal irgendwas getan, war mir aber immer noch etwas zu kompliziert/umständlich (für alle, die es interessiert: [url]http://alsa.opensrc.org/index.php/Low-pass_filter_for_subwoofer_channel_(HOWTO)[/url].

Also habe ich mich daran versucht, das ganze etwas anzupassen und bin jetzt hierbei gelandet:

```

pcm.ch51dup {

         slave.pcm "plug:lowpass51"

         slave.channels 6

         type route

         ttable.0.0 1

         ttable.1.1 1

         ttable.0.2 1

         ttable.1.3 1

         ttable.0.4 0.5

         ttable.1.4 0.5

         ttable.0.5 0.5

         ttable.1.5 0.5

}

pcm.lowpass51 {

    type ladspa

    slave.pcm default

    path "/usr/lib/ladspa"

    plugins {

        0 {

            id 1098 # Identity (Audio) (1098/identity_audio)

            policy duplicate

            input.bindings.0 "Input";

            output.bindings.0 "Output";

        }

        1 {

            id 1672

            policy none

            input.bindings.5 "Input";

            output.bindings.5 "Output";

            input {

                controls [ 120 2 ]

            }

        }

    }

}

```

(Das Signal wird nicht direkt ausgegeben, sondern zuerst an "lowpass51" geleitet, was den Low Pass Fillter auf Kanal 5 bzw. 6 (Subwoofer) anwendet.

Um ehrlich zu sein weiß ich nicht, warum man das Plugin 1098/identity_audio braucht, aber ohne dies kommt nur Müll raus.)

Das funktioniert genau so gut, wie das Beispiel im ALSA-Wiki. Der Klang ist jetzt nicht mehr dumpf und ist gut positioniert. Klingt so wie es soll.

Ein Problem habe ich jedoch mit BEIDEN Konfigurationen:

Während XMMS und Audacious mit dem ursprünglichen ch51dup ohne Low Pass Filter noch einwandfrei funktionierten, scheint sie der Low Pass Filter nun aus dem Tritt zu bringen:

XMMS spielt die ersten paar Millisekunden in einer Endlosschleife (auch der Timer bewegt sich kein Stück) und Audacious bleibt gleich mal ganz still (auch hier bleibt der Timer stehen).

mplayer, xine und aplay haben jedoch kein Problem mit dem Filter.

Also bleibt die Frage:

Woran könnte das liegen und wie könnte man es beheben (XMMS und Audacious geben keine Info dazu in der Konsole aus) oder wie kann man so einen Low Pass Filter einfacher / mit ALSA-Bordmitteln bauen?

Ach ja:

Folgende Pakete sind für den Low Pass Filter notwendig:

media-libs/ladspa-cmt

media-plugins/blop

Hat hier schon jemand Erfahrung und kann mir weiterhelfen?

Danke schon mal im Voraus

----------

## AmonAmarth

welches ausgabe plugin hast du in den besagten programmen wie zb. xmms dafür verwendet? die OSS einstellung sollte dafür unbrauchbar sein!

----------

## Mr_Maniac

 *AmonAmarth wrote:*   

> welches ausgabe plugin hast du in den besagten programmen wie zb. xmms dafür verwendet? die OSS einstellung sollte dafür unbrauchbar sein!

 

Das ALSA-Output-Plugin und dort als device mein "ch51dup".

Klappt ohne den Low Pass Filter - wie gesagt - einwandfrei. Klingt dann halt nur nicht richtig.

MPlayer starte ich natürlich mit 

```
mplayer audiodatei.mp3 -ao alsa:device=ch51dup"
```

In Xine habe ich es in den Einstellungen eingetragen und

aplay starte ich auch mit

```
aplay audiodatei.wav -D ch51dup
```

Und wie gesagt laufen diese einwandfrei (auch in gnome-mplayer, mit dem ich Videos im FireFox betrachte).

Bisher sind es - wie gesagt - nur xmms und audacious, die sich daran verschlucken.

Ich glaube das Surround-Setup ist bisher das schwierigste, das ich in meinem Gentoo konfigurieren wollte  :Wink: 

EDIT:

Okay... Es ist komisch, aber plötzlich funktioniert es...

Ich hatte heute den neuesten ALSA-unstable-Snapshot  heruntergeladen und kompiliert. Ursprünglich funktionierte es danach genau so wenig wie nun...

Eben hat aber mein Audacious das System in den "Tod" gerissen, als ich etwas abgespielt und wieder gestoppt habe (mit dem default-Device!). Drei mal hintereinander. Dann habe ich ihm das ch51dup-Device gegeben und plötzlich geht es... Genauso mit XMMS...

Da werde ich noch etwas rumprobieren...

----------

