convolution reverb

Forum für allgemeine Reaktorfragen

Moderator: herw

magneton
synth doctor
Beiträge: 263
Registriert: 17. April 2006, 13:00
Wohnort: mannheim

Beitrag von magneton »

convolution braucht kein FFT. es werden "nur" amplitudenwerte" multipliziert und addiert. dies freilich in einer sehr großen anzahl. die meisten convolution reverb plugins haben deshalb auch eine spürbare latenzzeit, da ja etliche berechnungen "im voraus" gemacht werden müssen.
wie bereits erwähnt ist die reaktor engine nicht für derartige berechnungen ausgelegt. eine brauchbare simulation könnte man höchstens in max/msp oder PD machen, aber das spekuliere ich hier nur.
daswesen
user
Beiträge: 12
Registriert: 25. Juni 2006, 22:30

Beitrag von daswesen »

Der triviale Ansatz koennte mit Core ganz gut gehen, allerdings braucht man dann bei jedem Sample (also 44100) eine Schleife, die alle Werte des gespeicherten Impulses multipliziert. Die Schleife muss man ausserhalb Cores bauen, da hab ich jetzt gerade wenig Musse zu (immer so ein Act, wenn man was einfaches in Reaktor coden will). Dieser Ansatz muesste (trotz Core), ordentlich Leistung verbraten (so ein normaler Filter duerfte so auf 20 Multiplikationen kommen, tippe ich), bei einem Impuls von 2 sekunden sind das schon 80000 :]

Der nichttriviale Ansatz duerfte auch in Reaktor gehen, mit den FFT modulen, das guck ich mir mal morgen an, klingt ganz spannend. Erstmal das IR sample durch die FFT laufen lassen (ich denke so auf Knopfdruck nach dem Laden in ein normales Samplermodul sollte ok sein)? Dann die rauskommende Phasen und Amplitude information speichern, und das auf die normale FFT addieren und wiederzuruecktransformieren. Duerfte sogar einfacher sein als der "triviale" Ansatz :] Ich gucks mir mal, ja ja :)
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

daswesen hat geschrieben:Der triviale Ansatz koennte mit Core ganz gut gehen, allerdings braucht man dann bei jedem Sample (also 44100) eine Schleife, die alle Werte des gespeicherten Impulses multipliziert. Die Schleife muss man ausserhalb Cores bauen, da hab ich jetzt gerade wenig Musse zu (immer so ein Act, wenn man was einfaches in Reaktor coden will). Dieser Ansatz muesste (trotz Core), ordentlich Leistung verbraten (so ein normaler Filter duerfte so auf 20 Multiplikationen kommen, tippe ich), bei einem Impuls von 2 sekunden sind das schon 80000 :]

Der nichttriviale Ansatz duerfte auch in Reaktor gehen, mit den FFT modulen, das guck ich mir mal morgen an, klingt ganz spannend. Erstmal das IR sample durch die FFT laufen lassen (ich denke so auf Knopfdruck nach dem Laden in ein normales Samplermodul sollte ok sein)? Dann die rauskommende Phasen und Amplitude information speichern, und das auf die normale FFT addieren und wiederzuruecktransformieren. Duerfte sogar einfacher sein als der "triviale" Ansatz :] Ich gucks mir mal, ja ja :)
Bis jetzt habe ich verstanden, dass ihr zwei Audio-Sinale (?) sampleweise jeden Sample des ersten mit jedem des zweiten multiplizieren wollt und dann aufaddiert. korrekt?
Also sample A1·(B1+B2+B3+...), dann A2·(B1+B2+B3+...). Werden diese dann auch wieder aufaddiert?
Wieso gibt das dann einen Hall und wie kommt ihr an des zweite Sample (die Hallinformationen?)? Das dürfte dann ja durch zwei verschachtelte Schleifen gehen.
Könnt ihr mal die Quelle angeben, auf die ihr euch bezieht?

ciao herw (ratlos)

PS: etwa so: Impulse Responses
kann ich dann nicht gleich NI SPECTRAL DELAY benutzen (kommt wohl bald).
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Beitrag von KlangRaum »

apropos schleifen..... mit dem modul iteration:
wenn man nicht mit limited-speed arbeitet und dabei *grössere* schleifendurchläufe hat, gibts uU sehr schnell spitzen in der CPU-last, die reaktor einfrieren können (nicht müssen), besonders wenn mehrere schleifen parallel oder kaskadiert ausgeführt werden. ohne limited-speed werden alle schleifendurchläufe innerhalb eines audiosample durchlaufen

ich hab ein ähnliches prob, bei dem lediglich tabellen kopiert werden müssen. prinipiell funzt das in diesem beispiel nur vernünftig bis etwa 20000 iteration/sec. das schränkt die verwendungsfähigkeit von so schleifenzeugs *etwas* ein.... in diesem modus ist die schleife auf mehrere audiosamples verteilt, also nicht mehr audio-echtzeit. für events reicht das aber uU.

man kann zwar die maximum-usage auf 100% setzen, um aussetzer zu vermeiden, diese einstellung wird jedoch nur in den perferences eingestellt und nicht wie die maximale stimmzahl im instrument oder ensemble mitgegeben. dh: wenn man ein solches ens weitergibt, muss man nochmal extra drauf hinweisen...

(das thema schleifen kann man ja mal als extrafred auskoppeln....)
Siggi Natur ? :mrgreen:
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

