Idee für Audio- Plugin
-
Du beziehst dich auf das hier:
Die Gruppenlaufzeit ist für alle FIR-Filter mit symmetrischen Koeffizienten frequernzunabhängig. Symmetrische FIR Filter eingesetzt in Audiogeräten erzeugen keine Laufzeitverzerrungen! Ausser in Ausnahmefällen verwendet man nur FIR-Filter mit linearer Phase.
Das ist doch das, was ich gesagt habe, nur falsch von dir verstanden. FIR-Filter (vorrausgesetzt sie sind symetrisch) sind phasenlinear, verzögern folglich verschiedene Frequenzen nicht unterschiedlich, sondern alle gleichermaßen. Das heißt das signal wird einfach komplett um ne Milisekunde oder so verzögert, statt dass manche Frequenzen etwas mehr und manche etwas weniger verzögert werden. Analgoe Filter so wie digitale IIR-Filter haben aber dieses Verhalten.
Und zu deinem "FFT"-Filter. Das ist so: du mals quasi deinen gewünschten Frequenzgang, berechntest die umgekehrte Fourie-Transformation und erhälst die Pulseresponse eines FIR-Filters.
Trotzdem. Sagen wir du verendest 1024 Frequenzen, dann erhälst du eine Pulsrespons mit einer Länge von 2048. Das heißt ich muss mir die letzten 2048 eingegangenen Samples merken und Brauche zur berechnung des Filters 2048 Multiplikationen und 2048 Additionen. IIR-Filter komme da mit wesentlich weniger aus. die letzen zwei eingans und die letzten drei ausgangswerte sind in der Regel genug. dem entsprechend hast du auch nur eine Hand voll Additionen und Multiplikationen.
-
OkOkOk...
schön erklärt.. ich vergesse immer dass es im hintergrund recht kompliziert zu geht.
Und wenn ich von 1024 frequenzen nur eine will dann muss ich den anderen 1023
sagen das sie nicht gebraucht werden...richtig so ??
bildlich gedacht
wie dem auch sei
wir wollen die sache nicht komplizierter machen als sie werden könnte
ich denke mal die effizienteste lösung ist auch die beste
OS
-
Meinst du mit FFT-Filter einen FIR Filter? Die bastelt man für gewöhnlich mit Hilfe der umgekerten FFT.
Wir reden doch über Glockenfilter. Und die lassen das Signal unmal komplett passieren, nur das ein bestimmter bereich um ihre Center-Frequenz angehoben oder abgesenkt wird, abhängig von ihrer Bandbreite. Solche Filter findest du in allen parametrischen EQs
hmm, nö, im grunde braucht man nur eine transformation in den frequenzbereich mittels FFT mit genügend punkten bzw. koeffizienten, durch gezielte manipulation der entsprechenden koeffizienten im f-bereich "muted" man die nicht erwünschten frequenzen ( geht natürlich nicht unendlich steil, ist klar )und transformiert das ganze mittels IFFT in den zeitbereich zurück - fertig ist.
Für so extrem Steile FIR-Filter bräuchte man extrem lange Pulsresponses (wie lautet hierfür eigentlich der deutsche Begriff, falls das jemand weiß?). Teheoretisch unendlich Lange.
nicht unbedingt, siehe ansatz oben. der deutsche begriff ist übrigens "impulsantwort"
-
hmm, nö, im grunde braucht man nur eine transformation in den frequenzbereich mittels FFT mit genügend punkten bzw. koeffizienten, durch gezielte manipulation der entsprechenden koeffizienten im f-bereich "muted" man die nicht erwünschten frequenzen ( geht natürlich nicht unendlich steil, ist klar )und transformiert das ganze mittels IFFT in den zeitbereich zurück - fertig ist.
Wenn du das komplette Signal auf einmal bearbeiten würdest (vorausgesetzt es hat eine länge, die einer Potenz von zwei entspricht, sonst funzt die FFT nicht und man muss zur normalen Fourie-Transformation greifen) dann ginge das. Wenn du immer Blockweise arbeitest körst du deutlich das arbeiten auf einzelnen Blöcken. Das heißt man muss überlappende Bereiche verwenden. Richtig gut (so das mans nicht mehr merkt) wirds ab einer vierfachen Überlappung). Und das ist viel langsamer, als sich einmal die Impulsantwort berechnen zu lassen und dann als FIR-Filter zu verwenden.
-
Wenn du immer Blockweise arbeitest körst du deutlich das arbeiten auf einzelnen Blöcken. Das heißt man muss überlappende Bereiche verwenden
ich sagte bereits, wo ist das problem, dafür gibts schliesslich einen haufen von "window-functions" ...
-
Das einzige Problem, das ich habe ist: Mehr Aufwand bei schlechterer Performance. Filter sind ganz sicher keine sinnvolle Anwendung für's hin und herrechnen zwischen Time und Frequency Domain.
Willst du das ding jetz schreiben? Dann sag bitte bescheit.
-
Hi Leute,
ich hab mich mal n´bischen ausgeklinkt
da ich in solch´speziellen Sachen, die Filter betreffend nicht mit halten kann
Nichts desto trotz sollte die Geschichte doch vorwärts gehen.
Mir ist es nämlich (fast)egal welcher Filter zum Einsatz kommt,
wie ich oben schon erwähnte, ist das Ergebnis wichtig und wenn es noch nicht klingt kann man ja noch immer Alternativen ausprobieren.
Also wie sieht´s aus
should we do the share or not?!
OS
-
/me hat noch mal ein wenig mit der offline-sw rumgespielt. es macht auf jeden fall wenig sinn, die ansteuerung für die oktaven getrennt zu machen. will damit sagen, wenn über MIDI zb ein A kommt, sollten alle oktaven im filter "aufgemacht" werden, nicht nur die spezielle, dann kommen bei einem wave-input wirklich interessante sachen heraus. nur eine einzige oktave zu öffnen kommt bei entsprechender steilheit des filters schon beinahe einem sinus-oszillator gleich - den könnte man auch einfacher basteln
wer wäre denn überhaupt noch dabei ? helium ? und ... ?
so far ...
-
Jetzt kann ich wieder mitreden...
genau, wäre zu überlegen ob eine zu steile güte wirklich sinnvoll wäre, als effekt ja aber dauernd?
Wichtiger wäre sich über die verstärkung bzw. dämpfung gedanken zu machen.
so ähnlich wie beim vocoder.
ein keyboard mit einer oktave wobei pro taste...sagen wir mal 6 filter angesprochen werden z.b. 110,220,440,880,1760,3520 Hz ?
die aber getrennt geregelt werden ?
das ergebe 6x12 = 72 potis für den boost/cut zu aufwendig?
viele, so wie ich finden es klasse so viel eingriffs möglichkeiten wie nur geht zu haben.
ein name für das plugin wäre schon da.
zu ehren des universalgenies, der sich mit seinen resonanzkukeln als erster
gedanken in diese richtung gemacht hat und der anstoss für die idee war
"helmholtz" seit malström geht alles (soll keine rechtfertigung sein)
-
/me hat noch mal ein wenig mit der offline-sw rumgespielt. es macht auf jeden fall wenig sinn, die ansteuerung für die oktaven getrennt zu machen. will damit sagen, wenn über MIDI zb ein A kommt, sollten alle oktaven im filter "aufgemacht" werden, nicht nur die spezielle, dann kommen bei einem wave-input wirklich interessante sachen heraus. nur eine einzige oktave zu öffnen kommt bei entsprechender steilheit des filters schon beinahe einem sinus-oszillator gleich - den könnte man auch einfacher basteln
Also entweder habe ich etwas grundlegend Falsch verstanden (dan klät mich bitte auf) oder RockNix.
Ich habe verstnadnen, dass man mit Glockenfiltern (auch Bellfilter oder Peaking-Filter genannt) die (per Midi) gespielten Frequenzen anhebt.
Bei RockNix beschreibung komme ich aber immer zu dem schluss, dass er Bandpassfilter verwenden will, die nur die gespielten Frequenzen passieren lassen.
Wenn das jetzt nicht endlich mal geklärt wird, also gesagt wird, ob Bandpass oder Bell, oder Rocknix sagt ich hätte ihn flasch verstanden und er meine auch Bellfilter, dann steige ich aus.
-
Oh..Oh..
Da besteht Handlungsbedarf!
Ich finde es schwer über solch´eine Plattform zu einem Ziel zu kommen, (trotz aller Smilies)wenn Keiner seine Absichten klar formuliert und das geht an Rocknix und Helium
Ihr schiebt euch gegenseitig Argumente für den einen bald den anderen Filter um die Ohren und fragt dann das Universum "wer macht mit?"
Ich als Initiator dieser Idee fühle mich verpflichtet Euch zu sagen EINIGT EUCH!!
Ich fand´es super als Diskussionen aufkamen wie man son´Ding bauen kann
und wie man ran´geht an die Sache aber es sollte kein Gelehrtenstreit werden
das hab ich nun nicht beabsichtigt!
Rocknix hat wohl nichts gegen Teamarbeit...Oder?
Helium fehlt noch die Aussage wer bzw. ob noch jemand mit macht...Oder?
Ich für mein Teil möchte das das Plug ´ne tolle Sache wird und finde es klasse Menschen gefunden zu haben die sich ernsthaft (sonst wäre diese Mail nicht nötig) mit meiner Idee auseinandersetzen!
Also Leute tut uns Allen den Gefallen und sagt mal konkret an wo es hin gehen soll.
Ich bin dabei:An Helium
1. Ja über MIDI
2. von mir aus auch Peak- Filter (und das ist nicht abwertend gemeint)
3. die Idee von Rocknix, Filter zusammen zu schalten per Tastendruck wäre ne Überlegung wert funktioniert auch mit Peak- Filter (jeden falls elektrisch)
4.soviele andere Fragen sind noch nicht geklährt z.B. Rauschgenerator, Mixmatrix uvm. die sich allein aus der programmierung ergeben.An Rocknix
1. Bist du jetzt eigendlich dabei oder der Zubedenkengeber vor Herren
2. Wie wäre es mit Aufgabenteilung?
3. du hast ja wohl schon ein bischen rumgebastelt, dann lass doch mal den Helium daran teilhaben? zu viel verlangt?An Beide
Ich habe leider keine Ahnung welcher Filtertyp programmtechnisch der Bessere ist, sonst würde ich es hiermit bestimmen.
Aber hilfreich könnte sein, wenn Ihr auf Effitienz achtet.
Das Plug soll klein sein und in Echtzeit arbeiten, aber auch dramatische (überzeugende) Effekte erzeugen.
Hilfreich könnte auch die Grundidee sein.
Als ich mich für meine Diplomarbeit vorbereitete, stieß ich auf den Physiker
Von Helmholtz.
Der experimentierte mit Resonanzkugeln aus Glas.
Ein Ende ins Ohr das Andere zur Schallquelle,
je nach Durchmesser der Kugel wurden Resonanztöne erzeugt,d.h.
aus dem Frequenzgemisch hervorgehoben.
Bei meiner Idee sollten an diesen Kugeln keine Ohren sondern Mikrofone,
die üder eine Tastatur geschaltet werden.
Sehr unpraktikabel, da Quellsignal und Ausgabesignal im selben Raum (feedback)
Dann.... der Funke!! DAS SIND DOCH NICHTS ANDERES ALS FILTER!!
Über eine Tastatur geschaltete Filter das war´s und zu allem überfluss auch noch chromatisch gestimmt .. Wie ein richtiges Instrument.
Und warum elektrisch Bauen, wenn man das auch programmieren kann!!So Leute ich will von euch jetzt was hören und nicht über den alten Tante Melittas Filterstreit zusammen brechen.
OS
-
Bei RockNix beschreibung komme ich aber immer zu dem schluss, dass er Bandpassfilter verwenden will, die nur die gespielten Frequenzen passieren lassen.
genau das meinte ich. bei einem wave-file input klingt das genial. wenn du dann zb nur das A aufmachst, hast du eine je nach eingangsmaterial rythmische sequenz auf dem ton A. das ist doch der trick dabei. jedes x-beliebige eingangsmaterial kann auf die benötigte "stimmung" gefiltert werden.
die aber getrennt geregelt werden ?
das ergebe 6x12 = 72 potis für den boost/cut zu aufwendig?konnte ich auch bereits mit der offline-sw testen. macht kaum einen unterschied, ob man die eine oktave noch ein wenig "boosted" oder nicht. hier kommt dann wohl die psychoakkustik ins spiel, von wegen signaltrennung bei mehreren oktaven.
Aber hilfreich könnte sein, wenn Ihr auf Effitienz achtet.
bei 2GHz PIV - ist ja schon quasi standard - ist die filterwahl nach performancekriterien wohl überflüssig. nehmen wir den, der am schnellsten programmiert/implementiert ist. es wird ja wohl keiner auf die idee kommen alles "off the scratch" zu schreiben. wozu gibt es 1000e von filter/fft-libs ?
also ich würde folgendes vorschlagen:
-das dingen erstmal als stand-alone-exe schreiben
-input = wave-file / hw-audio-in
-control = midi-in
-plug-in interface für den filter-algo ( da kann man schnell mehrere testen )und wenn alles läuft und wir mit dem sound zufrieden sind, in eine VST-plugin überführen.
-
ach so, ja, und wer macht was ? ich würde mich ggf. bereit erklären, das framework zu basteln - sprich das hw/wave/midi-zeugs. vielleicht hat helium lust, die filter algos zu basteln ?
-
Danke, Rocknix für deine Antwort,
denn deinen Aus führungen entnehme ich das du mit dabei bist
und es klingt gut was du vorschlägst.
Du hast das Ding wie es werden soll geblickt
Was ist nun mit Helium......?
OS
-
Also ich bin zur Zusammenarbeit bereit.
bei 2GHz PIV - ist ja schon quasi standard - ist die filterwahl nach performancekriterien wohl überflüssig. nehmen wir den, der am schnellsten programmiert/implementiert ist. es wird ja wohl keiner auf die idee kommen alles "off the scratch" zu schreiben. wozu gibt es 1000e von filter/fft-libs?
Du musst bedenken, dass 96000 oder gar 192000 Samples pro Sekunde verarbeitet werden und nicht nur dieses eine, sondern sehr viele Plugins parallel laufen. In meinen Stücken laufen locker 30 bis 50 Plugins gleichzeitig. Dann zählt die Geschwindikgeit doch wieder.
Aber bei reinenen Filtern kriegen wir das schon hin. Ich hab sowohl einen Pwaking-Filter mit variablem Gain, Bandbreite und Centerfrequenz, als auch einen 2-Pol Bandpass-Filter mit einstellbarer Bandbreite und Centerfrequenz. Beides IIR-filter, die schneller kaum sein könnten.
Ich hab da noch ein paar grundlegende Frage:
- Hast du schonmal VST-Plugins programmiert oder dich nur allgemein mit DSP beschäftigt. (Das nur soll nicht abwertend sein.)
- Besitzt du zufällig einen Mac (ich hab nämlich keinen, kennen aber zur not jemanden, der das Plugin portieren könnte)
- Welche VST-kompatiblen Hosts besitzt du (wegen des Betatestens). Ich hab nur wenige: Cubase SX, Wavelab und einen freien Test-Host.
- Wie führen wir die Betatests durch: Public Beta, ausgewählter Kreis von Freiwilligen, oder gar nichts öffentliches.
-
deinen Aus führungen entnehme ich das du mit dabei bist
sagen wir mal so, es reizt mich schon, da die idee wirklich gut ist und das ganze auch überschaubar ist.
aber - ich habe einen fulltime-job, will damit sagen, ich kann nicht 10 stunden am tag investieren. andererseits habe ich viele dieser module schon mal geschrieben - waveIO, midiIO - von daher können wir das ganz easy angehen.
so far ...
-
Du musst bedenken, dass 96000 oder gar 192000 Samples pro Sekunde verarbeitet werden und nicht nur dieses eine, sondern sehr viele Plugins parallel laufen. In meinen Stücken laufen locker 30 bis 50 Plugins gleichzeitig
ja, da habe ich doch glatt wieder vergessen, dass es ein VST-plug werden soll, tztz ... hast schon recht
- Hast du schonmal VST-Plugins programmiert oder dich nur allgemein mit DSP beschäftigt. (Das nur soll nicht abwertend sein.)
ja, beides ...
- Besitzt du zufällig einen Mac (ich hab nämlich keinen, kennen aber zur not jemanden, der das Plugin portieren könnte)
nein, Win32 only ...
- Welche VST-kompatiblen Hosts besitzt du (wegen des Betatestens). Ich hab nur wenige: Cubase SX, Wavelab und einen freien Test-Host.
Cubase VST 24
- Wie führen wir die Betatests durch: Public Beta, ausgewählter Kreis von Freiwilligen, oder gar nichts öffentliches.
gute frage - abgespeckte version for free ? hmm ...
-
und @HELIUM ... wie stehts denn um deine progger-kenntnisse ? allgemein meine ich, nicht nur VST-plugs ...
-
Ja, ganz easy.
keine eile Haptsache es geht weiter!!
OS
-
so leute, für mich ist jetzt wochenende - ob ich da online bin, weiss ich nicht. ihr könnt mir auch eine mail schicken. ansonsten hört man sich spätestens am montag wieder.
so far ...