Faltung von Audiosignalen (Faltungshall)

Sound, Digitalkameras, TV+Video und Spiele.
Antworten
Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Faltung von Audiosignalen (Faltungshall)

Beitrag von smutbert » 20.02.2015 17:29:01

Hallo liebe Leute,

mir ist schon ein paar Mal aufgefallen, dass es hier im Forum viele Musik- und Hifi-begeisterte Mitglieder gibt, was mich zu einem Thema bringt, das mich schon lange interessiert, dem Faltungshall, also der Faltung (dem Convolving) von Audiosignalen.

Verwendet wird das zB für digitale Raumkorrektur, bei der man (ganz grob) zuerst die Antwort des Raumes auf einen Impuls mißt und dann das Audiosignal mit dem Ergebnis faltet, um "Fehler" bei der Wiedergabe zu korrigieren oder abzuschwächen, was aber nach allem was ich bis jetzt darüber gelesen habe, nur dann einen Sinn hat, wenn man sich vorher der Akustik des Raumes und der Aufstellung der Lautsprecher auf herkömmliche Art und Weise annimmt.

Das will ich ob der Komplexizität aber sowieso erst einmal beiseite lassen und mich auf Kopfhörer konzentrieren. Mit den richtigen Raumantworten (Impuls Response Samples oder kurz IR, IRS) sollte es möglich sein, den Eindruck loszuwerden die Musiker spielten im Kopf. Zum Teil erreicht man das bereits mit Crossfeed-Filtern, die den rechten Kanal vorzugsweise frequenzabhängig gedämpft und verzögert dem linken Kanal beimischen und umgekehrt. In Debian gibt es zB Debianbs2b-ladspa, das sich leicht in Alsa einbinden läßt.
Von einem Convolver erwarte ich mir aber etwas mehr — allerdings habe ich viel zu wenig Ahnung vom Thema, weshalb ich diesen Thread eröffne, um zu fragen ob das vielleicht schon jemand gemacht oder genug Interesse daran hat, sich ebenfalls ein bißchen damit auseinanderzusetzen.

Gehört habe ich bis jetzt nur ViPER4Android (wird offensichtlich nicht mehr weiterentwickelt) mit einigen leicht zu findenden IRS. Wahrscheinlich noch lange nicht das Optimum, aber das Ergebnis ist gut genug, dass ich Lust auf mehr habe.

Unter Debian gibt es
  1. Debianir.lv2
  2. Debianjconvolver
  3. Debianbrutefir
wovon das erste, ir.lv2 schon ausscheidet, weil es erstens nicht in Echtzeit arbeitet und ich es in audacity außerdem nicht geschafft habe das Benutzerinterface richtig und komplett darzustellen. jconvolver benötigt jack ist damit auch nicht meine erste Wahl, weil ich das ganze möglichst schlank und einfach halten möchte.

Bleibt brutefir, dessen Konfiguration aber nicht ganz ohne ist. Immerhin habe ich es geschafft eine grundlegende Konfigurationsdatei zu erstellen, mit der ich die Audioausgabe einer beliebigen Anwendung vom Loopback-Device hole, mit einem Filter in brutefir einen Kanal verzögere und das Ergebnis über die echte Soundkarte ausgebe. Bevor ich allerdings noch mehr dazu schreibe, warte ich lieber einmal ab ob genug Interesse besteht — ich glaube nicht, dass ich das allein hinbekomme…

lg smutbert

pferdefreund
Beiträge: 3792
Registriert: 26.02.2009 14:35:56

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von pferdefreund » 20.02.2015 19:29:57

Was die Filter angeht - da hab ich nicht so die Ahnung aber Jack würde ich nicht grundsätzlich ausschließen. Den habe ich inclusive Jackeq (Mischpult mit Equalizer) , Jackrack(Diverse Effekte) usw bei mir im Einsatz und fruchtet hervorragend. Da kann man ganz easy dann auch Levelmeter am Eingang eines Filters und am Ausgang eines Filters einhängen um durch z. B Equalizer keine Übersteuerungen zu produzieren usw usw. und mit Patchage kann man dann
ganz einfach alles per Maus wie mit den Klinkensteckern im wahren Leben ganz einfach verbinden, trennen, umhängen usw.
Ist am Anfang sicherlich erst mal etwas umständlich und gewöhnungsbedürftig aber wenns mal läuft. Ich möchte Jack nicht mehr missen - insbesondere da auch die Latenz für mich als Hobbymusiker sehr wichtig und bei Jack sehr niedrig ist - habe hier mit ner 1.8Ghz-CPU gerade mal nur 5ms und das langt dicke.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von smutbert » 20.02.2015 19:54:21

