Frage

Ich frage mich, ob so etwas wie dies möglich ist (und relativ einfach zu tun), und wenn ja, wie könnte ich es tun?

Ich mag Bandfilterung auf einer Wave-Datei tun, ich bin zu reproduzieren. Etwas ähnlich dem „Equalizer“ Sie in den meisten Winamp-ähnliche Anwendungen.
Meine Idee ist es jedoch nicht um den Klang zu entzerren, aber sehr hohem negativem dB-Wert zu verwenden, um fast die Band zu töten ich Filterung bin.

Die erste Frage ist: Was mir DirectSound- gibt etwas, das mir, dies zu tun erlaubt
Wenn nicht: Wie würden Sie um gehen Umsetzung dieses
Ich weiß (obwohl ich nicht ganz es vollständig verstehen), dass Sie von der abgetasteten Wellenform auf die Verteilung der Frequenzen umwandeln kann eine schnelle Fourier-Transformation verwendet wird. Nun, ich kann natürlich nicht von dieser Verteilung auf die ursprüngliche Wellenform zurückgehen, nachdem die Amplitudenwerte bestimmter Frequenzen :-)

Ändern

Wie könnte ich so etwas tun?

Auch, wie genau kann ich diese Filter zu machen? (Wenn ich wollte, dass alles von 2250Hz bis 2275Hz, um herauszufiltern, was der Fehler ein Filter hätte wäre? Was wäre die höchste Präzision, die ich davon abhängen, bekommen?)

Danke!

War es hilfreich?

Lösung

Ich weiß nicht, ob Direct diese Funktionalität bietet, würde ich annehmen, dass es nicht da DSP ziemlich kompliziert und variiert oft sehr viel von Situation zu Situation. Was möchten Sie zu tun ist typischerweise „Filterung“ in DSP (Digital Signal Processing) bezeichnet. Viele Male Dies beinhaltet einen FIR (finite impulse response) Filter. Es gibt viele Bibliotheken gibt, genau das zu tun, was Sie wollen. Auf den heikelsten Aspekte des Filterdesigns ist, dass es immer Kompromisse betwen Geschwindigkeit, Genauigkeit und Fehler. In Ihrem Beispiel sind Sie in der Lage sein Signal zwischen den Frequenzen zu entfernen, aber dies wird auch die umliegenden Frequenzen bewirken. Der Betrag, den sie bewirken wird, ist in Bezug auf die Verarbeitungszeit und Filterdesign.

Vielleicht hier (Mathe schwer) beginnen: FIR Filter

Google dann für eigene Windows / Directsound spezifische FIR bezogenen Informationen

Andere Tipps

Directsound nicht tut Bandfilterung, wie Sie beschreiben, soweit ich weiß.

Die allgemeine Idee hinter Bandpaßfilterung ist, Verzögerungsleitungen zu verwenden, die den Signalausgang nehmen und ihn zurück in den Eingangsstrom, mit einer festgelegten Verzögerungszeit und den Zerfall (oder Dämpfung) Faktor. Eine sorgfältige Konstruktion des Filters ermöglicht es Ihnen, bestimmte Frequenzbereiche in Ihrer Audioquelle zu verstärken oder abzuschwächen. Beachten Sie, dass diese Technik nicht FFT nicht verwendet, mit Ausnahme vielleicht ein diagnostisches Werkzeug, während Filter-Effekte zu testen. FFT-Techniken tun, um eine präzisere Arbeit zu begrenzen oder zu verstärken Frequenzen, aber Verzögerungsleitungen sind in der Regel schneller (und Weise einfache Code).

eine WAV-Datei für die Verarbeitung (im Gegensatz zu tun, Echtzeit-Synthese / Filterung), eine Verzögerungsleitung auf dem Audio-Puffer Ausführung ist so einfach wie:

for (int i = 0; i < samples.Length - delay; i++)
{
    samples[i + delay] += samples[i] * decay;
}

Es ist ein bisschen komplizierter, als dies in der Praxis (müssen Sie mit potenziellen Überlaufwerten, beispielsweise umgehen, und einige Arten von Verzögerungsleitungen haben in umgekehrter Richtung zu laufen, das ist immer ein Schmerz im C-Stil-Codierung), natürlich.

Was, wie genau die Filter, das hängt nur davon ab, wie gut es entworfen ist (es ist sehr schwer). Wenn Sie einen Filter entwerfen Verzögerungsleitungen verwenden, Sie sind im Wesentlichen die gleiche Sache, dass Elektroingenieure haben (und immer noch) in den Jahrzehnten vor billigen Mikroprozessoren.

