Wie IIR Filter in den Pulse / eine Inverse falten?

ESM
Aktiver Hörer
Beiträge: 406
Registriert: 21.12.2012, 22:57
Wohnort: Detmold

Wie IIR Filter in den Pulse / eine Inverse falten?

Beitrag von ESM »

Hallo,

kann mir jemand auf die Sprünge helfen, wie ich in eine Inverse einen IIR Filter falten kann? Ich möchte zu reinen Testzwecken eine asymetrische Inverse auf einem Kanal erzeugen und daraus dann Filter generieren. Der andere Kanal (die Inverse) soll unverändert bleiben.
Ich folgendes gedacht und gemacht:
- Macro 1 nach belieben
- Macro 2 nach belieben
- Macros 3 normal ausführen
--> Ergebnis sind die Inversen für Rechts und Links
- dann Generate --> IIR --> Peaking EQ, z.B. 7000 Hz Q5 -3 dB
- dann TD Connvolution Inverse Links * pEQ = Inverse Links
- dann Speichern als Pulse48Linv, damit das Makro 4 die modifizierte Inverse findet und nimmt --> Ist das eigentlich wirklich erforderlich, oder spielt der Name keine Rolle, sondern nur die Curve Position?
- dann Macro 4, in der Hoffnung, dass es funktionert

--> tatsächlich quittiert das Macro den Dienst mit der Meldung, dass die Datei nicht 65536 Samples hat. Welcher Schritt fehlt?

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

Beitrag von uli.brueggemann »

ESM hat geschrieben: --> tatsächlich quittiert das Macro den Dienst mit der Meldung, dass die Datei nicht 65536 Samples hat. Welcher Schritt fehlt?
Erwin,

beim Falten zweier Signale der Länge i und n ergibt sich ein Ergebnis der Länge i+n-1.
Beim Rechnen mit Signalen müssen dann aber wiederum welche auch gleich lang sein, bspw. Addition.

Insofern wird in den Macros mit der Basislänge 65536 gerechnet und das wird auch überwacht.
Das Zaubermittel zum Kürzen einer Länge heisst TD-Functions - CutNWindow.

Grüsse
Uli
Bild
ESM
Aktiver Hörer
Beiträge: 406
Registriert: 21.12.2012, 22:57
Wohnort: Detmold

Beitrag von ESM »

Hi Uli,

danke fürs Feedback.

Das generiert eine neue Frage: Warum hab ich es nun mit verschiedenen "Längen" zu tun?

Mit dem Aufruf von Cut'N Window bin ich dann schon mal einen (halben) Schritt weiter. Die Funktion hab ich gefunden. ;-)

Bild

Sie erwartet ca. 10 Eingabeparameter. Einer ist mir klar (Result Curve). Oben steht, dass die ausgewählte Curve eine Länge von 131072 hat. Sie ist also doppelt so lang. Einige Werte stehen bereits in den Eigabefeldern. Länge 65536 or Länge 65536 sagt mir sinngemäß nichts. Was muss da rein? Was bedeuten die weiteren, kryptischen Bezeichner? Starte ich die Cut'NWindow-Funktion mit den default-Werten, kommt ein FM: TVec.Length can not be smaller than zero!

Was macht die Funktion grundsätzlich? Ein Anwender möchte ein Prgramm ja ergebnisorientiert benutzen, weniger interessiert der programminterne, mathematische Aspekt. Das Prgramm weiß doch eigentlich, wie lang die Filter sein müssten.

Nach dem Motto: Ich will eine Amplitude an einer bestimmten Frequenz in einer bestimmten Breite um den Pegel x senken.


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

Beitrag von uli.brueggemann »

Erwin,

die Funktion ist relativ universell, man braucht also etwas Grundkenntnisse.
Ich mach was im Kompendium zu CutNWindow.

Ich hab die letzten Tage intensivst mit AcourateConvolver gewerkelt.
Lass mich bitte etwas verschnaufen für heute.

Grüse
Uli
Bild
ESM
Aktiver Hörer
Beiträge: 406
Registriert: 21.12.2012, 22:57
Wohnort: Detmold