Dass du jack magst ist mir schon aufgefallen :wink: und ich war auch schon fast soweit deinen Rat in vorauseilendem Gehorsam zu befolgen und brutefir aufzugeben. Es wäre vielleicht insofern leichter als ich mir einbilde, dass man da leichter (vollständige) Beispielkonfigurationen findet.
ich möchte das ganze aber vielleicht auf einem Cubietruck in Alsa in die Ausgabe einschleifen können. Dort gibt es keine grafische Oberfläche und die Latenz spielt beim Musikhören keine Rolle — von daher würde jack keinen Vorteil, aber uU mehr Konfigurationsaufwand für das Einschleifen bedeuten. Vorläufig werde ich es also mit dem nackten Alsa und brutefir versuchen.


Gerade jetzt scheitere ich bei dem Versuch mir zwei einzelne Kanäle (Nummer 90 und 91) aus einer 720-kanaligen WAV-Datei zu extrahieren. ffmpeg liefert mir nur Fehlermeldungen und sox kann scheinbar nur mit maximal 4 Kanälen umgehen… irgendwelche Tipps?
edit: nach der Lektüre der manpage von sox hat es doch geklappt.

Benutzeravatar
paul1234
Beiträge: 1834
Registriert: 28.06.2014 15:41:15

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von paul1234 » 21.02.2015 08:34:08

wenn du denn Raumklang in deinen Kopfhörern nachemfinden willst, musst du ja erstmal entscheiden, von welchem Musiksystem der Klang erzeugt wird, oder? Ich zum Beispiel nutzte als AVR den Denon X200 u.asl Boxen die Dali Ikon 5 MK2. Dort habe ich mittels mitgeliefertem Einstellsystem den Klang auf mein Wohnzimmer abstimmen können. So etwas bräuchtest du für deine Kopfhörer, richtig?
HP 250 G8 SP 2W8X8EA debian bullseye XFCE4 4.16

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von smutbert » 21.02.2015 11:19:48

Ja genau, diesen Teil der Arbeit haben allerdings schon viele vor mir gemacht und das höchst professionell.

ViPER4Android hatte ich zB im Eröffnungspost bereits erwähnt und dafür findet man schon viele IRS, zB [1]. Darüber hinaus veröffentlicht die BBC Messungen von der Universität Salford unter einer Creative Commons Lizenz [2]. Noch mehr Links gibt es in diesem Thread im HIFI-Forum. Die Auswahl ist also riesig und das Vorbereiten eines einzelnen IRS für brutefir lästig:
Von den 720 Spuren einer WAV-Datei — die wurden in ganzen ° Schritten von 0 - 359 aufegenommen — braucht man, wenn ich das ganze nicht komplett falsch verstanden habe, was ich zwar für unwahrscheinlich, aber immerhin möglich halte, für Stereo 4 Spuren:
- einmal die Impulsantwort des linken Lautsprechers zum linken Ohr
- die Impulsantwort des linken Lautsprechers zum rechten Ohr
und dasselbe noch einmal für den rechten Lautsprecher. Zum Testen habe ich die Sache vereinfacht, nehme nur zwei Spuren und gehe davon aus, dass das ganze symmetrisch abläuft - realistischer soll es aber mit allen 4 Spuren sein.

(Surroundsound zum Ansehen von Filmen wäre durchaus auch interessant, aber zuerst muss ich es einmal für Stereo hinbekommen.)

[1] http://forum.xda-developers.com/showthr ... ?t=2765331
[2] http://www.bbc.co.uk/rd/publications/sbsbrir

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von NAB » 21.02.2015 12:21:27

Das Thema finde ich ja sehr spannend, bin aber weitgehend frei von irgendwelchem Fachwissen. Und nachdem ich mir den Beitrag auf Wikipedia durchgelesen habe und den Rechenaufwand abgeschätzt habe ... holla ... und das willst du in Echtzeit haben?

Und ...
smutbert hat geschrieben:Das will ich ob der Komplexizität aber sowieso erst einmal beiseite lassen und mich auf Kopfhörer konzentrieren. Mit den richtigen Raumantworten (Impuls Response Samples oder kurz IR, IRS) sollte es möglich sein, den Eindruck loszuwerden die Musiker spielten im Kopf.
Hier redest du ja vermutlich von einem fertigen Stereo-Mixdown. Da ist die "Position im Raum" ja quasi schon festgelegt und alle Instrumente zu einem Einheitsbrei verschmolzen. Hier hast du nur das "Mittensignal", also das, was auf beiden Kanälen gleich klingt, und die Seitensignale, also die Differenz zum Mittensignal. Durch Verstärkung der Seitensignale könntest du den Stereoeffekt verstärken, also das Signal räumlich auseinanderziehen. Dann würde die Musik quasi nicht mehr mitten in deinem Kopf spielen, sondern rechts und links neben dir. Je nach Qualität des Stereosignals würde das einen mehr oder weniger räumlichen Effekt geben. Wenn du das jetzt noch durch Raumhall anreicherst, hast du zwar einen tollen Halleffekt, aber mir ist unklar, wie du damit die Klangquelle nach vorne oder hinten schieben willst, zumal sich das bei Kopfhörern eh schlecht unterscheiden lässt.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

DeletedUserReAsG

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von DeletedUserReAsG » 21.02.2015 12:32:30

