目次

主な特長
使用前の準備
GIMICをMIDIキーボードや他のMIDI音源と接続する
基本操作
演奏する
音色を作る
アルペジエーター
全体に関する機能を設定する
スタンダードMIDIファイルを再生する
MIDIインプリメンテーション


ファイルフォーマット


トラブルシューティング
変更履歴

gtb(GIMIC Timbre Bank)ファイルフォーマット概要

多バイト数値データは全てリトルエンディアン

全体構造

OffsetSize(byte)FieldDescription
0x008sigファイル識別用の固定データ"GMCTIMB"+ 0x00
0x084chunk_start_pos最初のチャンクデータのファイル内位置
0x0c4mb_fw_version作成されたマザーボードのファームウェアバージョン
0x102mb_type_tablerevマザーボードID定義のバージョン(使用せず)
0x122soundmodule_tablerevモジュールID定義のバージョン(使用せず)
0x142mb_type_idデータが作成されたマザーボード種別(使用せず)
0x162soundmodule_idデータが作成時のモジュール種別(使用せず)
0x188mb_serial_noマザーボードシリアル番号(使用せず)
chunk_start_pos可変chunkデータチャンクデータ
typedef struct {
    char		sig[8];	// "GMCTIMB" gimic timble parameter
    uint32_t	chunk_start_pos;	// チャンクデータのファイル内開始位置
    uint8_t		mb_fw_version[4];	// MAJOR, MINOR, YEAR, MONTH
    uint16_t	mb_type_tablerev;	// GIMIC_MOTHERBOARD_ID_TABLEREV
    uint16_t	soundmodule_tablerev;	// GIMIC_SOUNDMODULE_TABLEREV
    uint16_t	mb_type_id;	// GIMIC_MOTHERBOARD_ID_MB
    uint16_t	soundmodule_id;	// データ作成時のモジュール
    char		mb_serial_no[8];	// MBシリアル番号
} PatchFileHeader;

rptcチャンク

OffsetSize(byte)FieldDescription
0x004chunk_typeチャンクタイプ"rptc"
0x044chunk_sizeチャンクデータのデータサイズ(byte) =128
0x084chunk_crcチャンクデータのチェックサム(CRC32)
0x0c128patch_dataPatchデータブロック

rbnkチャンク

OffsetSize(byte)FieldDescription
0x004chunk_typeチャンクタイプ"rbnk"
0x044chunk_sizeチャンクデータのデータサイズ(byte) =128_N
0x084chunk_crcチャンクデータのチェックサム(CRC32) ...FW7.3では使用せず
0x0c128patch_dataPatchデータブロック 0
0x8c128patch_dataPatchデータブロック 1
...
0x0c+128_(N-1)128patch_dataPatchデータブロック N-1
typedef struct {
    uint32_t	chunk_type;	///< データのタイプ
    uint32_t	chunk_size;	///< データの中身のバイト数
    uint32_t	chunk_crc;	///< データの中身のCRC32
    uint8_t		chunk_data[];	///< データの中身
} PatchFileChunk;

Patchデータブロック(PatchTypeOPM_FM)

OffsetSize(byte)FieldDescription
0x0020common_paramパッチデータ共通(PatchCommon)
0x1448tone_paramTonedSynthCommon(TonedSynthCommon)
0x4412slot0スロット0(OPM_FM_SlotPatch)
0x5012slot1スロット1(OPM_FM_SlotPatch)
0x5c12slot2スロット2(OPM_FM_SlotPatch)
0x6812slot3スロット3(OPM_FM_SlotPatch)
0x741fl_con未使用(2bit), フィードバックレベル(3bit), アルゴリズム(3bit)
0x751slotMask未使用(4bit), スロットマスク op.4,2,3,1 (4bit)
0x761ne_nfrqne=1ならvoice7強制でノイズ有効(1bit), 未使用(2bit), ノイズ周波数(5bit)
0x771fastrelease0非0ならキーオン前にリリースレートを最速にして強制消音
0x781fastrelease1非0ならキーオン前にリリースレートを最速にして強制消音
0x791fastrelease2非0ならキーオン前にリリースレートを最速にして強制消音
0x7a1fastrelease3非0ならキーオン前にリリースレートを最速にして強制消音
0x7b5reserved未使用

