-#ifndef _MOD_H__000314_1610 /* \82Q\8fd\83C\83\93\83N\83\8b\81[\83h\96h\8e~\82Ì\94Ô\95º */
+#ifndef _MOD_H__000314_1610 /* 2重インクルード防止の番兵 */
#define _MOD_H__000314_1610
#include "_allinc2.h"
#define MAX_CHANNELS ( 64 )
-/*\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª
-\81¥ \8d\\91¢\91Ì\82Ì\8c^
-\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª*/
+/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▼ 構造体の型
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
-/* \83C\83\93\83X\83g\83D\81[\83\8b\83\81\83\93\83g\82Ì\83G\83\93\83x\83\8d\81[\83v\90§\8cä\93_ */
+/* インストゥールメントのエンベロープ制御点 */
struct ENVELOPE {
- U16 x ; /* \83G\83\93\83x\83\8d\81[\83v\90§\8cä\93_\82Ì x \8dÀ\95W */
- U16 y ; /* \83G\83\93\83x\83\8d\81[\83v\90§\8cä\93_\82Ì y \8dÀ\95W */
+ U16 x ; /* エンベロープ制御点の x 座標 */
+ U16 y ; /* エンベロープ制御点の y 座標 */
};
-/* \89\89\91t\92\86\82Ì\8bÈ\82Ì\8fó\91Ô\82ð\95\\82· */
+/* 演奏中の曲の状態を表す */
#pragma pack(push)
#pragma pack(1)
struct MOD {
- S32 FormatType ; /* \83t\83H\81[\83}\83b\83g\83^\83C\83v */
+ S32 FormatType ; /* フォーマットタイプ */
- S32 bLoopMode ; /* \83\8b\81[\83v\8dÄ\90¶\83\82\81[\83h\82©\81H TRUE / FALSE */
- S32 bAutoGainControl ; /* \8e©\93®\83Q\83C\83\93\83R\83\93\83g\83\8d\81[\83\8b\82·\82é\82©\81H TRUE / FALSE */
- S32 bDone ; /* \8dÄ\90¶\8fI\97¹\82µ\82½\82©\81H TRUE / FALSE */
+ S32 bLoopMode ; /* ループ再生モードか? TRUE / FALSE */
+ S32 bAutoGainControl ; /* 自動ゲインコントロールするか? TRUE / FALSE */
+ S32 bDone ; /* 再生終了したか? TRUE / FALSE */
- S32 TickCount ; /* \83e\83\93\83|\8f\88\97\9d\97p */
- S32 nTickPerRow ; /* \83e\83\93\83|\8f\88\97\9d\97p\81i1 Row \82 \82½\82è\82Ì tick \90\94\81j*/
+ S32 TickCount ; /* テンポ処理用 */
+ S32 nTickPerRow ; /* テンポ処理用(1 Row あたりの tick 数)*/
S32 BPM ; /* BPM */
- S32 nWavePerSec ; /* WAVE \8fo\97Í\83f\83o\83C\83X\82Ì\8eü\94g\90\94(Hz) */
- S32 nWavePerTick ; /* \8dÅ\8f¬\8a\84\82è\8d\9e\82Ý\92P\88Ê\8aú\8aÔ\93\96\82½\82è\82Ì\90¶\90¬\94g\8c`\90\94 */
- S32 nRestWave ; /* \8e\9f\82Ì\8a\84\82è\8d\9e\82Ý\82Ü\82Å\82Ì\8ec\91¶\94g\8c`\83f\81[\83^\90\94 */
+ S32 nWavePerSec ; /* WAVE 出力デバイスの周波数(Hz) */
+ S32 nWavePerTick ; /* 最小割り込み単位期間当たりの生成波形数 */
+ S32 nRestWave ; /* 次の割り込みまでの残存波形データ数 */
- S32 Row ; /* \83p\83^\81[\83\93\83f\81[\83^\93à\83X\83L\83\83\83\93\88Ê\92u */
- S32 BreakSequence ; /* \95ª\8aò\90æ\81iSequence\81j*/
- S32 BreakRow ; /* \95ª\8aò\90æ\81iRow\81j*/
- S32 PatternDelay ; /* \83R\83}\83\93\83h EEx \97p\92x\89\84\90\94\81iRow \92P\88Ê\81j */
- S32 FinePatternDelay ; /* \83R\83}\83\93\83h X6x \97p\92x\89\84\90\94\81iTick \92P\88Ê\81j */
+ S32 Row ; /* パターンデータ内スキャン位置 */
+ S32 BreakSequence ; /* 分岐先(Sequence)*/
+ S32 BreakRow ; /* 分岐先(Row)*/
+ S32 PatternDelay ; /* コマンド EEx 用遅延数(Row 単位) */
+ S32 FinePatternDelay ; /* コマンド X6x 用遅延数(Tick 単位) */
- S32 idxSequenceData ; /* \83V\81[\83P\83\93\83X\83f\81[\83^\93Ç\82Ý\8eæ\82è\88Ê\92u */
+ S32 idxSequenceData ; /* シーケンスデータ読み取り位置 */
- S32 GlobalVolume_ ; /* \83O\83\8d\81[\83o\83\8b\83{\83\8a\83\85\81[\83\80\81i0x00_ \81` 0x40_\81j*/
- S32 GlobalVolumeSlide ; /* \83O\83\8d\81[\83o\83\8b\83{\83\8a\83\85\81[\83\80\81A\83X\83\89\83C\83h\92l */
- S32 GlobalVolumeScale_ ; /* \91S\91Ì\82Ì\89¹\97Ê\83X\83P\81[\83\8a\83\93\83O\92l\81i0_ \81` 1_\81j*/
- S32 GainControlScale_ ; /* \83Q\83C\83\93\92²\90®\97p \89¹\97Ê\83X\83P\81[\83\8a\83\93\83O\92l\81i0_ \81` 1_\81j*/
+ S32 GlobalVolume_ ; /* グローバルボリューム(0x00_ ~ 0x40_)*/
+ S32 GlobalVolumeSlide ; /* グローバルボリューム、スライド値 */
+ S32 GlobalVolumeScale_ ; /* 全体の音量スケーリング値(0_ ~ 1_)*/
+ S32 GainControlScale_ ; /* ゲイン調整用 音量スケーリング値(0_ ~ 1_)*/
- /* \83v\83`\83m\83C\83Y\91Î\8dô */
- S32 AntiNoiseVal_L ; /* \94g\8c`\82Ì\8fC\90³\92l\81A\8d¶ */
- S32 AntiNoiseVal_R ; /* \94g\8c`\82Ì\8fC\90³\92l\81A\89E */
+ /* プチノイズ対策 */
+ S32 AntiNoiseVal_L ; /* 波形の修正値、左 */
+ S32 AntiNoiseVal_R ; /* 波形の修正値、右 */
- /* XM \8c`\8e® \83w\83b\83_\81[\8fî\95ñ \82»\82Ì\82P */
+ /* XM 形式 ヘッダー情報 その1 */
struct XM_ID {
- char aszID_Text[ 17 ]; /* XM \8c`\8e®\8e¯\95Ê\95¶\8e\9a\97ñ */
- char aszModuleName[ 21 ]; /* \83f\81[\83^\82Ì\96¼\91O\81i1\95¶\8e\9a\97]\95ª\82É\81j*/
- S32 ID_Byte ; /* XM \8c`\8e®\8e¯\95Ê\97p */
- char aszTrackerName[ 21 ]; /* \96{\83f\81[\83^\82ð\8dì\90¬\82µ\82½\83g\83\89\83b\83J\81[\96¼\81i1\95¶\8e\9a\97]\95ª\82É\81j*/
- S32 VersionNumber ; /* \83f\81[\83^\82Ì\83o\81[\83W\83\87\83\93\83i\83\93\83o\81[ */
+ char aszID_Text[ 17 ]; /* XM 形式識別文字列 */
+ char aszModuleName[ 21 ]; /* データの名前(1文字余分に)*/
+ S32 ID_Byte ; /* XM 形式識別用 */
+ char aszTrackerName[ 21 ]; /* 本データを作成したトラッカー名(1文字余分に)*/
+ S32 VersionNumber ; /* データのバージョンナンバー */
} XmId ;
- /* XM \8c`\8e® \83w\83b\83_\81[\8fî\95ñ \82»\82Ì\82Q */
+ /* XM 形式 ヘッダー情報 その2 */
struct XM_HEADER {
- S32 HeaderSize ; /* \83w\83b\83_\81[\97Ì\88æ\82Ì\83T\83C\83Y */
- S32 SongLength ; /* aPatternOrderTable \82Ì\92·\82³\82É\8a·\8eZ\82µ\82½\81A\8bÈ\82Ì\91S\92· */
- S32 RestartPosition ; /* \8bÈ\82Ì\83\8b\81[\83v\8e\9e\81A\95\9c\8bA\88Ê\92u */
- S32 NumberOfChannels ; /* \91\8d\83`\83\83\83\93\83l\83\8b\90\94 */
- S32 NumberOfPatterns ; /* \91\8d Pattern \90\94 */
- S32 NumberOfInstruments ; /* \91\8d Instrument \90\94 */
+ S32 HeaderSize ; /* ヘッダー領域のサイズ */
+ S32 SongLength ; /* aPatternOrderTable ã\81®é\95·ã\81\95ã\81«æ\8f\9bç®\97ã\81\97ã\81\9fã\80\81æ\9b²ã\81®å\85¨é\95· */
+ S32 RestartPosition ; /* 曲のループ時、復帰位置 */
+ S32 NumberOfChannels ; /* 総チャンネル数 */
+ S32 NumberOfPatterns ; /* 総 Pattern 数 */
+ S32 NumberOfInstruments ; /* 総 Instrument 数 */
S32 Flags ; /*
- bit 0 : 0 \82È\82ç AmigaPeriod \83\82\81[\83h
- 1 \82È\82ç \90ü\8c`\8eü\94g\90\94\83\82\81[\83h
+ bit 0 : 0 なら AmigaPeriod モード
+ 1 なら 線形周波数モード
*/
- S32 DefaultTempo ; /* 1 Row \93\96\82è\82Ì Tick \90\94\81A\83f\83t\83H\83\8b\83g\92l */
- S32 DefaultBPM ; /* BPM \83f\83t\83H\83\8b\83g\92l */
- U8 aPatternOrderTable[ 256 ]; /* \89\89\91t\82·\82é Pattern \82Ì\8f\87\8f\98\82ð\95\\82µ\82½\83e\81[\83u\83\8b */
+ S32 DefaultTempo ; /* 1 Row 当りの Tick 数、デフォルト値 */
+ S32 DefaultBPM ; /* BPM デフォルト値 */
+ U8 aPatternOrderTable[ 256 ]; /* 演奏する Pattern の順序を表したテーブル */
} XmHeader ;
- /* \83p\83^\81[\83\93\82Ì\8fî\95ñ */
+ /* パターンの情報 */
struct XM_PATTERN {
- S32 PatternHeaderLength ; /* \83w\83b\83_\81[\97Ì\88æ\82Ì\83T\83C\83Y */
- S32 PackingType ; /* Pattern \82Ì\88³\8fk\8c`\8e®\81i\8fí\82É 0 \82ç\82µ\82¢\81j*/
- S32 NumberOfRowsInPattern ; /* Pattern \93à\82Ì\91\8d Row \90\94 */
- S32 PackedPatterndataSize ; /* \88³\8fk\82³\82ê\82½\8fó\91Ô\82Å\82Ì Pattern \82Ì\83f\81[\83^\83T\83C\83Y */
+ S32 PatternHeaderLength ; /* ヘッダー領域のサイズ */
+ S32 PackingType ; /* Pattern の圧縮形式(常に 0 らしい)*/
+ S32 NumberOfRowsInPattern ; /* Pattern 内の総 Row 数 */
+ S32 PackedPatterndataSize ; /* 圧縮された状態での Pattern のデータサイズ */
- /* \83\8f\81[\83N\97Ì\88æ */
- U8 *pPatternData ; /* \83p\83^\81[\83\93\83f\81[\83^\82Ö\82Ì\83|\83C\83\93\83^\81[ */
+ /* ワーク領域 */
+ U8 *pPatternData ; /* パターンデータへのポインター */
} *(apXM_PATTERN[ MAX_PATTERNS ]);
- /* \83T\83\93\83v\83\8a\83\93\83O\82Ì\8fî\95ñ */
+ /* サンプリングの情報 */
struct XM_SAMPLE {
- void *pSampleData ; /* \83T\83\93\83v\83\8a\83\93\83O\83f\81[\83^\82Ö\82Ì\83|\83C\83\93\83^\81[ */
- S32 SampleLength ; /* \83T\83\93\83v\83\8a\83\93\83O\83f\81[\83^\82Ì\94g\8c`\97v\91f\90\94 */
- S32 SampleLoopStart ; /* \83T\83\93\83v\83\8a\83\93\83O\82Ì\83\8b\81[\83v\8aJ\8en\88Ê\92u\81i\94g\8c`\97v\91f\92P\88Ê\81j*/
- S32 SampleLoopLength ; /* \83T\83\93\83v\83\8a\83\93\83O\82Ì\83\8b\81[\83v\8bæ\8aÔ\82Ì\92·\82³\81i\94g\8c`\97v\91f\92P\88Ê\81j*/
- S32 Volume ; /* \83T\83\93\83v\83\8a\83\93\83O\82Ì\83f\83t\83H\83\8b\83g\89¹\97Ê */
- S32 FineTune ; /* \83T\83\93\83v\83\8a\83\93\83O\82Ì\83f\83t\83H\83\8b\83g FineTune \92l */
+ void *pSampleData ; /* サンプリングデータへのポインター */
+ S32 SampleLength ; /* サンプリングデータの波形要素数 */
+ S32 SampleLoopStart ; /* サンプリングのループ開始位置(波形要素単位)*/
+ S32 SampleLoopLength ; /* サンプリングのループ区間の長さ(波形要素単位)*/
+ S32 Volume ; /* サンプリングのデフォルト音量 */
+ S32 FineTune ; /* サンプリングのデフォルト FineTune 値 */
S32 Type ; /*
Bit 0-1: 00 = No loop
01 = Forward loop
Bit 4: 0 = 8-bit sampledata
1 = 16-bit sampledata
*/
- S32 Panning ; /* \83T\83\93\83v\83\8a\83\93\83O\82Ì\83f\83t\83H\83\8b\83g\83p\83\93\88Ê\92u */
- S32 RelativeNoteNumber ; /* \89¹\8aK\82Ì\8fC\90³\92l */
- S32 Reserved ; /* \97\\96ñ\97Ì\88æ */
- char aszSampleName[23]; /* \83T\83\93\83v\83\8a\83\93\83O\82Ì\96¼\91O\81i1\95¶\8e\9a\97]\95ª\82É\81j*/
+ S32 Panning ; /* サンプリングのデフォルトパン位置 */
+ S32 RelativeNoteNumber ; /* 音階の修正値 */
+ S32 Reserved ; /* 予約領域 */
+ char aszSampleName[23]; /* サンプリングの名前(1文字余分に)*/
- /* \83\8f\81[\83N\97Ì\88æ */
- S32 VoiceMode ; /* \8ae\8eí\83t\83\89\83O */
+ /* ワーク領域 */
+ S32 VoiceMode ; /* 各種フラグ */
} *(apXM_SAMPLE[ MAX_SAMPLES ]);
- /* \83C\83\93\83X\83g\83D\81[\83\8b\83\81\83\93\83g\82Ì\8fî\95ñ */
+ /* インストゥールメントの情報 */
struct XM_INSTRUMENT {
- S32 InstrumentSize ; /* \83f\81[\83^\83T\83C\83Y */
- char aszInstrumentName[ 23 ]; /* \83C\83\93\83X\83g\83D\81[\83\8b\83\81\83\93\83g\82Ì\96¼\91O\81i1\95¶\8e\9a\97]\95ª\82É\81j*/
- S32 InstrumentType ; /* \83C\83\93\83X\83g\83D\81[\83\8b\83\81\83\93\83g\82Ì\8c`\8e®\81i\8fí\82É 0 \82ç\82µ\82¢\81j*/
- S32 NumberOfSamplesInInstrument ; /* \82±\82Ì\83C\83\93\83X\83g\83D\81[\83\8b\83\81\83\93\83g\82É\8aÜ\82Ü\82ê\82é\83T\83\93\83v\83\8a\83\93\83O\90\94 */
- S32 SampleHeaderSize ; /* \83T\83\93\83v\83\8a\83\93\83O\82Ì\83w\83b\83_\81[\8fî\95ñ\82Ì\83T\83C\83Y */
- U8 aSampleNumberForAllNotes[ 96 ]; /* \91S\89¹\8aK\95Ê\82Ì\83T\83\93\83v\83\8a\83\93\83O\94Ô\8d\86 */
- ENVELOPE aPointsForVolumeEnvelope[ 12 ]; /* \83{\83\8a\83\85\81[\83\80\83G\83\93\83x\83\8d\81[\83v\82Ì\90§\8cä\93_\81i\8dÅ\91å 12\81j*/
- ENVELOPE aPointsForPanningEnvelope[ 12 ]; /* \83p\83\93\83G\83\93\83x\83\8d\81[\83v\82Ì\90§\8cä\93_\81i\8dÅ\91å 12\81j*/
- S32 NumberOfVolumePoints ; /* \83{\83\8a\83\85\81[\83\80\83G\83\93\83x\83\8d\81[\83v\82Ì\90§\8cä\93_\82Ì\90\94 */
- S32 NumberOfPanningPoints ; /* \83p\83\93\83G\83\93\83x\83\8d\81[\83v\82Ì\90§\8cä\93_\82Ì\90\94 */
- S32 VolumeSustainPoint ; /* \83{\83\8a\83\85\81[\83\80\83G\83\93\83x\83\8d\81[\83v\82Ì\83T\83X\83e\83C\83\93\83|\83C\83\93\83g */
- S32 VolumeLoopStartPoint ; /* \83{\83\8a\83\85\81[\83\80\83G\83\93\83x\83\8d\81[\83v\82Ì\83\8b\81[\83v\8aJ\8en\88Ê\92u */
- S32 VolumeLoopEndPoint ; /* \83{\83\8a\83\85\81[\83\80\83G\83\93\83x\83\8d\81[\83v\82Ì\83\8b\81[\83v\8fI\97¹\88Ê\92u */
- S32 PanningSustainPoint ; /* \83p\83\93\83G\83\93\83x\83\8d\81[\83v\82Ì\83T\83X\83e\83C\83\93\83|\83C\83\93\83g */
- S32 PanningLoopStartPoint ; /* \83p\83\93\83G\83\93\83x\83\8d\81[\83v\82Ì\83\8b\81[\83v\8aJ\8en\88Ê\92u */
- S32 PanningLoopEndPoint ; /* \83p\83\93\83G\83\93\83x\83\8d\81[\83v\82Ì\83\8b\81[\83v\8fI\97¹\88Ê\92u */
+ S32 InstrumentSize ; /* データサイズ */
+ char aszInstrumentName[ 23 ]; /* インストゥールメントの名前(1文字余分に)*/
+ S32 InstrumentType ; /* インストゥールメントの形式(常に 0 らしい)*/
+ S32 NumberOfSamplesInInstrument ; /* このインストゥールメントに含まれるサンプリング数 */
+ S32 SampleHeaderSize ; /* サンプリングのヘッダー情報のサイズ */
+ U8 aSampleNumberForAllNotes[ 96 ]; /* 全音階別のサンプリング番号 */
+ ENVELOPE aPointsForVolumeEnvelope[ 12 ]; /* ボリュームエンベロープの制御点(最大 12)*/
+ ENVELOPE aPointsForPanningEnvelope[ 12 ]; /* パンエンベロープの制御点(最大 12)*/
+ S32 NumberOfVolumePoints ; /* ボリュームエンベロープの制御点の数 */
+ S32 NumberOfPanningPoints ; /* パンエンベロープの制御点の数 */
+ S32 VolumeSustainPoint ; /* ボリュームエンベロープのサステインポイント */
+ S32 VolumeLoopStartPoint ; /* ボリュームエンベロープのループ開始位置 */
+ S32 VolumeLoopEndPoint ; /* ボリュームエンベロープのループ終了位置 */
+ S32 PanningSustainPoint ; /* パンエンベロープのサステインポイント */
+ S32 PanningLoopStartPoint ; /* パンエンベロープのループ開始位置 */
+ S32 PanningLoopEndPoint ; /* パンエンベロープのループ終了位置 */
S32 VolumeType ; /*
- bit 0: 0 = \83G\83\93\83x\83\8d\81[\83v OFF
- 1 = \83G\83\93\83x\83\8d\81[\83v ON
- 1: 0 = \83T\83X\83e\83C\83\93 OFF
- 1 = \83T\83X\83e\83C\83\93 ON
- 2: 0 = \83\8b\81[\83v OFF
- 1 = \83\8b\81[\83v ON
+ bit 0: 0 = エンベロープ OFF
+ 1 = エンベロープ ON
+ 1: 0 = サステイン OFF
+ 1 = サステイン ON
+ 2: 0 = ループ OFF
+ 1 = ループ ON
*/
S32 PanningType ; /*
- bit 0: 0 = \83G\83\93\83x\83\8d\81[\83v OFF
- 1 = \83G\83\93\83x\83\8d\81[\83v ON
- 1: 0 = \83T\83X\83e\83C\83\93 OFF
- 1 = \83T\83X\83e\83C\83\93 ON
- 2: 0 = \83\8b\81[\83v OFF
- 1 = \83\8b\81[\83v ON
+ bit 0: 0 = エンベロープ OFF
+ 1 = エンベロープ ON
+ 1: 0 = サステイン OFF
+ 1 = サステイン ON
+ 2: 0 = ループ OFF
+ 1 = ループ ON
*/
- S32 AutoVibratoType ; /* \8e©\93®\83r\83u\83\89\81[\83g\81A\94g\8c`\8eí\97Þ */
- S32 AutoVibratoSweep ; /* \8e©\93®\83r\83u\83\89\81[\83g\81AMAX \90U\95\9d\82É\93\9e\92B\82·\82é\82Ü\82Å\82Ì Tick \90\94 */
- S32 AutoVibratoDepth ; /* \8e©\93®\83r\83u\83\89\81[\83g\81AMAX \90U\95\9d */
- S32 AutoVibratoRate ; /* \8e©\93®\83r\83u\83\89\81[\83g\81A\90U\93®\91¬\93x */
- S32 VolumeFadeout ; /* KeyOff \8e\9e\82Ì\83t\83F\81[\83h\83A\83E\83g\91¬\93x */
- S32 Reserved ; /* \97\\96ñ\97Ì\88æ */
-
- /* \83\8f\81[\83N\97Ì\88æ */
- XM_SAMPLE *apAllNoteXM_SAMPLE[ 96 ]; /* \91S\89¹\8aK\95Ê\83T\83\93\83v\83\8a\83\93\83O\8fî\95ñ\82Ö\82Ì\83|\83C\83\93\83^\81[ */
- U8 VolumeEnvelopeTable[ 325 ]; /* \93W\8aJ\8dÏ\82Ý\82Ì\81A\83{\83\8a\83\85\81[\83\80\83G\83\93\83x\83\8d\81[\83v */
- U8 PanningEnvelopeTable[ 325 ]; /* \93W\8aJ\8dÏ\82Ý\82Ì\81A\83p\83\93\83G\83\93\83x\83\8d\81[\83v */
+ S32 AutoVibratoType ; /* 自動ビブラート、波形種類 */
+ S32 AutoVibratoSweep ; /* 自動ビブラート、MAX 振幅に到達するまでの Tick 数 */
+ S32 AutoVibratoDepth ; /* 自動ビブラート、MAX 振幅 */
+ S32 AutoVibratoRate ; /* 自動ビブラート、振動速度 */
+ S32 VolumeFadeout ; /* KeyOff 時のフェードアウト速度 */
+ S32 Reserved ; /* 予約領域 */
+
+ /* ワーク領域 */
+ XM_SAMPLE *apAllNoteXM_SAMPLE[ 96 ]; /* 全音階別サンプリング情報へのポインター */
+ U8 VolumeEnvelopeTable[ 325 ]; /* 展開済みの、ボリュームエンベロープ */
+ U8 PanningEnvelopeTable[ 325 ]; /* 展開済みの、パンエンベロープ */
} *(apXM_INSTRUMENT[ MAX_INSTRUMENTS ]);
- /* \8ae\83`\83\83\83\93\83l\83\8b\82Ì\8fó\91Ô */
+ /* 各チャンネルの状態 */
struct CHANSTAT {
- /* \8c»\8dÝ\82Ì Row \82Ì\93à\97e\81iNoteDelay \82Ì\92x\89\84\93Ç\82Ý\8d\9e\82Ý\82ð\8dl\97¶\81j*/
+ /* 現在の Row の内容(NoteDelay の遅延読み込みを考慮)*/
S32 idxNowPatternNote ;
S32 idxNowRealNote ;
S32 NowVolumeColumn ;
S32 NowPeriod_ ;
S32 idxNowInst ;
- /* \83C\83\93\83X\83g\83D\81[\83\8b\83\81\83\93\83g\8fî\95ñ\82Ö\82Ì\83|\83C\83\93\83^\81[ */
+ /* インストゥールメント情報へのポインター */
XM_INSTRUMENT *pPendingXM_INSTRUMENT ;
XM_INSTRUMENT *pPlayingXM_INSTRUMENT ;
- /* \83T\83\93\83v\83\8a\83\93\83O\8fî\95ñ\82Ö\82Ì\83|\83C\83\93\83^\81[ */
+ /* サンプリング情報へのポインター */
XM_SAMPLE *pPlayingXM_SAMPLE ;
- /* \8dÅ\8cã\82É\89\9f\82³\82ê\82½\83L\81[\94Ô\8d\86 */
+ /* 最後に押されたキー番号 */
S32 idxLastRealNote ;
- /* period \8aÖ\8cW */
+ /* period 関係 */
S32 PendingPeriod_ ;
S32 PlayingPeriod_ ;
S32 FinalPeriod_ ;
- S32 PeriodLowLimit_ ; /* \89º\8cÀ */
- S32 PeriodHighLimit_ ; /* \8fã\8cÀ */
+ S32 PeriodLowLimit_ ; /* 下限 */
+ S32 PeriodHighLimit_ ; /* 上限 */
- /* FineTune \8aÖ\8cW */
+ /* FineTune 関係 */
S32 PlayingFineTune ;
- /* \89¹\97Ê\8aÖ\8cW */
- S32 PlayingVolume_ ; /*\81i0x00_ \81` 0x40_\81j*/
- S32 FinalVolume_ ; /*\81i0x00_ \81` 0x40_\81j*/
- S32 FinalVolume_L_ ; /*\81i0x00_ \81` 0x40_\81j*/
- S32 FinalVolume_R_ ; /*\81i0x00_ \81` 0x40_\81j*/
- S32 VolumeSlide ; /* \89¹\97Ê\83X\83\89\83C\83h\92l */
- S32 FineVolumeSlide ; /* \89¹\97Ê\83X\83\89\83C\83h\92l\81iFineVolumeSlide \97p\81j*/
- S32 VolumeScale_ ; /* \83`\83\83\83\93\83l\83\8b\92P\88Ê\82Ì\89¹\97Ê\83X\83P\81[\83\8a\83\93\83O\92l\81i0_ \81` 1_\81j*/
-
- /* \83p\83\93\8aÖ\8cW */
- S32 PlayingPanning_ ; /*\81i\8d¶:0x000_ \81` 0x0FF_:\89E\81j*/
- S32 FinalPanning_ ; /*\81i\8d¶:0x000_ \81` 0x100_:\89E\81j*/
- S32 PanningSlide ; /* \83p\83\93 \83X\83\89\83C\83h\92l\81i\83R\83}\83\93\83h Pxy \97p\81j*/
-
- /* \83G\83\93\83x\83\8d\81[\83v\8aÖ\8cW */
- S32 idxVolumeEnvelopeTable ; /* \83{\83\8a\83\85\81[\83\80\83G\83\93\83x\83\8d\81[\83v\82Ì\83e\81[\83u\83\8b\8eQ\8fÆ\88Ê\92u */
- S32 idxPanningEnvelopeTable ; /* \83p\83\93\83G\83\93\83x\83\8d\81[\83v\82Ì\83e\81[\83u\83\8b\8eQ\8fÆ\88Ê\92u */
-
- /* Vibrato \8aÖ\8cW */
- S32 VibratoType ; /* \83^\83C\83v */
- S32 VibratoPosition_ ; /* \94g\8c`\88Ê\92u */
- S32 VibratoRate ; /* \91¬\93x */
- S32 VibratoDepth ; /* \90U\95\9d */
-
- /* Tremolo \8aÖ\8cW */
- S32 TremoloType ; /* \83^\83C\83v */
- S32 TremoloPosition_ ; /* \94g\8c`\88Ê\92u */
- S32 TremoloRate ; /* \91¬\93x */
- S32 TremoloDepth ; /* \90U\95\9d */
-
- /* Portamento \8aÖ\8cW */
- S32 PortamentoInc ; /* period \89Á\8eZ\97Ê\81iPortamento \97p\81j*/
- S32 TonePortamentoInc ; /* period \89Á\8eZ\97Ê\81iTone-Portamento \97p\81j*/
- S32 TonePortamentoDst_ ; /* period \96Ú\95W\92l\81iTone-Portamento \97p\81j*/
- S32 FinePortamentoInc ; /* period \89Á\8eZ\97Ê\81iFine-Portamento \97p\81j*/
- S32 ExtraFinePortamentoInc ; /* period \89Á\8eZ\97Ê\81iExtra Fine-Portamento \97p\81j*/
-
- /* Arpeggio \8aÖ\8cW */
+ /* 音量関係 */
+ S32 PlayingVolume_ ; /*(0x00_ ~ 0x40_)*/
+ S32 FinalVolume_ ; /*(0x00_ ~ 0x40_)*/
+ S32 FinalVolume_L_ ; /*(0x00_ ~ 0x40_)*/
+ S32 FinalVolume_R_ ; /*(0x00_ ~ 0x40_)*/
+ S32 VolumeSlide ; /* 音量スライド値 */
+ S32 FineVolumeSlide ; /* 音量スライド値(FineVolumeSlide 用)*/
+ S32 VolumeScale_ ; /* チャンネル単位の音量スケーリング値(0_ ~ 1_)*/
+
+ /* パン関係 */
+ S32 PlayingPanning_ ; /*(左:0x000_ ~ 0x0FF_:右)*/
+ S32 FinalPanning_ ; /*(左:0x000_ ~ 0x100_:右)*/
+ S32 PanningSlide ; /* パン スライド値(コマンド Pxy 用)*/
+
+ /* エンベロープ関係 */
+ S32 idxVolumeEnvelopeTable ; /* ボリュームエンベロープのテーブル参照位置 */
+ S32 idxPanningEnvelopeTable ; /* パンエンベロープのテーブル参照位置 */
+
+ /* Vibrato 関係 */
+ S32 VibratoType ; /* タイプ */
+ S32 VibratoPosition_ ; /* 波形位置 */
+ S32 VibratoRate ; /* 速度 */
+ S32 VibratoDepth ; /* 振幅 */
+
+ /* Tremolo 関係 */
+ S32 TremoloType ; /* タイプ */
+ S32 TremoloPosition_ ; /* 波形位置 */
+ S32 TremoloRate ; /* 速度 */
+ S32 TremoloDepth ; /* 振幅 */
+
+ /* Portamento 関係 */
+ S32 PortamentoInc ; /* period 加算量(Portamento 用)*/
+ S32 TonePortamentoInc ; /* period 加算量(Tone-Portamento 用)*/
+ S32 TonePortamentoDst_ ; /* period 目標値(Tone-Portamento 用)*/
+ S32 FinePortamentoInc ; /* period 加算量(Fine-Portamento 用)*/
+ S32 ExtraFinePortamentoInc ; /* period 加算量(Extra Fine-Portamento 用)*/
+
+ /* Arpeggio 関係 */
S32 ArpeggioPeriod_[2] ;
- S32 idxArpeggio ; /* 0 -> 1 -> 2 \8cJ\82è\95Ô\82µ */
-
- /* Tremor\81i\83R\83}\83\93\83h Txy\81j\8aÖ\8cW */
- S32 TremorCount ; /* \83J\83E\83\93\83^\81[ */
- S32 TremorOnTime ; /* KeyOn \8aú\8aÔ\81itick \90\94\81j*/
- S32 TremorOffTime ; /* KeyOff \8aú\8aÔ\81itick \90\94\81j*/
- S32 bTremorMute ; /* \83~\83\85\81[\83g\8fó\91Ô\82©\81H TRUE / FALSE */
-
- /* Multi retrig\81i\83R\83}\83\93\83h Rxy\81j\8aÖ\8cW */
- S32 MultiRetrigCount ; /* \83J\83E\83\93\83^\81[ */
- S32 MultiRetrigInterval ; /* \8aÔ\8au */
- S32 MultiRetrigVolumeChange ; /* \89¹\97Ê\82Ì\95Ï\89»\82Ì\82³\82¹\95û */
-
- /* Panbrello \8aÖ\8cW */
- S32 PanbrelloType ; /* \83^\83C\83v */
- S32 PanbrelloPosition ; /* \94g\8c`\88Ê\92u */
- S32 PanbrelloRate ; /* \91¬\93x */
- S32 PanbrelloDepth ; /* \90U\95\9d */
-
- /* Pattern loop\81i\83R\83}\83\93\83h E6x\81j\8aÖ\8cW */
- S32 PatternLoopCount ; /* \83\8b\81[\83v\89ñ\90\94\83J\83E\83\93\83g\97p */
- S32 PatternLoopRow ; /* \83\8b\81[\83v\83|\83C\83\93\83g\81iRow\81j*/
-
- /* KEYOFF \83t\83F\81[\83h\83A\83E\83g\8aÖ\8cW */
- S32 bFadeOut ; /* \83t\83F\81[\83h\83A\83E\83g\92\86\81H TRUE / FALSE */
- S32 FadeOutVolume_1_15_16 ; /* \83t\83F\81[\83h\83A\83E\83g\97p\81A\89¹\97Ê\94{\97¦\81i\8cÅ\92è\8f\90\94 16 bit\81j*/
-
- /* Auto-Vibrato \8aÖ\8cW */
- S32 AutoVibratoPosition ; /* \94g\8c`\88Ê\92u */
- S32 AutoVibratoDepth_ ; /* \90U\95\9d */
-
- /* Surround \8aÖ\8cW */
- S32 bSurround ; /* Surround \82Í\97L\8cø\82©\81H TRUE / FALSE */
-
- /* \82»\82Ì\91¼\82¢\82ë\82¢\82ë */
- U32 SamplePosition_ ; /* \83T\83\93\83v\83\8a\83\93\83O\82Ì\8dÄ\90¶\88Ê\92u */
- U32 SampleRate_ ; /* \83T\83\93\83v\83\8a\83\93\83O\82Ì\8dÄ\90¶\83\8c\81[\83g */
- U32 SampleOffset ; /* \83R\83}\83\93\83h 9xx \82Å\8ew\92è\82µ\82½\83I\83t\83Z\83b\83g\92l\81i\8dÅ\8cã\82É\8ew\92è\82µ\82½\92l\81j*/
- U32 SampleHighOffset ; /* \83R\83}\83\93\83h XAx \82Å\8ew\92è\82µ\82½\83I\83t\83Z\83b\83g\92l\81i\8dÅ\8cã\82É\8ew\92è\82µ\82½\92l\81j*/
- S32 bGrissando ; /* Grissando \82Í\97L\8cø\82©\81H TRUE / FALSE */
- S32 VolumeColumnContinueValue ; /* VolumeColumn \90ê\97p\81A\93Á\8eê\82È continue \8dÄ\8c»\97p */
-
- /* \83v\83`\83m\83C\83Y\91Î\8dô */
- XM_SAMPLE *pLastPlayingXM_SAMPLE ; /* \91O\89ñ\82Ì\83T\83\93\83v\83\8a\83\93\83O */
- U32 LastSamplePosition_ ; /* \91O\89ñ\82Ì\83T\83\93\83v\83\8a\83\93\83O\82Ì\8dÄ\90¶\88Ê\92u */
- S32 LastWaveVal_L ; /* \94g\8c`\82Ì\8dÅ\8fI\92l\81A\8d¶ */
- S32 LastWaveVal_R ; /* \94g\8c`\82Ì\8dÅ\8fI\92l\81A\89E */
- S32 LastSampleVolume_L_ ; /* \89¹\97Ê\82Ì\8dÅ\8fI\92l\81A\8d¶ */
- S32 LastSampleVolume_R_ ; /* \89¹\97Ê\82Ì\8dÅ\8fI\92l\81A\89E */
+ S32 idxArpeggio ; /* 0 -> 1 -> 2 繰り返し */
+
+ /* Tremor(コマンド Txy)関係 */
+ S32 TremorCount ; /* カウンター */
+ S32 TremorOnTime ; /* KeyOn 期間(tick 数)*/
+ S32 TremorOffTime ; /* KeyOff 期間(tick 数)*/
+ S32 bTremorMute ; /* ミュート状態か? TRUE / FALSE */
+
+ /* Multi retrig(コマンド Rxy)関係 */
+ S32 MultiRetrigCount ; /* カウンター */
+ S32 MultiRetrigInterval ; /* 間隔 */
+ S32 MultiRetrigVolumeChange ; /* 音量の変化のさせ方 */
+
+ /* Panbrello 関係 */
+ S32 PanbrelloType ; /* タイプ */
+ S32 PanbrelloPosition ; /* 波形位置 */
+ S32 PanbrelloRate ; /* 速度 */
+ S32 PanbrelloDepth ; /* 振幅 */
+
+ /* Pattern loop(コマンド E6x)関係 */
+ S32 PatternLoopCount ; /* ループ回数カウント用 */
+ S32 PatternLoopRow ; /* ループポイント(Row)*/
+
+ /* KEYOFF フェードアウト関係 */
+ S32 bFadeOut ; /* フェードアウト中? TRUE / FALSE */
+ S32 FadeOutVolume_1_15_16 ; /* フェードアウト用、音量倍率(固定少数 16 bit)*/
+
+ /* Auto-Vibrato 関係 */
+ S32 AutoVibratoPosition ; /* 波形位置 */
+ S32 AutoVibratoDepth_ ; /* 振幅 */
+
+ /* Surround 関係 */
+ S32 bSurround ; /* Surround は有効か? TRUE / FALSE */
+
+ /* その他いろいろ */
+ U32 SamplePosition_ ; /* サンプリングの再生位置 */
+ U32 SampleRate_ ; /* サンプリングの再生レート */
+ U32 SampleOffset ; /* コマンド 9xx で指定したオフセット値(最後に指定した値)*/
+ U32 SampleHighOffset ; /* コマンド XAx で指定したオフセット値(最後に指定した値)*/
+ S32 bGrissando ; /* Grissando は有効か? TRUE / FALSE */
+ S32 VolumeColumnContinueValue ; /* VolumeColumn 専用、特殊な continue 再現用 */
+
+ /* プチノイズ対策 */
+ XM_SAMPLE *pLastPlayingXM_SAMPLE ; /* 前回のサンプリング */
+ U32 LastSamplePosition_ ; /* 前回のサンプリングの再生位置 */
+ S32 LastWaveVal_L ; /* 波形の最終値、左 */
+ S32 LastWaveVal_R ; /* 波形の最終値、右 */
+ S32 LastSampleVolume_L_ ; /* 音量の最終値、左 */
+ S32 LastSampleVolume_R_ ; /* 音量の最終値、右 */
} aCHANSTAT[ MAX_CHANNELS ];
+ void* Instance;// NaCl インスタンス
};
#pragma pack(pop)
-/* \83^\83O\96¼\82Ì\83t\83b\83N */
+/* タグ名のフック */
typedef MOD::XM_ID XM_ID ;
typedef MOD::XM_HEADER XM_HEADER ;
typedef MOD::XM_INSTRUMENT XM_INSTRUMENT ;
typedef MOD::CHANSTAT CHANSTAT ;
-/*\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª
-\81¥ MOD \83f\81[\83^\82Ì\93Ç\82Ý\8d\9e\82Ý
+/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▼ MOD データの読み込み
- \96ß\92l\81ETRUE = \90¬\8c÷
- \81EFALSE = \8e¸\94s
-\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª*/
+ 戻値・TRUE = 成功
+ ・FALSE = 失敗
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
S32 MOD__LoadSong(
- MOD *pMOD /* this \83|\83C\83\93\83^\81[ */
- ,void *pMusDat_ /* \83\81\83\82\83\8a\8fã\82É\83t\83@\83C\83\8b\82ð\93Ç\82Ý\8d\9e\82Ý\81A\82»\82Ì\83|\83C\83\93\83^\81[\82ð\82±\82±\82É\8ew\92è */
- ,S32 lMusDat /* \83f\81[\83^\83T\83C\83Y */
+ MOD *pMOD /* this ポインター */
+ ,void *pMusDat_ /* メモリ上にファイルを読み込み、そのポインターをここに指定 */
+ ,S32 lMusDat /* データサイズ */
);
-/*\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª
-\81¥ MOD \83f\81[\83^\82Ì\94j\8aü
+/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▼ MOD データの破棄
- \96ß\92l\81ETRUE = \90¬\8c÷
- \81EFALSE = \8e¸\94s
-\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª*/
+ 戻値・TRUE = 成功
+ ・FALSE = 失敗
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
S32 MOD__ReleaseSong(
- MOD *pMOD /* this \83|\83C\83\93\83^\81[ */
+ MOD *pMOD /* this ポインター */
);
-/*\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª
-\81¥ \89¹\97Ê\82Ì\90Ý\92è
+/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▼ 音量の設定
- \96ß\92l\81ETRUE = \90¬\8c÷
- \81EFALSE = \8e¸\94s
-\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª*/
+ 戻値・TRUE = 成功
+ ・FALSE = 失敗
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
S32 MOD__Set_Volume(
- MOD *pMOD /* this \83|\83C\83\93\83^\81[ */
- ,S32 Volume /* \89¹\97Ê 0 \81` 256\81i\82»\82ê\88È\8fã\82É\82à\90Ý\92è\89Â\94\\81j*/
+ MOD *pMOD /* this ポインター */
+ ,S32 Volume /* 音量 0 ~ 256(それ以上にも設定可能)*/
);
-/*\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª
-\81¥ \8dÄ\90¶\83\8c\81[\83g\82Ì\90Ý\92è
+/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▼ 再生レートの設定
- \96ß\92l\81ETRUE = \90¬\8c÷
- \81EFALSE = \8e¸\94s
-\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª*/
+ 戻値・TRUE = 成功
+ ・FALSE = 失敗
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
S32 MOD__Set_nWavePerSec(
- MOD *pMOD /* this \83|\83C\83\93\83^\81[ */
- ,S32 nWavePerSec /* WAVE \8fo\97Í\83f\83o\83C\83X\82Ì\8eü\94g\90\94(Hz) */
+ MOD *pMOD /* this ポインター */
+ ,S32 nWavePerSec /* WAVE 出力デバイスの周波数(Hz) */
);
-/*\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª
-\81¥ \83\8b\81[\83v\8dÄ\90¶\83\82\81[\83h / \94ñ\83\8b\81[\83v\8dÄ\90¶\83\82\81[\83h \82Ì\8ew\92è
+/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▼ ループ再生モード / 非ループ再生モード の指定
- \96ß\92l\81ETRUE = \90¬\8c÷
- \81EFALSE = \8e¸\94s
-\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª*/
+ 戻値・TRUE = 成功
+ ・FALSE = 失敗
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
S32 MOD__Set_bLoopMode(
- MOD *pMOD /* this \83|\83C\83\93\83^\81[ */
- ,S32 bLoopMode /* \83\8b\81[\83v\8dÄ\90¶\83\82\81[\83h\82©\81H TRUE / FALSE */
+ MOD *pMOD /* this ポインター */
+ ,S32 bLoopMode /* ループ再生モードか? TRUE / FALSE */
);
-/*\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª
-\81¥ \8e©\93®\83Q\83C\83\93\83R\83\93\83g\83\8d\81[\83\8b\82·\82é\82©\82Ç\82¤\82© \82Ì\8ew\92è
+/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▼ 自動ゲインコントロールするかどうか の指定
- \96ß\92l\81ETRUE = \90¬\8c÷
- \81EFALSE = \8e¸\94s
-\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª*/
+ 戻値・TRUE = 成功
+ ・FALSE = 失敗
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
S32 MOD__Set_bAutoGainControl(
- MOD *pMOD /* this \83|\83C\83\93\83^\81[ */
- ,S32 bAutoGainControl /* \8e©\93®\83Q\83C\83\93\83R\83\93\83g\83\8d\81[\83\8b\82·\82é\82©\81H TRUE / FALSE */
+ MOD *pMOD /* this ポインター */
+ ,S32 bAutoGainControl /* 自動ゲインコントロールするか? TRUE / FALSE */
);
-/*\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª
-\81¥ \8dÄ\90¶\82ð\8f\89\8aú\89»\81i\93à\95\94\83p\83\89\83\81\81[\83^\81[\82ð\8f\89\8aú\89»\82µ\81A\90æ\93ª\82©\82ç\8dÄ\90¶\82µ\92¼\82·\81j
+/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▼ 再生を初期化(内部パラメーターを初期化し、先頭から再生し直す)
- \96ß\92l\81ETRUE = \90¬\8c÷
- \81EFALSE = \8e¸\94s
-\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª*/
+ 戻値・TRUE = 成功
+ ・FALSE = 失敗
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
S32 MOD__InitPlay(
- MOD *pMOD /* this \83|\83C\83\93\83^\81[ */
+ MOD *pMOD /* this ポインター */
);
-/*\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª
-\81¥ MOD \83f\81[\83^\82Ì\8dÄ\90¶
+/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▼ MOD データの再生
- \96ß\92l\81ETRUE = \90¬\8c÷
- \81EFALSE = \8e¸\94s
-\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª*/
+ 戻値・TRUE = 成功
+ ・FALSE = 失敗
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
S32 MOD__PlaySong(
- MOD *pMOD /* this \83|\83C\83\93\83^\81[ */
- ,U32 *pWaveOutPut /* \94g\8c`\8fo\97Í\90æ\81iL R \82ð\82Ð\82Æ\82Ü\82Æ\82ß\82É\82µ\82Ä\81AU32 \92P\88Ê\82Å\8fo\97Í\82·\82é\81j*/
- ,S32 nWaveOutPut /* \8fo\97Í\94g\8c`\90\94 */
+ MOD *pMOD /* this ポインター */
+ ,U32 *pWaveOutPut /* 波形出力先(L R をひとまとめにして、U32 単位で出力する)*/
+ ,S32 nWaveOutPut /* 出力波形数 */
);
-/*\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª
-\81¥ MOD \8d\\91¢\91Ì\82Ì\94j\8aü
+/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▼ MOD 構造体の破棄
- \96ß\92l\81ETRUE = \90¬\8c÷
- \81EFALSE = \8e¸\94s
-\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª*/
+ 戻値・TRUE = 成功
+ ・FALSE = 失敗
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
S32 MOD__Destruct(
- MOD *p /* this \83|\83C\83\93\83^\81[ */
+ MOD *p /* this ポインター */
);
-/*\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª
-\81¥ MOD \8d\\91¢\91Ì\82Ì\8am\95Û\82Æ\8f\89\8aú\89»
+/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▼ MOD 構造体の確保と初期化
- \96ß\92l\81F \8am\95Û\82µ\82½\8d\\91¢\91Ì\82Ö\82Ì\83|\83C\83\93\83^\81[
- NULL \82È\82ç\8e¸\94s
-\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª\84ª*/
-MOD *MOD__Create(
+ 戻値: 確保した構造体へのポインター
+ NULL なら失敗
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
+MOD *MOD__Create(void* Instance /* Naclインスタンス */
);
#endif