[…] aber mir ist unklar, wie du damit die Klangquelle nach vorne oder hinten schieben willst, zumal sich das bei Kopfhörern eh schlecht unterscheiden lässt.
Durch eben den Hall. Das Ohr bzw. die Verarbeitung der Signale ist genial, anhand der eigentlich™ nicht bewusst wahrnehmbaren Reflektionen des Schalls kann es auch vorne/hinten und oben/unten unterscheiden.

Wobei ich es mir auch rechnerisch aufwendig vorstelle, sowas nachträglich aus einem abgemischten Signal hinzubekommen. Aber Echtzeit war ja nicht gefragt – gibt es da nicht irgendwo ein LADSPA/LV2-Plugin, das solche Sachen nutzen kann? IRs habe ich bislang nur für die Boxensimulation bei Gitarrenkram benutzt. Ist recht eindrucksvoll und geht in Echtzeit, ist aber wohl weit weniger anspruchsvoll als Kram mit 720 Kanälen zur Verortung von Schallquellen.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von smutbert » 21.02.2015 14:12:13

Das LV2-Plugin habe ich im Eröffnungspost erwähnt. Wie gesagt scheitere ich bei dem schon bei der grafischen Oberfläche und ich möchte das schon in Echtzeit machen. Immerhin haben das mit brutefir einige sogar auf dem Raspberry Pi hinbekommen…
Der Rechenaufwand hält sich in Grenzen. Die 720 Kanäle bringen weder bei normalen Stereo noch bei 7.1 Quellen etwas, man benötigt nur doppelt so viele Kanäle wie Lautsprecher simuliert werden sollen, bei 7.1 also 16. Bei meinen bisherigen Versuchen mit Stereomaterial lande ich auf meinem stationären Rechner bei unter 2% CPU-Last.


Wenn die IRS mit einem Kunstkopf aufgenommen werden, sollte es besonders gut funktionieren. Hört euch einfach einmal mit Kopfhörern das hier an:
https://www.youtube.com/watch?v=IUDTlvagjJA
Man findet auf Youtube und anderswo genügend ernsthaftere Kunstkopfaufnahmen, von Klassik bis hin zu Hörspielen. Die sind zwar oft nicht so spektakulär wie dieses Beispiel, aber zeigen, dass es wohl möglich sein sollte mit Kopfhörern den Eindruck zu erzielen man säße in einem akustisch optimierten Raum mit zwei richtig guten Lautsprechern vor sich.


Soll ich — auch auf die Gefahr hin, dass ich dabei viel Unsinn verbrochen habe — beschreiben was ich bis jetzt gemacht habe?

DeletedUserReAsG

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von DeletedUserReAsG » 21.02.2015 14:17:18

Ich denke, da muss man differenzieren: wenn es direkt binaural aufgenommen worden ist, mögen zwei Kanäle reichen – die Informationen sind ja für jede Richtung schon in der Aufnahme enthalten. Will man aber später die virtuelle Position des Hörers verändern, muss man die für alle Raumrichtungen einbauen. So stelle ich mir das zumindest vor. Wie gesagt, ich habe damit bislang allenfalls als Speakersimulation Kontakt gehabt.
Soll ich […] beschreiben was ich bis jetzt gemacht habe?
Gerne.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von smutbert » 22.02.2015 16:10:07

Ok, dann gehe ich das jetzt noch einmal ganz von vorne an, damit ich nichts vergesse. Notwendig sind eigentlich nur Debianbrutefir und Debiansox und das Programm der Wahl für die Musikwiedergabe.

Führt man brutefir ohne weitere Vorbereitung das erste Mal aus wird eine ~/.brutefir_defaults mit Standardeinstellungen erstellt auf deren Basis man die richtige Konfigurationsdatei [deb]~/.brutefir_config[/deb] erstellt. Bevor es an die Konfiguration von brutefir geht, geht es allerdings einmal um das Einrichten der ALSA-Geräte für die Ein- und Ausgabe.

Code: Alles auswählen

# modprobe snd-aloop
Lädt das ALSA-Loopback Modul und

Code: Alles auswählen

# echo snd-aloop >> /etc/modules
sorgt dafür, dass das Modul beim Systemstart automatisch geladen wird, Es stellt eine virtuelle Soundkarte mit je zwei Wiedergabe- und Aufnahmegeräten zur Verfügung. Dabei leitet ALSA die Ausgabe des ersten Wiedergabegeräts automatisch an das zweite Aufnahmegerät weiter und umgekehrt.
Danach sieht die Ausgabe von aplay -l bei mir beispielsweise so aus

Code: Alles auswählen

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Juli [ESI Juli@], device 0: ICE1724 [ICE1724]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Juli [ESI Juli@], device 1: ICE1724 IEC958 [ICE1724 IEC958]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 Digital]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 3: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 3: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
Die Interessanten Geräte sind bei mir
- hw:PCH,0 (das ist der Kopfhörerausgang)
- hw:Loopback,0 → hw:Loopback,1 (Loopback)
Die Audioausgabe soll folgendermaßen laufen
Audioplayer → Loopback → brutefir → ALSA Soundkarte

