libmid.zip/Readme.txt
プログラム名:libmid
用途:プログラム上から手軽にmidi出力するためのライブラリ
使い方:
libmid.hをincludeして、libmid.cと一緒にコンパイルしてください。
libmid単体では使えません。
ファイル解説:
libmid.c libmidの本体です、各種関数はこの中に実装されています。
libmid.h 関数のプロトタイプその他です、利用する際にはこのファイルをインクルードしてください。
midi_test.c サンプルプログラムです。 必要最低限なので使っていない機能も多いですが参考までに
midi_test.exe 上記コードを実際にコンパイルしたものです。
dev_help.txt libmid.c内で実装されている関数の説明です。大雑把なので詳細はコードより読み上げてください。
Readme.txt 今読んでいるこれ
History.txt 変更履歴
免責事項:
これに同梱されたプログラムその他が原因で発生したいかなる損害も当方は一切関知しません
自己責任でお使いください。
Q&A:
Q:デルタタイムの基準わからん
A:デルタタイム480で4部音符一個分、4部音符の実時間はデフォルトでは500ms(1/2秒)
change_tempo関数で4部音符あたりの実時間を、change_deltaで4部音符あたりのデルタタイムを変更可能。
change_deltaを1/10することは、change_tempoを10倍することと同義、逆もまた然り。
極端な値に変更した場合オーバーフローする恐れがあります。
Q:libmid.hにはあるのにdev_help.txtにない関数があるんだけど
A:内部使用専用関数です、オブジェクト指向的に言うならprivateです、気にしてはいけません。
Q:○○がやりたいんだけど、dev_help.txtにやり方が乗っていない
A:このコードではmidiの機能を100%利用できるわけではありません。
dev_help.txtに乗っていなければあきらめるか独自実装するか作者に要望投げてください。
Q:出力されたmidiがおかしい
A:関数の使い方を間違えていなければバグにぶち当たったと思われます。
作者にゴルァしてください。
Q:これだけはしちゃいけないって禁止事項は?
A:MIDI構造体の中身を関数を使わずに変更、もしくは利用すること。
Q:データ構造的にクラス化するべきじゃね?
A:中の人は主にC言語使いなのでC++専用では困るためこのような形になっています。
Q:関数の命名規則統一しろよ
A:作者の感性的には統一されています。
具体的に言うと、簡易実装は区切りなし全小文字、しっかり実装は区切りあり全小文字、おまけ機能的関数は大文字区切り。
場合により変に略されていたり英語がおかしいのは中の人の英語力的な仕様です。
作者:sweetie
著作権など:
めんどうなので全放棄、再配布でも何でもお好きにどうぞ
技術情報(とどうでもいい話):
なにやら最新版VCでC++としてコンパイルするとキャスト周りでエラーするらしい(手元に無いので未確認)
MidiPlayでwinapiを使っているのでWindows以外では動きません。
MidiPlay関数とwindows.hのインクルード消せばx86系の上でなら動くかもしれません。
midiの読み込みについて知りたい方は同じ場所にUPされているmidi.zipの方を参考にどうぞ。
コンパイル環境はコマンドライン版VC++14.00.50727.762、CodeGear付属のBCC32で動作することを確認しています。