Swift和MIDI输出

Swift和MIDI输出,swift,midi,Swift,Midi,我正试图开始一个我想写的音乐应用程序,但我无法通过第一步——播放一个音符。我最终希望能够演奏一系列音符,但一次只能演奏一件事 我在Swift和Xcode一起工作。我知道Swift有一些内置的MIDI功能,但我主要使用的是AudioKit3 也就是说。。。我完全不明白这一点。已经有一个类似的帖子了,我也试过了。它运行,但没有声音出来。没有错误。我只能假设swift自发布以来发生了一些变化。我发现的其他例子只使用了AK振荡器,而不是音箱,但是振荡器听起来很糟糕,我不能使用它。我更喜欢它听起来像钢琴,

我正试图开始一个我想写的音乐应用程序,但我无法通过第一步——播放一个音符。我最终希望能够演奏一系列音符,但一次只能演奏一件事

我在Swift和Xcode一起工作。我知道Swift有一些内置的MIDI功能,但我主要使用的是AudioKit3

也就是说。。。我完全不明白这一点。已经有一个类似的帖子了,我也试过了。它运行,但没有声音出来。没有错误。我只能假设swift自发布以来发生了一些变化。我发现的其他例子只使用了AK振荡器,而不是音箱,但是振荡器听起来很糟糕,我不能使用它。我更喜欢它听起来像钢琴,小号,或是有点音乐感的东西

有没有人有一些只演奏一个音符的工作示例代码

下面是我在网上找到的两段最接近的代码,我认为它们可以实现我想要的功能

let sampler = AKSampler()
sampler.loadWav("Sounds/fmpia1")
let ampedSampler = AKBooster(sampler, gain: 3.0)
var delay  = AKDelay(ampedSampler)
delay.time = pulse * 1.5
delay.dryWetMix = 0.0
delay.feedback = 0.0
    let cMajor = [72, 74, 76, 77, 79, 81, 83, 84]
var mix = AKMixer(delay)
var reverb = AKReverb(mix)
AudioKit.output = reverb
AudioKit.start()
for note in cMajor {
        sampler.playNote(note)
        sleep(1)
}
第一个问题是,我对第2行中加载的文件没有任何线索。采样器加载波形(“声音/fmpia1”)?如果我有那个文件,或者至少了解它是什么类型的文件,也许这会起作用

在第二个示例中,我实际上有一个相关文件(gs_instruments.dls)的副本,下面的代码确实成功运行,没有出现错误,但它实际上无法产生声音。不知道为什么。这是我在stackoverflow上找到的

class PlaySomething{
    init(){
        initAudio()
    }

    func initAudio(){
        let engine = AVAudioEngine()
        let sampler = AVAudioUnitSampler()
        engine.attachNode(sampler)
        engine.connect(sampler, to: engine.outputNode, format: nil)
        guard let soundbank = NSBundle.mainBundle().URLForResource("gs_instruments", withExtension: "dls") else {
            print("Could not initalize soundbank.")
            return
        }
        let melodicBank:UInt8 = UInt8(kAUSampler_DefaultMelodicBankMSB)
        let gmHarpsichord:UInt8 = 6
        do {
            try engine.start()
            try sampler.loadSoundBankInstrumentAtURL(soundbank, program: gmHarpsichord, bankMSB: melodicBank, bankLSB: 0)
        }catch {
            print("An error occurred \(error)")
            return
        }
        sampler.startNote(60, withVelocity: 64, onChannel: 0)
    }
}

你能发布一些你试过但没用的代码吗?我们很乐意帮助您找到解决方案,但如果我们能帮助您理解为什么原始代码不起作用,那就更好了。编辑了我的帖子,加入了一些示例代码!Swift 101问题。当initAudio()返回时,引擎从堆栈中弹出。顺便说一句,我在这里详细介绍了AVAudioUnitSampler:哈哈!哎呀!谢谢吉恩·德丽莎!我已经看到了你的网站相当多,因为我已经试图让这个项目移动。这是一个相当简单的疏忽,但在我前进的过程中,我可能会纠缠你,要求你提供更深入的信息。再次感谢!你能发布一些你试过但没用的代码吗?我们很乐意帮助您找到解决方案,但如果我们能帮助您理解为什么原始代码不起作用,那就更好了。编辑了我的帖子,加入了一些示例代码!Swift 101问题。当initAudio()返回时,引擎从堆栈中弹出。顺便说一句,我在这里详细介绍了AVAudioUnitSampler:哈哈!哎呀!谢谢吉恩·德丽莎!我已经看到了你的网站相当多,因为我已经试图让这个项目移动。这是一个相当简单的疏忽,但在我前进的过程中,我可能会纠缠你,要求你提供更深入的信息。再次感谢!