#pragma once

class IKpiConfig;
class IKpiConfigEnumerator;

struct kbguru2smf_Settings
{
    wchar_t szDllPath[MAX_PATH];//GuruGuruSMF4.dll のパス
    wchar_t szDlsPath[2048];//DLS のパス(| で区切って複数ファイル指定対応)
    int  nVolume; //音量(0〜127)(127が最大)
    //↑他のMIDIプラグインと比べて音が大きいので調整用にと思ったが midi メッセージで音量を設定してるので音量を下げると劣化する
    bool bIgnoreDllPath;
    //GGSPlay() の option に関する設定
    bool bLoop;
    bool bSkipBeginning;
    bool bSkipEnding;
    bool bMasterPitch;
    bool bNormalize;
    bool bExclusive;
    int  nKeyShift;//-127〜+127
    //
    int  nMasterPitch;//SetMasterPitch
    DWORD dwFadeIn;
    DWORD dwFadeOut;
};

BOOL  __fastcall kbguru2smf_EnumConfig(IKpiConfig* pConfig, IKpiConfigEnumerator* pEnumerator);
DWORD __fastcall kbguru2smf_ApplyConfig(IKpiConfig* pConfig,
    const wchar_t* cszSection, //セクション名
    const wchar_t* cszKey, //キー名
    INT64  nValue, //変更後の値(BOOL/INT の場合)
    double dValue, //変更後の値(FLOAT の場合)
    const wchar_t* cszValue);//変更後の値(文字列)

void __fastcall kbguru2smf_GetSettings(IKpiConfig* pConfig, kbguru2smf_Settings* pSettings);