In Anlehnung an [1] ("Create_a_brutefir_filter") habe ich eine brutefir-Konfiguration erstellt mit der sich testen läßt, ob die Konfiguration prinizpiell funktioniert:

Code: Alles auswählen

float_bits: 32;
sampling_rate: 44100;
filter_length: 16384,2;
show_progress: true;
max_dither_table_size: 0;
allow_poll_mode: false;
modules_path: ".";
monitor_rate: false;
powersave: true;
lock_memory: true;


input "left_in", "right_in" {
	device: "alsa" { device: "hw:Loopback,1";};
	sample: "S16_LE";
	channels: 2/0,1;
	delay: 0,0;
	maxdelay: -1;
	subdelay: 0,0;
	mute: false,false;
};

output "left_out", "right_out" {
	device: "alsa" { device: "hw:PCH,0";};
	sample: "S16_LE";
	channels: 2/0,1;
	delay: 0,0;
	maxdelay: -1;
	subdelay: 0,0;
	mute: false,false;
	dither: true;
};

filter "left" {
	from_inputs: "left_in";
	to_outputs: "left_out";
	process: -1;
	coeff: -1;
	delay: 1;
	crossfade: false;
};

filter "right" {
	from_inputs: "right_in";
	to_outputs: "right_out";
	process: -1;
	coeff: -1;
	delay: 0;
	crossfade: false;
};
startet man nun brutefir und gibt etwas auf "hw:Loopback,0" wieder, so wird es mit einer kleinen Verzögerung im linken Kanal an die Soundkarte weitergeleitet.
Die richtigen Filter hebe ich mir für einen der weiteren Posts auf, weil mir der Browser schon zwei Mal abgestürzt ist während ich diesen Beitrag hier schreiben wollte…

[1] http://wiki.slimdevices.com/index.php/B ... fir_filter

Benutzeravatar
ottonormal
Beiträge: 3404
Registriert: 20.01.2014 22:25:29

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von ottonormal » 23.02.2015 17:56:47

Hallo,

interessantes Thema. Habe bis vor einigen Jahren auch einiges an Musik zusammengebastelt, allerdings
ausschließlich unter Windows. Meine Versuche mit Linux diesbezüglich sind aber regelmäßig gescheitert,
was aber sicher meinen beschränkten Kenntnissen zuzuschreiben ist.
Das ist auch einer der Hauptgründe dafür, dass ich mich von Windows immer noch nicht ganz lossagen
kann.
Ich habe aber auch unter wine in Debian einige Windows-Musikprogramme laufen. Unter anderen WaveLab
Essential (abgespeckte Version von WaveLab 4, funktioniert noch ohne Dongle) und Tracktion 3 (Sequenzer).
WaveLab läuft unter wine hervorragend, Tracktion mit ganz kleinen Einschränkungen, für meine Bedürfnisse
aber ausreichend.
Dazu auch div. VST-Plugins, und dabei auch den kostenlosen Faltungshall SIR-1. IRs dafür (WAVs) gibt es ja
massenhaft im Netz. Das läuft natürlich auch in Echtzeit. Latenzzeiten sind dabei für mich ziemlich unwichtig.

Diese Antwort wird Dein Problem sicher nicht lösen, ich wollte damit nur andeuten, vielleicht auch mal
wine und entsprechene Möglichkeiten in Erwägung zu ziehen.

Gruß, ottonormal

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von smutbert » 23.02.2015 19:25:00

Unter Windows würde ich wahrscheinlich foobar und das Plugin "Impulse Response Convolver" verwenden, aber das widerstrebt mir weil ich den Eindruck habe, dass in Debian mit brutefir ein sehr leistungsfähiges Stück Software zur Verfügung steht, das man einfach nicht brach liegen lassen darf :wink:
niemand hat geschrieben:Ich denke, da muss man differenzieren: wenn es direkt binaural aufgenommen worden ist, mögen zwei Kanäle reichen – die Informationen sind ja für jede Richtung schon in der Aufnahme enthalten. Will man aber später die virtuelle Position des Hörers verändern, muss man die für alle Raumrichtungen einbauen. So stelle ich mir das zumindest vor. Wie gesagt, ich habe damit bislang allenfalls als Speakersimulation Kontakt gehabt.
Es geht hier ja vorerst nur um den Versuch das Hörerlebnis einer Stereo- (oder später vielleicht auch 7.1-)Anlage über Kopfhörer zu reproduzieren und dafür benötigt man pro Ohr für jeden zu simulierenden Lautsprecher ein IR Sample, also doppelt so viele IR Samples wie zu nachzubildende Lautsprecher.

Ich bereite gerade den nächsten Beitrag vor, in dem endlich ein hoffentlich (!) sinnvoller Filter in die brutefir-Konfiguration eingetragen wird…

