Sto creando un metronomo come parte di un'app più grande e ho alcuni file wav molto brevi da utilizzare come singoli suoni. Vorrei utilizzare AVAudioEngine perché NSTimer ha notevoli problemi di latenza e Core Audio sembra piuttosto scoraggiante da implementare in Swift. Sto tentando quanto segue, ma al momento non sono in grado di implementare i primi 3 passaggi e mi chiedo se c'è un modo migliore.Uso di AVAudioEngine per programmare i suoni per il metronomo a bassa latenza
codice di struttura:
- creare un array di URL di file in base alle impostazioni correnti del metronomo (numero di battiti al bar e suddivisioni per battuta; file di A per il beat, il file B per le suddivisioni)
- livello di programmazione creare un file wav con il numero appropriato di fotogrammi di silenzio, in base al tempo e la lunghezza delle file, e inserirlo nella matrice tra ciascuno dei suoni
- leggere quei file in un unico AudioBuffer o AudioBufferList
- 012.
Finora sono stato in grado di giocare un buffer loop (punto 4) di un singolo file audio, ma non sono stato in grado di costruire un buffer da un array di file o di creare il silenzio di programmazione, né ho trovato qualche risposta su StackOverflow che risolve questo problema. Quindi immagino che questo non sia l'approccio migliore.
La mia domanda è: È possibile pianificare una sequenza di suoni con bassa latenza utilizzando AVAudioEngine e quindi ripetere quella sequenza? In caso contrario, quale framework/approccio è più adatto per la programmazione dei suoni durante la codifica in Swift?
Non sono sicuro che questo aiuti, ma provare [TheAmazingAudioEngine] (https://github.com/TheAmazingAudioEngine/TheAmazingAudioEngine). È scritto nell'obiettivo c, ma può essere usato come framework in swift –
Ho guardato brevemente TAAE e potrebbe essere l'opzione migliore, anche se spero che ci sia un approccio più nativo. – blwinters