Beitrag von ESM »

Hi Uli,

die Verschaufpause sei dir gegönnt. :-)

Die Idee mit der Vermittlung von Grundkenntnissen finde ich übrigens sehr gut. Die Problemstellungen sind oft immer sehr speziell, wenn man das Prgramm in seiner Grundfunktionalität kennt, muss man die Grundkenntnisse nicht ständig wiederholen und kann sich auf die Lösung der Problemstellung konzentieren.

Gruß Erwin
Bild
ESM
Aktiver Hörer
Beiträge: 406
Registriert: 21.12.2012, 22:57
Wohnort: Detmold

Beitrag von ESM »

Hi Uli,

Not macht bekanntlich erfinderisch. :wink: Nein, es war jetzt nicht so eilig. Aber ich bin auf eine Idee gekommen. Ich habe es auf andere Weise hinbekommen. Und zwar recht simpel mit den Makros 2 und 3

1. Makro 1 wie immer
2. Makro 2: man nutz in Makro 1 den Target designer wählt sein Standard Target und setzt den speziellen Filter mit Peak &Dip, das Target speichert man 2x ab. einmal mit und einmal ohne den Filter
2. Makro 3: man wählt hier die Pulsedatei (links) und die Einstellung Mono und generiert die Inverse über das Target 1 (enthält Peak&Dip Filter)
3. Makro 3: man wählt hier die Pulsedatei (rechts) und die Einstellung Mono und generiert die Inverse über das Target 2 (enthält keinenPeak&Dip Filter)
4. Die mit separaten Targets generierten Inversen sind nun im Workspace gespeichert. Pulse48Linv.dbl läd man nun in Curve 4 und Pulse48Rinv.dbl in Curve 5
5. nun kann man mit Makro 4, 5 fortfahren.

Cut'N Window benötigt man so nicht, dass erledigt Acourate bei dieser Methode automatisch mit.

Gruß Erwin
Bild
ESM
Aktiver Hörer
Beiträge: 406
Registriert: 21.12.2012, 22:57
Wohnort: Detmold

Beitrag von ESM »

Hi Uli,

danke, deinen Beitrag zu Cut'N Window hab ich einige Male gelesen. Leider ist mir nicht klar, welche der vielen genannten Eistellungsmöglicheiten ich anwenden muss. Wissenschaftlich sicherlich all umfassend und wasserdicht beschreiben.

Aus Anwendersicht (Anwendungsfall (Problemstellung) --> Funktion -> Lösung) muss ich leider zugeben, ist mir das zu hoch und zu weit von meiner Problemstellung entfernt.
Mir ist jetzt klar, mein Filter ist durch das Falten leider doppelt so lang. Warum wird er eigentlich beim Falten im background nicht nicht einfach wieder zurechtgestutzt, wenn er zu lang ohnehin nicht zu gebrauchen ist?

OK, ich muss ihn nun wieder auf die gleiche Länge der Pulsedateien bringen, etwas vorn/hinten abschneiden, nur wie?


Gruß Erwin
Bild
nihil.sine.causa
Aktiver Hörer
Beiträge: 1506
Registriert: 28.07.2011, 12:31
Wohnort: Bonn

Beitrag von nihil.sine.causa »

Hallo Erwin,

wenn Du als Ziel hast, einen Filter auf die Pulslänge von 65536 = 2^16 zu reduzieren, probiere es doch mal mit dieser Einstellung:

TD-Functions > Cut'N Window: Length 65536, Position Count 32768 (= 2^15), before Peak, Remove DC, Window deaktiviert

Wenn die Reduktion auf 2^17 = 131072 erfolgen soll, dann analog mit Länge 2^17 und Position Count bei 2^16.

Gruß Harald
Bild
Jahresprogramm
Aktiver Hörer
Beiträge: 510
Registriert: 10.02.2012, 21:54
Wohnort: 88...

Beitrag von Jahresprogramm »

