标签: audiokit

AudioKit FFT转换为dB?

第一次发帖,感谢伟大的社区!

我正在使用AudioKit并尝试将频率加权滤波器添加到麦克风输入中,因此我试图理解AudioKit AKFFTTap中出现的值.

目前我正在尝试将FFT缓冲区转换为dB值

for i in 0..<self.bufferSize {
    let db = 20 * log10((self.fft?.fftData[Int(i)])!)
    print(db)
}
Run Code Online (Sandbox Code Playgroud)

我期待的值在-128到0的范围内,但是我得到了近-200dB的奇怪值,当我用麦克风吹出读数时它只能达到-60左右.我没有正确接近这个吗?我假设从EZAudioFFT引擎输出的值将是普通的幅度值,并且正常的dB转换数学将起作用.有人有主意吗?

提前感谢您对此问题的任何讨论!

audio fft ios swift audiokit

5
推荐指数
1
解决办法
696
查看次数

带有AudioKit的SceneKit/ARKit中的位置音频

我一直在探索Scene Kit/ARKit中的位置音频,并希望看看在这种情况下是否可以使用AudioKit从其更高级别的分析,声音生成,效果等工具中受益.

对于某些背景,SCNView附带AVAudioEnvironmentNode,AVAudioEngine和audioListener(SCNNode).这些属性已初始化,环境节点已配置到引擎.位置音频源通过SCNAudioPlayer添加到场景中,SCNAudioPlayer可以使用AVAudioNode进行初始化 - AVAudioNode必须连接到环境节点并具有单声道输出.

然后将SCNAudioPlayer添加到场景中的SCNNode,并根据其在场景中的位置以及audioListener节点的位置和方向自动修改AVAudioNode的输出.

我希望可以使用SCNView的AVAudioEngine属性初始化AudioKit,在引擎的节点图中配置SCNView的环境节点,使用AKNodes的AVAudioNode属性初始化SCNAudioPlayers,并确保所有源正确连接到环境节点.我已经开始修改AudioKit源代码,但是无法确定我需要调整哪些类以及如何将环境节点集成到AudioKit管道中.特别是我无法理解connectionPoints和outputNode属性.

有没有人相信这可能是不可能的,因为AudioKit是如何构建的,或者有关于方法的任何指示?

我当然乐意分享我的任何发现.

audio ios scenekit audiokit arkit

5
推荐指数
1
解决办法
501
查看次数

使用Audiokit即时创建MIDI文件

我目前正在使用以下方法来播放歌曲中的词干:

  1. 将stem_01.mp3加载到AKAudioFile中
  2. 将AKAudioFile添加到AKMIDISampler
  3. 将AKMIDISampler添加到AKMixer
  4. 重复1-3以增加茎数
  5. 使用自定义MIDI文件创建AKSequencer:此MIDI文件为歌曲中的每个词干都有单独的轨道。在MIDI文件中(在C3上),每个音轨上都有一个音符,持续整个歌曲。
  6. 我为每个词干向AKSequencer添加了一个新轨道,并使用音序器控制词干的播放

我的问题是:有没有办法自动创建此MIDI文件。我知道词根的数量和歌曲的持续时间;如何动态创建Audiokit启用AKSequencer所需的MIDI文件?

任何关于此的想法或想法都非常受欢迎,因为在添加新歌曲时,它将节省大量的手工工作。谢谢!

midi ios swift audiokit

5
推荐指数
0
解决办法
225
查看次数

如何使用Audiokit可视化AKSequencer当前位置?

我是Audiokit的新手。我想可视化正在运行的AKSequencer的当前位置。是否可以连接任何回调(例如AKMetronome中的回调)或侦听器或正在运行的根时钟/主循环?还是应该使用以任何方式“触发” GUI的AKCallbackInstrument?

有谁想分享吗?谢谢!

audio ios swift audiokit aksequencer

5
推荐指数
1
解决办法
349
查看次数

使用AudioKit定期播放纯音

我想在给定频率下使用AudioKit振荡器播放非常基本的声音.

例如:以400Hz播放简单的正弦波50毫秒,然后播放100毫秒的静音,然后播放600Hz达50ms ......

我有一个金属视图,我在那里渲染一些视觉刺激.我的目的是使用基本的AKOscillator和CADisplayLink的渲染功能来播放/停止某些帧的声音.

我尝试使用oscillator.play()oscillator.stop()或改变振幅oscillator.amplitude = 0oscillator.amplitude = 1,但结果在这两种情况下是约10毫秒的抖动.

如果我首先创建.wav文件然后播放它们AKPlayer.play()的时机是正确的.

我希望可以随时灵活地使用任何频率.我该如何做与第一种方法类似的事情?将振荡器包装在midi乐器中是可行的方法吗?

audio ios swift audiokit

