Open4
AudioKit / MIDI をざっくりと理解する
ピン留めされたアイテム
公式サイト
GitHub
MIDIファイルの構成要素
参考
バイナリとしては、
MIDI ファイルには、複数の Track が含まれる。(Format 1の場合)
Track には、複数のデータが含まれる。
データの種類としては、Note Off, Note On, Polyphonic Key Pressure, Control Change (CC), Program change, Channel Pressure, Pitch Bend Change, System Exclusive Message。
(一般的に使うのは、Note Off, Note On, Control Changeぐらいかも?)
データによっては、 Channelに紐付いている。
データは、1Byte目によって識別される。
( n
はチャンネル番号)
種類 | 1Byte目 |
---|---|
Note Off | 0x8n |
Note On | 0x9n |
Polyphonic Key Pressure | 0xAn |
Control Change | 0xBn |
Program change | 0xCn |
Channel Pressure | 0xDn |
Pitch Bend Change | 0xEn |
System Exclusive Message | 0xF0 |
概念としては、
1つのMIDIファイルに、複数の Track。
1つの Track に、複数の Channel。
1つの Channel に、複数の Note。
MIDIファイルを音として出力する
MIDIファイル自体には、「どのNote Numberを」「どのタイミングで」鳴らすという情報しかない。
その Note Number に対して、「どんな音か」を指定して音声ファイル(wavなど)に変換する。
iOS SDKを利用した場合、「どんな音か」を指定する方法はいくつかありそうでした。
- an .aupreset file
- a DLS or SF2 sound bank
- an EXS24 instrument
- a single audio file
- an array of audio files
今回は、 SF2 sound bank を利用しました。(なので、他を知らないです。。)
SF2の構成要素
参考
Bank と Preset で区分けされたエリアがある。
そのエリアに、 Note Number と音のセットを指定することができる。
AudioKit
5系はまだ beta なので、4系を前提に記載しています。
具体的には、 4.11.2 を利用しています。
- AKMIDISampler を、 AKManager の output に接続する。
- AKMIDISampler に sf2 ファイルを読み込ませる。
- AKAppleSequencer に MIDI ファイルを読み込ませる。
- AKAppleSequencer の Track 毎の MIDI IN を、 AKMIDISampler の MIDI OUT を接続する。