Hallo Erwin,
ESM hat geschrieben:Warum wird er eigentlich beim Falten im background nicht nicht einfach wieder zurechtgestutzt, wenn er zu lang ohnehin nicht zu gebrauchen ist?
Vielleicht lohnt es sich in diesem Zusammenhang vor Augen zu führen, was Convolving macht. Z.B. ist bei Wiki das Thema "Convolution" sehr schön animiert. Ohne die Integrale gänzlich zu verstehen (ich tue das zZ auch nicht), zeigt die Animation sehr schön, dass bei der Faltung alles mögliche rauskommen kann...
Wenn man hier einfach etwas abschneidet, könnte man zu viel wegschneiden.

Für Anwender ohne Vorkenntnisse sind ja eh die Macros gedacht.

Grüße
Alex
Bild
ESM
Aktiver Hörer
Beiträge: 406
Registriert: 21.12.2012, 22:57
Wohnort: Detmold

Beitrag von ESM »

Hallo Harald,
nihil.sine.causa hat geschrieben: wenn Du als Ziel hast, einen Filter auf die Pulslänge von 65536 = 2^16 zu reduzieren, probiere es doch mal mit dieser Einstellung:

TD-Functions > Cut'N Window: Length 65536, Position Count 32768 (= 2^15), before Peak, Remove DC, Window deaktiviert
Danke, so einfach kommt man zunächst zum gewünschten Ergebnis. Man will nun wissen warum die Vorgehensweise dazu führt. Wenn wir jetzt eine primitive, sagen wir besser eine pragmatische Erklärung dokumentieren können, dann muss ich ich nicht noch mal auf die Uni, um das Wiki zu verstehen. ;-) Ich muss nur verstehen, was der Cut'NWindow-Dialog da eigentlich für Eingaben erwartet und was er damit vor hat, bzw. damit macht.

Position/Count = 32768 wird also eingestellt und before Peak.
Das ist die Hälfte der zu reduzierenden Samples (Count). Um also um 65536 zu kürzen, muss 2 um den Wert gekürzt werden. Tut die Funktion scheinbar auch. Einmal vorne, einmal hinten?

Position und Count; --> können das nicht zwei grundverschiedene Informationen sein?

before Peak = [ausgewählt]
Die Anweisung im Dialog lautet sinngemäß tue etwas (wegschneiden?), und zwar 32768 Sample vor einem Peak. --> welcher Peak?

Vielleicht sind es einfach nur die Bezeichner im Programm, die in meinem kleinen Hirn eine Barriere darstellen.

@Alex: Wir haben festegestellt, dass für die Problemstellung die Makros nicht ausreichen. Und ich bin Anfänger. Und nu :shock: ? Einfach was wegschneiden will keiner.

Du hast also das Wiki studiert und verstanden und damit sind die Funktionen in Acourate erklärt? :wink: Software kapselt definierte logische Strukturen und Funktionen. Sie verhindert Fehleingaben, bietet logisch nur die Eingaben und Funktionen an, die im Kontext einen Sinn ergeben. Der Anwender wird geführt, er muss (soll) damit das Rad nicht neu erfinden (müssen).

Wenn ich das Wissen im Wiki verinnerlicht und verstanden habe und dann noch ein paar Grundkenntnisse im Programmieren habe (davon habe ich ausreichend), dann könnte ich mir selbst ein Programm schreiben. Will ich aber nicht. Deshalb hab ich ein schlaues Programm gekauft.

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

Beitrag von uli.brueggemann »

Ein Signal habe eine Länge von 10000 und der Peak des Signals (Amplitude 1) liege bei 3260. Ein Echo mit Amplitude 0.5 liege 3670.
Ich möchte 5000 Samples rausschneiden.

Positionsbezogene Angabe:
Es kann also ausgeschnitten werden mit Startposition 0 bis max. 5000. Größer 5000 geht z.B. nicht, weil das Signal nicht lang genug ist.

Peaksymmetrsch:
3260-(5000/2) = Startposition 760

Anzahl (Count) before Peak = 1000:
3260-1000 = Startposition 2260

Markierungen bei 3500 und 4000. Damit Anzahl (count) before peak between markers = 500:
Es wird der Echopeak gefunden = 3670
3670-500 = Startposition 3170