Benutzeravatar
Ghost in the Linux Shell
Beiträge: 256
Registriert: 28.06.2007 17:20:05

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von Ghost in the Linux Shell » 23.02.2015 20:31:20

Hi,

Welchen Vorteil würde mir der zusätzliche Hall bringen ?

Hab Bluetooth 5.1 Kopfhörer am AV Receiver drann für spät Nachts, bin soweit auch zufrieden doch echtes DTS und 5.1 über XBMC und normale Lautsprecher sind von der Ortbarkeit besser als die 5.1 Kopfhörer, der Bass vom Kopfhörer geht soweit ok, nur bei der Räumlichen Ortung der Schallquellen kann man gegen ein echtes 5.1 harmonisches System nicht so ganz an. Der Klang ist beim AV Receiver schon solide und klingt auch bei Musik sehr gut filigran und hat mehr als genug Bass Tiefgang, mit einem soliden RCF 8003 ist da noch was nach oben hin möglich, Den Bass hab ich für Musik eher gutmütig eingestellt damit die Musik nicht im Bass ertrinkt, bei Blockbustern gebe ich schon etwas mehr Gas, damit sich auch was rührt. War mit den üblichen Spielzeug Woofern eher unzufrieden weil die zuwenig druckvollen Punch hatten, der RCF 8003 ist ein echtes Monster und hat mehr als genug davon, läuft auf 35% möglicher Leistung.

mfg
Ghost

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von smutbert » 24.02.2015 12:28:33

Der Hall, der ja bei IRS, die mit Kunstkopf augenommen wurden auch Reflexionen an Gesicht, Ohren,… beinhaltet, ermöglicht überhaupt erst die Ortung, wie es niemand bereits geschrieben hat.
Ganz interessant finde ich in dem Zusammenhang auch, dass bei Kunstkopfaufnahmen die Ortung von links, rechts, hinten, oben, unten,… im Allgemeinen sehr gut funktioniert nur geradeaus von vorne nicht, was angeblich daran liegt, dass dafür die Gesichtszüge und vor allem die Nasen verantwortlich sind, die sich bei den Menschen sehr stark unterscheiden…

keine Ahnugn was deine 5.1 Kopfhörer genau machen, aber Dolby Headphone oder CMSS-3D versuchen auf ganz ähnliche Art und Weise Surroundsound für Kopfhörer zugänglich zu machen.
Ich habe nur erstens kein Gerät, dass so eine Funktion anbietet und zweitens findet man im Internet IRS auch entzerrt für bestimmte Kopfhörer und gerade mein Modell ist da scheinbar recht beliebt und daher leicht zu finden. Ich gehe davon aus, dass man so möglicherweise sogar bessere Resultate erzielen kann, als mit Fertiglösungen.

Das Hören mit Kopfhörern ist natürlich trotzdem etwas komplett anderes und den Klang einer normalen Stereoanlage in einem bestimmten Raum erwartet man natürlich auch nicht, wenn man einen Kopfhörer aufsetzt, weshalb der erste Eindruck auf jeden Fall überraschend ist. Dazu kommt noch, dass ich nicht weiß, was ich alles falsch gemacht haben könnte.

Das ist mir auch erst jetzt aufgefallen:
NAB hat geschrieben:[…]
Hier redest du ja vermutlich von einem fertigen Stereo-Mixdown. Da ist die "Position im Raum" ja quasi schon festgelegt und alle Instrumente zu einem Einheitsbrei verschmolzen. Hier hast du nur das "Mittensignal", also das, was auf beiden Kanälen gleich klingt, und die Seitensignale, also die Differenz zum Mittensignal. Durch Verstärkung der Seitensignale könntest du den Stereoeffekt verstärken, also das Signal räumlich auseinanderziehen. Dann würde die Musik quasi nicht mehr mitten in deinem Kopf spielen, sondern rechts und links neben dir.[…]
Das was du damit meinst, also die Stereobasisbreite (die Differenz von links und rechts zum „gemeinsamen Mittensignal“, wenn ich das so nennen darf) künstlich zu vergrößern, würde das Problem sogar verschärfen. Das liegt daran, dass der Teil des linken Lautsprechers, der es (leicht verzögert) zum rechten Ohr schafft beim Hören mit Kopfhörern komplett fehlt, genauso wie umgekehrt der Teil des rechten Lautsprechers, der es zum linken Ohr schafft.
Zusätzlich zum Eindruck, es spiele alles im Kopf kommt dann noch ein merkwürdiges Druckgefühl, also ob ein Ohr zugefallen wäre, sobald man irgendeinen Teil des Signals nur mit einem Ohr hört.
Wie gesagt, entschärfen kann man das bereits mit Crossfeedfiltern, die frequenzabhängig gedämpft und verzögert, einen Teil des linken Kanals dem rechten Kanal zumischen und umgekehrt.

Benutzeravatar
Revod
Beiträge: 3788
Registriert: 20.06.2011 15:04:29
Lizenz eigener Beiträge: MIT Lizenz

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von Revod » 24.02.2015 16:25:32