5
推荐指数
1
解决办法
309
查看次数

将AKPlayer与AKSampleMetronome同步

我正在尝试在多个音频文件播放项目中使用AKSamplerMetronome作为主时钟。我希望AKPlayers与Metronome的悲观同步开始。将AKPlayer和AKSamplerMetronome混合为AudioKit.output成功,但是,我正在努力将AKPlayer.start与AKSamplerMetronome.beatTime连接(或其他我尚未弄清的东西),因此播放从节拍器的同步降落开始(并重复每次节拍器击倒的时间)。这是我写的:

class ViewController: UIViewController {

let metronome = AKSamplerMetronome()
let player = AKPlayer(audioFile: try! AKAudioFile(readFileName: "loop.wav"))
let mixer = AKMixer()

func startAudioEngine() {
    do {
        try AudioKit.start()
    } catch {
        print(error)
        fatalError()
    }
}

func makeConnections() {
    player >>> mixer
    metronome >>> mixer
    AudioKit.output = mixer
}

func startMetronome() {

    metronome.tempo = 120.0
    metronome.beatVolume = 1.0
    metronome.play()
}

func preparePlayer() {

    player.isLooping = true
    player.buffering = .always
    player.prepare()
// I wanted AKPlayer to be repeated based on Metronome's downbeat.

} …
Run Code Online (Sandbox Code Playgroud)

audiokit

5
推荐指数
1
解决办法
257
查看次数

AudioKit 问题,麦克风不够灵敏

我有一个问题,如果我正好在麦克风前面,我 6s 上的麦克风只会给我一个输出。我想更改灵敏度,以便它甚至可以从几英尺的距离读取频率。

这是我初始化 AKMicrophone 的方式:

AKSettings.audioInputEnabled = true
mic = AKMicrophone()
tracker = AKFrequencyTracker.init(mic)
silence = AKBooster(tracker, gain: 0)
Run Code Online (Sandbox Code Playgroud)

ios swift audiokit

4
推荐指数
1
解决办法
388
查看次数

AudioKit:何时使用 AKOperationGenerator 或 AKOscillator?

当我想使用 AudioKit 构建振荡器时,有不同的方法可以选择。例如,您可以在 AKOperationGenerator 中创建 AKOperation,如下所示

var osc = AKOperationGenerator { parameters in
       returnAKOperation.sawtoothWave(frequency: GeneratorSource.frequency)
)
Run Code Online (Sandbox Code Playgroud)

但你也可以创建一个

var oscillator = AKOscillator(waveform: AKTable(.sawtooth))
Run Code Online (Sandbox Code Playgroud)

有什么区别以及何时选择什么?谢谢!

ios swift audiokit akoperationgenerator akoscillator

4
推荐指数
1
解决办法
622
查看次数

使用多个 AKPlayers 播放多个音频文件

我正在尝试使用 AudioKit 的 AKPlayer 同步播放 4 个 mp3 文件,并且非常成功。不过,作为我的 Swift 研究的一部分,我想使用数组(或我还没有学到的东西)来简化我的代码,因为我觉得我的代码中有一些多余的东西,只是简单地复制了四次播放器代码。下面是我写的代码:

    let file1 = try? AKAudioFile(readFileName: "mixing_1_vocal.mp3")
    let file2 = try? AKAudioFile(readFileName: "mixing_2_drums.mp3")
    let file3 = try? AKAudioFile(readFileName: "mixing_3_synth.mp3")
    let file4 = try? AKAudioFile(readFileName: "mixing_4_bass.mp3")


    let player1 = AKPlayer(audioFile: file1!)
    let player2 = AKPlayer(audioFile: file2!)
    let player3 = AKPlayer(audioFile: file3!)
    let player4 = AKPlayer(audioFile: file4!)
    let startTime = AVAudioTime.now() + 0.25

    let mixer = AKMixer()
    player1 >>> mixer
    player2 >>> mixer
    player3 >>> mixer
    player4 >>> mixer

    player1.isLooping = true …
Run Code Online (Sandbox Code Playgroud)

swift audiokit

4
推荐指数
1
解决办法
567
查看次数

模块“AudioKit”没有名为“start”的成员

我试图AudioKit.start()在我的viewDidAppear方法中运行,但出现以下错误:

Module 'AudioKit' has no member named 'start'
Run Code Online (Sandbox Code Playgroud)

我的 pod 文件包括:

pod 'AudioKit', '~> 4.0'
pod 'AudioKit/Core', '~> 4.0'
pod 'AudioKit/UI', '~> 4.0'
Run Code Online (Sandbox Code Playgroud)

我正在导入:

import AudioKit
import AudioKitUI
Run Code Online (Sandbox Code Playgroud)

我在 Xcode 12.0.1 上。谢谢!

audiokit

4
推荐指数
1
解决办法
816
查看次数