Mein BruteFIR-PC mit M-Audio Delta 1010LT

Antworten
ferryman
Aktiver Hörer
Beiträge: 53
Registriert: 07.05.2010, 22:44

Mein BruteFIR-PC mit M-Audio Delta 1010LT

Beitrag von ferryman »

Hallo zusammen,

Ich versuche mich die letzten Tage, meinen Faltrechner (ein passives Atom-Board mit Delta 1010LT als Soundkarte) mit BruteFIR ans Laufen zu bekommen.

Ziel sei erst einmal die Filterung eines analogen Eingangssignals. Später möchte ich entweder vom Faltrechner abspielen, oder Quelle und Falter digital verbinden.

Im Moment scheitere ich an BruteFIR.

Meine Config:

Code: Alles auswählen

## DEFAULT GENERAL SETTINGS ##

float_bits: 64;             # internal floating point precision
sampling_rate: 44100;       # sampling rate in Hz of audio interfaces
filter_length: 65536;     # length of filters
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: true;      # allow use of input poll mode
modules_path: "/usr/lib/brutefir";   # extra path where to find BruteFIR modules
monitor_rate: true;         # monitor sample rate
powersave: false;            # pause filtering when input is zero
lock_memory: true;          # try to lock memory if realtime prio is set

convolver_config: "/home/guschdl/.brutefir_convolver"; # location of convolver config file

## LOGIC ##

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

## COEFFS ##

coeff "HTL" {
    filename: "/home/guschdl/Acourate/Cor1L48.dbl";
    format: "FLOAT64_LE";
};

coeff "HTR" {
    filename: "/home/guschdl/Acourate/Cor1R48.dbl";
    format: "FLOAT64_LE";
};

coeff "MTL" {
    filename: "/home/guschdl/Acourate/Cor1L48.dbl";
    format: "FLOAT64_LE";
};

coeff "MTR" {
    filename: "/home/guschdl/Acourate/Cor1L48.dbl";
    format: "FLOAT64_LE";
};

coeff "TTL" {
    filename: "/home/guschdl/Acourate/Cor1L48.dbl";
    format: "FLOAT64_LE";
};

coeff "TTR" {
    filename: "/home/guschdl/Acourate/Cor1L48.dbl";
    format: "FLOAT64_LE";
};



## INPUT S/PDIF

input "d_leftin", "d_rightin" {
    device: "alsa" { device: "hw:0"; ignore_xrun: true; };
    sample: "S24_4LE";
    channels: 12/0,1;
};

## OUTPUT S/PDIF

output "HTL_out", "HTR_out", "MTL_out", "MTR_out", "TTL_out", "TTR_out" {
    device: "alsa" { device: "hw:0"; ignore_xrun: true; };
    sample: "S24_4LE";
    channels: 10/0,1,2,3,4,5;
#    delay: 0,0,0,0,0,0;
#    dither: true;
};

## FILTERS ##

filter "HTL_filter" {
    from_inputs: "d_leftin";
    to_outputs: "HTL_out";
#    coeff: -1;
    coeff: "HTL";
};

filter "HTR_filter" {
    from_inputs: "d_rightin";
    to_outputs: "HTR_out";
#    coeff: -1;
    coeff: "HTR";
};

filter "MTL_filter" {
    from_inputs: "d_leftin";
    to_outputs: "MTL_out";
#    coeff: -1;
    coeff: "MTL";
};

filter "MTR_filter" {
    from_inputs: "d_rightin";
    to_outputs: "MTR_out";
#    coeff: -1;
    coeff: "MTR";
};

filter "TTL_filter" {
    from_inputs: "d_leftin";
    to_outputs: "TTL_out";
#    coeff: -1;
    coeff: "TTL";
};

filter "TTR_filter" {
    from_inputs: "d_rightin";
    to_outputs: "TTR_out";
#    coeff: -1;
    coeff: "TTR";
};
Gedacht zur Filterung von 3 Wegen stereo.

