ios - 无法将 AKAudioFile 加载到 AKSampler 中

标签 ios swift audio audiokit

我尝试在一个简单的 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、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 为半速等),更改速度将更改音量。

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

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

相关文章:

objective-c - iPad 上的多个呈现 View Controller 和旋转

ios - 如何使用swift 4.1获取url参数的值

audio - 音频和声音设置之间的区别

iphone - 添加声音到 Xcode 4.3

c# - 创建正弦音频信号时出现奇怪的故障

javascript - 如何使用网络音频 API 播放声音文件 Safari?

ios - 想要在单击相同的 UIButton 时从 UITableViewCell 更改正确的 UIButton 图像

ios - -(IBAction)action :(id)sender; 中的 (id)sender 是什么

swift - Ho 在段索引 chnage 上隐藏 ButtonBarPagerTabStripViewController 的 Childe View Controller

swift - 使用 Swift 从不同的类执行函数