2010-04-16 12 views
6

Tengo un par de archivos wav y posiblemente un mp3 que me gustaría mezclar en un solo archivo wav o mp3. Estoy usando C/C++/Obj-C (iPhone). Realmente no tengo experiencia con este tipo de cosas. Si alguien pudiera darme algunos consejos, estaría muy agradecido.Mezcla de archivos de sonido en un iPhone

Básicamente lo que quiero hacer es cosas similares, como por ejemplo Audacity, pero por medio de programación. ¿No hay una biblioteca de sonidos donde puede abrir fácilmente archivos de audio y "pegarlos" en uno nuevo en posiciones definidas? Donde la mezcla es algo de lo que no tienes que preocuparte?

Gracias.

+0

¿Puede aclarar si desea reproducir sus archivos simultáneamente o mezclarlos y luego escribir el resultado en un archivo? En este último caso, ¿existe algún motivo por el que no pueda preprocesarlos para crear un solo archivo por adelantado? Si es el primero, probablemente querrá leer los Servicios de cola de audio o OpenAL, ambos temas bastante profundos. – warrenm

+0

Pregunta editada para ser más claro. Sí, los sonidos podrían ser simultáneos. – quano

+0

@quano hv u encuentra solución para eso ??? – Aadil

Respuesta

0

Lea Multimedia support como punto de partida que contiene mucha información. He aquí un extracto:

Hay 3 maneras de mezclar el audio en el iPhone: marco

  • unidad de audio
    • multicanal mezclador - "le permite combinar múltiples flujos de audio a un flujo único"
    • unidad mezcladora 3D - "le permite combinar múltiples flujos de audio, especificar paneo salida estéreo, manipular la frecuencia de muestreo"
  • openal utilizado en el desarrollo de juegos

consultar también la siguiente muestra de salida: iPhoneMultichannelMixerTest:

Dos buses de entrada se crean cada uno con controles de volumen de entrada. También se proporciona un control de volumen de salida del mezclador general y cada bus puede ser activado o desactivado

+0

Tenga en cuenta que no quiero reproducir los archivos (en el iPhone), simplemente haga las cosas con ellos y guárdelos en un nuevo archivo. :) Comprobaré los enlaces. – quano

3

la mezcla de dos buffers de sonido de PCM lineal es sólo una cuestión de añadir cada valor de la muestra en ellos juntos, y, por supuesto, asegúrese de que don se desborda Sin embargo, normalmente usaría valores de punto flotante en los búferes, por lo que el problema es cuando vuelve al archivo. También debe tener CoreAudio disponible en el iPhone, tiene todos los medios para abrir/leer/escribir archivos de sonido en diferentes formatos. Creo que también hay una API más de alto nivel disponible para el iPhone que no está en el mac, busque los documentos de Apple.

+0

Sí, lo he entendido también. No es difícil de hacer, pero requiere algo de trabajo. Pensé que alguien debería haber hecho esto antes, tal vez incluso hizo una simple lib para eso. Eso me ahorraría algo de tiempo. Leer archivos, agregar valores y escribir no es lo más emocionante que se me ocurre.:) Parece una característica tan trivial. Realmente me sorprendió lo difícil que parece ser encontrar una biblioteca ya existente que hace esto. Hasta ahora no he encontrado nada en los documentos que explique cómo se abren varios archivos, colocarlos en posiciones específicas en el tiempo y mezclarlos en un solo archivo. – quano

+0

Ok, pero hay soporte para esto en la API, necesitas completar una estructura con algunas propiedades de tu formato de archivo si no recuerdo mal, y luego enviarla a algunas de las funciones de la biblioteca. Fue hace un tiempo desde que hice esto, pero diría que la conversión de formato de una multitud de formatos de audio no es trivial, todo está soportado y hecho por la API. Una cosa como una línea de tiempo Creo que tienes que inventarte a ti mismo a menos que sea la reproducción en tiempo real, también es compatible con la API. Pero no debería ser demasiado difícil de hacer, ya que puede obtenerlo por (tiempo * muestra de frecuencia) para obtener un bufferindex. – Fred

2

Si está buscando específicamente las funciones de Audacity, usa PortAudio debajo del capó (parece una licencia de MIT). Tal vez solo puedes intentar usar eso?

Cuestiones relacionadas