Brutefir steigt aber nach einiger Zeit mit

Code: Alles auswählen

BruteFIR v1.0f (August 2005) (c) Anders Torger

Internal resolution is 64 bit floating point.
SSE2 capability detected -- optimisation enabled.
Creating 4 FFTW plans of size 8192...finished.
Warning: could not save wisdom:
could not open "/home/audiovero/.brutefir_convolver" for writing: No such file or directory.
Loading 2 coefficient sets...finished.
Realtime priorities are min = 1, usermax = 2, mid = 3 and max = 4.
Estimated CPU clock rate is 1661 MHz. CPU count is 2.
Filters in process 0: 0
Filters in process 1: 1
Input poll mode activated
Realtime priority 3 set for input process (pid 1382)
Realtime priority 4 set for filter process (pid 1384)
Realtime priority 4 set for filter process (pid 1383)
Realtime priority 3 set for output process (pid 1385)
Fixed I/O-delay is 8192 samples
Audio processing starts now
ALSA I/O: underflow! (write on �� )
ALSA I/O: Could not restart audio: File descriptor in bad state.
I/O module failed to write, aborting. 
aus.

Zum Ersten scheitere ich schon daran, die richtigen Eingangskanäle zu finden - auf die Anzahl 12 kam ich nur durch Ulis Beispielconfig. Zum Zweiten: woher kann ich wissen wie die Kanäle zugeordnet sind? "8,9" sind wohl die digitalen Eingänge, welche brauche ich? Die Delta 1010 hat 10 analoge Eingänge.

Danke schonmal, das war erst der Anfang :?

Viele Grüße,
Julian

Edit: Fehlermeldung und Config passen hier nicht zusammen, die Fehlermeldung gilt für eine 2-Kanal Lösung mit zu kurzer, eingestellter Filterlänge.
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4658
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Julian,

irgendwie scheint da was durcheinander. Schwierig, irgendwelche Fragmente zu analysieren.

Ein genereller Tip für eine schrittweise Inbetriebnahme: erst einmal eine Soundausgabe ans Laufen bekommen. Dazu ein Ausschnitt (Fragment) aus einer Brutefir config:

Code: Alles auswählen

## INPUT, OUTPUT ##

input "left", "right" {
device: "file" { path: "/audiovero/irgendeintrack.wav"; skip: 44;};
sample: "S16_LE";
channels: 2/0,1;
};

output "llow", "rlow", "lmid", "rmid" {
device: "alsa" { device: "hw:0";};
sample: "S24_4LE";
channels: 12/0,1,2,3;
delay: 0,0,0,0;
dither: true;
};
Das Beispiel liest irgendeine wav-Datei, die auf dem Stick drauf ist (der Stick bekommt das Verzeichnis /audiovero). Dabei werden die ersten 44 bytes = wav-Header übersprungen. Das klappt mit simplen wav-Dateien, die keinerlei Tags am Anfang und Dateiende enthalten.

Die Ausgabe erfolgt im Beispiel über 4 Kanäle, man kann auch zwei wählen. Dazu braucht es logischerweise noch Filterdefinitionen und die Sektion, bei der dann die Filterzuordnung zu den Kanälen erfolgt.

Wichtig: bei dem Skript mit der Initialisierung der Soundkarte (wo es denn einige mixer-Kommandos gibt), muss denn auch drin definiert werden, dass die Clock intern mit 44.1 kHz erzeugt wird (also keine Sync auf einen externen digitalen Eingang). Klaro?

So, damit kann man nun jeden Ausgang für sich testen, wenn man will. Und eben die Zuordnung der Kanäle erfassen und begreifen. Vielleicht einfach mit einem Basschassis beginnen. Da geht nix kaputt.

