Equalizer echtzeitfähig in Matlab

Gast #390503
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?
Angehängte Dateien:
Gast #390504
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.
Angehängte Dateien:
Gast #390505
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.
Gast #390506
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
#612183
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren