簡體   English   中英

具有音量包絡的iOS音頻采樣器

[英]iOS Audio Sampler with Volume Envelope

我的目標是為iPhone / iOS創建一個采樣器樂器。

樂器應播放不同音高/音符的聲音文件,並且應具有音量包絡。

音量包絡表示當尼特開始播放時,音量正在逐漸降低。 我嘗試了無數種方式來創建它。 理想的方法是使用AVAudioEngine的AVPlayerNode,然后實時處理該節點的各個樣本。

不幸的是,到目前為止,我在這種方法上還沒有成功。 您能否給我一些有關iOS的工作原理的指導?

謝謝托比亞斯

PS:我沒有學習核心音頻框架。 也許可以訪問AVAudioNodes音頻單元來執行此作業,但是我還沒有時間閱讀Framework。

我查看了您的另一篇文章,我認為您正在尋找AUSampler-實時控制AUSampler的設置

我尚未使用AVAudioUnitSampler ,但我相信它只是AUSampler的包裝。 要配置AUSampler,您必須首先使用AULab在Mac上制作和導出預設文件。 該文件是一個plist,其中包含文件引用和采樣器衰減量音高截止值以及AUSampler所針對的所有好東西。 然后將此文件放入您的應用程序捆綁包中。 然后,您創建一個名為“ Sounds”的目錄,將所有引用的音頻樣本復制到該文件夾​​中,並將其也放入您的應用包中(作為文件夾參考 )。 然后,創建您的audioGraph(或您的情況下為AVAudioEngine)和采樣器,並從應用程序捆綁包中的預設文件中加載預設。 有點痛苦。 我提供的這些鏈接是我用來啟動和運行的鏈接,但是它們有些陳舊,如果我現在就從哪里開始,我肯定會先研究AVAudioUnitSampler ,看看是否有更簡單的方法。

要獲取AULab,請轉到Apple的開發人員下載處 ,選擇“用於Xcode的音頻工具”。 下載完成后,只需打開DMG並將文件夾拖動到任何位置(我將其拖動到我的Applications文件夾)。 里面是AULab。 這是一個技術說明,描述了如何加載預設,另一個有關實時更改參數(例如,攻擊/衰減)的技術說明 ,這是WWDC視頻 ,它引導您完成整個過程,包括使用AULab。

一種更底層的方法是從文件中讀取音頻並處理音頻緩沖區。

您將ADSR存儲在一個數組或更好的數組中,這是一個數學函數,該函數根據傳遞的聲音索引(使用插值)輸出包絡值。 因此,包絡映射到任何聲音的持續時間。

然后,將音頻樣本與返回的包絡值相乘以得到過濾后的樣本。

一種方法是使用AVAudioNode並將處理節點鏈接到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM