/*	
 *	clipmus.h
 *
 *	P/ECE標準音楽ライブラリ 補助ルーチン
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2001-2014 Naoyuki Sawa
 *
 *	* Mon May 24 06:00:00 JST 2004 Naoyuki Sawa
 *	- 作成開始。
 *	* Tue Sep 23 18:35:17 JST 2014 Naoyuki Sawa
 *	- music_play(),music_stop(),music_stat()を追加しました。
 *	  これまで、個々のアプリケーションのapp.hでマクロ定義していましたが、今後は、ライブラリに含めることにしました。
 *	* Wed Sep 24 20:09:57 JST 2014 Naoyuki Sawa
 *	- music_loudness()を廃止し、music_init(),music_free(),music_filter_install()として汎用性を持たせました。
 *	  これまでのmusic_loudness()と同じ効果は、music_filter_install(music_filter_loudness)によって得られます。
 */
#ifndef __CLIP_MUS_H__
#define __CLIP_MUS_H__

//{{2014/09/23変更:music_play(),music_stop(),music_stat()を追加しました。これまで、個々のアプリケーションのapp.hでマクロ定義していましたが、今後は、ライブラリに含めることにしました。
///* P/ECE標準音楽ライブラリの音量増幅ON/OFFを切り替えます。
// * [in]
// *	enable		0を指定すると、音量増幅を行いません。
// *			1を指定すると、音量増幅を行います。
// * [note]
// *	* enable=1を指定すると、pceWaveDataOut()をフックします。
// *	  既にフックされている場合は、何もしません。
// *	* enable=0を指定すると、pceWaveDataOut()のフックを解除します。
// *	  まだフックされていない場合は、何もしません。
// *	* music_loudness(1)を呼び出したら、アプリケーション終了前に必ずmusic_loudness(0)も呼び出して、フックを解除してください。
// *	  フックを解除しないままアプリケーションを終了すると、P/ECEがハングアップします。
// *	* CLiPライブラリの終了ルーチンは、自動的にmusic_loudness(0)を★呼び出しません!!★
// *	  アプリケーションから明示的にmusic_loudness(0)を呼び出してください。
// *	* CLiPライブラリの終了ルーチンで自動的にmusic_loudness(0)を呼んでいない理由は、プログラムサイズを抑えるためです。
// *	  music_loudness()関数は、P/ECE標準音楽ルーチンの変数"music_wch"を参照しています。
// *	  CLiPライブラリの終了ルーチンでmusic_loudness()を呼んでしまうと、P/ECE標準音楽ライブラリの使用有無に関わらず、
// *	  常にP/ECE標準音楽ライブラリがリンクされ、プログラムサイズが増えてしまいます。
// *	  この問題を避けるために、CLiPライブラリの終了ルーチンからmusic_loudness()を呼び出すことは避けました。
// *	  P/ECE標準音楽ライブラリを利用するアプリケーションだけが明示的にmusic_loudness()を呼び出すことにより、
// *	  P/ECE標準音楽ライブラリを領するアプリケーションだけにP/ECE標準音楽ライブラリがリンクされます。
// */
//void music_loudness(int enable);
//↓2014/09/23変更:music_play(),music_stop(),music_stat()を追加しました。これまで、個々のアプリケーションのapp.hでマクロ定義していましたが、今後は、ライブラリに含めることにしました。
/* 音楽ライブラリを初期化します。
 * - music_play(),music_stop(),music_stat()を使用するアプリケーションは、最初に一度だけ、当関数を呼び出してください。 */
void music_init();
/* 音楽ライブラリを終了します。
 * - music_init()を呼び出したアプリケーションは、終了前に必ず、当関数を呼び出してください。 */
void music_free();
/* 音楽フィルタ関数を設定します。
 * [in]
 *	filter		音楽フィルタ関数のポインタ。NULLを指定すると、音楽フィルタ関数を解除します。
 * [note]
 *	- 当関数は、いつ呼び出しても安全です。
 *	  music_init()よりも前に呼び出して、あらかじめ、音楽フィルタ関数を設定しておいても構いません。
 *	  music_init()よりも後で呼び出して、任意のタイミングで音楽フィルタ関数を変更しても構いません。 */
typedef void MUSICFILTER(short wbuff[/*len*/], int len);
void music_filter_install(MUSICFILTER* filter);
/* P/ECE標準音楽ライブラリの音量増幅を行う、音楽フィルタ関数のサンプルです。
 * [note]
 *	- これまでの、music_loudness()に相当する効果を持つ、音楽フィルタ関数のサンプルです。
 *	  「music_filter_install(music_filter_loudness);」のように使用してください。 */
void music_filter_loudness(short wbuff[/*len*/], int len);
//}}2014/09/23変更:music_play(),music_stop(),music_stat()を追加しました。これまで、個々のアプリケーションのapp.hでマクロ定義していましたが、今後は、ライブラリに含めることにしました。

//{{2014/09/23追加:music_play(),music_stop(),music_stat()を追加しました。これまで、個々のアプリケーションのapp.hでマクロ定義していましたが、今後は、ライブラリに含めることにしました。
void music_play(const void* seq);
void music_stop();
int music_stat();	//(0=停止中,1=演奏中)を返します。music_stop()の直後に呼び出すと、(1=演奏中)を返すことに注意してください。clipmus.cのmusic_stat()のコメントを参照してください。
//}}2014/09/23追加:music_play(),music_stop(),music_stat()を追加しました。これまで、個々のアプリケーションのapp.hでマクロ定義していましたが、今後は、ライブラリに含めることにしました。

#endif /*__CLIP_MUS_H__*/
