para una aplicación de cambio de voz iphone (objetivo c), estoy tratando de tomar los valores enteros muestreados del búfer de la cola de audio de grabación, procesarlos en una función y escribir los valores modificados de nuevo en el búfer de reproducción. En el momento en que usar algo como esto¿Cómo extraer muestras enteras del buffer de cola de audio y volver a escribir muestras modificadas?
AudioBuffer audioBuffer = bufferList->mBuffers[0];
int bufferSize = audioBuffer.mDataByteSize/sizeof(SInt32);
SInt32 *frame = audioBuffer.mData;
SInt32 signalInput[22050];
for(int i=0; i<bufferSize; i++) {
SInt32 currentSample = frame[i];
*(signalInput +i) = currentSample;
}
para extraer los valores muestreados y parece que funciona bastante bien (signalinput se supone que es el vector objetivo para la escritura de las muestras de números enteros). pero escribirlos de nuevo en un búfer sigue siendo un problema ... busqué en la documentación y en muchos foros para encontrar una solución, pero aún no lo había logrado.
así la identificación esté muy agradecido por cualquier consejo, gracias de antemano, Lukas
Gracias por su rápida respuesta. - La parte de grabación ya está funcionando. Quería cambiar la devolución de llamada de alguna manera para modificar las muestras grabadas antes de escribirlas en un archivo, por ejemplo. Lo que sea, es posible, y en caso de que lo sea, ¿cómo puedo acceder directamente a las muestras grabadas de un buffer de audio (sin importar audio-queue o audio-unit). – Lukas
Asegúrese de que los tipos de datos de PCM que especifique, obtenga y use son consistentes. ¿Pediste muestras de 16 o 32 bits? ¿Entero o flotante? ¿Big o little-endian? etc. – hotpaw2
OK, gracias hasta ahora. Lo verifico de inmediato. Pero básicamente, ¿la función declarada arriba es correcta? Si ese es el caso, ¿cómo puedo escribir los valores (que tipo alguna vez ...) volver a un buffer de audio. No pude encontrar ningún código de muestra en ninguna parte ...? – Lukas