IIRC liegen bei der 1010LT die analogen Kanäle ab 0,1 ... aufwärts. Und bitte einfach mal in ein Manual schauen. Demzufolge hat die 1010LT 10 Eingangs- und Ausgangskanäle. Dabei gibt es 2 analoge AES Eingänge und 6 analoge Cinch-Eingänge. Und 2 digitale spdif-Eingänge. Das macht zusammen 10 Kanäle. Und entsprechend gibt es 8 analoge Cinch-Ausgänge und 2 digitale spdif-Ausgänge. Ebenfalls 10.
Ergo liegen die analogen Kanäle von Nr. 0 ..7 und die digitalen von Nr. 8 + 9.
Dass die Gesamtzahl bei 12 liegt, ist ein Relikt der ALSA-Treiberprogrammierung, Linux lässt grüssen. Grund: in den jeweiligen Karten stecken z.T. identische Soundchips und da kommen Treibervarianten ins Spiel.

Grüsse, Uli
Bild
ferryman
Aktiver Hörer
Beiträge: 53
Registriert: 07.05.2010, 22:44

Beitrag von ferryman »

Hallu Uli,

Hab das mal so gemacht. Also eine beliebige .wav Datei so über Brutefir abgespielt.

Meine jetzige Config:

Code: Alles auswählen

## DEFAULT GENERAL SETTINGS ##

float_bits: 64;             # internal floating point precision
sampling_rate: 44100;       # sampling rate in Hz of audio interfaces
filter_length: 8192;     # length of filters
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: true;      # allow use of input poll mode
modules_path: "/usr/lib/brutefir";   # extra path where to find BruteFIR modules
monitor_rate: true;         # monitor sample rate
powersave: false;            # pause filtering when input is zero
lock_memory: true;          # try to lock memory if realtime prio is set

convolver_config: "/home/guschdl/.brutefir_convolver"; # location of convolver config file

## LOGIC ##

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

## COEFFS ##

coeff "HTL" {
    filename: "/home/guschdl/Acourate/XO1L44.dbl";
    format: "FLOAT64_LE";
};

coeff "HTR" {
    filename: "/home/guschdl/Acourate/XO1R44.dbl";
    format: "FLOAT64_LE";
};

coeff "MTL" {
    filename: "/home/guschdl/Acourate/XO1L44.dbl";
    format: "FLOAT64_LE";
};

coeff "MTR" {
    filename: "/home/guschdl/Acourate/XO1L44.dbl";
    format: "FLOAT64_LE";
};

coeff "TTL" {
    filename: "/home/guschdl/Acourate/XO1L44.dbl";
    format: "FLOAT64_LE";
};

coeff "TTR" {
    filename: "/home/guschdl/Acourate/XO1L44.dbl";
    format: "FLOAT64_LE";
};



## INPUT, OUTPUT ##

input "left", "right" {
device: "file" { path: "/home/guschdl/pirate"; skip: 44;};
sample: "S16_LE";
channels: 2/0,1;
};

output "HTL_out", "HTR_out", "MTL_out", "MTR_out" {
device: "alsa" { device: "hw:0";};
sample: "S24_4LE";
channels: 10/0,1,2,3;
delay: 0,0,0,0;
dither: true;
};

## FILTERS ##

filter "HTL_filter" {
    from_inputs: "left";
    to_outputs: "HTL_out";
#    coeff: -1;
    coeff: "HTL";
};

filter "HTR_filter" {
    from_inputs: "right";
    to_outputs: "HTR_out";
#    coeff: -1;
    coeff: "HTR";
};

filter "MTL_filter" {
    from_inputs: "left";
    to_outputs: "MTL_out";
#    coeff: -1;
    coeff: "MTL";
};

