==============================================================================
	seqmake.exe			v1.02 (2012.01.16) 連絡先変更
								     				by Hikoza.T.Ohkubo 2004
==============================================================================


-----------------------------------------------------------------------------
■seqmakeについて
-----------------------------------------------------------------------------

 seqmake.exe は、WARNING FOREVER 及び今後のHikware.製ゲームのためのBGM
連続再生用のデータファイル「SEQファイル」を作成するためのツールです。

 基本的に、複数の WAV, OggVorbis ファイルを、連続で再生するための再生順
リストを作成するためのツールですが、ゲームの進行状況によって次に再生させる
曲を変えたり、その他、いったい何に使うのか分かんないような事までいろいろ
できます。

 また、連続再生時には曲間には全くブランクは入りませんので、曲データを
イントロ部とループ部に分けて自然に無限ループさせたり、ゲームの進行状況に
よって少しずつ曲調を変えたりというような器用な事もできます。
 というか、元々そういうふうに曲データを作るつもりだったんすけどね。いつ
までもだらだらと延期されてますね。



-----------------------------------------------------------------------------
■使い方
-----------------------------------------------------------------------------

1.	この後の説明を読んで、曲再生定義スクリプト「bgm.txt」をテキスト
	エディタ等で作成します。

2.	bgm.txt を seqmake.exe にドロップすると、問題がなければ bgm.seq が
	できあがります。問題があったらエラーメッセージが表示されます。

3.	bgm.seq と、スクリプトに記述した *.wav, *.ogg 等のファイルを
	ゲームと同じフォルダに置きます。

4.	ゲームを起動するとスクリプトに従ってBGMが流れます。



-----------------------------------------------------------------------------
■曲再生定義スクリプトの基本
-----------------------------------------------------------------------------

 曲再生定義スクリプトファイル「bgm.txt」はテキストファイルですので、
お使いのテキストエディタ等で編集してください。基本的に以下のように羅列
すれば最初から順に再生されます。

	PLAY	"曲ファイル名"	ループ回数

 他にもアホみたいにたくさん機能がありますが、一つ一つ説明するとリリースが
1週間くらい伸びそうなので、簡単な説明とサンプルのみとします。基本的に自分
向けのツールですので、不親切ですが我慢してください。

	-------------------------------------------------------------------------
	■基本記述

		"//" 以降はコメント

		"_" から始まる単語は JUMP 等の命令で使用するラベル(例: _label)


	-------------------------------------------------------------------------
	■レジスタ(変数)

		LR0 ~ LR3		ローカルレジスタ:記述ファイル内で変数として使えます
		GR0 ~ GR7		グローバルレジスタ:ゲーム情報が入っています。

		WARNING FOREVER ではグローバルレジスタには以下の情報が入ります

			GR0:	現在のステージ数

			GR1:	ボスの成長段階
						0:	ピュアハート(属性なし)
						1:	前部、後部のどちらかが属性確定
						2:	前部、後部とも属性確定
						3:	前部、後部のどちらかが充分成長
						4:	前部、後部とも充分成長
						5:	完成形
						6:	最終形
					※イセワンについては完成形が最終形ですが、GR1の値は
					 5にしかなりません。

			GR2:	ボスが完成形になっていれば、その完成形番号
						0:	完成形ではない
						1:	ムラマサ
						2:	フェニックス
						3:	バーサーカー
						4:	スコルピオン
						5:	アスラ
						6:	へカトンケイル
						7:	ビッグマグナム
						8:	ハンマーヘッド
						9:	イセワン
						10:	カタストロフィ
						11:	アルマゲドン
						12:	インフィニティ

			GR3:	現在の秒数(ただし127秒以下)
					※「残り秒数が少なくなったら曲を変更」などに使用できます。

			GR4:	曲再生モード
						0:	LOOP
						1:	FADE
						2:	REW

			GR5 ~ GR7 は今のところ使っていません。



-----------------------------------------------------------------------------
■曲再生定義スクリプトの命令リファレンス
-----------------------------------------------------------------------------

 曲を再生させる PLAY 以外にもいろいろ命令がありますので、一応使い方だけ