Directsound bietet keine Signalverarbeitungsanlagen überhaupt. Es gibt eine Vielzahl von Techniken, die Sie tun, verwenden könnte, was Sie wollen. Es ist möglich, die FFT zu verwenden, um zu tun, was Sie wollen, aber es ist wahrscheinlich nicht die beste oder einfachste Methode. Sie sollen bis auf Audio-DSP, insbesondere für die digitale Filterung (IIR, FIR) lesen. Es gibt ein gutes DSP Buch online verfügbar kostenlos namens Der Wissenschaftler und Ingenieur Guide to Digital Signal Processing , die auf jeden Fall wert ist ein Blick. Es gibt auch viele andere gute DSP Bücher bei Amazon erhältlich etc.

Ich weiß nicht, von irgendwelchen Bibliotheken, die direkt von dieser Art der Sache kümmern.

können Sie erreichen, was Sie wollen mit Fourier-Transformationen, Implementierungen wie der FFTW tun, um die Berechnung der Arbeit für Sie aber in meinem experiance sind ziemlich böse mit, zu arbeiten und ungeheure Mengen an Speicher verwenden, besonders wenn Sie mehr Bits von Audio-in-eins-Hit.

bearbeiten möchten

Die Grundidee für die Anwendung eq FFT ist dies:

  1. Sie sich jetzt Ihr Audio. Audio ist nur eine sehr lange Reihe von Werten (Proben), welche die Verschiebung des Lautsprecherkonus / Laufe der Zeit.
  2. .
  3. Nehmen Sie die Fourier-Transformation der Audio-Transformation (die libary wird dies tun, aber Sie werden die Audio-Samples in das richtige Format zu überbrücken haben Dieser wandelt die zeitbasierte Proben in eine frequenzbasierte Darstellung - im Wesentlichen das das Signal umwandelt zeigt die distrobution von frequenceies im Signal.
  4. Teilen Sie die Frequenz distrubution up -. Spaltete die distrobution in Bereiche, wobei jeder Bereich wird ein Bereich von Frequenzen
  5. Sie können dann Anpassungen durchführen über die Frequenzbänder - für Ihr Beispiel Sie eine Region Null könnte jede Spur von ihm entfernen
  6. .
  7. Nehmen Sie die inverse Fourier der aktualisierten Frequenz distrobution Transformation. Dadurch wird die Darstellung in den Zeitbereich zurückzukehren, eine (Angleichung) Rekonstruktion des ursprünglichen Signals, aber mit den vorgenommenen Änderungen.

Doing so etwas wie dieses lassen Sie accuratly die Frequenzen sind in Ihrer Audio vorhanden manipulieren Sie die Art der Kontrolle geben Sie scheinen zu wollen. Seien Sie gewarnt, jedoch, dass es nicht einfach zu implementieren ist.

Ich empfehle das Lesen rund um das Thema. Beat Erkennung ganz eng mit einer Menge von diesem verbunden (verwendet die Basistechniken viel) - versuchen, die ersten Abschnitte hier als Start.

Ich hoffe, das hilft ein wenig.

Directsound unterstützt möglicherweise nicht direkt, sondern Directshow sollte. Könnten Sie stattdessen diese API verwenden?

Ich zweite FIR-Filter Idee. Um eine schmale Kerbe zu bekommen benötigen Sie einen langen Filterkern.

Im Grunde verwenden Sie Faltung des Eingangsstroms gegen eine Reihe von Werten (der Kernel). Jeder Ausgangsabtastwert ist eine Summe aus dem vorhergehenden N Abtastwerte mit seinem entsprechenden Eintrag in dem Filterkern multipliziert.

So haben Sie eine Kernel-Matrix halten müssen und eine FIFO-oder Ringpuffer mit der gleichen Anzahl von Proben.

ist ihr FIR-Filterkern Rechner im Netz, nur google "FIR-Filter-Rechner".

Es sollte möglich sein, eine FFT zu tun tun, um Chaos in dem Frequenzbereich (Frequenzbins Skalierung), und führen Sie dann eine IFFT das Zeitsignal zu erholen. Ansonsten ist die Gestaltung Filter mit ScopeFIR oder MATLAB recht einfach. ScopeFIR kann leicht ein Sperrfilter entwerfen und geben Sie die Koeffizienten, so dass Sie eine Faltung auf das Signal zu tun. Hier ist ein Tutorial von der ScopeFIR Website: http://www.iowegian.com/fir/ Tutor / firintro.htm

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top