» über uns

» Registrierung

Liebe Mitleserinnen, Mitleser, Foristinnen und Foristen,

wer sich von Euch in letzter Zeit mit dem Gedanken getragen hat, Mitglied unseres wunderbaren IGDH-Forums zu werden und die vorher an dieser Stelle beschriebene Prozedur dafür auf sich genommen hat, musste oftmals enttäuscht feststellen, dass von unserer Seite keine angemessene Reaktion erfolgte.

Dafür entschuldige ich mich im Namen des Vereins!

Es gibt massive technische Probleme mit der veralteten und mittlerweile sehr wackeligen Foren-Software und die Freischaltung neuer User ist deshalb momentan nicht mit angemessenem administrativem Aufwand möglich.

Wir arbeiten mit Hochdruck daran, das Forum neu aufzusetzen und es sieht alles sehr vielversprechend aus.

Sobald es dies bezüglich Neuigkeiten, respektive einen Zeitplan gibt, lasse ich es Euch hier wissen.

Das wird auch für alle hier schon registrierten User wichtig sein, weil wir dann mit Euch den Umzug auf das neue Forum abstimmen werden.

Wir freuen uns sehr, wenn sich die geneigten Mitleserinnen und Mitleser, die sich bisher vergeblich um eine Freischaltung bemüht haben, nach der Neuaufsetzung abermals ein Herz fassen wollen und wir sie dann im neuen Forum willkommen heißen können.

Herzliche Grüße von Eurem ersten Vorsitzenden der IGDH

Rainer Feile
Seite 1 von 3 1 2 3 LetzteLetzte
Zeige Ergebnis 1 bis 20 von 53
  1. #1
    Gewerblich, HiFiBerry
    Registriert seit
    15.09.2009
    Ort
    Schweiz
    Beiträge
    277

    Standard 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.
    Geändert von usul (15.09.2011 um 19:40 Uhr) Grund: Rechtschreibung

  2. #2
    Gewerblich, HiFiBerry
    Registriert seit
    15.09.2009
    Ort
    Schweiz
    Beiträge
    277

    Standard

    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 :-)

  3. #3
    Benutzer
    Registriert seit
    18.04.2011
    Ort
    Köln
    Beiträge
    63

    Standard

    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

  4. #4
    Gewerblich, HiFiBerry
    Registriert seit
    15.09.2009
    Ort
    Schweiz
    Beiträge
    277

    Standard

    Das aloop-Module sieht spannend aus, werde mir das mal anschauen.

  5. #5
    Gewerblich, HiFiBerry
    Registriert seit
    15.09.2009
    Ort
    Schweiz
    Beiträge
    277

    Standard

    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.

  6. #6
    Benutzer
    Registriert seit
    18.04.2011
    Ort
    Köln
    Beiträge
    63

    Standard

    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

  7. #7
    Gewerblich, HiFiBerry
    Registriert seit
    15.09.2009
    Ort
    Schweiz
    Beiträge
    277

    Standard

    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 :-)

  8. #8
    Gewerblich, HiFiBerry
    Registriert seit
    15.09.2009
    Ort
    Schweiz
    Beiträge
    277

    Standard

    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.

  9. #9
    Benutzer
    Registriert seit
    18.04.2011
    Ort
    Köln
    Beiträge
    63

    Standard

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

  10. #10
    Gewerblich, HiFiBerry
    Registriert seit
    15.09.2009
    Ort
    Schweiz
    Beiträge
    277

    Standard

    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:


    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:


    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.

  11. #11
    Zwangsfalter Benutzerbild von The Alchemist
    Registriert seit
    08.06.2010
    Beiträge
    1.051

    Standard

    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
    La vida es no ponyhof

  12. #12
    Gewerblich, HiFiBerry
    Registriert seit
    15.09.2009
    Ort
    Schweiz
    Beiträge
    277

    Standard

    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.

    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?

    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.

  13. #13
    Zwangsfalter Benutzerbild von The Alchemist
    Registriert seit
    08.06.2010
    Beiträge
    1.051

    Standard

    REW kann den Raumeinfluß nicht ausblenden und wird das wohl auch nie können (was der Name eigentlich schon impliziert )

    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
    La vida es no ponyhof

  14. #14
    Zwangsfalter Benutzerbild von The Alchemist
    Registriert seit
    08.06.2010
    Beiträge
    1.051

    Standard

    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
    La vida es no ponyhof

  15. #15
    Gewerblich, HiFiBerry
    Registriert seit
    15.09.2009
    Ort
    Schweiz
    Beiträge
    277

    Standard

    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. #16
    Zwangsfalter Benutzerbild von The Alchemist
    Registriert seit
    08.06.2010
    Beiträge
    1.051

    Standard

    Nun von Octave versteh ich grad soviel, als das ich ein Script aufrufen kann .

    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
    La vida es no ponyhof

  17. #17
    Gewerblich, HiFiBerry
    Registriert seit
    15.09.2009
    Ort
    Schweiz
    Beiträge
    277

    Standard

    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()


    MaXO

  18. #18
    Techi
    Registriert seit
    19.03.2009
    Ort
    Ulm
    Beiträge
    1.043

    Standard

    Hallo Daniel,

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

    Viele Grüße
    Julian

  19. #19
    Erfahrener Benutzer Benutzerbild von slacky
    Registriert seit
    11.08.2010
    Beiträge
    135

    Standard

    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:
    I'm not insane... my mother had me tested - Sheldon Cooper

  20. #20
    Gewerblich, HiFiBerry
    Registriert seit
    15.09.2009
    Ort
    Schweiz
    Beiträge
    277

    Standard

    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.

    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.

Ähnliche Themen

  1. Weiche von Canton CT-2000
    Von Wen im Forum Weichenfragen
    Antworten: 8
    Letzter Beitrag: 31.05.2012, 20:31
  2. PC für BruteFIR
    Von usul im Forum Weichenfragen
    Antworten: 15
    Letzter Beitrag: 04.09.2011, 15:45
  3. Antworten: 163
    Letzter Beitrag: 27.04.2011, 18:51
  4. Freeware PC-Weiche?
    Von Sleepwalker im Forum Weichenfragen
    Antworten: 25
    Letzter Beitrag: 08.04.2011, 22:51

Forumregeln

  • Es ist dir nicht erlaubt, neue Themen zu verfassen.
  • Es ist dir nicht erlaubt, auf Beiträge zu antworten.
  • Es ist dir nicht erlaubt, Anhänge hochzuladen.
  • Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
  •  
Powered by vBadvanced CMPS v4.3.0