簡體   English   中英

Audiokit 中合成聲音的連續頻率變化是否可能?

[英]Are Continuous Frequency Changes for Synthesized Sound in Audiokit Possible?

我有興趣在 ios 上開發一個簡單的測試應用程序(使用 Swift),根據連續網格上的浮點位置,從左到右移動鼠標光標來控制正在播放的聲音的頻率。 我會尋找這樣的東西: https ://www.szynalski.com/tone-generator/

我創建了指數頻率曲線的基本可視化來幫助自己入門:

一個八度頻率圖,較深的顏色代表整個音調

聲音必須在運行時生成並連續播放,頻率變化也應該是連續/瞬時的(如彎音)。 AudioKit 似乎是一個很棒的 AP​​I,可以幫助我快速完成某些事情,但仔細研究后發現,許多文檔齊全的便利功能似乎只適用於預制音頻。 例如,網頁上說彎音示例僅用於播放器聲音,而不是生成的聲音。

瀏覽教程,我沒有看到我的用例被涵蓋——可能是在復雜的音頻合成器中。 還有一個問題是我將如何使頻率變化和音頻處於優先級線程中,因為這是應用程序的重點。 我記得讀到使用 UI 事件循環是行不通的。

為了表明我已經努力尋找解決方案,我想鏈接我找到的幾個頁面:

這是 MIDI 音符輸出的示例,但它不是連續的: https ://audiokit.io/playgrounds/Synthesis/Oscillator%20Bank/

我在stackoverflow上發現的唯一頻率問題之一適用於使用麥克風進行音高檢測,這並不真正相關: AudioKit(iOS)-添加觀察器以檢測頻率/幅度變化

這談到了連續振盪,但沒有描述如何動態改變頻率或產生聲音如何在 Audiokit 中不斷改變 AKMorphinOscillatorBank 的頻率?

我認為這是我發現的最接近的東西(產生聲音,使用運行時參數來調整頻率): AudioKit:根據陀螺數據改變聲音/擺動手機?

如果最后一頁有解決方案,那么我該如何處理AKOperationGenerator 我很想看到一個完整的例子。

簡而言之:如何在 AudioKit 中創建一個簡單的示例(或者我是否需要 CoreAudio 和 AudioUnits?),其中可以使用在運行時不斷更新的浮點坐標來連續和瞬時地改變生成聲音的頻率? 如何創建這樣的聲音(我想我不僅想合成正弦波,還想合成聽起來更像真實樂器或 FM 合成器的東西),打開/關閉它,並以我的方式控制它需要?

我是 AudioKit 的初學者,但我已經設置好了開發環境。 我能幫上忙嗎?

AKOscillatorBank 確實有一個 pitchBend 選項,它是連續的。 我自己用過。

事實上,Synthesis Playground 中的 Oscillator Bank 示例有一個彎音滑塊,當您打開鋼琴鍵時,您可以上下滑動它來連續改變音高。

我知道這個線程有點舊,但希望它有幫助!

這是一個稍微不同的用例,但我使用了漸變方法來創建滑動音符。 也許你可以嘗試一個函數,它總是根據鼠標的位置來增加頻率。

func playSlidingNote(freq1: Float, freq2: Float) {
        
    audioEngine.output = osc
    do {
        try audioEngine.start()
    }
    catch {
        print("could not start audioengine")
    }

    osc.setWaveform(Table(.sine))
    osc.$frequency.ramp(to: freq1, duration: 0)
    osc.amplitude = 0
    osc.start()
    // start of the tone
    osc.$amplitude.ramp(to: 1, duration: 0.01)
    osc.$frequency.ramp(to: freq2, duration: Float(noteLength))
    DispatchQueue.main.asyncAfter(deadline: .now() + noteLength) {
        // end of the tone
        osc.$amplitude.ramp(to: 0, duration: 0.01)
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
        osc.stop()
        }
    }
}

暫無
暫無

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

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