gpt4 book ai didi

ios - 试图找出 Core Audio 的 NBandEQ

转载 作者:可可西里 更新时间:2023-11-01 05:41:38 24 4
gpt4 key购买 nike

所以我试图弄清楚 Apple 在 iOS 5 中添加的记录不良的 NBandEQ。我能够让它在 16 个频段以下的任何东西上都能很好地工作,但我想要更多 :) 如果我把它变成一个15 频段 EQ 一切正常,但如果我选择 16 及以上的任何数字,我在设置 kAUNBandEQProperty_NumberOfBands 时会收到 -10851 (kAudioUnitErr_InvalidPropertyValue) 错误,然后前 8 个频段设置正常其余导致 -10878 (kAudioUnitErr_InvalidParameter) 错误。所以 15 个波段可以成功完成,但是当我突然变成 16 个时,只能完成 8 个。我可以读到 kAUNBandEQProperty_MaxNumberOfBands,我认为这是当前状态下的设备可以处理的限制。那么它会吐出从 12 位数字到 4 位数字的所有不稳定数字。我想我自己不喜欢我给它的极端频率。我排除了这种可能性。然后我意识到频段的带宽可能重叠,它不喜欢这样。所以我将带宽从默认的 .5 减少到最小值。 .05 没有帮助那里乙醚。

我确实意识到,在我乱搞这些设置之后,这一切都是愚蠢的,因为它在我到达这些设置之前就开始提示了。它已经在波段数量上给出错误。

我发布这个问题是为了看看是否有更多有经验的程序员能在我的代码中看到一些让我感到困惑的东西并向我指出来。我意识到没有多少人冒险进入核心音频,更不用说 NBandEQ,但也许我搞砸了一些基本的 C,所以请看一看。我将非常感激。我显然很沮丧。同样在发布这段代码时(即使它是丑陋的测试代码)也许我可以帮助其他落后的人。我知道我希望至少有一段代码我可以看看与 NBandEQ 相关的代码

在此先感谢您的帮助!

    //Getting max bands for this device???
UInt32 maxNumOfBands;
UInt32 propSize = sizeof(maxNumOfBands);
AudioUnitGetProperty([_equilizer audioUnit],
kAUNBandEQProperty_MaxNumberOfBands,
kAudioUnitScope_Output,
0,
&maxNumOfBands,
&propSize);
NSLog(@"THIS IS THE MAX NUMBER OF BANDS?---%u",(unsigned int)maxNumOfBands);

UInt32 noBands = [eqFrequencies count];
// Set the number of bands first
NSLog(@"NumberOfBands atempted:%i with result:%ld", (unsigned int)noBands, AudioUnitSetProperty(_equilizer.audioUnit,
kAUNBandEQProperty_NumberOfBands,
kAudioUnitScope_Global,
0,
&noBands,
sizeof(noBands)));
// Set the frequencies
for (NSUInteger i=0; i<noBands; i++) {
NSLog(@"Set Frequency for band:%i with result:%ld", i, AudioUnitSetParameter([_equilizer audioUnit],
kAUNBandEQParam_Frequency+i,
kAudioUnitScope_Global,
0,
(AudioUnitParameterValue)[[eqFrequencies objectAtIndex:i] floatValue],
0));
}
//set bandwidth
for (NSUInteger i=0; i<noBands; i++) {
NSLog(@"Set bandwidth for band:%i with result:%ld", i, AudioUnitSetParameter([_equilizer audioUnit],
kAUNBandEQParam_Bandwidth+i,
kAudioUnitScope_Global,
0,
0.05,//of octive
0));
}

// Set the bypass to off "0"
for (NSUInteger i=0; i<noBands; i++) {
NSLog(@"Set Bypass for band:%i with result:%ld", i, AudioUnitSetParameter([_equilizer audioUnit],
kAUNBandEQParam_BypassBand+i,
kAudioUnitScope_Global,
0,
0,//off
0));
}

最佳答案

好吧,我想通了。我在 kAUNBandEQProperty_MaxNumberOfBands 上使用了 kAudioUnitScope_Output,它应该是 kAudioUnitScope_Global

kAUNBandEQProperty_MaxNumberOfBands 在 Sim、iPhone 5 和 Retina Ipad 上得到 16。

关于ios - 试图找出 Core Audio 的 NBandEQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15755166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com