Daha büyük bir uygulamanın parçası olarak bir metronom oluşturuyorum ve tek sesler olarak kullanacağım birkaç çok kısa wav dosyasına sahibim. Ben NSTimer önemli gecikme sorunları vardır ve Core Audio Swift uygulamak için oldukça zor olduğu için AVAudioEngine kullanmak istiyorum. Aşağıdakileri deniyorum, ancak şu anda ilk 3 adımı uygulayamıyorum ve daha iyi bir yol olup olmadığını merak ediyorum.Düşük gecikmeli metronom için ses zamanlamak üzere AVAudioEngine kullanma
Kod anahat:
- metronom mevcut ayarları (vuruşa barda başına atım ve alt bölümlerin sayısı; yener için dosya A, alt bölümleri için dosya B) 'ye göre dosya URL'lerin dizisi yaratmak Programlı
- tek AudioBuffer içine bu dosyaları okuyun veya tempo ve dosyaların uzunluğuna dayalı sessizlik çerçevelerin uygun numarası ile bir wav dosyası, oluşturma ve seslerin her biri arasında diziye eklemek AudioBufferList
- ,
Şimdiye kadar tek bir ses dosyasının bir döngü tamponu (adım 4) oynamak mümkün olmuştur ama dosyaların bir diziden bir tampon oluşturmak veya programlı sessizlik oluşturmak için edemedik ne de Bunu ele alan StackOverflow hakkında herhangi bir cevap buldum. Bu yüzden, bunun en iyi yaklaşım olmadığını düşünüyorum.
Soruma soru: AVAudioEngine kullanarak düşük gecikme süresine sahip bir dizi ses zamanlamak ve sonra bu diziyi döngülemek mümkün mü? Değilse, Swift kodlarken sesleri zamanlamak için hangi çerçeve/yaklaşım en uygun?
Bunun yardımcı olup olmadığından emin değilsiniz, ancak [TheAmazingAudioEngine] 'ı (https://github.com/TheAmazingAudioEngine/TheAmazingAudioEngine) deneyin. Bu objektif c'de yazılmıştır, ancak kısa bir süre içinde TAAE'ye baktığım hızlı bir şekilde –
10'da bir çerçeve olarak kullanılabilir ve en iyi seçenek olabilir, ancak daha doğal bir yaklaşım olduğunu umuyorum. – blwinters