Ankündigung

Einklappen
Keine Ankündigung bisher.

Künstliche Raumimpulsantwort erzeugen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • fabi
    Registrierter Benutzer
    • 05.01.2008
    • 1472

    #16
    EDIT: Hier stand Unfug zur Berechnung. Geht nicht wie ich dachte, habs eben ausprobiert.

    Es gibt übrigens tatsächlich Räume, die nach diesem Prinzip designed sind. Sie haben praktisch kein geometrischen Reflexionen aber trotzdem eine sehr dichte Nachhallfahne.
    Zuletzt geändert von fabi; 11.02.2012, 21:24.

    Kommentar

    • Torsten
      Registrierter Benutzer
      • 21.02.2002
      • 702

      #17
      Wie kann es einen RAUMnachhall ohne Reflexionen geben? Was und wo hallt der Raum denn dann?

      Kommentar

      • fabi
        Registrierter Benutzer
        • 05.01.2008
        • 1472

        #18
        Selbstverständlich gibt es Reflexionen, aber eben keine diskreten, geometrischen. Das Schallfeld ist sofort diffus.

        Die Räume schauen ziemlich verrückt aus.
        http://www.mh-audio.nl/gif/skyline_diffuser2web.jpg

        Kommentar

        • Mr.E
          Registrierter Benutzer
          • 02.10.2002
          • 5316

          #19
          Jetzt wollte ich dir gerade antworten, daß ich nicht ganz verstanden hab, was du geschrieben hast, aber beim Antworten war deine Antwort schon wieder weg.

          Ich kann mir im Moment überhaupt nicht vorstellen, wie die Übertragungsfunktion von so einer Raumimpulsantwort aussieht.

          Aber mal generell: Ich gebe einen Impuls auf den Raum, der kommt nach einer Weile bei mir an, der Nachhall dürfte erst eine Weile später ankommen. Oder?

          Messen tut man sowas aber anders: Man gibt Rauschen auf den Raum, läßt das eine Weile laufen, bis ein stationärer Zustand erreicht ist und schaltet das Rauschen schlagartig ab. Die Zeit, die zwischen dem Abfall das Pegels um 5dB und dem um 35dB vergeht, ist die halbe Nachhallzeit.

          Aber wie gießt man das in eine Impulsantwort?

          PS: Was mich bei solchen Räumen immer irritiert, ist der Kontrast zwischen dem riesigen Aufwand an den vergleichsweise weit von den Boxen entfernten Wänden und dem direkt darunterstehenden Mischpult.

          Kommentar

          • fabi
            Registrierter Benutzer
            • 05.01.2008
            • 1472

            #20
            Es gibt zwei Verfahren die Nachhallzeit zu bestimmen. Wenn man es mit abgeschaltetem Rauschen macht, ist es tatsächlich so simpel wie du beschreibst.

            Die Alternative kann ganz ähnlich klingen, man nimmt aber ein MLS oder anderes bekanntes Rauschen (bzw. 2-Kanal). Neben dem Pegel wird auch die Phasenlage aufgezeichnet und daraus die Raumimpulsantwort per inverse FFT berechnet.

            Was ich beschrieben habe gibt tatsächlich eine Raumimpulsantwort, die Filterung ist auch notwendig und man hat auch am Ende wieder einen geraden Frequenzgang. Nur leider ist die Nachhallzeit nicht konstant sondern fällt mit der Frequenz. Auf mehr Matlab hab ich am Samstagabend dann doch keine Lust mehr.

            Letztlich ist das ein FIR-Design, bei dem man im Frequenzbereich anfängt. Der Pegel bleibt konstant und die Phasenlage wird manipuliert. Quasi das Gegenteil eines Linearphasigen Filters bei dem nur die Amplitude verändert wird und die Phase konstant bleibt.
            Das ist leider dann nicht ganz trivial. Es würde mich aber fast wundern, wenn es so ein Skript bzw. eine Software nicht gäbe, die das kann.

            Kommentar

            • Mr.E
              Registrierter Benutzer
              • 02.10.2002
              • 5316

              #21
              Von Filtern hab ich nicht genug Ahnung, um das zu verstehen (sollte ich glaube ich mal ändern).

              Eigentlich weiß ich ja, was das »System« tut. Dann müßte ich doch auch einfach die Impulsantwort »hinschreiben« können.

              Aber irgendwie halt nicht …

              PS: Hab grad noch ein wenig überlegt.

              Mal angenommen, irgendwo in diesem fiktiven Raum steht eine ideale Punktschallquelle, die zwei Sinustöne abstrahlt, zum Beispiel einer mit 100Hz, einer mit 1000Hz. Direkt an der Schallquelle sind die beiden Töne in Phase, wenn sie an einem anderen Punkt im Raum ankommen – wo sie gleichzeitig ankommen – sind sie es nicht unbedingt. Sie haben dort den gleichen Pegel – fast, Luftschalldämmung ist frequenzabhängig, aber hier wohl vernachlässigbar – und die gleiche Laufzeit dorthin. Wegen unterschiedlicher Periodendauer ist aber die Phasenlage von der Entfernung abhängig.

              Das Erste, was am Meßpunkt ankommt, ist der Direktschall, im Phasenverlauf stecken Informationen über die Entfernung.

              Danach kommen die Reflexionen an, und nur das interessiert mich. Ich will nur Diffusschall erzeugen, der fehlt nämlich noch. Die Nachhallzeit soll absolut frequenzunabhängig sein, damit müßte auch der Pegel frequenzunabhängig sein. Aber wie sieht die Phase aus?
              Zuletzt geändert von Mr.E; 12.02.2012, 00:28.

              Kommentar

              • fabi
                Registrierter Benutzer
                • 05.01.2008
                • 1472

                #22
                Eine einfache Lösung ist der Schroeder Allpassfilter, der den Amplitudenfrequenzgang unbeeinflusst lässt, die Phasenlage aber insofern ändert, dass künstlicher Nachhall entsteht. Das passiert direkt im Zeitbereich. Dieser Nachhall klingt leider auch künstlich, weil sich die Reflexionsdichte im Gegensatz zu einem natürlichen Raum mit der Zeit nicht erhöht. Jedes bessere Effektgerät hat eine Vielzahl der Schroeder-Filter implementiert und kann damit ansteigende Reflexionsdichte erzeugen, wie gesagt, man kann das sicher schreiben und bestimmt gibt es das auch als Matlab-Code.

                Schau dir mal folgendes Paper an, wenn du Zugang dazu hast
                M.R. Schroeder, “Natural Sounding Artificial Reverberation”, 13th AES annual meeting, 1961

                Ich habe das vor einiger Zeit dazu ein Skript geschrieben. Ich sehe keinen Grund, warum die Nachhallzeit frequenzabhängig sein sollte. Spiel damit mal rum, wenn du die Parameter entsprechend änderst sollte das funktionieren. Lass mich wissen ob es funktioniert. Den Filter kannst du in ARTA importieren und direkt als Impulsantwort auswerten, d.h. die Nachhallzeit berechnen lassen.

                Wenn das passt, falte damit das trockene Signal.

                clear all
                close all
                clc
                N=75; %length of impulse response
                fs=48000; %sampling frequency
                tau=5; %delay between spikes
                g=0.4;


                FFTlength=4096; %FFT length for frequency response
                x=zeros(1,N); %input array
                x(1)=1; %delta dirac impulse at first sample
                y=zeros(1,N); %output array

                x2=zeros(1,N+tau); %work arrays
                x3=zeros(1,N+tau); %work arrays

                y2=zeros(1,N+tau);
                y3=zeros(1,N+tau);


                x2(2*tau)=1;
                x3(tau)=1;



                for k=2:floor((N+tau)/tau);

                for i=2:floor((N+tau)/tau);
                y2(i*tau)=x2(i*tau)+g*y2((i-1)*tau);
                end;

                y3((k-1)*tau)=x3((k-1)*tau)*(-g)+y2((k-1)*tau)*(1-g^2);

                end;

                y(1:N)=y3(tau:N+tau-1);


                T=1/fs*N; %duration of impulse response
                t=linspace(0,T,N);


                stem(t,y);
                % hold all;
                % stem(t,x);
                title('impulse response of filter');
                xlabel('time [s]');
                ylabel('h(z)');
                grid;


                Y=fft(y,FFTlength);
                f=linspace(0,fs/2,FFTlength/2);
                Ylog=20*log10(abs(Y)+1e-12);
                Ylog=Ylog-max(Ylog); %normalise the logarithmic scale

                figure;
                subplot(2,1,1);
                semilogx(f,Ylog(1:FFTlength/2));
                title('magnitude of output');
                xlabel('f[Hz]');
                ylabel('gain[dB]');
                xlim([0 fs/2]);
                ylim([-20 10]);
                grid;

                subplot(2,1,2);
                semilogx(f,angle(Y(1:FFTlength/2))*180/pi);
                title('phase of output');
                xlim([0 fs/2]);
                ylim([-180 180]);
                xlabel('f[Hz]');
                ylabel('phase angle [degrees]');
                grid;

                Kommentar

                • Mr.E
                  Registrierter Benutzer
                  • 02.10.2002
                  • 5316

                  #23
                  Auf das Paper hab ich leider keinen Zugriff.

                  Wenn ich mal etwas mehr Zeit hab und mehr von Matlab versteh, dann schau ich mir das Skript nochmal genauer an, danke schonmal.

                  Raumimpulsantworten von ordentlichen Regieräumen gibt es nicht irgendwo im Internet, oder? Ich hab bis jetzt nichts gefunden.

                  Kommentar

                  • PeterG
                    Registrierter Benutzer
                    • 12.06.2003
                    • 1350

                    #24
                    Kunstkopfstereofonie ?

                    Hallo Mr. E,

                    vielleicht suchst Du das hier: http://de.wikipedia.org/wiki/Binaurale_Tonaufnahme

                    War früher wie im Titel bezeichnet... Amiga hatte da wohl ein paar LPs im sortiment.


                    MfG
                    Peter
                    Meine Hornlautsprecher

                    Kommentar

                    • Mr.E
                      Registrierter Benutzer
                      • 02.10.2002
                      • 5316

                      #25
                      Ne, such ich nicht. »Suchen« trifft es nicht ganz.

                      Kommentar

                      Lädt...
                      X