書いておきます。後述のサンプルを見ながら使い方を考えてみてください。

	-------------------------------------------------------------------------
	■PLAY 命令		:	曲を再生

		PLAY		"filename"  loop_count

			filename	: ファイル名 (wav または OggVorbis)
			loop_count	: ループ回数 (0~255, 0=無限)


	-------------------------------------------------------------------------
	■PLEQ 命令		:	レジスタが特定の値なら曲を再生
	■PLNEQ 命令 	:	レジスタが特定の値でなければ曲を再生
	■PLABOVE 命令	:	レジスタが特定の値以上なら曲を再生
	■PLBELOW 命令	:	レジスタが特定の値以下なら曲を再生

		PLEQ		reg  value  "filename"  loop_count

			reg			: レジスタ (GR0~GR7, LR0~LR3)
			value		: 比較する値 (-128~127)
			filename	: ファイル名 (wav または OggVorbis)
			loop_count	: ループ回数 (0~255, 0=無限)


	-------------------------------------------------------------------------
	■END 命令		:	演奏を終了

		END			(パラメータなし)


	-------------------------------------------------------------------------
	■LOOP 命令		:	ラベルとの間を指定回数ループ

		LOOP		begin_label  loop_count

			begin_label	: ループを開始するラベル
			loop_count	: ループ回数 (0~255, 0=無限)


	-------------------------------------------------------------------------
	■REGSET 命令	:	レジスタ変数に値を設定
	■REGADD 命令	:	レジスタ変数に値を加算

		REGSET		reg  value
		REGADD		reg  value

			reg			: レジスタ (LR0 ~ LR3, GRには設定できません)
			value		: 設定値 (REGADD 命令では加算値) (-128~127)


	-------------------------------------------------------------------------
	■REGRND 命令	:	レジスタ変数にランダム値を設定

		REGRND		reg  min_value  max_value

			reg			: レジスタ (LR0 ~ LR3, GRには設定できません)
			min_value	: ランダムの最大値 (-128~127)
			max_value	: ランダムの最大値 (-128~127)


	-------------------------------------------------------------------------
	■JUMP 命令		:	無条件でラベルにジャンプ

		JUMP		label

			label		: ジャンプ先ラベル


	-------------------------------------------------------------------------
	■JPEQ 命令		:	レジスタが特定の値ならラベルにジャンプ
	■JPNEQ	命令	:	レジスタが特定の値でなければラベルにジャンプ
	■JPABOVE 命令	:	レジスタが特定の値以上ならラベルにジャンプ
	■JPBELOW 命令	:	レジスタが特定の値以下ならラベルにジャンプ

		JPEQ		reg  value  label

			reg			: レジスタ (GR0~GR7, LR0~LR3)
			value		: 比較する値 (-128~127)
			label		: ジャンプ先ラベル




