2012-08-09 26 views
8

Ich bin zurück mit einer weiteren Frage bezogen auf BASS. Ich hatte diese Frage bereits gestellt How Can we control bass of music in iPhone, aber nicht so viel Aufmerksamkeit von Ihren Leuten bekommen, wie es sein sollte. Aber jetzt habe ich noch mehr gesucht und die Core AUDIO gelesen. Ich habe einen Beispielcode, den ich mit Ihnen teilen möchte Menschen hier ist der Link zum Download iPhoneMixerEqGraphTest. Schauen Sie sich in diesem Code an, was ich gesehen habe, ist, dass der Entwickler den voreingestellten Equalizer verwendet hat, den der iPod in Apple gegeben hat. Lässt auch einige Code-Schnipsel sehen: ----Wie benutzt man den kAudioUnitSubType_LowShelfFilter von kAudioUnitType_Effect, der Bass im Audio-Kern steuert?

// iPodEQ unit 
CAComponentDescription eq_desc(kAudioUnitType_Effect, kAudioUnitSubType_AUiPodEQ, kAudioUnitManufacturer_Apple); 

Was kAudioUnitSubType_AUiPodEQ tut, ist es voreingestellten Werte von den iPod-Equalizer erhalten und bringen uns in Xcode in einem Array, das wir in picker/Tableview verwenden können, und jede Kategorie festlegen wie Bass, Rock, Dance etc. Es ist für mich hilflos, da es nur Namen von Equalizertypen wie Bass, Rock, Dance etc. zurückgibt, da ich nur Bass implementieren will und es auf UISLider implementieren möchte.

Um Bass auf Schieberegler zu implementieren, brauche ich Werte, so dass ich minimale und maximale Wert einstellen kann, so dass auf beweglichen Schieberegler Bass geändert werden kann.

Nach all dem immer ich anfangen Core Audios Audio Unit Rahmen der Klassen lesen und bekam diese Ipod Desc Image nach, dass ich die Suche nach Bassregler starten und bekam diese

enter image description here

So dass ich jetzt diese implementieren müssen kAudioUnitSubType_LowShelfFilter. Aber jetzt weiß ich nicht, wie ich dieses Enum in meinem Code implementieren soll, damit ich den Bass als schriftliche Dokumentation steuern kann. Selbst Apple hat das nicht geschrieben, wie können wir es benutzen. kAudioUnitSubType_AUiPodEQ Diese Kategorie gab uns ein Array zurück, aber kAudioUnitSubType_LowShelfFilter Kategorie gibt kein Array zurück. Bei Verwendung dieser Kategorie können wir Equalizer-Typen aus einem Array verwenden, aber wie können wir diese Kategorie verwenden kAudioUnitSubType_AUiPodEQ Diese Kategorie verwenden kAudioUnitSubType_LowShelfFilter. Kann mir irgendjemand auf irgendeine Weise helfen? Es wäre sehr bemerkenswert.

Danke.

Antwort

3

aktualisieren

Obwohl es in den iOS-Header deklariert wird, ist die Low-Shelf AU auf iOS nicht wirklich verfügbar ist.


Die Parameter des Low Shelf unterscheiden sich vom iPod EQ.

Parameter werden in `Audio Unit/AudioUnitParameters.h 'erklärt und dokumentiert:

// Parameters for the AULowShelfFilter unit 
enum { 
    // Global, Hz, 10->200, 80 
    kAULowShelfParam_CutoffFrequency = 0, 

    // Global, dB, -40->40, 0 
    kAULowShelfParam_Gain = 1 
}; 

So nach dem niedrigen Regal AU erstellt wird, AudioUnitSetParameter mit seinen Parametern konfiguriert werden.

Einige erste Parameterwerte, die Sie ausprobieren können, wären 120 Hz (kAULowShelfParam_CutoffFrequency) und +6 dB (kAULowShelfParam_Gain) - vorausgesetzt Ihr System reproduziert Bass gut, Ihr Niederfrequenzinhalt sollte doppelt so laut sein.


Can u mir sagen, wie ich dieses kAULowShelfParam_CutoffFrequency verwenden kann um die Frequenz zu ändern.

Wenn alles richtig konfiguriert ist, sollte dies alles sein, was benötigt wird:

assert(lowShelfAU); 
const float frequencyInHz = 120.0f; 
OSStatus result = AudioUnitSetParameter(lowShelfAU, 
             kAULowShelfParam_CutoffFrequency, 
             kAudioUnitScope_Global, 
             0, 
             frequencyInHz, 
             0); 
if (noErr != result) { 
    assert(0 && "error!"); 
    return ...; 
} 
+0

danke für die Antwort justin. Können Sie mir sagen, wie kann ich diese kAULowShelfParam_CutoffFrequency verwenden, um die Frequenz zu ändern. Ich versuche es zu ändern, aber wenn ich den Wert ändere, stürzt es ab. Bitte helfen !!! –

+0

@NikhilBansal siehe Update. – justin

+0

ok danke für die Antwort, lassen Sie mich überprüfen, ob es für mich funktioniert oder nicht –