» über uns

8-fach Weiche mit BruteFIR

Druckbare Version

  • 13.09.2011, 19:52
    usul
    8-fach Weiche mit BruteFIR
    So, es geht los mit meiner 4-Wege-Weiche auf Basis von BruteFIR. Ich werde versuchen, einige Sachen hier für Nachbauer zu dokumentieren.

    Fangen wir mal mit der Hardware an:

    - Board+Prozessor: Intel D525MW
    hier kann man praktisch jedes einigermassen moderne Motherboard einsetzen. Das Intel-Board hatte den Vorteil, keine kleinen fiesen Lüfter drauf zu haben und sehr preisgünstig zu sein. Darauf ist ein 2-Kern-Atom-Prozessor, der nicht gerade sonderlich leistungsfähig ist, aber für BruteFIR ausreichen sollte (hoffentlich ;-)
    - RAM: 2GB Notebook-RAM
    Die lagen von der letzten Notebook-Aufrüstung eh noch rum :-)
    - Sounkarte: Asus Xonar D1
    Scheinbar gibt es mit der sehr gute Erfahrungen und der Linux-Support scheint auch gut zu sein. Für den Anfang reicht die mal, später ist geplant, den Ton direkt per I2S abzugreifen und digital an die Endstufen weiterzuleiten.
    - Eine Festplatte wird nicht gebraucht, ich starte mit einem 2GB USB-Stick (eigentlich 4GB, aber im Moment nur zur Hälfte genutzt). Davon kann das Intel-Board problemlos booten, auch wenn der Bootvorgang im Moment doch arg langsam ist. Da bleibt noch Platz für Tuning.


    Einen Kurs für die Installation von Linux gebe ich hier nicht, daher halte ich mich hier kurz.

    Ich starte mit Debian Linux, was sich einfach als Minimalsystem installieren lässt. Das reicht für den Start.

    1. Debian-Minimalinstallation
    dabei den SSH-Daemon mitinstallieren, dann braucht man jetzt keinen Monitor und keine Tastatur mehr sondern kann alles übers Netz erledigen.

    2. Pakete nachinstallieren:

    Die wichtigsten ALSA-Tools und BruteFIR sollten natürlich drauf, zusätzlich Octave. Das wird später für die Berechnung der Filter gebraucht. JackD ist scheinbar weit verbreitet bei der Nutzung von BruteFIR, also installieren wir den mal mit.

    Code:

    apt-get install alsa-base alsaplayer alsaplayer-text alsa-tools octave octave-signal brutefir jackd
    Nach dieser Installation ist das System bei mir schon mehr als 1GB gross - also nicht mehr allzu schlank. Aber 4GB-USB-Sticks kosten ja auch nur nur sehr wenig.
  • 13.09.2011, 20:22
    usul
    Weiter gehts mit dem Sound-Basissetup

    Zuerst mal schauen, ob die Soundkarte überhaupt erkannt wurde:

    Code:

    > aplay -l
    **** Liste der Hardware-Geräte (PLAYBACK) ****
    Karte 0: D1 [Xonar D1], Gerät 0: Multichannel [Multichannel]
      Sub-Geräte: 1/1
      Sub-Gerät #0: subdevice #0
    Karte 0: D1 [Xonar D1], Gerät 1: Digital [Digital]
      Sub-Geräte: 1/1
      Sub-Gerät #0: subdevice #0

    > aplay -L
    null
        Discard all samples (playback) or generate zero samples (capture)
    default:CARD=D1
        Xonar D1, Multichannel
        Default Audio Device
    front:CARD=D1,DEV=0
        Xonar D1, Multichannel
        Front speakers
    surround40:CARD=D1,DEV=0
        Xonar D1, Multichannel
        4.0 Surround output to Front and Rear speakers
    surround41:CARD=D1,DEV=0
        Xonar D1, Multichannel
        4.1 Surround output to Front, Rear and Subwoofer speakers
    surround50:CARD=D1,DEV=0
        Xonar D1, Multichannel
        5.0 Surround output to Front, Center and Rear speakers
    surround51:CARD=D1,DEV=0
        Xonar D1, Multichannel
        5.1 Surround output to Front, Center, Rear and Subwoofer speakers
    surround71:CARD=D1,DEV=0
        Xonar D1, Multichannel
        7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
    iec958:CARD=D1,DEV=0
        Xonar D1, Multichannel
        IEC958 (S/PDIF) Digital Audio Output

    Das sieht schon mal gut aus :-)

    Meist ist die Lautstärke allerdings auf 0, also erstmal die Lautstärke erhöhen:

    Code:

    > alsamixer
    Und wenn jetzt alles richtig geklappt hat, sollte bei
    Code:

    > aplay /usr/share/sounds/alsa/Noise.wav
    ein Rauschen aus den beiden vorderen Ausgängen kommen. Bei mir blieb erstmal alles still, nach einem Reboot war dann aber der Ton da :-)
  • 14.09.2011, 10:18
    gr33n
    Hi usul
    Willst du brutefir von jackd aus füttern?
    Ich hab letztens mit dem neuen loopback device von alsa rumgespielt. Das sieht viel versprechend aus.
    Das modul aloop generiert 2 virtuelle Karte mit 8 Ein/Ausgängen.
    Das Outputdevice von Karte-A übergibt den Stream an das Inputdevice von Karte-B.
    Damit kann jedes Programm das für Alsa geschrieben wurde an Brutefir übergeben werden.
    Habe aber noch keinen Dauertest gemacht.

    Grüße
    Sebastian
  • 14.09.2011, 16:48
    usul
    Das aloop-Module sieht spannend aus, werde mir das mal anschauen.
  • 14.09.2011, 18:09
    usul
    So weiter gehts mit dem "HowTo".

    Als nächstes versuchen wir mal brutefir zum Laufen zu bekommen. Am einfachsten ist es, mal komplett auf Filter und sonstigen Kram zu verzichten und nur den Stereoeingang auf den Ausgang durchzureichen. Ein Kabel reicht dafür natürlich auch ;-)

    Als erstes JackD starten (zum Loopback Device kommen wir später)

    Code:

    #jackd -P 9 -dalsa -r48000 -p1024 -n2 -D -Chw:0 -Phw:0
    Jetzt braucht brutefir noch eine Konfiguration, die ich mal unter "2ch-plain.conf" speichere:

    Code:

    ## DEFAULT GENERAL SETTINGS ##

    float_bits: 64;            # internal floating point precision
    sampling_rate: 48000;      # sampling rate in Hz of audio interfaces
    filter_length: 1024,4;      # length of filters: 4 (not used here ;-)
    overflow_warnings: true;    # echo warnings to stderr if overflow occurs
    show_progress: true;        # echo filtering progress to stderr
    max_dither_table_size: 0;  # maximum size in bytes of precalculated dither
    allow_poll_mode: false;    # allow use of input poll mode
    modules_path: ".";          # extra path where to find BruteFIR modules
    monitor_rate: false;        # monitor sample rate
    powersave: false;          # pause filtering when input is zero
    lock_memory: true;          # try to lock memory if realtime prio is set

    ## LOGIC ##

    logic: "cli" { port: 3000; };

    ## INPUT, OUTPUT ##

    input "left", "right" {
            device: "jack" {  ports: "alsa_pcm:capture_1", "alsa_pcm:capture_2";};
            sample: "AUTO";
            channels: 2/0,1;


    };

    output "left", "right" {
            device: "jack" { ports: "alsa_pcm:playback_1", "alsa_pcm:playback_2";
    };
            sample: "AUTO";
            channels: 2/0,1;
            delay: 0,0;
    };

    filter "main_left" {
            inputs: "left";
            to_outputs: "left";
            coeff: -1;
    };

    filter "main_right" {
            inputs: "right";
            to_outputs: "right";
            coeff: -1;
    };


    So, jetzt noch Brutefir starten und dann sollte auf den ersten beiden Ausgangskanälen genau das rauskommen, was zum Eingang der Soundkarte reinkommt (einfach einen MP3-Player oder ähnliches anschliessen).

    Code:

    #brutefir ./2ch-plain.conf
    Ach ja, im Moment wird mal alles als "root" gemacht. Nicht die feine Art, um erstmal alles zum Laufen zu bekommen aber schneller, als immer an sudo zu denken ;-)

    Im Moment macht das mal 4% CPU-Last auf dem Atom.
  • 14.09.2011, 18:13
    gr33n
    Ich habe mich Anfangs in die irre führen lassen mit den Ein/Ausgängen. Ich schreib mal hier aus was ich an Tips habe, auch für Google Piloten die hier landen ;)

    Eine Kette könnte für brutfir so aussehen:
    player -> Outputdevice Karte-A -> Inputdevice Karte-B -> brutfir alsa input plugin -> brutfir -> brutfir alsa output plugin -> output channels xonar

    Die Installation ist bei jeder Distribution unterschiedlich deswegen kann ich das Ganze nur
    in Stichpunkten zusammen fassen:
    Das Modul "snd_aloop" muß beim booten geladen werden (manuell "modprobe snd-aloop")
    Unterhalb vom Verzeichnis /etc sollte es eine Datei "alsa.conf" oder ähnliches geben.
    Da muss folgendes ergänzt werden:
    options snd cards_limit=2 #da wird die Anzahl der verbauten Karten angegeben,inkl aloop

    alias snd-card-1 snd-aloop index=3
    options snd-card-1 index=1 id="LOOP"
    Die Kartennummern wird von Null an aufwärts gezählt.
    Die Loopback Karte hat kein Mixerdevice. Es ist also kein Fehler wenn man keinen Lautstärkeregler findet.


    Aber erstmal viel Spaß mit dem konventionelle Setup. Die Brutfir Config ist schön kryptisch :)
  • 14.09.2011, 18:19
    usul
    Na gut, dann hier mal schnell noch die Info, wie man das Sound-Loopback-Device zum Laufen bekommen (für Debian). Hab ich schon eingebunden und es ist mal geladen.

    Sorry fürs Englisch, das meiste sind aber eh Befehle ;-)

    Code:

    apt-get install alsa-source
    cd /usr/src
    tar xvfj alsa-driver.tar.bz2
    cd /usr/src/modules/alsa-driver
    fakeroot debian/rules binary_modules KSRC=/usr/src/linux-headers-`uname -r` KVERS=`uname -r`
    dpkg --install /usr/src/modules/alsa-modules-`uname -r`_1.0.23+dfsg-2*.deb

    Edit the file /etc/rc.local and add a line

    modprobe snd-aloop


    Add the following line in /etc/modprobe.d/alsa-base.conf

    options snd_aloop index=2

    > reboot
    > aplay -l
    xxx@localhost:~$ aplay -l**** Liste der Hardware-Geräte (PLAYBACK) ****
    Karte 0: D1 [Xonar D1], Gerät 0: Multichannel [Multichannel]
      Sub-Geräte: 1/1
      Sub-Gerät #0: subdevice #0
    Karte 0: D1 [Xonar D1], Gerät 1: Digital [Digital]
      Sub-Geräte: 1/1
      Sub-Gerät #0: subdevice #0
    Karte 2: Loopback [Loopback], Gerät 0: Loopback PCM [Loopback PCM]
      Sub-Geräte: 8/8
      Sub-Gerät #0: subdevice #0
      Sub-Gerät #1: subdevice #1
      Sub-Gerät #2: subdevice #2
      Sub-Gerät #3: subdevice #3
      Sub-Gerät #4: subdevice #4
      Sub-Gerät #5: subdevice #5
      Sub-Gerät #6: subdevice #6
      Sub-Gerät #7: subdevice #7
    Karte 2: Loopback [Loopback], Gerät 1: Loopback PCM [Loopback PCM]
      Sub-Geräte: 8/8
      Sub-Gerät #0: subdevice #0
      Sub-Gerät #1: subdevice #1
      Sub-Gerät #2: subdevice #2
      Sub-Gerät #3: subdevice #3
      Sub-Gerät #4: subdevice #4
      Sub-Gerät #5: subdevice #5
      Sub-Gerät #6: subdevice #6
      Sub-Gerät #7: subdevice #7

    Ich benutze das Ding im Moment noch nicht, weil ich dann erst ein Programm braucht, was mir den Eingang der Soundkarte zum Ausgang der Loopback-Soundkarte durchschleust. Und die Jack-Konfiguration funktioniert erstmal :-)
  • 14.09.2011, 18:21
    usul
    Ach ja: Ich würde der Loopback-Soundkarte die id 99 geben, dann hat ist egal, wie viele Soundkarten im System stecken ;-) Mal schauen, ob es irgendwelche Programme gibt, die mit "Lücken" in den IDs Probleme haben.
  • 14.09.2011, 21:02
    gr33n
    Zitat:

    Zitat von usul Beitrag anzeigen
    Ach ja: Ich würde der Loopback-Soundkarte die id 99 geben

    Sehr gute Idee. :thumbup:
  • 15.09.2011, 19:18
    usul
    Weiter gehts. Da das schlimmste mal abgeschlossen ist (Software-Installation, Brutefir-Basiskonfiguration) geht es jetzt daran, die Filterkonfiguration zu erstellen.

    Erstmal nur auf einem Kanal, das Duplizieren auf den zweiten ist später einfach:

    Code:

    ## DEFAULT GENERAL SETTINGS ##


    float_bits: 64;            # internal floating point precision
    sampling_rate: 48000;      # sampling rate in Hz of audio interfaces
    filter_length: 1024,32;      # length of filters: 32768
    overflow_warnings: true;    # echo warnings to stderr if overflow occurs
    show_progress: true;        # echo filtering progress to stderr
    max_dither_table_size: 0;  # maximum size in bytes of precalculated dither
    allow_poll_mode: false;    # allow use of input poll mode
    modules_path: ".";          # extra path where to find BruteFIR modules
    monitor_rate: false;        # monitor sample rate
    powersave: false;          # pause filtering when input is zero
    lock_memory: true;          # try to lock memory if realtime prio is set

    ## LOGIC ##

    logic: "cli" { port: 3000; };

    ## INPUT, OUTPUT ##                                 

    input "left", "right" {
        device: "jack" {  ports: "alsa_pcm:capture_1", "alsa_pcm:capture_2";};
            sample: "AUTO";
            channels: 2/0,1;
       
    };

    output "llow", "lhigh" {
            device: "jack" { ports: "alsa_pcm:playback_1", "alsa_pcm:playback_2";
    };
            sample: "AUTO";
            channels: 2/0,1;
            delay: 0,0;
    };

    coeff "lowleft" {
            filename: "low.txt";
            format: "text";
    };

    coeff "highleft" {
            filename: "high.txt";
            format: "text";
    };

    filter "ll" {
            inputs: "left";
            to_outputs: "llow";
            coeff: "lowleft";
    };

    filter "lh" {
            inputs: "left";
            to_outputs: "lhigh";
            coeff: "highleft";
    };

    Hier gibt es jetzt ein paar Dinge, die sich geändert haben.

    1. Die Filterlänge ist jetzt auf 32k gewachsen, aber der Filter ist jetzt in 32 Partitionen aufgeteilt. Das ist eine Brutefir-Spezialität, die es erlaubt auch mit langen Filtern recht kurze Latenzen zu erreichen. Das belastet die CPU zwar, aber davon ist genug vorhanden.
    2. Die "coeff"-Statements sind dazugekommen. Hierfür werden 2 Dateien "low.txt" und "high.txt" benötigt.

    Woher kommen nun diese Dateien? Ganz einfach - die werden mit Octave erzeugt:
    Code:

    #!/usr/bin/octave

    hh=fir1(32768,2500/24000);
    hh=hh(1:32768);
    hh=hh(:);
    save -ascii low.txt hh

    hh=fir1(32768, 2500/24000,'high');
    hh=hh(1:32768);
    hh=hh(:);
    save -ascii high.txt hh

    Auf die Details will ich nicht weiter eingehen, dazu nur soviel: Mit der fir() Funktion werden ja ein Hoch- und ein Tiefpass erzeugt, wobei die Samplerate 48kHz beträgt (24000=48k/2).

    Dann kann man das ganze mal wieder starten und messen:
    http://www.diy-hifi-forum.eu/forum/p...pictureid=5402

    Sieht gut aus :-) Mit normalen LC-Filtern wäre das wohl mehr Aufwand gewesen ;-)

    Den Müll beim Hochtöner unterhalb der Trennfrequenz (immerhin noch etwa -30dB Pegel) kann ich noch nicht so recht identifizieren. Ich vermute, dass das am Filter liegt, bin aber nicht sicher, dass es nicht am Messaufbau liegt. Ist aber nicht so wichtig, denn bei den Filtern liegt eh noch Arbeit vor mir.

    Die Filter haben eine extreme Flankensteilheit. Ist das gut? Ein Blick auf die Phasenlage zeigt etwas hässliches:
    http://www.diy-hifi-forum.eu/forum/p...pictureid=5403

    Im Übergangsbereich bei 2.5kHz ist die Phase alles andere als linear :-( Dummerweise stellt ARTA die Diagramme immer mit logarithmischer Skale dar, wodurch man genau hinschauen muss, damit man es bemerkt. So einfach geht das mit den Filtern also auch nicht ;-)

    Also geht es weiter mit dem Filterdesign.

    Allerdings habe ich noch ein anderes Problem. Zum Messen benutze ich (noch) Arta, wofür ich immer Windows booten muss. Und da ich das nicht so sehr mag, suche ich eine Lösung für MacOS. Das Internet verrät: Octave ist auch dafür die perfekte Lösung und mindestens so leistungsfähig wie Arta, wenn man denn weiss, was man tun muss ;-) Fertige Skripte habe ich dazu leider nicht gefunden, also muss ich mich wohl mal in das Thema etwas tiefer einarbeiten. Ziel ist es, alles unter MacOS machen zu können. Das werde ich auch schaffen ;-)

    Ach ja: Mit der aktuellen Filterkonfiguration verbraucht mein Dualcore Atom etwa 10-15% CPU, ohne Gehäuse klappt das auch noch problemlos ohne aktive Lüftung (CPU Temperatur 45 Grad, erlaubt sind 100). Mal schauen, wie sich das weiter entwickelt, denn im Moment sind ja auch nur 2 Kanäle zu berechnen. Im Endstadium sollen es 8 werden.
  • 15.09.2011, 21:10
    The Alchemist
    http://s7.directupload.net/file/d/2648/oxdo5fxe_png.htm

    Hab deine Filter mal schnell über virtuelles verdrahten gemessen.

    Schaut eigentlich gut aus.

    Zum Messen könntest Du falls es dir reicht den RoomEQWizard verwenden, der läuft auch auf MacOs.

    Wie macht man denn einen Bandpass mit Octav, die Scripte, die ich bislang im Inet gefunden habe waren alle viel komplizierter, dien sieht sehr überschaubar aus!

    (Selbst programmieren kann ich so etwas nicht....)

    Gruß

    Elmar
  • 16.09.2011, 06:19
    usul
    Zitat:

    Zitat von The Alchemist Beitrag anzeigen
    http://s7.directupload.net/file/d/2648/oxdo5fxe_png.htm

    Hab deine Filter mal schnell über virtuelles verdrahten gemessen.
    Schaut eigentlich gut aus.

    Das Problem ist halt, dass die Amplitudenmessung (oder auch Simulation) alleine nichts über die Phasenlage aussagt. Und hier
    scheint der Filter wohl ein Problem zu haben.

    Zitat:

    Zum Messen könntest Du falls es dir reicht den RoomEQWizard verwenden, der läuft auch auf MacOs.
    Hatte den gestern mal laufen, aber der passt nicht so richtig. Messungen ohne Raumeinfluss habe ich nicht finden können. Oder hab ich die nicht gefunden?

    Zitat:

    Wie macht man denn einen Bandpass mit Octav, die Scripte, die ich bislang im Inet gefunden habe waren alle viel komplizierter, dien sieht sehr überschaubar aus!
    Ganz einfach:

    hh=fir1(4096,[500/24000 3000/24000]);

    Ich glaube, das Problem der Filter liegt daran, dass Octave ein Filter mit unendlicher Steilheit annähert, was aber nicht gewünscht ist. Um die Steilheit festzulegen müsste man wohl die Funktion fir2() benutzen. Ich werde da mal weiterforschen.

    Ansonsten gab es noch Hinweise MaXO zu benutzen. Diese Filtern scheinen wirklich sehr gut zu sein. Oder aber die EQ-Funktion von Brutefir. Beides habe ich noch nicht selbst probiert, dazu muss jetzt erstmal ein brauchbares Messsetup her.
  • 16.09.2011, 07:50
    The Alchemist
    REW kann den Raumeinfluß nicht ausblenden und wird das wohl auch nie können (was der Name eigentlich schon impliziert :D)

    Ich benutze den REW um die Impulse mit denen ich DRC füttere zu erhalten, da geht es dann vornehmlich um Raumeinflüsse....

    REW ist für mich das einzige unter Linux laufende Messprogramm, ich komme mit einem Rechner zu Messen und Abspielen aus, also keine Kabelfrickelei.

    (Lösungen mit Wine klammere ich mal aus und solche die selbst kompiliert werden müssen und ggf. tieferes Wissen über das Betriebssystem voraussetzen ebenfalls.)

    MaXo hab ich Anfangs auch benutzt, die Latenzen und die Prozessorbelastung ist aber bei diesen Filtern sehr viel höher als bei denen mit Octav erzeugten.


    Heir mal ein Script, bei dem wohl die Filtersteilheit beeinflußt werden kann,selbst hab ich das nicht ausprobiert. (den originalen Thread im diyAudio Forum find ich grad nicht):

    Code:

    n=15;                      # exponent for filter size (16->64k  15->32k ...)
    fsubsonic=35;              # sub-sonic cutoff frequency in Hz
    fxo=1000;                  # main 2-way crossover frequency in Hz
    wxo=10;                    # width of xo region in Hz
    wsubsonic=35;              # width of subsonic cutoff in Hz
    fs=44100;                  # sample rate in Hz

    k=2^n;                    # order of filter, # of coefficients in array
    fn=fs/2;                  # Nyquist frequency

    f = [fxo-(wxo/2), fxo+(wxo/2)];
    m = [1, 0];
    dev = [0.000005, 0.000005];
    [n, w, beta, ftype] = kaiserord(f, m, dev, fn);
    out = fir1(n,w,ftype,kaiser(n+1,beta),'scale');

    l = length(out);
    t = zeros(1,k);
    if k < l
        s = round((l - k) / 2);
        e = l - s - 1;
        for n = s:e
            t(n-s+1) = out(n);
        end
    else
        s = round((k - l) / 2);
        for n = 1:l
            t(n+s) = out(n);
        end
    end
    tc=t(:);
    save -ascii lopassraw.txt tc
    freqz(t,1,[],fn)

    f = [fxo-(wxo/2), fxo+(wxo/2)];
    m = [0, 1];
    dev = [0.000005, 0.000005];
    [n, w, beta, ftype] = kaiserord(f, m, dev, fn);
    out = fir1(n,w,ftype,kaiser(n+1,beta),'scale');

    l = length(out);
    t = zeros(1,k);
    if k < l
        s = round((l - k) / 2);
        e = l - s - 1;
        for n = s:e
            t(n-s+1) = out(n);
        end
    else
        s = round((k - l) / 2);
        for n = 1:l
            t(n+s) = out(n);
        end
    end
    tc=t(:);
    save -ascii hipassraw.txt tc
    freqz(t,1,[],fn)

    f = [fsubsonic-(wsubsonic/2), fsubsonic+(wsubsonic/2)];
    m = [0, 1];
    dev = [0.000005, 0.000005];
    [n, w, beta, ftype] = kaiserord(f, m, dev, fn);
    out = fir1(n,w,ftype,kaiser(n+1,beta),'scale');

    l = length(out);
    t = zeros(1,k);
    if k < l
        s = round((l - k) / 2);
        e = l - s - 1;
        for n = s:e
            t(n-s+1) = out(n);
        end
    else
        s = round((k - l) / 2);
        for n = 1:l
            t(n+s) = out(n);
        end
    end
    tc=t(:);
    save -ascii subsonicraw.txt tc
    freqz(t,1,[],fn)

    Da DRC auch die Phase korrigiert, ist mir die Phasenlage der Filter nicht so wichtig.

    Wie möchtest Du denn später die Entzerrung der Chassis vornehmen?

    Gruß

    Elmar
  • 16.09.2011, 08:28
    The Alchemist
    Nochmal Nachtrag, hier der Link zum diyAudio Forum:

    http://www.diyaudio.com/forums/digit...layers-31.html

    Damit wir uns nicht missverstehen, ich habe deine Filter nicht simuliert, sondern in meine Brutefir eingesetzt und über virtuelle Verkabelung von REW und Jack "gemessen".

    Die Arbeitsweise habe ich mir angewöhnt um materiellen Schaden zu vermeiden; macht man einen blöden Fehler in der .brutefir_config, kommt ganz schnell auch mal lautstarker Müll aus den Ausgängen der Soundkarte, so schnell kann man kaum reagieren und einen Hochtöner kanns dann auch mal Himmeln.

    In diesem Zusammenhang würde ich auch empfehlen die Hochtöner möglichst nicht auf die ersten beiden Ausgänge der Soundkarte (die Hauptausgänge) zu legen. Startet Brutefir evtl. nicht so wie Du es dir vorgestellt hast, liegt hier evtl das Musikgesamtsignal an, was ebenfalls des Hochtöners Abschied bedeuten kann...

    Gruß

    Elmar
  • 16.09.2011, 17:35
    usul
    Die Idee mit dem HT ist gut. Zum Messen hab ich jetzt eine Octave-basierte Lösung gefunden:

    http://sourceforge.net/projects/mataa/

    Ist keine fertige Lösung, aber es ist ein schönes Beispielskript dabei, dass man gut anpassen und erweitern kann. Sieht auf den ersten Blick sehr nett aus.
  • 16.09.2011, 19:23
    The Alchemist
    Nun von Octave versteh ich grad soviel, als das ich ein Script aufrufen kann :D.

    Für mich bleibt der REW in Verbindung mit SOX (zum Umwandeln der Impulse von wav zu pcm) die erste Wahl.

    Sehr grosses Interesse habe ich aber an deinen Scripten für die Filter :)

    Gruß

    Elmar
  • 19.09.2011, 20:56
    usul
    So, mit dem Messen komme ich noch nicht voran, da ich noch Probleme mit der externen Soundkarte unter MacOS habe. Also nochmal zurück zu ARTA.

    Ich habe mal auf die Schnelle das Verhalten meines trivialen Octave-Filters mit einem von MaXO generierten verglichen (Maxo 10. Ordnung). Dabei fällt deutlich das Nachschwingen des Octave-Filters im Stopband auf - zu sehen an den kleinen Nachschwingern bei 4kHz. Im Hochton sehen die auch unterschiedlich aus, aber wenn ich mir gerade den Frequenzgang anschaue, habe ich scheinbar einen mit und einen ohne 2db-Reduktion im Hochton gemessen :( Also den Hochton hier erstmal ignorieren.

    Ich werde auch nochmal schauen, wie das Verhalten der Brutefir-internen Filter aussieht.

    Octave fir()
    http://www.diy-hifi-forum.eu/forum/p...pictureid=5476

    MaXO
    http://www.diy-hifi-forum.eu/forum/p...pictureid=5477
  • 20.09.2011, 07:31
    ferryman
    Hallo Daniel,

    erstmal sollten die Wasserfälle pegeltechnisch vergleichbar sein. Sonst muss es da zu Fehlschlüssen kommen.

    Viele Grüße
    Julian
  • 22.09.2011, 09:47
    slacky
    Was steht denn eigentlich genau in den 2 Dateien "low.txt" und "high.txt" drin? Einfach nur die Filterkoeffizienten?


    Wer Matlab hat kann sich mal das fdatool anschauen:
    http://hada.dyndns.org/fdatool.png
  • 22.09.2011, 09:54
    usul
    Zitat:

    Zitat von slacky Beitrag anzeigen
    Was steht denn eigentlich genau in den 2 Dateien "low.txt" und "high.txt" drin? Einfach nur die Filterkoeffizienten?

    Genau, halt einfach im Textformat.

    Zitat:

    Wer Matlab hat kann sich mal das fdatool anschauen
    Leider ist das nur fürs Filterdesign eines Lautsprechers zu teuer, daher muss ich mit octave leben :-(
    Ich habe aber vor, die fir-Sachen in octave mal genauer anzuschauen.
Powered by vBadvanced CMPS v4.3.0