OPM_FM_SlotPatch

OffsetSize(byte)FieldDescription
0x007commonスロット共通データ(SlotPatchCommon)
0x071dt1_mul未使用(1bit), DT1(3bit), MUL(4bit)
0x081ks_arKS(2bit), 未使用(1bit), AR(5bit)
0x091ame_d1rAME(1bit), 未使用(2bit), D1R(5bit)
0x0a1dt2_d2rDT2(2bit), 未使用(1bit), D2R(5bit)
0x0b1d1l_rrD1L(4bit), RR(4bit)
typedef struct OPM_FM_SlotPatch {
    SlotPatchCommon	common;
    uint8_t		dt1_mul;
    uint8_t		ks_ar;
    uint8_t		ame_d1r;
    uint8_t		dt2_d2r;
    uint8_t		d1l_rr;
} OPM_FM_SlotPatch;

typedef struct OPM_FM_Patch {
    PatchCommon		common_param;
    TonedSynthCommon	tone_param;
    OPM_FM_SlotPatch    slot[4];
    uint8_t			fl_con;
    uint8_t			slot_mask;
    uint8_t			ne_nfrq;		///< ne=trueの時はvoice7で発音する
    uint8_t			fastrelease[4];
    uint8_t			reserved[5];
} OPM_FM_Patch;

Patchデータブロック(PatchTypeOPN_FM)

OffsetSize(byte)FieldDescription
0x0020common_paramパッチデータ共通(PatchCommon)
0x1448tone_paramTonedSynthCommon(TonedSynthCommon)
0x4412slot0スロット0(OPN_FM_SlotPatch)
0x5012slot1スロット1(OPN_FM_SlotPatch)
0x5c12slot2スロット2(OPN_FM_SlotPatch)
0x6812slot3スロット3(OPN_FM_SlotPatch)
0x741fb_con未使用(2bit), フィードバックレベル(3bit), アルゴリズム(3bit)
0x751fr_slotmask非0ならキーオン前にリリースレートを最速にして強制消音 op.4,3,2,1(4bit), スロットマスク op.4,3,2,1(4bit)
0x762ch3_slot_lfo_env_enPitch LFO on op.4,3,2,1(4bit), Pitch EG on op4.3.2.1(4bit)
0x782ch3_fix_coarse_fine0op1 Freq Fix(1bit), Coarse Tune(8bit), Fine Tune(6bit)
0x7a2ch3_fix_coarse_fine1op2 Freq Fix(1bit), Coarse Tune(8bit), Fine Tune(6bit)
0x7c2ch3_fix_coarse_fine2op3 Freq Fix(1bit), Coarse Tune(8bit), Fine Tune(6bit)
0x7e2ch3_fix_coarse_fine3op4 Freq Fix(1bit), Coarse Tune(8bit), Fine Tune(6bit)

OPN_FM_SlotPatch

OffsetSize(byte)FieldDescription
0x007commonスロット共通データ(SlotPatchCommon)
0x071dt_mul未使用(1bit), DT(3bit), MUL(4bit)
0x081ks_arKS(2bit), 未使用(1bit), AR(5bit)
0x091ame_ssgege_drAMON(1bit), SSG-EG_Enable(1bit), 未使用(1bit), DR(5bit)
0x0a1ssgegn_srSSG-EG Wave(3bit), SR(5bit)
0x0b1sl_rrSL(4bit), RR(4bit)
typedef struct OPN_FM_SlotPatch {
    SlotPatchCommon	common;
    uint8_t		dt_mul;
    uint8_t		ks_ar;
    uint8_t		ame_ssgege_dr;
    uint8_t		ssgegn_sr;
    uint8_t		sl_rr;
} OPN_FM_SlotPatch;

typedef struct OPN_FM_Patch {
    PatchCommon		    common_param;
    TonedSynthCommon	tone_param;
    OPN_FM_SlotPatch	slot[4];
    uint8_t			    fb_con;
    uint8_t			    fr_slot_mask;
    // ch3専用パラメータ
    uint16_t		    ch3_slot_lfo_env_en;
    uint16_t		    ch3_fix_coarse_fine[4];
} OPN_FM_Patch;

Patchデータブロック(PatchTypeSSG_PSG)

