OSStatus MusicPlayerCallback (
void * inRefCon,
AudioUnitRenderActionFlags * ioActionFlags,
const AudioTimeStamp * inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList * ioData) {
MusicPlaybackState *musicPlaybackState = (MusicPlaybackState*) inRefCon;
double sampleinp;
double A,omega,sn,cs,alpha,Bandwidth;
double dbGain;
double a0,a1,a2,b0,b1,b2;
dbGain = 1.0;
A=pow(10.0,dbGain/40.0);
Bandwidth = 2.0;
omega=2 * M_PI * 800.0/44100.0;
sn=sin(omega);
cs=cos(omega);
alpha=sn*sinh(((M_LN2/2)*Bandwidth*omega)/sn);
//Peak Filter Biquad
b0 =1.0 + alpha * A;
b1 = (-2.0 * cs);
b2 = 1.0 - alpha * A;
a0 = 1.0 + (alpha /A);
a1 = -2.0 * cs;
a2 = 1.0 - (alpha /A);
double b0a0, b1a0, b2a0, a1a0, a2a0;
double static x1;
double static x2;
double static y1;
double static y2;
b0a0=b0/a0;
b1a0=b1/a0;
b2a0=b2/a0;
a1a0=a1/a0;
a2a0=a2/a0;
for (int i = 0 ; i < ioData->mNumberBuffers; i++){
AudioBuffer buffer = ioData->mBuffers[i];
AudioSampleType *outSample = buffer.mData;
for (int j = 0; j < inNumberFrames*2; j++){
sampleinp = *musicPlaybackState->samplePtr++;
outSample[j] = b0a0 * sampleinp +
b1a0 * x1 +
b2a0 * x2 -
a1a0 * y1 -
a2a0 * y2;
x2=x1;
x1=sampleinp;
y2=y1;
y1=outSample[j];
}}
return noErr;
}
Having Clicks/pop problems. Alguien POR FAVOR AYUDE ... No sé lo que estoy haciendo mal. Esto está en Xcode usando C en Objective-C. Intenté hacer el Coeff Global y Static, pero no tuve suerte. El archivo de audio que está usando es .caf. Intenté .wav pero todavía no es bueno ...Peak Filter tiene clics y pops
Gracias, perdón por el grito general de ayuda. Soy nuevo en este sitio. Estoy tratando de agregar un filtro de Pico en mi aplicación, pero cada vez que uso un control deslizante o simplemente dejo la ganancia en 1 recibo pops y clics. Parece que todo está allí y funciona correctamente en cuanto a la celebración de las muestras anteriores, etc. También obtengo algún tipo de fase al cambiar la frecuencia o el ancho de banda. Estoy tan confundido de haber estado estudiando DSP durante algunos meses, creo que es algo con Objective-C y un error de usuario. Parece que se va cuando se cambia la muestra a un SInt32, pero el canal izquierdo desaparece al cambiar la frecuencia.
Dsp.h
typedef struct {
void* audioData;
UInt32 audioDataByteCount;
SInt16 *samplePtr;
} MusicPlaybackState;
No me puedo imaginar por qué alguien vota para cerrar esto. – ocodo
@Slomojo: No creo que la pregunta deba cerrarse, pero no está bien planteada tal como está, y puedo ver por qué podría obtener votos cercanos. @Cocell: es posible que desee mejorar la pregunta para evitar más votos cercanos: intente dar más detalles sobre el problema y lo que ha intentado, y conviértalo en una pregunta específica en lugar de un "clamor por ayuda" general. –
@Paul R - Estoy de acuerdo en que la pregunta debe plantearse con mayor eficacia, pero el voto completamente silencioso para cerrar es inapropiado. Es 100% evidente que Cocell es un nuevo usuario de SO y simplemente quiere resolver un problema espinoso. No es posible que alguien con menos de 2k representantes vote por un cierre, por lo que es extremadamente decepcionante cuando esto sucede. Es arbitrario, inútil y francamente grosero, un comentario que solicita más información si es necesario es todo lo que se necesita aquí, no un "IRSE, NO SE PREGUNTA SU PREGUNTA", que es exactamente lo que transmite un voto cercano. – ocodo