Swift和MIDI输出
我正试图开始一个我想写的音乐应用程序,但我无法通过第一步——播放一个音符。我最终希望能够演奏一系列音符,但一次只能演奏一件事 我在Swift和Xcode一起工作。我知道Swift有一些内置的MIDI功能,但我主要使用的是AudioKit3 也就是说。。。我完全不明白这一点。已经有一个类似的帖子了,我也试过了。它运行,但没有声音出来。没有错误。我只能假设swift自发布以来发生了一些变化。我发现的其他例子只使用了AK振荡器,而不是音箱,但是振荡器听起来很糟糕,我不能使用它。我更喜欢它听起来像钢琴,小号,或是有点音乐感的东西 有没有人有一些只演奏一个音符的工作示例代码 下面是我在网上找到的两段最接近的代码,我认为它们可以实现我想要的功能Swift和MIDI输出,swift,midi,Swift,Midi,我正试图开始一个我想写的音乐应用程序,但我无法通过第一步——播放一个音符。我最终希望能够演奏一系列音符,但一次只能演奏一件事 我在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:哈哈!哎呀!谢谢吉恩·德丽莎!我已经看到了你的网站相当多,因为我已经试图让这个项目移动。这是一个相当简单的疏忽,但在我前进的过程中,我可能会纠缠你,要求你提供更深入的信息。再次感谢!