OffsetSize(byte)FieldDescription
0x0020common_paramパッチデータ共通(PatchCommon)
0x1448tone_paramTonedSynthCommon(TonedSynthCommon)
0x447slotスロット情報(SlotPatchCommon)
0x4b2dummy未使用
0x4d1hwenv_wave未使用(5bit), エンベロープ選択(3bit)
0x4e2reserved未使用
0x508param_toneSsgParam(Tone)
0x588param_noiseSsgParam(Noise)
0x608param_envSsgParam(Env)
0x6824reserved2未使用

PatchTypeSSG_PSG

OffsetSize(byte)FieldDescription
0x001enable0以外だとOn
0x011coarse_tune周波数比またはノートナンバー Noiseでは不使用
0x021fine_tune
0x031fix_freq0以外だと固定の周波数を書き込む
0x041start_time1以上だとキーオン前に指定時間(ms)待つ
0x051gate_time0以外だとキーオン後に指定時間(ms)で自動的にキーオフする
0x061invert_freq周波数を反転させる
0x071enable_pitchmod未使用(5bit), SWEnvのピッチへの入力有効(1bit), SWLFOのピッチへの入力有効(1bit)
typedef struct SsgParam {
    uint8_t			enable;			///< 0以外だとOn
    uint8_t			coarse_tune;	///< 周波数比またはノートナンバー Noiseでは不使用
    uint8_t			fine_tune;		///<
    uint8_t			fix_freq;		///< 0以外だと固定の周波数を書き込む
    uint8_t			start_time;		///< 1以上だとキーオン前に指定時間(ms)待つ
    uint8_t			gate_time;		///< 0以外だとキーオン後に指定時間(ms)で自動的にキーオフする
    uint8_t			invert_freq;	///< 周波数を反転させる
    uint8_t			enable_pitchmod;	///< LSBがSWLFO,次のビットがSWEnvのピッチへの入力有効
} SsgParam;

typedef struct SSG_PSG_Patch {
    PatchCommon		common_param;
    TonedSynthCommon	tone_param;
    SlotPatchCommon		slot;
    uint8_t			dummy;
    uint8_t			hwenv_wave;
    uint8_t			reserved[2];
    SsgParam		param[3];	// 0:Tone, 1:Noise, 2:Env
    uint8_t			reserved2[24];
} SSG_PSG_Patch;

Patchデータブロック(PatchTypeOPN_RHYTHM)

OffsetSize(byte)FieldDescription
0x0020common_paramパッチデータ共通(PatchCommon)
0x1448tone_paramTonedSynthCommon(TonedSynthCommon)
0x447slotスロット情報(SlotPatchCommon)
0x4b1dummy未使用
0x4c8voice0OPN_RHYTHM_VoiceInfo
0x548voice1OPN_RHYTHM_VoiceInfo
0x5c8voice2OPN_RHYTHM_VoiceInfo
0x648voice3OPN_RHYTHM_VoiceInfo
0x6c8voice4OPN_RHYTHM_VoiceInfo
0x648voice5OPN_RHYTHM_VoiceInfo
0x7c4reserved未使用

OPN_RHYTHM_VoiceInfo

OffsetSize(byte)FieldDescription
0x001vol音量
0x011panパン
0x021oneshoton時にノートオフでキーオフしない
0x031attackTimeアタック時間
0x041attackSlopeアタック時の音量カーブ
0x051decayRate減衰量
0x061decaySlope減衰時の音量カーブ
0x071reserved未使用
typedef struct OPN_RHYTHM_VoiceInfo {
    int8_t			vol;
    int8_t			pan;
    uint8_t			oneshot;
    uint8_t			attackTime;
    int8_t			attackSlope;
    uint8_t			decayRate;
    int8_t			decaySlope;
    uint8_t			reserved;
} OPN_RHYTHM_VoiceInfo;

typedef struct OPN_RHYTHM_Patch {
    PatchCommon		common_param;
    TonedSynthCommon	tone_param;
    SlotPatchCommon		slot;
    uint8_t			dummy;
    OPN_RHYTHM_VoiceInfo	voice[6];
    uint8_t			reserved[4];
} OPN_RHYTHM_Patch;