filter "MTR_filter" {
    from_inputs: "right";
    to_outputs: "MTR_out";
#    coeff: -1;
    coeff: "MTR";
};
Wichtig: bei dem Skript mit der Initialisierung der Soundkarte (wo es denn einige mixer-Kommandos gibt), muss denn auch drin definiert werden, dass die Clock intern mit 44.1 kHz erzeugt wird (also keine Sync auf einen externen digitalen Eingang). Klaro?
Wo definiere ich das? Ich hab in der Config die 44.1 kHz ausgewählt.

Brutefir spuckt mir das hier aus:

Code: Alles auswählen

guschdl@convolver:~$ sudo brutefir

BruteFIR v1.0f (August 2005)                                  (c) Anders Torger

Internal resolution is 64 bit floating point.
SSE2 capability detected -- optimisation enabled.
Creating 4 FFTW plans of size 131072...finished.
Loading 6 coefficient sets...finished.
Dither table size is 1764001 bytes.
Generating random numbers...finished.
Realtime priorities are min = 1, usermax = 2, mid = 3 and max = 4.
Estimated CPU clock rate is 1662 MHz. CPU count is 2.
Filters in process 0: 0 2 
Filters in process 1: 1 3 
Realtime priority 3 set for input process (pid 2142)
Realtime priority 4 set for filter process (pid 2143)
Realtime priority 4 set for filter process (pid 2144)
Realtime priority 3 set for output process (pid 2145)
Fixed I/O-delay is 131072 samples
Audio processing starts now
rti: 0.087
peak: 0/0/-26.95 1/0/-29.49 2/0/-26.95 3/0/-29.49 
rti: 0.087
peak: 0/0/-13.49 1/0/-11.73 2/0/-13.49 3/0/-11.73 
rti: 0.087
peak: 0/0/-7.25 1/0/-8.38 2/0/-7.25 3/0/-8.38 
rti: 0.087
peak: 0/0/-7.25 1/0/-7.46 2/0/-7.25 3/0/-7.46 
rti: 0.087
peak: 0/0/-7.23 1/0/-7.11 2/0/-7.23 3/0/-7.11 
rti: 0.087
rti: 0.087
peak: 0/0/-6.59 1/0/-7.11 2/0/-6.59 3/0/-7.11 
rti: 0.087
rti: 0.087
peak: 0/0/-6.11 1/0/-6.54 2/0/-6.11 3/0/-6.54 
rti: 0.087
peak: 0/0/-6.11 1/0/-6.16 2/0/-6.11 3/0/-6.16 
rti: 0.086
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.087
peak: 0/0/-6.11 1/0/-6.12 2/0/-6.11 3/0/-6.12 
rti: 0.087
peak: 0/0/-5.95 1/0/-6.12 2/0/-5.95 3/0/-6.12 
rti: 0.087
rti: 0.087
peak: 0/0/-5.95 1/0/-5.96 2/0/-5.95 3/0/-5.96 
rti: 0.087
peak: 0/0/-5.94 1/0/-5.96 2/0/-5.94 3/0/-5.96 
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.086
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.087
peak: 0/0/-5.79 1/0/-5.96 2/0/-5.79 3/0/-5.96 
rti: 0.087
rti: 0.086
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.086
rti: 0.088
rti: 0.086
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.087
rti: 0.088
rti: 0.087
rti: 0.087
rti: 0.088
rti: 0.087
rti: 0.087
rti: 0.086
rti: 0.088
rti: 0.087
rti: 0.086

Finished!
Aus den analogen Ausgängen kommt kein Ton. Hab diese im Alsamixer hochgedreht.

War wohl nichts.

Irgendeinen Tipp für mich?

Viele Grüße,
Julian
Bild
axxxxx

Beitrag von axxxxx »

Lieber Uli,

da ich mich demnächst auch mit diesem Thema auseinandersetzen werde, sehe ich mich schon mit ähnlichen (wahrscheinlich noch viel banaleren) Problemen konfrontiert. Da wird auch keine Standleitung zu Dir helfen.

Wie schon einmal zart angeregt, wäre ein Seminar/Workshop doch eine wirklich zielführende Maßnahme, um die diversen Newbies in Acourate einzuführen.