-----------------------------------------------------------------------------
■サンプル
-----------------------------------------------------------------------------

	[例1] イントロ部とループ部に分かれた曲を再生
	-------------------------------------------------------------------------
		PLAY		"intro.ogg"	1				// "intro.ogg" を1回だけ再生
		PLAY		"loop.ogg"	0				// "loop.ogg" を無限再生
	-------------------------------------------------------------------------


	[例2] 3曲を順に連続再生してから、また先頭に戻る
	-------------------------------------------------------------------------
	_start
		PLAY		"song1.ogg"	1
		PLAY		"song2.ogg"	1
		PLAY		"song3.ogg"	1
		JUMP		_start						// _start の行まで戻る
	-------------------------------------------------------------------------


	[例3] 3曲からランダム再生。終了後、また3曲からランダム再生
	-------------------------------------------------------------------------
	_start
		REGRND		LR0		1	3				// 1~3 の値がランダムに入る
		PLEQ		LR0	1	"song1.ogg"	1		// LR0 が 1 なら再生
		PLEQ		LR0	2	"song2.ogg"	1		// LR0 が 2 なら再生
		PLEQ		LR0	3	"song3.ogg"	1		// LR0 が 3 なら再生
		JUMP		_start						// _start の行まで戻る
	-------------------------------------------------------------------------


	[例4] ステージ数に応じて曲を変える (REWモード)
	-------------------------------------------------------------------------
		// REW モードは毎ステージ最初から再生されます

		PLABOVE		GR0	10	"stage10.ogg"	0	// ステージ10以上なら無限再生
		PLABOVE		GR0	5	"stage5.ogg"	0	// ステージ5以上なら無限再生
		PLAY				"stage1.ogg"	0	// そうでないなら無限再生
	-------------------------------------------------------------------------


	[例5] ステージ数に応じて曲を変える (LOOPモード)
	-------------------------------------------------------------------------
	_start
		JPABOVE		GR0 10	_stage10		// ステージ10以上なら _stage10へ
		JPABOVE		GR0 5	_stage5			// ステージ5以上なら _stage5へ
		PLAY		"stage1.ogg"	1		// 1回再生して、_startへ
		JUMP		_start
	_stage5
		PLAY		"stage5.ogg"	1		// 1回再生して、_startへ
		JUMP		_start
	_stage10
		PLAY		"stage10.ogg"	1		// 1回再生して、_startへ
		JUMP		_start
	-------------------------------------------------------------------------


	[例6] ボスが完成形になったら、それぞれ曲を変える
	-------------------------------------------------------------------------
	_start
		JPABOVE		GR1	5	_complete		// 完成形なら _completeへ
		PLAY		"normal.ogg" 1			// 通常曲
		JUMP		_start

	_complete
		PLEQ		GR2	1	"boss01.ogg" 1	// ムラマサ
		PLEQ		GR2	2	"boss02.ogg" 1	// フェニックス
		PLEQ		GR2	3	"boss03.ogg" 1	// バーサーカー
		PLEQ		GR2	4	"boss04.ogg" 1	// スコルピオン
		PLEQ		GR2	5	"boss05.ogg" 1	// アスラ
		PLEQ		GR2	6	"boss06.ogg" 1	// ヘカトンケイル
		PLEQ		GR2	7	"boss07.ogg" 1	// ビッグマグナム
		PLEQ		GR2	8	"boss08.ogg" 1	// ハンマーヘッド
		PLEQ		GR2	9	"boss09.ogg" 1	// イセワン

		PLEQ		GR2	10	"boss10.ogg" 1	// カタストロフィ
		PLEQ		GR2	11	"boss11.ogg" 1	// アルマゲドン
		PLEQ		GR2	12	"boss12.ogg" 1	// インフィニティ
		JUMP		_start
	-------------------------------------------------------------------------



------------------------------------------------------------------------------
■動かない場合には
------------------------------------------------------------------------------

 seqファイルができあがらない場合には、エラーメッセージを見て定義ファイルを
修正してください。どうしても分からなければ定義ファイルをメール等で送って
いただければ、分かる範囲で原因を調査します。

 seqファイルが出来上がるのにゲームで曲が再生されない場合には、以下の点を
お確かめください。
 BGMが再生開始できなくてもエラーメッセージは特に出しませんので、再生に失敗
した場合は何も鳴らずにゲームがスタートします。


・曲ファイル名が間違っていないか?
	→ まあ、まず基本です。

・曲ファイルが再生可能なものか?
	→	WAV と OggVorbis しか対応していませんし、それ以外に対応する気も
		ありません。曲が鳴らない場合には、まず曲ファイルを bgm.ogg または
		bgm.wav という名前に変えてゲームと同じフォルダに置いてみて、その曲
		単体で再生可能なのかチェックしてみてください。
		ゲームと同じフォルダに bgm.seq、bgm.ogg、bgm.wav が置いてある場合
		には、seq -> ogg -> wav の順で再生にトライします。

・seq ファイルと、スクリプトで記述した全ての曲ファイルがゲームと同じ
 フォルダに置いてあるか?
	→	seqファイルは曲ファイルの再生順を管理するだけですので、曲本体の
		データは持っていません。再生するはずの曲は全て同じフォルダに置いて
		ください。
		曲データを相対パスで指定した場合には、その相対関係になるように
		曲データを置いてください。

・曲ファイルが絶対パス指定だったり、極端に長いファイル名だったりしないか?
	→ あまり特殊なファイル名やフォルダ名は想定していないので、極端に長い
		ファイル名、日本語やスペースが含まれるファイル名での動作はあまり
		検証していません。動作しないファイル名があるようでしたら教えて
		いただければ調査します。
		また、絶対パスは他の人に渡した場合にまず動かないと思いますので、
		やめた方がいいと思います。