Patchデータブロック(PatchTypeOPNA_ADPCM)

OffsetSize(byte)FieldDescription
0x0020common_paramパッチデータ共通(PatchCommon)
0x1448tone_paramTonedSynthCommon(TonedSynthCommon)
0x447slotスロット情報(SlotPatchCommon)
0x4b1dummy未使用
0x4c8samples0OPNA_ADPCM_SampleInfo
0x548samples1OPNA_ADPCM_SampleInfo
0x5c8samples2OPNA_ADPCM_SampleInfo
0x648samples3OPNA_ADPCM_SampleInfo
0x6c8samples4OPNA_ADPCM_SampleInfo
0x648samples5OPNA_ADPCM_SampleInfo
0x7c4reserved未使用

OPNA_ADPCM_SampleInfo

OffsetSize(byte)FieldDescription
0x001loop_sampleNoループ有効(1bit), サンプル番号(7bit)
0x011oneshot_baseKeyノートオフ時に消音しない(1bit), 基準ノート番号(7bit)
0x021lowestKey発音範囲(最下キー番号)
0x031highestKey発音範囲(最高キー番号)
0x042fsampleサンプリングレート
0x061vol音量
0x071panパン
typedef struct OPNA_ADPCM_SampleInfo {
    uint8_t			loop_sampleNo;
    uint8_t			oneshot_baseKey;
    uint8_t			lowestKey;
    uint8_t			highestKey;
    uint16_t		fsample;
    int8_t			vol;
    int8_t			pan;
} OPNA_ADPCM_SampleInfo;

typedef struct OPNA_ADPCM_Patch {
    PatchCommon		common_param;
    TonedSynthCommon	tone_param;
    SlotPatchCommon		slot;
    uint8_t			reserved;
    OPNA_ADPCM_SampleInfo		samples[6];
    uint8_t			reserved2[4];
} OPNA_ADPCM_Patch;

Patchデータブロック(PatchTypeOPL3_FM)

OffsetSize(byte)FieldDescription
0x0020common_paramパッチデータ共通(PatchCommon)
0x1448tone_paramTonedSynthCommon(TonedSynthCommon)
0x4412slot0スロット0(OPL3_FM_SlotPatch)
0x5012slot1スロット1(OPL3_FM_SlotPatch)
0x5c12slot2スロット2(OPL3_FM_SlotPatch)
0x6812slot3スロット3(OPL3_FM_SlotPatch)
0x741fb_cnt1未使用(4bit), フィードバックレベル(3bit), アルゴリズム上位ビット(1bit)
0x751fb_cnt2未使用(4bit), 4opモード用アルゴリズム下位ビット(1bit)
0x761fastrelease0op1 非0ならキーオン前にリリースレートを最速にして強制消音
0x771fastrelease1op2 非0ならキーオン前にリリースレートを最速にして強制消音
0x781fastrelease2op3 非0ならキーオン前にリリースレートを最速にして強制消音
0x791fastrelease3op4 非0ならキーオン前にリリースレートを最速にして強制消音
0x7a6reserved未使用

OPL3_FM_SlotPatch

OffsetSize(byte)FieldDescription
0x007commonSlotPatchCommon
0x071a_v_e_k_mulAM(1bit), VIB(1bit), EGT(1bit), KSR(1bit), MUL(4bit)
0x081ksl_wsKSL(2bit), 未使用(3bit), WS(3bit)
0x091ar_drAR(4bit), DR(4bit)
0x0a1srキーオン直後のRR値(EGT=0時のみ有効)キーオフ時にRRに設定(4bit), 上位4bitは未使用
0x0b1sl_rrSL(4bit), RR(4bit)
typedef struct OPL3_FM_SlotPatch {
    SlotPatchCommon	common;
    uint8_t		a_v_e_k_mul;
    uint8_t		ksl_ws;
    uint8_t		ar_dr;
    uint8_t		sr;
    uint8_t		sl_rr;
} OPL3_FM_SlotPatch;

typedef struct OPL3_FM_Patch {
    PatchCommon		common_param; ///< 2op,4opはcommon_param.patch_type で区別する
    TonedSynthCommon	tone_param;
    OPL3_FM_SlotPatch		slot[4];
    uint8_t			fb_cnt1;
    uint8_t			fb_cnt2;
    uint8_t			fastrelease[4];
    uint8_t			reserved[6];
} OPL3_FM_Patch;

