【问题标题】:How to play sound note (.mid file) on iOS?如何在 iOS 上播放音符(.mid 文件)?
【发布时间】:2017-12-13 08:18:58
【问题描述】:

我想制作钢琴演奏器,我想在其中演奏一些 .mid 文件的预定义音符。这是我的代码不起作用。

let soundPath: String? = Bundle.main.path(forResource: "0_100", ofType: "mid")
    let midiFile:URL = URL(fileURLWithPath: soundPath ?? "")
    var midiPlayer: AVMIDIPlayer?

    do {
        try midiPlayer = AVMIDIPlayer(contentsOf: midiFile, soundBankURL: nil)
        midiPlayer?.prepareToPlay()
        midiPlayer?.play {
            print("finished playing")
        }
    } catch {
        print("could not create MIDI player")
    }

【问题讨论】:

  • 如何定义 sound-banks 呢?你可以想象 MIDI,例如一张带音符的纸,但仍需要为音乐会定义带乐器的管弦乐队。
  • 你的意思是我也必须设置声音库?我想在用户单击按钮时播放音符。每个按钮播放不同的音符

标签: ios swift midi


【解决方案1】:

soundBankURL 在以下内容中缺失:

try midiPlayer = AVMIDIPlayer(contentsOf: midiFile, soundBankURL: nil)

文档要求:https://developer.apple.com/documentation/avfoundation/avmidiplayer/1389225-init

重要
对于 macOS,bankURL 可以设置为 nil 以使用默认的声音库。但是,iOS 必须始终引用有效的银行文件。

例如,soundBank 可以是 .sf2 文件。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
相关资源
最近更新 更多