Sicherlich gibt es hier auch Sportskameraden, die das ohne Probleme alleine hinbekommen (die sind allerdings schon mit einem Lötkolben in der Hand auf die Welt gekommen... :mrgreen: ), aber so Tiefdecker wie ich werden daran verzweifeln.

Suicide is painless... :shock:

Gruß,
Kai
uli.brueggemann
Aktiver Hersteller
Beiträge: 4658
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Kai,

das eigentliche Problem ist nicht der Lötkolben sondern die Vielfalt. Es scheint ein jeder so sein eigenes System zu basteln. Was dann auch schiefgehen kann.
Es geht schon los bei der Vielfalt der Soundkarten und endet dann z.B. bei diversen Linux-Varianten.

Ich hab mal Beispiele zusammengestellt. Da kann ich dann noch Antworten geben. Schwierig wird es aber, wenn ich das zugrundeliegene System nicht kenne.

Also nochmal ein Hinweis auf eine Bauanleitung. Die bezieht sich auf ein System mit M-Audio 2496. Dazu das Linux-Paket. Und hier gibt es noch ein Delta 1010LT-Paket

Im Prinzip sind die Konfigurationen ähnlich. Nach dem Booten wird das Skript go gestartet. Das wiederum startet ein Skript mit Initialisierung der Soundkarte (low-level amixer Kommandos). Und anschliessend das Brutefir.

Im weiteren hilft dann das Studieren der Skripte (die so simpel wie möglich sind) und etwas gesunde Logik.

:cheers:
Grüsse, Uli
Bild
ferryman
Aktiver Hörer
Beiträge: 53
Registriert: 07.05.2010, 22:44

Beitrag von ferryman »

Naja, ohne dein 1010LT-PAcket wär ich noch nicht soweit, überhaupt eine Config am Laufen zu haben.

Und mit Axel's RME gings doch auch.

An ein paar Punkten scheint mir meine Logik (gesund oder nicht?) hier zu versagen, wie in meinem letzten Beitrag: ich finde keinen Grund, warum die Ausgänge stumm bleiben. Da ist vielleicht die Erfahrung anderer dem Ergebnis zuträglicher als Logik ohne Anhaltspunkte.
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4658
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Julian,

aus Deinem Beispiel entnehme ich

[quote"ferryman"]guschdl@convolver:~$ sudo brutefir[/quote]
Das heisst für mich, dass da irgendein anderes Linux im Spiel ist. Da hab ich nichts dagegen, ausser dass ich natürlich nicht weiss was nun alles dahinter steckt.

IIRC hat mein 1010LT-Paket bei mir funktioniert. Auch mal bei einer Demo bei Holger.

Also kann ich nur soweit helfen, als dass ich empfehle, mal das besagte Paket zu analysieren. Siehe dazu die Skripte im Verzeichnis /Brutefir/Start

Good luck, Uli

PS: wie wird bei Dir die Soundkarte initialisiert? Sind die analogen Ausgänge freigeschaltet, Pegel > 0?
Bild
ferryman
Aktiver Hörer
Beiträge: 53
Registriert: 07.05.2010, 22:44

Beitrag von ferryman »

Hallo Uli,

Das habe ich natürlich vergessen zu erwähnen: wie in unserer Contest-Zusammenstellung setze ich auf Ubuntu. Ich schätze einfach die grafische Oberfläche - auch um eventuell später vom Faltrechner aus abzuspielen.

Offenbar kommt mir das jetzt in die Quere. Dann baue ich mir mal einen Stick mit deinem Packet drauf.
wie wird bei Dir die Soundkarte initialisiert? Sind die analogen Ausgänge freigeschaltet, Pegel > 0?
Freigeschaltet? Ich habe sie im Alsamixer hochgedreht. Woran sehe ich wie die SK initialisiert wird?