Patchデータブロック(PatchTypeOPL3_RHYTHM)

OffsetSize(byte)FieldDescription
0x0020common_paramパッチデータ共通(PatchCommon)
0x141bd_mul1BD(キャリア)の周波数倍率(4bit)
0x151bd_mul2BD(モジュレータ)の周波数倍率(4bit)
0x161bd_m_levelBD(モジュレータ)の出力レベル(6bit)
0x171bd_m_ar_drBD(モジュレータ)のAR(4bit), BD(モジュレータ)のDR(4bit)
0x181bd_m_wsBD(モジュレータ)のWS(3bit)
0x191bd_pan_fb_cnt未使用(2bit), BDのパン(2bit,0=x,1=L,2=R,3=C), Feedback(3bit), 並列/直列(1bit)
0x1a1sd_pan_fb_cnt未使用(2bit), SDのパン(2bit,0=x,1=L,2=R,3=C), Feedback(3bit), 並列/直列(1bit)
0x1b1tom_pan_fb_cnt未使用(2bit), TOMのパン(2bit,0=x,1=L,2=R,3=C), Feedback(3bit), 並列/直列(1bit)
0x1c8bdOPL3_RHYTHM_RYTParam
0x248sdOPL3_RHYTHM_RYTParam
0x2c8hhOPL3_RHYTHM_RYTParam
0x348tcOPL3_RHYTHM_RYTParam
0x3c8tomOPL3_RHYTHM_RYTParam
0x4460reserved未使用

OPL3_RHYTHM_RYTParam

OffsetSize(byte)FieldDescription
0x001velo_sensベロシティ感度
0x011level音量レベル
0x021tune音程
0x031bend_drピッチ減衰率
0x041bend_depthピッチ変化強度
0x051bend_slopeピッチ変化カーブ
0x061ar_drAR(4bit), DR(4bit)
0x071ws波形選択(3bit)
typedef struct OPL3_RHYTHM_RYTParam {
    uint8_t		velo_sens;
    uint8_t		level;
    int8_t		tune;
    uint8_t		bend_dr;
    int8_t		bend_depth;
    int8_t		bend_slope;
    uint8_t		ar_dr;
    uint8_t		ws;
} OPL3_RHYTHM_RYTParam;

typedef struct OPL3_RHYTHM_Patch {
    PatchCommon		common_param;
    int8_t			bd_mul[2];
    uint8_t			bd_m_level;
    uint8_t			bd_m_ar_dr;
    uint8_t			bd_m_ws;
    uint8_t			bd_pan_fb_cnt;
    uint8_t			sd_pan_fb_cnt;
    uint8_t			tom_pan_fb_cnt;
    OPL3_RHYTHM_RYTParam		bd;
    OPL3_RHYTHM_RYTParam		sd;
    OPL3_RHYTHM_RYTParam		hh;
    OPL3_RHYTHM_RYTParam		tc;
    OPL3_RHYTHM_RYTParam		tom;
    uint8_t			reserved[60];
} OPL3_RHYTHM_Patch;

Patchデータブロック(PatchTypeSPC_PCM)