Hi smutbert

Ich nehme an die Seite kennst Du

http://jackaudio.org/applications/

Alleine aus den Screenshots konnte ich alle die Möglichkeiten über Spuren, Filter von Out- und Input Manipulation erkennen, Ich denke da muss man einen wahres Studium absolvieren.

Muss für mich sagen, das Jack Audio Prinzip habe ich minimal verstanden.Was ich so an Möglichkeiten sehe a) übersteigt total mein Wissen (Bin kein Soundtechniker und müsste für alle die Begriffe mich lehren) und b) ich vermute es sind Tools vorhanden, womit man alles was über Sound braucht sich einrichten kann, u. a. Spuren, Raumeffekte und so weiter.
Systemd und PulseAudio, hmmm, nein danke.

Benutzeravatar
Ghost in the Linux Shell
Beiträge: 256
Registriert: 28.06.2007 17:20:05

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von Ghost in the Linux Shell » 24.02.2015 16:51:54

Hi smubert,

ein sehr interessantes Thema mit dem man abolute Raumkorrekturen umsetzen kann, in deinem Fall einem Kopfhörer, die nahezu perfekte Raumakkustik verpassen. Tolles Thema, werd ich weiter verfolgen was nützliches bei raus kommt.

Leider ist es nicht so ganz zu 5.1 Bitstreaming kompatibel, mein Nachts Ohrhörer tut ganz gut nur eine genaue 5.1 Ortung braucht Platz, diesen gibt es im Kopfhörer leider nicht, so breitet sich der Schall darin anders aus als in einem großen Raum (Raumakkustik). Klar kann man da mit Zeiten und Verzögerungen rangehen, aber wenn man etwas lauter hört wie "Zimmerlautstärke", z.B. leise Stimmen und sehr laute Effekte, meistens so abgemischt bei DTS. Dann ist es so das man das begrenzte Luftvolumen und den begrenzten Raum im Kopfhörer durch schlechte Ortung weil der Schall überall im Kopfhörer reflektiert wird und auch die Schallquellen sich mischen und dann eher schwer zu trennen sind. Hört man sehr leise tritt dieser Effekt fast gar nicht auf, nur fetzt das dann nicht wenn man unter den Kopfhörermuscheln die Ohren spitzen muss um auch leises mitzubekommen. Mit meinem 5.1 System lassen sich alle Kanäle klar trennen auch bei sehr großer Lautstärke, weil der Schall den Platz hat sich auszubreiten und auf meiner Hörposition auch nirgendwo reflektiert wird.

mfg
Ghost

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von smutbert » 25.02.2015 10:58:12

Das Schreiben des nächsten Beitrags mit einer Anleitung ist etwas schwieriger als gedacht, daher bitte ich noch um etwas Geduld. (Es ist überraschend schwierig sich nicht selbst zu widersprechen)

@Revod
jack kenne ich. Hat ja auch Pferdefreund bereits vorgeschlagen. Da könnte man auch bequem einen convolver einbauen, aber eine grafische Oberfläche wäre mir nur im Weg und jack ohne GUI stelle ich mir auch nicht allzu verlockend vor.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von smutbert » 25.02.2015 16:34:44

Es gibt sehr viele IRS. Am besten geeignet sind offensichtlich BRIR (binaural room impulse response) Samples, die auch die Einflüsse des Raumes berücksichtigen. Als erstes habe ich es mit BRIR-Dateien von der BBC [1] versucht, die man sich unter einer Creative Commons Lizenz hier [2] herunterladen können sollte, was der Server aber nicht zu erlauben scheint. Einen Teil der Dateien gibt es aber außerdem auf github [3].


