31 Band GraphicEqualizer / Audio Unit

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 31 Band GraphicEqualizer / Audio Unit

    hallo bin neu hier auf dieser seite.
    vielleicht kann mir einer von euch helfen.
    ich versuche gerade einen graphic equalizer als audio unit zu programmieren.
    dabei verwende ich xcode und das von apple zur verfügung gestellltes "AU with generic view" template.
    habe bereits den generic view fertig. sprich die 31 fader.
    auch factory presets sind schon fertig.
    in der methode process soll dann:
    output =input;
    output += bandpassfilter()*gain;

    im groben soll er den AUGraphicEQ von apfel ähneln.

    hat jem bereits erfahren in equalizer programmieren?
    gibts evtl schon nen fertiges xcode projekt (31band)?
    worauf muss ich achten?
  • Moinmoin!

    Du halst dir ja gleich mehrere lustige Projekte gleichzeitig auf. ;)

    Also so wie du es da machst würde ich es nicht machen. Du willst ja scheinbar erst alles durch Bandpässe schicken und diese dann wieder zusammenmischen. Das halte ich aber für ungünstig, da so selbst in Neutralstelllung aller Regler das Signal verfälscht wird.

    Ich würde einfach eine Ladung von Peakfiltern machen, die machen in Neutralstellung erstmal nix und ansonsten heben oder senken die um die Arbeitsfrequenz glockenförmig an.

    Kennst du dich ein bissl mit Signalverarbeitung, speziell z-Transformation und Systemübertragungsfunktion (Pole und Nullstellen und so) aus? Das wäre für so eine Anwendung nicht verkehrt. Gute Literatur ist von Prof. Udo Zölzer "Digitale Audiosignalverarbeitung". Das enthält auch fertige Filterentwürfe für solche Anwendungen.
  • morchn!

    bei der neutralstellung (alle slider auf 0dB) wird das outputsignal gleich dem inputsignal.
    also es wird unverändert durchgeschleift.

    habe diese methode bei meinem 7 band eq (const koeffizienten) angewandt und funktioniert ohne probleme bei meinem mono 7band eq.
    will aber den 31 band eq jetzt variabel, dh incl koeffizientenberechnung (abhängig von der samplerate und der sliderstellung) machen.

    also um genau auf mein problem einzugehen:
    habe methoden für meine koeffberechnung.
    will nun alle werte (koeff_bei_regler_änderung, koeff_bei_samplerate_änderung,...) in eine matrix schreiben. also senkrecht alle werte und waagrecht so oft wie anzahl der bänder=31.
    funktioniert aber noch nicht ganz.
    der compiler meldet mir keinen fehler aber wenn ich hauptprogramm z.b. die methode void koeff_bei:samplerate_änderung aufrufen bekomme einen cpu overload beim audiounit testen.
    ich vermute er hängt sich beim beschreiben der matrix auf.
    hierzu meine frage:
    kann mir jemand den befehl erklären?
    class __declspec(novtable) matrix {}


    studiere elektrotechnik fachrichtung multimedia.
    theorie wie z trafo,..... habe ich gelernt und stellen her nicht das problem da, sondern ich bin ein neuling in c++. (habe nur assembler, c & java ein bischen gelernt)koeff_bei_regler_änderung, koeff_bei_samplerate_änderung
  • Also ich würde es im Sinne wiederverwertbaren modularen Codes anders machen. Einfach eine Klasse für ein EQ-Band schreiben mit Frequenz, Q-Faktor und Gain als Parameter und dann 31 Instanzen davon erstellen mit den richtigen Arbeitsfrequenzen. Dann wird das Signal nacheinander durch alle geschickt und gut is. Oder in deiner Variante mit den Bandpässen (was ich nach wie vor nicht für elegant halte) einfach die Ergebnisse aller Instanzen zusammenmischen.
    Das hat den Vorteil, dass du mit ganz wenigen Änderungen im Code die Anzahl der Bänder variieren kannst.

    Was da mit deiner Matrix schief läuft weiß ich nicht, lässt sich auch ohne den Code zu kennen nicht wirklich sagen.