terminado aplicación para el iPhone: añadir una nueva característica. expediente del sonido del sistema y luego ser capaz de reproducir

StackOverflow https://stackoverflow.com/questions/962252

Pregunta

i acaba de crear una aplicación de tambor. El usuario pulsa sobre los botones individuales que desencadena un sonido corto para jugar con el systemsound de AudioToolbox. Ahora quisiera añadir un UIButton que dice "registro", y al clic, registrará todas Systemsounds que se está reproduciendo, y luego, cuando el uso presiona el botón de parada; el programa debe entonces ser capaz de reproducir el sonido.

¿Cómo voy a ir haciendo esto ?! Todo el proceso del programa de poder grabar el corto sonidos que el usuario activa pulsando en las áreas más afectadas individuales?!

Por favor, hágamelo saber

Gracias

Pavan

¿Fue útil?

Solución

No estoy familiarizado con el hardware de audio en el propio iPhone, pero ya que no expone ningún rutinas internas sintetización No me sorprendería si no es posible capturar el audio de salida para su reprocesamiento.

Sospecho le resultará mucho más fácil, especialmente si no está familiarizado con la programación de hardware de audio directamente, en lugar de registrar las acciones de tambor y los intervalos de tiempo y reproducir los archivos de audio de la misma manera como se jugó originalmente. Esto también tendría la ventaja de que se puede editar, frenar, acelerar, y otros trucos sin alterar el audio directamente.

A medida que se golpean los tambores, que había necesidad de anexar a una NSMutableArray. El ejemplo siguiente se basa en un tipo tambor (etiqueta para el botón tambor de ser golpeado por ejemplo), y una drumNextDelay que es el retardo (NSTimeInterval) al siguiente tambor de hit. Obviamente, hay más maneras de manejar esto, pero es sólo un ejemplo.

Una versión aproximada de la reproducción podría ser implementado llamando performSelector repetidamente con el siguiente intervalo de tiempo, algo así como lo siguiente:

- (void) startPerformance {
self.drumIndex = -1;
[self performSelector:@selector(playDrumBeat) withObject:nil afterDelay:0];
}

- (void) playDrumBeat {
self.drumIndex++;
[self playDrum:[[drumBeats objectAtIndex:self.drumIndex] drumType]];
[self performSelector:@selector(playDrumBeat) withObject:nil afterDelay:[[drumBeats objectAtIndex:self.drumIndex] drumNextDelay]];
}

Esto puede ser propensos a problemas de tiempo con el sistema operativo, pero me gustaría perseguir algo como esto para un primer corte y ver si funciona.

Barney

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top