objective-c ios core-audio audiounit

objective c - Cómo configurar kAudioUnitSubType_Distortion



objective-c ios (1)

Es cierto que antes no sabía nada acerca de su problema, así que eché un vistazo a su código y al CoreAudioOverview.pdf Mac Developer, que me condujo a todos lados. No vi nada demasiado furtivo en tu código. Se ve bastante apretado, pero me pregunté acerca de estas líneas:

// set effect unit asbd AudioUnitSetProperty(effectUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &audioFormat, sizeof(AudioStreamBasicDescription)); AudioUnitSetProperty(effectUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 0, &audioFormat, sizeof(audioFormat));

Más particularmente, por qué hay dos líneas aquí. ¿No deberías tener solo la primera línea?

Solo un pensamiento.

Si eso no tiene ningún valor, entonces, ¿ha verificado para asegurarse de que su gráfica de audio esté conectada correctamente? ¿Y también puedes probar un efecto diferente y ver si eso funciona?

Buen éxito en este proyecto. ¡ACLAMACIONES!

Intento escribir una aplicación para iOS que agregue efectos de sonido. Estoy tratando de poner una unidad de audio de efectos (por ejemplo, distorsión y reverberación) entre el auconverter y el remoteIO. Después de configurar dicha AU, no hay sonido.

NewAUGraph(&mAuGraph); AUGraphOpen(mAuGraph); AUNode remoteOutputNode, converterNode, effectNode; AudioUnit remoteIOAudioUnit, converterUnit, effectUnit; AudioComponentDescription cd; cd.componentManufacturer = kAudioUnitManufacturer_Apple; cd.componentFlags = cd.componentFlagsMask = 0; // remote io cd.componentType = kAudioUnitType_Output; cd.componentSubType = kAudioUnitSubType_RemoteIO; AUGraphAddNode(mAuGraph, &cd, &remoteOutputNode); // converter cd.componentType = kAudioUnitType_FormatConverter; cd.componentSubType = kAudioUnitSubType_AUConverter; AUGraphAddNode(mAuGraph, &cd, &converterNode); // ipodeq cd.componentType = kAudioUnitType_Effect; cd.componentSubType = kAudioUnitSubType_Distortion; AUGraphAddNode(mAuGraph, &cd, &effectNode); //callback AURenderCallbackStruct callbackStruct; callbackStruct.inputProc = renderCallback; callbackStruct.inputProcRefCon = &audioDataInfo; AUGraphSetNodeInputCallback(mAuGraph, converterNode, 0, &callbackStruct); // set audio unit asbd AudioStreamBasicDescription audioFormat = AUCanonicalASBD(44100.0, audioDataInfo.inputFormat.mChannelsPerFrame); AUGraphNodeInfo(mAuGraph, converterNode, NULL, &converterUnit); AudioUnitSetProperty(converterUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &audioDataInfo.inputFormat, sizeof(AudioStreamBasicDescription)); AudioUnitSetProperty(converterUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 0, &audioFormat, sizeof(AudioStreamBasicDescription)); // get effect unit AUGraphNodeInfo(mAuGraph, effectNode, NULL, &effectUnit); // set effect unit asbd AudioUnitSetProperty(effectUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &audioFormat, sizeof(AudioStreamBasicDescription)); AudioUnitSetProperty(effectUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 0, &audioFormat, sizeof(audioFormat)); // set remoteio unit asbd AUGraphNodeInfo(mAuGraph, remoteOutputNode, 0, &remoteIOAudioUnit); AudioUnitSetProperty(remoteIOAudioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &audioFormat, sizeof(AudioStreamBasicDescription)); AUGraphConnectNodeInput(mAuGraph, converterNode, 0, effectNode, 0); AUGraphConnectNodeInput(mAuGraph, effectNode, 0, remoteOutputNode, 0); AUGraphInitialize(mAuGraph);

en la sección AUGraphConnectNodeInput , si no

AUGraphConnectNodeInput(mAuGraph, converterNode, 0, effectNode, 0); AUGraphConnectNodeInput(mAuGraph, effectNode, 0, remoteOutputNode, 0);

pero

AUGraphConnectNodeInput(mAuGraph, converterNode, 0, remoteOutputNode, 0);

produce un sonido sin efectos.