・再生する曲ファイルのフォーマットが統一されているか?
	→ WAV と OggVorbis が混在するのは構わないのですが、曲の波形フォー
		マットが違う場合には連続再生ができません。切れ目なく再生する以上、
		これはどうにもできませんので、以下の点は全曲統一してください。

			・チャンネル数(モノラル/ステレオ)
			・サンプリング周波数(44kHz, 22kHzなど)
			・サンプリングビット(8bit, 16bitなど)

		サンプリングビットについては、OggVorbis は常に16bitでデコード
		していますので、WAVが混在する場合には WAV は 16bit の物しか
		扱えなくなります。

・スクリプトが無限ループしていないか?
	→ 再生中に、1度もPLAY命令を実行しないままスクリプトが無限ループ
		していると判断された場合には、再生を停止します。


また、再生後に以下の症状が出る場合も、以下の点をお確かめください。


・LOOP または FADE モードで、曲が変わるはずの状況なのになかなか変わらない。
	→ seqファイルは「次に鳴らす曲」を変更できるだけなので、1曲が長ければ
		当然その曲が終わるまで次の曲にはなりません。
		状況に応じて刻々と曲を変えたいようでしたら、長くても10秒程度の
		フレーズで曲ファイルを細かく分断して、それを繋ぎ合わせるように
		スクリプトを組む必要があります。

・曲ファイルの繋ぎ目に空白やノイズが入る
	→ 原因は以下の物が考えられます。
		・単に曲データの始点・終点に空白やノイズが入っている
			→曲データを直してください
		・曲データの繋ぎ目の波形の相性が悪い
			→音データは波形ですので、波の高さが突然変われば、当然そこは
			 不自然な音になります。普通は聞き取れないレベルと思いますが、
			 あまりに極端だとノイズとして聞こえてしまう事もありますので、
			 そうならないように曲データを切ってもらうしかありません。
		・PCもしくはドライブの性能が低く、次のファイルのロードが間にあわない
			→1秒以内に次の曲の頭出しができない場合、前の曲のフレーズが
			 リピートすると思います。なんとかしろと言われてもなんともでき
			 ませんので、PCの性能を上げてもらうしかありません。
			 CDなどの頭出しに時間がかかるドライブでは間に合わない事がある
			 かもしれません。



------------------------------------------------------------------------------
■連絡先
------------------------------------------------------------------------------

	ひこざ (大久保 忠信)

	http://www.hikware.com/

	メールアドレスは都合により変更する事があるのでここには記載しません。
	上記サイトにて最新のアドレスをご確認ください。


 わからない事はどんどん質問していただいて結構ですが、テキストエディタの
使い方など、このツールを使う以前のレベルの質問はお断り致します。

 また、このソフトについては自分用のツールをそのまま公開しているだけです
ので、僕が使う上でプラスにならないご要望等にはお応えしかねます。その点は
ご了承ください。

 seqファイルが作成できない、曲が再生されない等の質問時には、bgm.txtを
見せていただかないと対処も何もできませんので、少なくても bgm.txt は
添付してください。曲データは巨大でしょうから、いきなり添付して送るのは
やめてください。



-------------------------------------------------------------------------------
■お約束
-------------------------------------------------------------------------------

 ・このソフトの著作権は私Hikoza.にあります。無断での営利目的、不特定多数、
	変更を加えての再配布を禁止します。不特定多数の配布についても非営利目的
	であれば連絡さえ頂ければ基本的に許可しますので、まずはご連絡ください。
	再配布の際は、基本的に圧縮ファイルのまま行ってください。圧縮形式を変え
	たい場合などは、メールにてご相談ください。

 ・このツールで作成した seq ファイルにつきましては、ご自由に公開や販売など
	行っていただいて構いません。
	許可等も必要ありませんが、どんな使われ方をしているのか興味があります
	ので、お教えいただければ幸いです。

 ・このソフトを実行した事による損害等について、私Hikoza.及びHikwareは一切
  責任を負いません。
  ただし、今後の参考になりますので、もし何か起こってしまった時は連絡をい
  ただければ幸いです。



------------------------------------------------------------------------------
■seqmake の歴史
------------------------------------------------------------------------------

v1.00  2003.05.03  初期版
	SEQ仕様としては完成してます。

v1.01  2004.05.15  テキスト追記
	初期版のテキストがあまりに投げやりだったので、少し修正。
	本体は変わってません。

v1.02  2012.01.16  連絡先変更
	Webページを移転したため連絡先を変更。メールはWebからご確認ください。



Written by Hikoza.T.Ohkubo
------------------------------------------------------------------------------