Ich habe mich dann aber doch lieber auf die Vorarbeit von "musicreo" im HIFI-Forum verlassen. Den dortigen Thread habe ich ja schon verlinkt [4]. Im vorläufig letzten Beitrag (#43) wird dort ein ZIP-Archiv angeboten. Neben musicreos Anleitung für Windows befindet sich darin ein weiteres zip-Archiv mit den vorbereiteten IRS und zwar BinauralAudio.zip.
Die darin enthaltenen IRS stehen unter CC BY-SA 3.0 [6] und wurden ursprünglich von der Fachhochschule Köln [5] veröffentlicht. musicreo aus dem HIFI-Forum hat aus dem vorliegenden Matlab-Format WAV-Dateien erstellt.

Für diese Anleitung habe ich mir die Datei

Code: Alles auswählen

wav impulse responsefiles/48 Khz/7_1/AKG-K701/CR1_KU_ROTM_AKG-K701_(L_R_C_LFE_LS_RS_LB_RB)_396ms.wav
herausgepickt. Sie enthält alles, was für 7.1 notwendig ist, hat also immerhin 16 Spuren, entzerrt für einen bestimmten Kopfhörer, den AKG 701, es sollte aber auch mit anderen offenen Kopfhörern sehr gut funktionieren. Für Stereo benötigen wir nur den vorderen linken und rechten Lautsprecher, das wären die ersten 4 Kanäle.
Also kopieren wir die Datei in einen neuen Ordner ~/brutefir und erstellen darin aus diesen Kanälen im folgenden die notwendigen einkanaligeen raw/pcm-Dateien mit 44100 Hz Samplerate:

Code: Alles auswählen

$ sox CR1_KU_ROTM_AKG-K701_\(L_R_C_LFE_LS_RS_LB_RB\)_396ms.wav -t raw left2left.pcm rate -v 44100 remix 1
$ sox CR1_KU_ROTM_AKG-K701_\(L_R_C_LFE_LS_RS_LB_RB\)_396ms.wav -t raw left2right.pcm rate -v 44100 remix 2
$ sox CR1_KU_ROTM_AKG-K701_\(L_R_C_LFE_LS_RS_LB_RB\)_396ms.wav -t raw right2left.pcm rate -v 44100 remix 3
$ sox CR1_KU_ROTM_AKG-K701_\(L_R_C_LFE_LS_RS_LB_RB\)_396ms.wav -t raw right2right.pcm rate -v 44100 remix 4
Die entstandenen pcm-Dateien haben keinen Header mehr, der brutefir ohnehin nur im Weg wäre. Das Format der Daten ist Sampleformat: 16 bit Little Endian, Samplerate: 44100 Hz und ein Kanal (mono).

Nun müssen wir brutefir anweisen, diese Dateien auch zum Convolving zu verwenden, dazu verwende ich folgende ~/.brutefir_config

Code: Alles auswählen

float_bits: 32;
sampling_rate: 44100;
filter_length: 65536;
show_progress: true;
allow_poll_mode: false;
modules_path: ".";
monitor_rate: false;
powersave: true;
lock_memory: true;
safety_limit: -0.01;


input "left_in", "right_in" {
	device: "alsa" { device: "hw:Loopback,1";};
	sample: "S16_LE";
	channels: 2/0,1;
	delay: 0,0;
	maxdelay: -1;
	subdelay: 0,0;
	mute: false,false;
};

output "left_out", "right_out" {
	device: "alsa" { device: "hw:PCH,0";};
	sample: "S32_LE";
	channels: 2/0,1;
	delay: 0,0;
	maxdelay: -1;
	subdelay: 0,0;
	mute: false,false;
	dither: true;
};


coeff "left_to_left" {
	filename: "/home/smutbert/brutefir/left2left.pcm";
	format: "S16_LE";
	attenuation: 0.0;
	blocks: -1;
	shared_mem: false;
};

coeff "left_to_right" {
	filename: "/home/smutbert/brutefir/left2right.pcm";
	format: "S16_LE";
	attenuation: 0.0;
	blocks: -1;
	skip: 44;
	shared_mem: false;
};

coeff "right_to_left" {
	filename: "/home/smutbert/brutefir/right2left.pcm";
	format: "S16_LE";
	attenuation: 0.0;
	blocks: -1;
	skip: 0;
	shared_mem: false;
};

coeff "right_to_right" {
	filename: "/home/smutbert/brutefir/right2right.pcm";
	format: "S16_LE";
	attenuation: 0.0;
	blocks: -1;
	skip: 0;
	shared_mem: false;
};


filter "left_to_left" {
	from_inputs: "left_in"/15;
	to_outputs: "left_out";
	process: -1;
	coeff: "left_to_left";
	delay: 0;
	crossfade: false;
};

filter "left_to_right" {
	from_inputs: "left_in"/15;
	to_outputs: "right_out";
	process: -1;
	coeff: "left_to_right";
	delay: 0;
	crossfade: false;
};

filter "right_to_left" {
	from_inputs: "right_in"/15;
	to_outputs: "left_out";
	process: -1;
	coeff: "right_to_left";
	delay: 0;
	crossfade: false;
};

filter "right_to_right" {
	from_inputs: "right_in"/15;
	to_outputs: "right_out";
	process: -1;
	coeff: "right_to_right";
	delay: 0;
	crossfade: false;
};
Durch das Convolving werden die Signale ja quasi zT über die Zeit und die Kanäle hinweg addiert, der Pegel kann also durch das Convolving durchaus merkbar größer werden. Deshalb wird das Signal in den Filtern beim Eingang um 15 dB verringert (attenuation=Dämpfung). Trotzdem gibt es noch eine Sicherheitsmaßnahme, das safety_limit am Anfang der Konfigurationsdatei: brutefir bricht ab, sobald der Ausgangspegel über -0,01 dB hinausgeht.
Nachdem brutefir ua auch für aktive Lautsprecherweichen verwendet wird, dient das dem Schutz der Hardware. Ich habe auch schon Berichte von jemandem gelesen, der sich mit brutefir, vermutlich aufgrund eines Bugs, seine Hochtöner „gegrillt“ hat…

Die ALSA-Gerätebezeichnung des Ausgabegerätes und die Pfade zu dem pcm-Dateien müssen natürlich den Gegebenheiten angepasst werden, aber danach muss man nur noch brutefir starten.
Jede Audioausgabe an das Loopbackgerät "hw:Loopback,0" oder um etwas mehr Freiheit bei der Wahl der Formate zu haben "plughw:Loopback,0" wird dann von brutefir verarbeitet und am Ausgabegerät ausgegeben. Dabei gibt brutefir laufend Meldungen aus und informiert auch darüber, wenn gerade keine Audioausgabe läuft, mit der Meldung

Code: Alles auswählen

rti: not full processing - no rti update
Würde mich freuen, wenn das sonst noch jemand ausprobieren möchte (und vielleicht hier davon berichtet).


[1] http://www.bbc.co.uk/rd/publications/sbsbrir
[2] http://data.bbcarp.org.uk/sbsbrir/wav
[3] https://github.com/ssr-scenes/bbcrd/tre ... bsbrir/irs
[4] http://www.hifi-forum.de/index.php?acti ... thread=654
[5] http://www.audiogroup.web.fh-koeln.de/
[6] http://creativecommons.org/licenses/by-sa/3.0/legalcode

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von smutbert » 28.02.2015 14:08:54

Niemand?

SONIX
Beiträge: 1
Registriert: 04.05.2015 06:52:11

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von SONIX » 04.05.2015 07:25:24

Hallo,

ich benutze auch schon seit einiger Zeit BRUTEFIR zum Crossovering und zur Raumakustikentzerrung . Ich habe mit rephase als txt. 32bit minimal phase mono-filter erstellt mit 48kHz und 1024 tapes, die mein Frequenzbereich in HT 31,5-20,0 KHz, MT 220-31,5 KHz und TT 16-220Hz unterteilen, also 3-wegesystem. Damit habe ich 6 Filter bei Brutefir eingerichtet, die auf die 3 txt.-Dateien zugreifen. Die 2 Raumentzerrungs-Filter eins für Rechts und eins für Links habe ich in 6-fache Ausführung 3 gleiche für Rechts und 3 gleiche für Links vor den crossovering-Filter gestellt und miteinander verkettet. Die Einmessung des Raumes habe ich mit REW gemacht, als wav. exportiert, mit porc linearisiert, die wav.-s in PCMs mit SOX umgewandelt und die PCM-s an die Raumentzerrungsfilter bei brutefir angebunden. Brutefir arbeitet mit 48KHz und 64-bit Berechnungstiefe, filter_length 128,64.
Ich benutze in einem PC i7 4 x 4,0GHz eine RME 9636 Hammerfall, mein System mit oben beschriebenen Filter hat Latenz von etwa 14-15 ms, also sogar für Recording geeignet.

Gruß

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Faltung von Audiosignalen (Faltungshall)

Beitrag von smutbert » 01.06.2015 12:15:51

Habe deinen Beitrag erst jetzt gesehen. Interessant, aber - ich glaube ich habe es eh schon geschrieben - mir ist die Raumkorrektur, also eigentlich das Messen, (momentan/noch?) zu aufwändig. Ich bin froh, dass die Geschichte mit den Kopfhörern _einigermaßen_ funktioniert. Da verwende ich brutefir eigentlich nur gemeinsam mit mpd.

Einigermaßen weil erstens
smutbert hat geschrieben:[…] eine Sicherheitsmaßnahme, das safety_limit am Anfang der Konfigurationsdatei: brutefir bricht ab, sobald der Ausgangspegel über -0,01 dB hinausgeht.
Nachdem brutefir ua auch für aktive Lautsprecherweichen verwendet wird, dient das dem Schutz der Hardware. Ich habe auch schon Berichte von jemandem gelesen, der sich mit brutefir, vermutlich aufgrund eines Bugs, seine Hochtöner „gegrillt“ hat
dieser Bug auch bei mir einmal zugeschlagen hat. Beim einigermaßen laut Musik hören, wäre das Auftreten diese Bugs wirklich sehr unangenehm. Es ist mir aber nur passiert, als ich die Audioausgabe von mpd nach brutefir „gepiped“ habe.
So wie ich es mit dem Loopbackdevice beschrieben habe, ist es noch nie aufgetreten.

Das zweite was Schwierigkeiten macht ist das Zu/Wegschalten von brutefir, dabei würden brutefir und mpd uU gleichzeitig auf das Alsagerät zugreifen wollen, was natürlich nicht funktioniert, es sei denn ich würde softwaremixing/dmix aktivieren, aber das will ich eigentlich nicht.



Gerade bin ich außerdem im eingangs verlinkten Thread im hifi-forum auf ein recht interessantes pulseaudio-Modul hingewiesen worden: module-virtual-surround-sink. Das ist, wie der Name schon naheliegt, darauf spezialisiert Surroundsound über Kopfhörer auszugeben. Ein paar Hinweise wie man das zum Laufen bekommt findet man hier (ich habe es selbst noch gar nicht versucht)
https://www.reddit.com/r/linux_gaming/c ... ulseaudio/

Antworten