Danke bis hierhin für die Hilfe.

Viele Grüße,
Julian
Bild
aktivposten
Aktiver Händler
Beiträge: 150
Registriert: 23.01.2008, 23:29
Wohnort: Lünen
Kontaktdaten:

Beitrag von aktivposten »

Hi Julian,

teste mal das von Uli verlinkte fertige Paket, das sollte auch mit der 1010 direkt funktionieren. Dann die richtigen Ausgänge anzusprechen sollte kein Problem sein.

Gruß
Holger
Bild
ferryman
Aktiver Hörer
Beiträge: 53
Registriert: 07.05.2010, 22:44

Beitrag von ferryman »

Hallo zusammen,

Ich versuche gerade mit dem Packet von Uli einen bootfhigen USB-Stick zu erstellen.

Ich folge dieser Anleitung von Uli:
Download the BruteFIR package from http://www.acourate.com and unzip the package into an empty folder.

Run the format utility HPUSBFW.exe to format the memorystick (e.g. doubleclick in the Explorer). In the following examples it is assumed that Windows recognizes the stick as folder G:\

Do the formatting in FAT format without quick formatting and DOS disk creation.

Copy the file syslinux.exe onto G:\

Run Start – Execute – cmd to create a MSDOS console. Change to drive G:\ by entering
G:\ Enter

Check if you are at the right position by the command
dir Enter
You should see the single file syslinux.exe

Create the Linux boot record by syslinux
Syslinux G:\ Enter

With the dir command you will see that syslinux has created a new file ldlinux.sys.

Close the MSDOS console e.g. by entering the command
Exit Enter

Finally copy all unpacked files of the BruteFIR package onto G:\ . That’s it !!
Schon das funktioniert bei mir nicht:
Run Start – Execute – cmd to create a MSDOS console. Change to drive G:\ by entering
G:\ Enter
Bei mir heißt der USB-Stick E:\.
Die Konsole sagt: Der Befehl "E:\" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

wenn ich allerdings eintippe "dir E:\" wird syslinux.exe angezeigt.

Dann hab ich irgendwie versucht die syslinux.exe auszuführen.

Bild

Der Vorgang ist trotzdem erfolglos.

Wieder ratlos :(

Viele Grüße,
Julian
Bild
aktivposten
Aktiver Händler
Beiträge: 150
Registriert: 23.01.2008, 23:29
Wohnort: Lünen
Kontaktdaten:

Beitrag von aktivposten »

Ich glaube nicht, dass ein 8 GB Stick allein mit SPB Linux noch funktioniert. Hast du keinen 256 MB :)
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4658
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Versuche bitte mal

syslinux e:
Bild
ferryman
Aktiver Hörer
Beiträge: 53
Registriert: 07.05.2010, 22:44

Beitrag von ferryman »

uli.brueggemann hat geschrieben:Versuche bitte mal

syslinux e:
Der Befehl "syslinux" ist entweder falsch geschrieben....
Bild
ferryman
Aktiver Hörer
Beiträge: 53
Registriert: 07.05.2010, 22:44

Beitrag von ferryman »

aktivposten hat geschrieben:Ich glaube nicht, dass ein 8 GB Stick allein mit SPB Linux noch funktioniert. Hast du keinen 256 MB :)
Ich hab einen mit 128MB... aber natürlich nicht hier :roll: unter 1GB kann man das Zeug ja nicht mehr kaufen...
Bild
SirAeleon
Aktiver Hörer
Beiträge: 203
Registriert: 21.01.2008, 13:07

Beitrag von SirAeleon »

Hi Julian,
ferryman hat geschrieben:wenn ich allerdings eintippe "dir E:\" wird syslinux.exe angezeigt.
versuche mal "E:" ohne das abschließende "\". Sollte klappen.

viele Grüße

Chris

Edit: und dann auf E:\>syslinux e:
Bild
Antworten