OffsetSize(byte)FieldDescription
0x0020common_paramパッチデータ共通(PatchCommon)
0x1448tone_paramTonedSynthCommon(TonedSynthCommon)
0x447slotスロット情報(SlotPatchCommon)
0x4b1srcnモード(1bit,0:sample,1:wavetable), 波形番号(7bit)
0x4c4rateサンプリングレート
0x501fixedKey_basekey固定ピッチ(1bit), 基準キー番号(7bit)
0x511dr_ar未使用(1bit), DecayRate(3bit), AttackRate(4bit)
0x521sl_sr1SustainLevel(3bit), キーオン時のSustainRate(5bit)
0x531echo_pmOn_noiseOn_sr2Echo(1bit), PitchModulation(1bit), Noise(1bit), キーオフ後のSustainRate(5bit)
0x541pwmFilter_pwmOctave_pwmWave2_pwmWave1Wavetable用Filter(2bit), Wavetable用Octave(2bit), Wavetable用波形選択1(2bit), Wavetable用波形選択(2bit)
0x551polarity_pwmBlendR位相反転(1bit), L位相反転(1bit), Wavetable用Blend(6bit)
0x561pwmBlend_lfo1_sensLFO1->Blendのモジュレーション感度
0x571pwmBlend_lfo2_sensLFO2->Blendのモジュレーション感度
0x581pwmBlend_env1_sensEnvelope1->Blendのモジュレーション感度
0x591pwmBlend_env2_sensEnvelope2->Blendのモジュレーション感度
0x5a1pwmFilter_lfo1_sensLFO1->Filterのモジュレーション感度
0x5b1pwmFilter_lfo2_sensLFO2->Filterのモジュレーション感度
0x5c1pwmFilter_env1_sensEnvelope1->Filterのモジュレーション感度
0x5d1pwmFilter_env2_sensEnvelope2->Filterのモジュレーション感度
0x5e1pwmBlend_ksl_sensKeyScaling->Blendのモジュレーション感度
0x5f1pwmFilter_ksl_sensKeyScaling->Filterのモジュレーション感度
0x6032userWaveユーザー波形テーブル(4bit*64)
typedef struct SPC_PCM_Patch {
    PatchCommon		common_param;
    TonedSynthCommon	tone_param;
    SlotPatchCommon		slot;
    uint8_t		srcn;
    uint32_t	rate;
    uint8_t		fixedKey_basekey;	// 1.7
    uint8_t		dr_ar;
    uint8_t		sl_sr1;
    uint8_t		echo_pmOn_noiseOn_sr2;	// 1.1.1.5
    uint8_t		pwmFilter_pwmOctave_pwmWave2_pwmWave1;	// 2.2.2.2
    uint8_t		polarity_pwmBlend;	// 2.6
    int8_t		pwmBlend_lfo_sens[SWLFO_NUM];
    int8_t		pwmBlend_env_sens[SWENV_NUM];
    int8_t		pwmFilter_lfo_sens[SWLFO_NUM];
    int8_t		pwmFilter_env_sens[SWENV_NUM];
    int8_t		pwmBlend_ksl_sens;
    int8_t		pwmFilter_ksl_sens;
    uint8_t		userWave[32];
} SPC_PCM_Patch;

Patchデータブロック(PatchTypeOPLL_FM)

OffsetSize(byte)FieldDescription
0x0020common_paramパッチデータ共通(PatchCommon)
0x1448tone_paramTonedSynthCommon(TonedSynthCommon)
0x4412slot0スロット0(OPLL_FM_SlotPatch)
0x5012slot1スロット1(OPLL_FM_SlotPatch)
0x5c12slot2未使用
0x6812slot3未使用
0x741fbフィードバックレベル(3bit)
0x751instNo音色番号(4bit)
0x7610reserved未使用

OPLL_FM_SlotPatch

OffsetSize(byte)FieldDescription
0x007commonSlotPatchCommon
0x071a_v_e_k_mulAM(1bit), VIB(1bit), EGT(1bit), KSR(1bit), MUL(4bit)
0x081ksl_wsKSL(2bit), 未使用(3bit), WS(3bit)
0x091ar_drAR(4bit), DR(4bit)
0x0a1unused未使用
0x0b1sl_rrSL(4bit), RR(4bit)
typedef struct OPLL_FM_SlotPatch {
    SlotPatchCommon	common;
    uint8_t		a_v_e_k_mul;
    uint8_t		ksl_ws;
    uint8_t		ar_dr;
    uint8_t		unused;
    uint8_t		sl_rr;
} OPLL_FM_SlotPatch;

typedef struct OPLL_FM_Patch {
    PatchCommon		common_param;
    TonedSynthCommon	tone_param;
    OPLL_FM_SlotPatch		slot[4];
    uint8_t			fb;
    uint8_t			inst_no;
    uint8_t			reserved[10];
} OPLL_FM_Patch;

Patchデータブロック(PatchTypeOPLL_RHYTHM)

