2010-04-16 20 views
6

Ho un paio di file wav e possibilmente un mp3 che mi piacerebbe mixare su un singolo file wav o mp3. Sto usando C/C++/Obj-C (iPhone). Non ho davvero esperienza con questo genere di cose. Se qualcuno potesse darmi qualche suggerimento, sarei molto grato.Miscelazione di file audio su un iPhone

Fondamentalmente quello che voglio fare è qualcosa di simile, come ad esempio Audacity può fare, ma a livello di programmazione. Non c'è una libreria di suoni in cui puoi facilmente aprire file audio e "incollarli" in una nuova in posizioni definite? Dove la miscelazione è qualcosa di cui non devi preoccuparti?

Grazie.

+0

È possibile chiarire se si desidera riprodurre i file contemporaneamente o mescolarli e quindi scrivere il risultato in un file? Se quest'ultimo, c'è un motivo per cui non è possibile pre-elaborarli per creare un singolo file in anticipo? Se è il primo, probabilmente vorrai leggere su Audio Queue Services o OpenAL, entrambi argomenti piuttosto profondi. – warrenm

+0

La domanda modificata deve essere più chiara. Sì, i suoni potrebbero essere simultanei. – quano

+0

@quano hai trovato una soluzione per quello ??? – Aadil

risposta

0

Leggi Multimedia support come punto di partenza contiene molte informazioni. Ecco un estratto:

ci sono 3 modi per mixare l'audio su iPhone: quadro

  • Audio Unit
    • Multichannel Mixer - "consente di mixare più flussi audio in un unico flusso"
    • Mixer 3D unità - "consente di mixare più flussi audio, specificare panning uscita stereo, manipolare sample rate"
  • OpenAL usato in sviluppo giochi

verificare anche la seguente campione su: iPhoneMultichannelMixerTest:

due bus di ingresso vengono creati ognuno con controlli di volume di ingresso. Un controllo del volume di uscita mixer complessiva è prevista anche e ciascun bus può essere abilitata o disabilitata

+0

Si noti che non voglio riprodurre i file (su iPhone), basta fare cose con loro e salvare in un nuovo file. :) Controllerò i collegamenti. – quano

3

Miscelazione due buffer audio PCM lineare è solo questione di aggiungere ciascun valore del campione in loro insieme, e naturalmente assicurarsi di don troppo pieno Normalmente si useranno i valori in virgola mobile nei buffer, quindi il problema è quando si torna al file. Dovresti anche avere CoreAudio disponibile su iPhone, ha tutti i mezzi per aprire/leggere/scrivere file audio in diversi formati. Penso che ci sia anche una API di livello più alto disponibile per l'iPhone che non è sul Mac, cercare i documenti Apple.

+0

Sì, ho capito anche questo. Non è difficile da fare, ma richiede un po 'di lavoro. Ho pensato che qualcuno avrebbe dovuto farlo prima, forse anche fatto una semplice lib per questo. Questo mi avrebbe risparmiato un po 'di tempo. Leggere file, aggiungere valori e scrivere non è la cosa più eccitante di cui possa pensare.:) Sembra proprio una caratteristica così banale. Sono rimasto davvero sorpreso da quanto sia difficile trovare una lib già esistente che faccia questo. Finora non ho trovato nulla nei documenti che spieghi come apri diversi file, li posizioni in posizioni specifiche nel tempo e li mescoli in un unico file. – quano

+0

Ok, ma nell'API c'è il supporto, è necessario riempire una struttura con alcune proprietà del formato file, se ricordo bene, quindi inviarla ad alcune funzioni della libreria. È passato un po 'di tempo da quando l'ho fatto, ma direi che la conversione del formato di una moltitudine di formati audio non è banale, è tutto supportato e fatto per te dall'API. Una cosa come una cronologia penso che devi inventare te stesso a meno che non sia la riproduzione in tempo reale la tua dopo, è supportata anche dall'API. Ma non dovrebbe essere troppo difficile da fare dato che puoi ottenerlo (tempo * sample requency) per ottenere un bufferindex. – Fred

2

Se si cercano specificamente le funzionalità di Audacity, utilizza PortAudio sotto il cofano (sembra una licenza MIT). Forse puoi semplicemente provare ad usarlo?