投稿

4月, 2019の投稿を表示しています

[Swift] Music Sequenceで再生しているMIDIデータの情報を表示

Music Sequenceを使ってMIDIデータを再生している時に、なっている音を鍵盤で表示したい! ということで、色々調べてたのですが、多いのは、MIDIのInputPortまたはOutputPortにCallbackを仕込んで通知する方法でしたが、この方法だと、バックグランドモードを有効化しないと動作してくれない。 試行錯誤の結果、バックグランドモードを無効にしたまま、MIDIの再生データを表示することが出来たのでご紹介。 環境 Xcode 10.2 ターゲットOS iOS 9.0 コールバック用の関数定義 クラスの関数として実装 func musicSeqenceCallback(sequence: MusicSequence, track: MusicTrack, eventTime: MusicTimeStamp, data: UnsafePointer&ltmusiceventuserdata&gt, startSliceBeat: MusicTimeStamp, endSliceBeat: MusicTimeStamp) -> Void { // 処理したい内容 let dat = data.pointee.data let idx = Int(eventTime) print(String(format: "%d - %d",dat, idx)) } コールバック関数の割り当て クラスのinit()内で実装 func seqCallback(inClientData: UnsafeMutableRawPointer?, inSequence: MusicSequence, in