OffsetSize(byte)FieldDescription
0x0020common_paramパッチデータ共通(PatchCommon)
0x141bd_mul1未使用
0x151bd_mul2未使用
0x161bd_m_level未使用
0x171bd_m_ar_dr未使用
0x181bd_m_ws未使用
0x191bd_pan_fb_cnt未使用
0x1a1sd_pan_fb_cnt未使用
0x1b1tom_pan_fb_cnt未使用
0x1c8bdOPLL_RHYTHM_RYTParam
0x248sdOPLL_RHYTHM_RYTParam
0x2c8hhOPLL_RHYTHM_RYTParam
0x348tcOPLL_RHYTHM_RYTParam
0x3c8tomOPLL_RHYTHM_RYTParam
0x4460reserved未使用

OPLL_RHYTHM_RYTParam

OffsetSize(byte)FieldDescription
0x001velo_sensベロシティ感度
0x011level音量レベル
0x021tune音程
0x031bend_drピッチ減衰率
0x041bend_depthピッチ変化強度
0x051bend_slopeピッチ変化カーブ
0x062unused未使用
typedef struct OPLL_RHYTHM_RYTParam {
    uint8_t		velo_sens;
    uint8_t		level;
    int8_t		tune;
    uint8_t		bend_dr;
    int8_t		bend_depth;
    int8_t		bend_slope;
    uint8_t		unused[2];
} OPLL_RHYTHM_RYTParam;

typedef struct OPLL_RHYTHM_Patch {
    PatchCommon		common_param;
    int8_t			bd_mul[2];
    uint8_t			bd_m_level;
    uint8_t			bd_m_ar_dr;
    uint8_t			bd_m_ws;
    uint8_t			bd_pan_fb_cnt;
    uint8_t			sd_pan_fb_cnt;
    uint8_t			tom_pan_fb_cnt;
    OPLL_RHYTHM_RYTParam		bd;
    OPLL_RHYTHM_RYTParam		sd;
    OPLL_RHYTHM_RYTParam		hh;
    OPLL_RHYTHM_RYTParam		tc;
    OPLL_RHYTHM_RYTParam		tom;
    uint8_t			reserved[60];
} OPLL_RHYTHM_Patch;

PatchCommon

OffsetSize(byte)FieldDescription
0x001patch_type1=PatchTypeOPN_FM
0x011lk_nxp_formatVersion1b変更不可 1bエクスポート不可 6bフォーマットバージョン(後方互換性用)
0x0214patch_namePatch名(Shift-JIS,0終端)
0x104original_clock作成時のチップクロック周波数

TonedSynthCommon

OffsetSize(byte)FieldDescription
0x001transposeトランスポーズ
0x011tuningチューニング
0x021panpotパン
0x031panpot_ksl_sensKeyScaling->panpotのモジュレーション感度
0x041pitch_lfo1_sensLFO1->Pitchのモジュレーション感度
0x051pitch_lfo2_sensLFO2->Pitchのモジュレーション感度
0x061pitch_env1_sensEnvelope1->Pitchのモジュレーション感度
0x071pitch_env2_sensEnvelope2->Pitchのモジュレーション感度
0x084kslKeyScaleParam
0x0c12sw_env1EnvelopeParam
0x1812sw_env2EnvelopeParam
0x244sw_lfo1LFOParam
0x284sw_lfo2LFOParam
0x2c1lfo1_delayLFO1のディレイ
0x2d1lfo2_delayLFO2のディレイ
0x2e1transpose2OPL3疑似4op音色の2音目のトランスポーズ値
0x2f1tuning2OPL3疑似4op音色の2音目のチューニング値

LFOParam

OffsetSize(byte)FieldDescription
0x001midisync_wf_inputselectMIDI Sync...テンポ同期(1bit), Waveform...LFO波形(3bit), Input...LFO感度入力源(4bit)
0x011keyonrst_inputdepthKeyOn Reset...キーオン時に位相リセット(1bit), Depth(7bit)
0x021freqFreq...LFOの速さ
0x031fadeinFadeIn...フェードインの長さ

EnvelopeParam

OffsetSize(byte)FieldDescription
0x001inputselectInput...Envelope感度入力源(4bit)
0x011inputdepthDepth(7bit)
0x021attack_timeA...アタック時間(7bit)
0x031attack_slopeアタック時のカーブ(4bit)
0x041hold_timeH...ホールド時間(7bit)
0x051decay_timeD...ディケイ時間(7bit)
0x061decay_release_slopeディケイ時のカーブ(4bit), リリース時のカーブ(4bit)
0x071sustain_levelSL...サスティンレベル(7bit)
0x081release_timeRR...リリース時間(7bit)
0x091release_levelRL...リリースレベル(7bit)
0x0a1key_scalingKeyScaling
0x0b1velocity_scalingVelocityScaling

