如何在 iOS 上播放音符(.mid 文件)?

Posted

技术标签:

【中文标题】如何在 iOS 上播放音符(.mid 文件)?【英文标题】:How to play sound note (.mid file) on iOS? 【发布时间】: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,例如一张带音符的纸,但仍需要为音乐会定义带乐器的管弦乐队。 你的意思是我也必须设置声音库?我想在用户单击按钮时播放音符。每个按钮播放不同的音符 【参考方案1】:

soundBankURL 在以下内容中缺失:

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

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

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

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

【讨论】:

但我没有音库文件...我想在用户点击按钮时播放音符...不同的按钮会产生不同的音符声音 @sejalthesiya 可能会尝试在互联网上找到一个,例如 oracle.com/technetwork/java/soundbanks-135798.html 或 synthfont.com/links_to_soundfonts.html

以上是关于如何在 iOS 上播放音符(.mid 文件)?的主要内容,如果未能解决你的问题,请参考以下文章

在 IOS 上使用 AudioKit 将声音文件作为 MIDI 音符发送

如何在 Python 中演奏音符?

iOS如何播放midi音符?

如何在 Android 上播放非正弦音符?迷笛?

如何使用python根据音符音高分割midi文件?

iOS AUSampler 连续播放 MIDI 音符