Klar?

Grüsse
Uli
Bild
ESM
Aktiver Hörer
Beiträge: 406
Registriert: 21.12.2012, 22:57
Wohnort: Detmold

Beitrag von ESM »

Hi Uli,

bereits vorher war mir klar, das ich nicht mehr rausschneiden kann, als ich in Summe habe.

Ich denke der nächste Schlüssel zum Verständnis ist, was es mit dem Peak auf sich hat. Was für ein Peak ist hier gemeint? Ein Peak in der Amplitude oder in der Pulseanwort (Zeit)?

Machen wir es doch ein meinem Beispiel fest, sonst haben wir immer neue Variablen.

Bild

- Pulse48Linv ist die orginal Inverse aus dem Makro 3
- Conv6_4 ist die convolution aus Pulse48Linv und einem IIR Peaking EQ @7000Hz Q5 -10dB
sieht man schön an der Amplitude oben.

im unteren Teil (Zeit) sieht man ebenfalls beide Pulsdateien. Sie liegen fast deckungsgleich übereinander. Ich habe absichtlich nicht gezoomt (die geringen Unterschiede würde man dann sehen), denn so sieht man in der Markierung die 65536 Samples von Pulse48Linv und in Verlängerung unmarkiert die restlichen 65536 Samples, die Conv6_4 länger ist. Macht 131072. :cheers:

Und nun? Zunächst die Frage, wo muss jetzt geschnippelt werden? ich denke rechts, die Samples nach den ersten 65536. innerhalb der ersten liegen ja die Informationen. Richtig?
Und wie sage ich es dann in Acourate deutsch, das er rechts ab Sample 65537 bis 131072 alles wegschneiden soll? Dazu finde ich keine Eingabemöglichkeit.

Jetzt noch mal zum ominösen Peak. Wo ist der hier? Im Pulse ist er ganz vorne bei 0. Das passt irgendwie nicht zu der Option "before". Vor dem ersten Sample kann ich ja nichts wegschneinden, da nichts da.

Haralds Tipp hatte ich ja mal blind befolgt, dass Ergebnis scheint zu passen. Aber dem gegenüber was ich machen will und muss, passt das irgendwie nicht zu dem, wie ich den Dialog gefüttert habe, bzw. wie er seine Parameter benannt hat.

Bild

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

Beitrag von uli.brueggemann »

Also, es geht um den Peak im Zeitbereich. Wird dort ganz rechts auch angezeigt.
Beim Falten zweier minimalphasiger Impulse bleibt der Peak beim Ergenis ebenfalls vorne.

Also willst Du ja von dort aus ausschneiden, sonst würdes Du ja die wesentliche Info wegschneiden.

Also CutNWindow 65536 Samples ab Startposition 0. Fertig.
Du kannst dabei das Windowing ein- oder ausschalten und die Ergebnisse vergleichen.

Grüsse
Uli
Bild
ESM
Aktiver Hörer
Beiträge: 406
Registriert: 21.12.2012, 22:57
Wohnort: Detmold

Beitrag von ESM »

noch reden wir aneinander vorbei.

wo ist rechts ein Peak im Zeitbereich? Rechts im Infofenster von Acourate wird angezeigt: Max0.3240@0. das ist so was von links :wink:
Bild
Jahresprogramm
Aktiver Hörer
Beiträge: 510
Registriert: 10.02.2012, 21:54
Wohnort: 88...

Beitrag von Jahresprogramm »

Hi :)
uli.brueggemann hat geschrieben:Beim Falten zweier minimalphasiger Impulse bleibt der Peak beim Ergenis ebenfalls vorne.
ESM hat geschrieben:das ist so was von links
uli.brueggemann hat geschrieben:Wird dort ganz rechts auch angezeigt.
ESM hat geschrieben:Rechts im Infofenster von Acourate wird angezeigt: Max0.3240@0.
Passt doch - links ist vorne - Ihr redet nicht aneinander vorbei.

Grüße
Alex
Bild
Antworten