他人の空似自作物置場

libmid.zip/dev_help.txt

MIDI *midi_open(char *filename,char *mode)
midiファイルをオープンします。
modeは"w"を指定してください、それ以外には未対応です。

int midi_close(MIDI* midi)
midi_openしたmidiを閉じます。
ここまで完了して初めて再生可能なmidiファイルになります。

void next(MIDI *midi,int time)
デルタタイム指定で時間を進めます。
4分音符=480デルタタイム=500ms(全てデフォルト値)
プログラム中で使う指定はデルタタイムになります。

int change_tempo(MIDI *midi,int tempo)
4部音符に対応する実時間を単位usで変更します。
デフォルト値500000

int change_delta(MIDI *midi,int delta)
4部音符に対応するデルタタイムを変更します。
デフォルト値480

int note_on(MIDI *midi,char channel,char note,char velocity)
ノートオン。指定チャンネルで指定ノート番号の音を指定ベロシティで発音する。
ベロシティが0の場合は、ノートオフと同じ意味となる。 
ノート番号は音階を数字で表現したもので、ピアノの中央のC(ド)を60として、半音ごとに1つづ増減し、一番低い音が0、一番高い音が127になります。

int note_off(MIDI *midi,char channel,char note,char velocity)
ノートオフ。指定チャンネルで鳴っている指定ノートの音を消音する。
ベロシティはノートオンとは反対に音を消す速さ、このパラメータはあまり使われません。

int key_press(MIDI *midi,char channel,char note,char velocity)
ポリフォニックキープレッシャー。
指定チャンネルで発音中の指定ノート番号の音に対し、指定ベロシティのプレッシャー情報を与える。
(キーボードで、今押さえている鍵盤を、 新たに指定したベロシティで押さえ直す)

int ctl_change(MIDI *midi,char channel,char ctl,char param)
コントロールチェンジ。
ctlで指定した機能をparamを引数として実行する。
ctlに指定できる機能は下記URL参照(無関係外部サイト)
http://www.pluto.dti.ne.jp/~daiki/Midi/IL_ControlNum.html

int prg_change(MIDI *midi,char channel,char program)
プログラムチェンジ、音色の切り替えとも。
指定チャンネルの音色を指定プログラムNoの物の切り替える。
プログラムNoについては下記URL参照(無関係外部サイト)
http://www.pluto.dti.ne.jp/~daiki/Midi/IL_ProgramNum.html

int cha_press(MIDI *midi,char channel,char velocity)
チャンネルプレッシャー。
指定チャンネルの全ノートに対して指定ベロシティーをかける。
(ポリフォニックキープレッシャーのチャンネル内全音版)

int pitch_bend(MIDI *midi,char channel,short pitch)
ピッチベンドチェンジ。
指定チャンネルに対してピッチベンダー情報を送信します。

void MidiPlay(MIDI *midi,double start,int dev)
midiを再生します。
startは演奏開始時間(実時間)、devは再生するmidiデバイス番号
わからなければどちらも0推奨。
midi_close前であればいつでも再生可能です。