//--------------------------------------------------------------------------------------
// 音楽の1ch分の処理
//--------------------------------------------------------------------------------------
// 此処から先はコンパイル済みMMLで動作する

#include "mml.h"
#import "MusicTones.h"
#import "MusicPlayTone.h"

enum { // fpauseの値
	FPAUSE_NONE=0,	// 演奏中
	FPAUSE_PAUSE,	// 一時停止中
	FPAUSE_STOP,	// 完全停止指示
};

@interface Music1ch : NSObject
{
	// 音色群
	MusicTones		*tones;
}
@property (nonatomic) int 	panpot;		// パンポット
@property (nonatomic) int 	volume;		// 音量
@property (nonatomic) int 	toneNo;		// 音色番号
@property (nonatomic) int 	fpause;		// 演奏状態；FPAUSE_*
@property (nonatomic) char 	*mmlObject;	// コンパイル済みMML
@property (nonatomic) BOOL 	isFetch; 	// fetch中かどうか；バックグラウンド動作するから
@property (nonatomic) BOOL 	fwaitEnd;	// fetch終了時の音出し終了を待っているかどうか
@property (nonatomic) FSYNC_TYPE fsync;	// mml.fsync
@property (nonatomic) volatile u_int64_t *tickUp;	// カウントアップタイマーのアドレス；本体は外部にあるので参照のみ出来るようにする
//
@property (nonatomic,readonly) NSString *comment;
@property (nonatomic,readonly) int count;		// 読み出しのgetter専用
@property (nonatomic,readonly) MML_RESULT mr;	// 結果
@property (nonatomic,readonly) BOOL isWaitEnd;	// fetch終了時に音出しが終わったかどうか

-(instancetype)initWithTones:(MusicTones *)_tones;
-(MML_RESULT)fetch1chStart;
-(MML_RESULT)fetch1chOnce;
-(void)toneStop;
-(void)stop;
-(MML_RESULT)workinit;
-(void)mute:(BOOL)foff;
-(void)clearWaitEnd;
-(void)terminate;

#define OBSERVE_FPAUSE	@"fpause"

@end

//--------------------------------------------------------------------------------------