KeyScaleParam

OffsetSize(byte)FieldDescription
0x001min_levelMinLevel
0x011slope1_2Min->Centerのカーブ(4bit), Center->Maxのカーブ(4bit)
0x021center_keyCenterKey
0x031max_levelMaxLevel

SlotPatchCommon

OffsetSize(byte)FieldDescription
0x001velo_sensVelocity Sens...ベロシティ感度
0x011tlTL...Total Level
0x021lfo1_sensLFO1->TLへのモジュレーション感度
0x031lfo2_sensLFO2->TLへのモジュレーション感度
0x041env1_sensEnvelope1->TLへのモジュレーション感度
0x051env2_sensEnvelope2->TLへのモジュレーション感度
0x061ksl_sensKeyScaling->TLへのモジュレーション感度
typedef struct PatchCommon {
    uint8_t		patch_type;		///< 音源種別
    uint8_t		lk_nxp_format_version;	///< 1.変更不可 1.エクスポート不可 6.フォーマットバージョン(後方互換性用)
    char		name[14];		///< パッチ名
    uint32_t	original_clock;	///< 作成時のクロック周波数
} PatchCommon;

typedef struct TonedSynthCommon {
    int8_t			transpose;
    int8_t			tuning;
    int8_t			panpot;
    int8_t			panpot_ksl_sens;
    int8_t			pitch_lfo_sens[SWLFO_NUM];
    int8_t			pitch_env_sens[SWENV_NUM];
    Key&#83;caleParam	ksl;
    EnvelopeParam	sw_env[SWENV_NUM];
    LFOParam		sw_lfo[SWLFO_NUM];
    uint8_t			lfo_delay[SWLFO_NUM];
    int8_t			transpose2;		// OPL3で使用
    int8_t			tuning2;		// OPL3で使用
} TonedSynthCommon;

// LFOのパラメータ(4Byte)
typedef struct LFOParam {
    uint8_t midisync_wf_inputselect;		// 1.3.4
    uint8_t	keyonrst_inputdepth;	// 1.7
    uint8_t freq;
    uint8_t	fadein;
} LFOParam;

// ソフトエンベロープのパラメータ(12Byte)
typedef struct EnvelopeParam {
    uint8_t inputselect;
    int8_t	inputdepth;
    uint8_t	attack_time;
    uint8_t	attack_slope;
    uint8_t hold_time;
    uint8_t decay_time;
    uint8_t decay_release_slope;
    uint8_t sustain_level;
    uint8_t release_time;
    uint8_t release_level;
    int8_t	key_scaling;		// 最大時に1oct上がる毎にnote=60を基準に半分に
    int8_t	velocity_scaling;	// 80を基準として32上がる毎に倍に
} EnvelopeParam;

// キースケールのカーブ定義(4Byte)
typedef struct Key&#83;caleParam {
    int8_t	min_level;
    uint8_t	slope1_2;
    int8_t	center_key;
    int8_t	max_level;
} Key&#83;caleParam;

// スロット毎のパッチデータの共通部分
typedef struct SlotPatchCommon {
    uint8_t		velo_sens;
    uint8_t		tl;
    int8_t		lfo_sens[SWLFO_NUM];
    int8_t		env_sens[SWENV_NUM];
    int8_t		ksl_sens;
} SlotPatchCommon;

patch_type

idType
0PatchTypeUndefined
1PatchTypeOPM_FM
2PatchTypeOPN_FM
3PatchTypeOPN_FMch3(効果音モード)
4PatchTypeSSG_PSG
5PatchTypeOPN_RHYTHM
6PatchTypeOPNA_ADPCM
7PatchTypeOPL3_FM2op
8PatchTypeOPL3_FM4op
9PatchTypeOPL3_RHYTHM
10PatchTypeSPC_PCM
11PatchTypeOPLL_FM
12PatchTypeOPLL_RHYTHM

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS