我试图在一个简单的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文件,没有任何更改。

最佳答案

如果看一下实现,只有一个play()方法,但它具有noteNumber,力度和通道的默认值:

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

更改MIDI音符将改变采样播放的音高/速度(标准是60,72是双速,48是半速,依此类推),而改变速度将改变音量。

注意:您的帖子标题为“AKSampler不播放”,但我运行了您的代码(当然,更改了示例),并且在我的iPad上播放得很好。

关于ios - 无法将AKAudioFile加载到AKSampler中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47841022/

10-13 00:48