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


von anabolik (Gast)


Angehängte Dateien:

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?

von anabolik (Gast)


Angehängte Dateien:

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.

von anabolik (Gast)


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.

von Ralf (Gast)


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

von An S. (a_posteriori)


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

von Imhö (Gast)


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.

von wiener (Gast)


Lesenswert?

halloooo .... hast du es nun geschafft mit der echtzeitverarbeitung???

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.