无法将AKAudioFile加载到AKSampler中

问题描述 投票:2回答:2

我正在尝试在一个简单的iOS项目中使用AKSampler来加载文件并在点击设备的屏幕时播放它。 我和AKSamplePlayer做了同样的步骤,它工作得很好,但我更喜欢使用AKSampler,而且我也有一种强烈的失落感。我尝试过play()方法,还有midi音符。 哪一个是对的?他们都工作吗?此外,AudioKit看起来很有前途。

这是我的代码:

import UIKit
import AudioKit

class ViewController: UIViewController
{
    var sampler = AKSampler()
    var tapRecognizer = UITapGestureRecognizer()

    override func viewDidLoad()
    {


    super.viewDidLoad()
        do
        {
            let file = try AKAudioFile(readFileName: "AH_G2.wav")
            try sampler.loadAudioFile(file)
        }
        catch
        {
            print("No Such File...")
        }

        view.addGestureRecognizer(tapRecognizer)
        view.isUserInteractionEnabled = true
        tapRecognizer.addTarget(self, action: #selector(viewTapped))


        AudioKit.output = sampler
        AudioKit.start()
    }

    @objc private func viewTapped()
    {
        sampler.play(noteNumber: 60, velocity: 80, channel: 0)

        print("tapped...")
    }
}

编辑:我的问题实际上是使用loadAudioFile方法,AKAudioFile本身很好,而AKSampler播放默认的正弦声音。 我也尝试了用于创建播放器和采样器的AKAudioFile方法。

let file = try AKAudioFile (readFileName: "AH_G2.wav")
player = file.player
sampler = file.sampler

我还尝试使用菜单添加wav文件,没有变化。

ios swift audio audiokit
2个回答
1
投票

如果你看一下实现,只有一个play()方法,但它有noteNumber,velocity和channel的默认值:

@objc open func play(noteNumber: MIDINoteNumber = 60,
                         velocity: MIDIVelocity = 127,
                         channel: MIDIChannel = 0) {
        samplerUnit.startNote(noteNumber, withVelocity: velocity, onChannel: channel)
    }

更改MIDI音符将改变采样播放的音高/速度(60为标准,72为双倍速度,48为半速等),更改速度将改变音量。

NB:你的帖子的标题是'AKSampler不玩',但是我运行你的代码(当然更改了样本),它在我的iPad上播放得很好。


1
投票

我尝试了不同的音频文件,它工作正常。第一个文件是单声道文件,所以我的结论是AKSampler不支持单声道文件。很想听到更多关于此的内容。

© www.soinside.com 2019 - 2024. All rights reserved.