www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Equalizer echtzeitfähig in Matlab


Autor: anabolik (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo.

dank eurer hilfe ( Lob und Anerkennung! :) ) habe es endlich geschaft
einen (fast) equalizer in matlab zu realisieren (code sehe anhang.
sektrum ist ein wenig häßlich, aber na ja).
meine nächste frage(n). wie könnte man es jetzt so anstellen, daß EQ
auch in echtzeit funktioniert? sprich, beim abspielen einer
wav-datei(besser line-in der soundkarte) werden mit GUI die
schieber/slides für jeweiliches band bewegt so daß man eine
pegeländerung zu hören sein soll.
ich dachte mir eine bestimmte anzahl von abtastwerten zu nehmen die zu
verarbeiten und abzuspielen. das ganze dann immer wieder.
wie könnte das aussehen?
gibt es vielleicht andere möglichkeiten?

Autor: anabolik (Gast)
Datum:
Angehängte Dateien:
  • EQ.rar (222 KB, 327 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
hallo.
so jetzt hat mein EQ auch ein passendes GUI (sehe anhang. na ja sind
nur 2 bänder aber zum experimentiren reicht es erst mal).
habe jedoch folgendes problem: wie in meinem ersten beitrag schon
erwähnt, will ich den EQ bischen echtzeitfähig machen. d.h., wenn man
auf "Push Button" drückt erklingt eine melodie(das funktioniert).
dabei möchte ich, daß während des abspielens beim bewegen der slider
die veränderungen wahrgenommen werden können. dies habe ich mit der
doppelten for-schleife erzwecken wollen(mit einfachen gings auch
nicht,also jeweils immer mit einem abtastwert). leider bekomme ich eine
fehlermeldung "auf das audio device konnte nicht geschrieben werden"
oder so ähnlich.
wo  liegt der fehler?
geht es denn überhaupt, daß 2 callbacks(pushbutton und sliderx)
gleichzeitig aktiv sind?
also wenn man ohne for-schleife "push button" drückt und dann einen
slider bewegt sieht man spektrumveränderung während die melodie
erklingt. aber in diesem fall wird das veränderte spekrum bei der
faltung und "fftfilt" nicht berücksichtigt.

Autor: anabolik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry, die schleife sollte so aussehen:

for i=0:(length(x)/5-1);
    for k=1:5;
        buffer(k)=x(i*5+k);
    end
    hges=conv(h,h2);
    y=fftfilt(hges,buffer);
    sound(y,22000);
end

oder so

for i=1:length(x);
    hges=conv(h,h2);
    y=fftfilt(hges,x(i));
    sound(y,22000);
end

ist eigentlich egal.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Anabolik,
dein eq find ich klasse! hab mir das gleiche vorgenommen für die
semsterferien.
Hab jetzt aber mal ne Frage zu der Funktion der Koeffizeinten
Berechnung.
Ich hab nun schon ein paar Stunden verbracht und versteh einfach nicht
was dort passiert..... Ein großes Fragezeichen für mich ist das beta.
Was ist das?
Es wär super genial wenn du vielleicht die Funktion noch mal
auskommentiern würdest.
viele Grüße Ralf

Autor: An Si (a_posteriori)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo ralf,

beta ist die auf f_sample/2 normierte frequenz!

... man kann laut nyquist/shannon signale nur bis maximal f_sample/2 
(ohne alias) darstellen, was heißt das spektrum wird an n*f_sample/2 
gespiegelt wiederholt, daher normiert man beim entwurf eines IIR- oder 
FIR- filters die frequenzachse auf f/(f_sample/2).

viele grüße



Ralf wrote:
> Hallo Anabolik,
> dein eq find ich klasse! hab mir das gleiche vorgenommen für die
> semsterferien.
> Hab jetzt aber mal ne Frage zu der Funktion der Koeffizeinten
> Berechnung.
> Ich hab nun schon ein paar Stunden verbracht und versteh einfach nicht
> was dort passiert..... Ein großes Fragezeichen für mich ist das beta.
> Was ist das?
> Es wär super genial wenn du vielleicht die Funktion noch mal
> auskommentiern würdest.
> viele Grüße Ralf

Autor: Imhö (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Echtzeitfähig wird so ein Ding mit einer blockweisen Verarbeitung, d.h.
eine Ausgabemöglichkeit (die Matlab leider standardmäßig nicht hat).
msound kann so was.

Autor: wiener (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
halloooo .... hast du es nun geschafft mit der echtzeitverarbeitung???

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.