引数の定義?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
すのう

引数の定義?

#1

投稿記事 by すのう » 15年前

DXライブラリとおーぷんMIDIぷろじぇくと(http://openmidiproject.sourceforge.jp/)のMIDIDataライブラリを使ってアプリケーションを作っているものです。
前回の投稿を一度解決にしてしまったのですが、また質問があるのでたびたび失礼します。

MIDIデータを読み込んでプロパティを表示させたいのですが、
フォーマットを読み込む

DrawFormatString(0,0,GetColor(255,255,255),"%d", MIDIData_GetFormat(pMIDIData));

などは上手くいくのですが、
テンポを読み込みたいのが上手くできません。

上と同じように書きたいのですが、

DrawFormatString(0,0,GetColor(255,255,255),"%d", MIDIData_FindTempo(pMIDIData));

ではできないです。

FindTempoの関数定義というところに

long MIDIData_FindTempo (MIDIData* pMIDIData, long lTime, long* pTempo);

と書いてあるのですが、long lTimeとかをどう書けばいいのでしょうか?
独学過ぎて、引数って何、くらいの状態なのですが、時間の都合でとりあえず答えを教えていただけると助かります。

softya

Re:引数の定義?

#2

投稿記事 by softya » 15年前

とりあえず関数は、引数の数だけパラメータを書かないとエラーになります。
>MIDIData_FindTempo (MIDIData* pMIDIData, long lTime, long* pTempo);
だと3つのパラメータです。

ヘルプを見ると
pMIDIData:MIDIデータへのポインタ
lTime:時刻
pTempo:テンポを格納するバッファ
と説明されています。

[詳細な説明]
lTimeにおけるテンポ(lTimeにテンポイベントがない場合は直前のテンポ)を調べ、バッファに格納する。この関数は、最初のMIDIトラックのみに含まれるテンポイベントを探索する。テンポの単位は4分音符あたりのマイクロ秒[μ秒/4分音符]である。テンポイベントが指定時刻までに存在しない場合は、デフォルト値として、500000[μ秒/4分音符]が返される。

あと関数の戻り値はテンポではなくて正常異常のフラグですので注意。

使い方としては
long tempo;
long ltime;
ltime = 100; //単位は?
if( MIDIData_FindTempo(pMIDIData,ltime,&tempo) ) {
//正常なら表示
DrawFormatString(0,0,GetColor(255,255,255),"%d", tempo );
}

C言語の関数の理解も出来ていないとするとポインタは分かりませんよね?
このライブラリはポインタを使いまくっているので大丈夫ですかね?

時間が無いかも知れませんが、下記サイトの11章と15章には目を通しておいて下さい。
http://homepage3.nifty.com/mmgames/c_guide/
このままだと、致命的なバグを作ってしまって行き詰まる予感がします。

すのう

Re:引数の定義?

#3

投稿記事 by すのう » 15年前

ありがとうございます。
とりあえずですが、アプリケーション完成しました。

お忙しい中助けていただいて感謝しています。
またなにかあったらよろしくお願いします^^

閉鎖

“C言語何でも質問掲示板” へ戻る