KlangRaum hat geschrieben:apropos schleifen..... ...(das thema schleifen kann man ja mal als extrafred auskoppeln....)
ja, da müsste jemand mal eine Frage aufgreifen. Ich kenne mich da noch wenig aus, da ich das bisher nur sporadisch für ganz wenige Rechnungen benötigte.
Krümelmonster weiß darüber mehr; leider meldet er sich hier zu selten (*wink*, *wink*).
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Beitrag von KlangRaum »

ich hab auch noch nicht viel mit dem iteration gebastelt - bin höchstens über diesen seiteneffekt gestolpert ;)
Siggi Natur ? :mrgreen:
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

KlangRaum hat geschrieben:ich hab auch noch nicht viel mit dem iteration gebastelt - bin höchstens über diesen seiteneffekt gestolpert ;)
CList (englisches NI-Forum) schaufelt auf diese Art und Weise mehrere Tausend (!) Daten während eines Samples hin und her.
magneton
synth doctor
Beiträge: 263
Registriert: 17. April 2006, 13:00
Wohnort: mannheim

Beitrag von magneton »

magneton hat geschrieben:convolution braucht kein FFT.
... meine aussage nehme ich teilweise zurück/schränke ein: ich hatte sog. Fast Convolution völlig vergessen/verdrängt. (Fast Convolution ist dann auch mehr als tausend mal schneller).
magneton
synth doctor
Beiträge: 263
Registriert: 17. April 2006, 13:00
Wohnort: mannheim

Beitrag von magneton »

herw hat geschrieben: Wieso gibt das dann einen Hall und wie kommt ihr an des zweite Sample (die Hallinformationen?)?
das ist die wunderbare DSP-welt.
die hallinformationen muss man natürlich aufnehmen. mit dem mikrophon. das kann man selbst machen oder man greift auf eine pro-library zurück.
man spielt einen testton in einem raum ab, nimmt das auf und verrechnet es mit einem beliebigen soundfile - fertig.
zumindest in der theorie.
man hat nicht den impuls/hall von einem raum, sondern man hat den impuls von den boxen die den testton abspielen, dem mikrophon das diesen aufnimmt und genau der position an der das mikro stand.
magneton
synth doctor
Beiträge: 263
Registriert: 17. April 2006, 13:00
Wohnort: mannheim

Beitrag von magneton »

Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

magneton hat geschrieben:
herw hat geschrieben: Wieso gibt das dann einen Hall und wie kommt ihr an des zweite Sample (die Hallinformationen?)?
das ist die wunderbare DSP-welt.
die hallinformationen muss man natürlich aufnehmen. mit dem mikrophon. das kann man selbst machen oder man greift auf eine pro-library zurück.
man spielt einen testton in einem raum ab, nimmt das auf und verrechnet es mit einem beliebigen soundfile - fertig.
zumindest in der theorie.
man hat nicht den impuls/hall von einem raum, sondern man hat den impuls von den boxen die den testton abspielen, dem mikrophon das diesen aufnimmt und genau der position an der das mikro stand.
ja gut, das ist dann aber erst der Hall des Testtons. Wenn man ganz genau sein wollte, müsste man jede Frequenz (oder meinetwegen auch Frequenzbänder) aufnehmen und dann das Audiosignal entsprechend in Teilfrequenzen zerlegen.
magneton
synth doctor
Beiträge: 263
Registriert: 17. April 2006, 13:00
Wohnort: mannheim

Beitrag von magneton »

herw hat geschrieben:ja gut, das ist dann aber erst der Hall des Testtons. Wenn man ganz genau sein wollte, müsste man jede Frequenz (oder meinetwegen auch Frequenzbänder) aufnehmen und dann das Audiosignal entsprechend in Teilfrequenzen zerlegen.
idealerweise enthällt ein impuls (1 sample länge, 0dB) alle frequenzen gleichermaßen. bei der sinussweep methode geht der sweep von 0Hz bis 22kHz (bzw. halbe samplingrate). damit wird also das frequenzverhalten des raumes abgenommen.
mit anderen worten: was Du meintest geschieht also bereits :wink:

die aufnahme des impulses/sweeps muss freilich aufbereitet werden.
ich nehme dazu den voxengo deconvolver
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Beitrag von KlangRaum »

ein impuls von der länge eines sample enthält alle frequenzanteile ?????
wie soll das gehen? btw wie ist das gemeint?
Siggi Natur ? :mrgreen:
magneton
synth doctor
Beiträge: 263
Registriert: 17. April 2006, 13:00
Wohnort: mannheim

Beitrag von magneton »

KlangRaum hat geschrieben:ein impuls von der länge eines sample enthält alle frequenzanteile ?????
wie soll das gehen? btw wie ist das gemeint?
kann man sich mit folgender überlegung verdeutlichen:
weißes rauschen enthällt alle frequenzen gleichermaßen.
nun nimmt man weißes rauschen und staucht das auf ein sample länge zusammen.
die genannten wikipedia artikel geben weitere hinweise.
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Beitrag von KlangRaum »

ääääääääää - ein beliebiges tonsignal auf ein sample reduziert... das ist eine einzige zahl -bei 16bit zwischen 0 und 65535 und repräsentiert eine länge von 1/44100 sec.



.... multiplizier alles mit zb 34521 un ferdisch :?: :mrgreen:
neeee..... kannich sein.

:?: :?: :?: :?: :shock: :?: :?: :?: :?:
Siggi Natur ? :mrgreen:
Antworten