==============================================================================
                     FMP for Windows uWinFMPv Ver.0.50
                        Copyright & Programmed by C60
                                 DLL dl
==============================================================================


------------------------------------------------------------------------------
͂߂
    {dĺAWinFMP.dll  export Ă֐ꗗłB
    WinFMP Ver0.10 ȍ~Ŏgpł܂B
    bŎgꍇ FMPMD_SDK005.zip ɓĂ winfmpimport.h,
    winfmp.lib  include ĉ(邢 LoadLibrary 
    Iɓǂݍł)
    Delphi ŗpꍇ́AFMPMD_SDK005.zip ɓĂ WinFMP.pas,
    PCMMusDriver.pas gݍłgB
    
    
------------------------------------------------------------------------------
ȕύX_
    EVer0.19 AFileIOC^[tFCXɑΉ܂B
      ڍׂ́AFileIOInfo.txt QƂĂB
    EVer0.18 APDZF/Z8X for Windows(TAN-Y)ɐΉ܂B
      (ADLL C^[tFCXł̐̓T|[gĂ܂B
       COMC^[tFCXŐ䂵Ă)
    EVer0.15 Afmp_setfmcalc55k() ̏ fmgen ł͂Ȃ
      WinFMP.dll Ŏ悤ɂ܂B
    EVer0.15 Agetcomment(), getcomment2(), fgetcomment(), 
      fgetcomment2() ̖߂lő 1024 oCgŐ悤ɂ܂B
    EVer0.14 Afmgen ̎dlύXɔ fmp_setfmcalc55k() sĂ
      ʂȂȂ܂B
    EVer0.10 Afmp_setadpcmppz8emulate() ǉ܂B
    EVer0.03 ACOM C^[tFCXAfmp_CoCreateInstance 
      ܂BBWinFMP ̃CX^X𕡐擾ėp邱Ƃ
      ł܂B
    EVer0.03 Afmp_setppzrate(), fmp_setfmcalc55k(), fmp_getsyncscnt(),
      fmp_getlastsyncexttime() ǉAfmp_setpcmrate() ŔCӂ̐̒l
      ݒł悤ɂȂ܂B
    EVer0.02 Afmp_setfmwait(), fmp_setssgwait(), fmp_setrhythmwait(),
      fmp_setadpcmwait() ǉ܂B
    
    
------------------------------------------------------------------------------
ӓ_
    PjWinFMP.dll ł͉̏o͍͂s܂B
    @@vC wave foCX PCM f[^̏o͂sKv܂B
    QjWinFMP.dll ͈ꕔXbhZ[tł͂܂B
    @@̃Xbh瓯ɃANZXꍇ́ANeBJZNV
    @@ŕی삵ĂB
    @@fmp_getlength(), fmp_getlength2(), fmp_getcomment(),
    @@fmp_getcomment2(), fmp_getcomment3(), fmp_fgetcomment(), 
    @@fmp_fgetcomment2(), fmp_fgetcomment3(), fmp_getdefinedpcmfilename(), 
    @@fmp_getdefinedppzfilename(), fmp_fgetdefinedpcmfilename(),
    @@fmp_fgetdefinedppzfilename() ̂ǂꂩƑ̊֐̑gݍ킹̂݁A
    @@ʂ̃Xbh瓯Ɏsł܂B
    
    
------------------------------------------------------------------------------
֐̎gp菇(FDLLC^[tFCXpꍇ)
    fmp_getversion(), fmp_getinterfaceversion() Ńo[W`FbN
    @
    fmp_init() ŏ
    @
    fmp_setpcmdir(), fmp_setpcmrate() œ̐ݒ
    @
    fmp_load() 邢 fmp_load2() ŋȃf[^̓ǂݍ
    @
    fmp_start() ŉtJn
    @
    fmp_getpcmdata()  PCM f[^̎擾BvC wave foCXɏo
    @
    fmp_stop() ŉtI
    @
    ݂̋ȂĉtȂAfmp_start() B
    ̋ȂtȂAfmp_load() 邢 fmp_load2() B
    
    
------------------------------------------------------------------------------
t@NVꗗ

    i͂bAi Delphi ł̒`łBȂAbł
        typedef unsigned char uchar;
    Delphi ł
        type
            PSmallInt = ^SmallInt;
            TComment = Array[0..3-1] of PChar;
    łB
    
    
===============================================================================
    int fmp_getversion(void);
    function fmp_getversion : Integer;
-------------------------------------------------------------------------------
    input           
    output          DLL ̃o[W
-------------------------------------------------------------------------------

    WinFMP.dll ̃o[W擾܂B
    10i100̈ʂW[o[WA2}Ci[o[WłB
    ݂̖߂l050łB
    
    
===============================================================================
    int fmp_getinterfaceversion(void);
    function fmp_getinterfaceversion : Integer;
-------------------------------------------------------------------------------
    input           
    output          DLL C^[tFCX̃o[W
-------------------------------------------------------------------------------
    
    WinFMP.dll ̃C^[tFCX̃o[W擾܂B
    10i100̈ʂW[o[WA2}Ci[o[WłB
    ݂̖߂l011łB
    
    ʃo[W export Ă֐̍팸AdlύXꍇɂ
    W[o[Wオ܂B
    ʃo[W export Ă֐̒ǉ݂̂̏ꍇɂ̓W[o[
    W͕ς炸A}Ci[o[Ŵ݂オ܂B
    ʃo[W export Ă֐ςȂƂɂ̓o[W
    ω܂B
    
    
===============================================================================
    HRESULT WINAPI fmp_CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter,
        DWORD dwClsContext, REFIID riid, LPVOID * ppv);
    function fmp_CoCreateInstance(const clsid: TCLSID; unkOuter: IUnknown;
        dwClsContext: Longint; const iid: TIID; var pv) : HResult; stdcall;
-------------------------------------------------------------------------------

    WinFMP  CX^X𐶐AC^[tFCX|C^擾܂B
    ڍׂ́ACOMInfof.txt QƂĂB
    
    
===============================================================================
    bool fmp_init(char *path);
    function fmp_init(path : PChar) : Boolean;
-------------------------------------------------------------------------------
    input
        path        Y wav ݂fBNg
    output          ɐ true, Ȃ false
-------------------------------------------------------------------------------
    
    WinFMP.dll ̏s܂B
    ȉ̃t@NVgpOɈxĂяoĂB
    
    path ̍Ṓu\v͕tĂtȂĂ\܂B
    path  NULL ̏ꍇ͍ƃtH_(V[gJbgŎw肵tH_A
    邢̓vCtH_)ǂݍ݂܂B
    
    
===============================================================================
    bool fmp_loadrhythmsample(char *path);
    function fmp_loadrhythmsample(path : PChar) : Boolean;
-------------------------------------------------------------------------------
    input
        path        Y wav ݂fBNg
    output          ǂݍ݂ɐ true, Ȃ false
-------------------------------------------------------------------------------
    
    Y wave ēxǂݍ݂܂B
    sƋȂ̉t~܂܂B
    
    path ̍Ṓu\v͕tĂtȂĂ\܂B
    path  NULL ̏ꍇ͍ƃtH_(V[gJbgŎw肵tH_A
    邢̓vCtH_)ǂݍ݂܂B
    
    
===============================================================================
    bool fmp_setpcmdir(char **path);
    function fmp_setpcmdir(pcmdir : Array of PChar) : Boolean;
-------------------------------------------------------------------------------
    input
        path        PCM ̌pX̃|C^z
    output          path 64𒴂 false
-------------------------------------------------------------------------------
    
    PVI ̌pXw肵܂B
    path PVI ̌pX̃|C^złB
    fmp_load() œǂݍ܂ȃf[^ƓfBNg͍ŏɕK
    ̂ŁAŎw肷Kv͂܂B
    
    path ̍Ṓu\v͕tĂtȂĂ\܂B
    FMP_MAX_PCMDIR(64)fBNg܂Ŏwł܂B
    Ōɂ NULL  "" w肵ĂB
    
    ex) c:\fmp\pvi, c:\fmp\pvi2 w肷Ƃ
        
        char *path[MAX_PCMDIR+1];
        path[0] = "c:\fmp\pvi";
        path[1] = "c:\fmp\pvi2";
        path[2] = NULL; ܂ path[2] = "";
    
    
===============================================================================
    void fmp_setpcmrate(int rate);
    procedure fmp_setpcmrate(rate : Integer);
-------------------------------------------------------------------------------
    input
        rate        Đg
    output          Ȃ
-------------------------------------------------------------------------------
    
    fmp_getpcmdata() Ŏ擾 PCM ̎gw肵܂B
    rate ͔Cӂ̐̒lwł܂Aʌ݊mۂ̂߁AAPI 
    fmp_setppzrate(), fmp_setfmcalc55k() IɎs܂B
    
    Erate = SOUND_55K ̏ꍇ
        o͂ PCM ̎gAPPZ 쓮g 44kHz
        fmp_fmcalk55k(true);
        
    Erate != SOUND_55K ̏ꍇ
        o͂ PCM ̎gAPPZ 쓮g rate Ŏw肳ꂽlB
        fmp_fmcalk55k(false);
    
    
    fmp_setppzrate(), fmp_setfmcalc55k() ́A{ API ̌ɎsĂB
    
    
===============================================================================
    void fmp_setppzrate(int rate);
    procedure fmp_setppzrate(rate : Integer);
-------------------------------------------------------------------------------
    input
        rate        PPZ8 쓮g(Hz)
    output          Ȃ
-------------------------------------------------------------------------------
    
    PPZ8 ̋쓮gw肵܂Brate ͔Cӂ̒li1ȏ)wł܂B
    
    fmp_setpcmrate() sƁA{ API Ŏw肳ꂽl㏑̂ŁA
    fmp_setpcmrate() ̌Ɏs悤ɂĉB
    
    
===============================================================================
    void fmp_setfmcalc55k(bool flag);
    procedure fmp_setfmcalc55k(flag : Boolean);
-------------------------------------------------------------------------------
    input
        flag        // FM ̍ 55kHz ōsȂ true
                    // fmp_setpcmrate() Ŏw肵lōsȂ false
    output          Ȃ
-------------------------------------------------------------------------------
    FM ̍ 55kHz ōsǂw肵܂B
    55kHz ōsƉ͌サ܂A኱dȂ܂B
    { API ̎ẃAfmp_getpcmdata() Ŏ擾 PCM f[^̎gƂ
    ֌WłB
    
    fmp_setpcmrate() sƁA{ API Ŏw肳ꂽl㏑
    ̂ŁAfmp_setpcmrate() ̌Ɏs悤ɂĉB
    
    
===============================================================================
    int fmp_load(char *filename);
    function fmp_load(filename : PChar) : Integer;
-------------------------------------------------------------------------------
    input
        filename    ȃf[^̃t@C(tpX)
    output          L̖߂lQ
-------------------------------------------------------------------------------
    
    t@CŎȃf[^ WinFMP.dll ɓǂݍ݂܂B
    ȃf[^ PCM t@Cw肳Ăꍇ́Aŏɋȃf[^
    ݂fBNgAȂ fmp_setpcmdir() Ŏw肳ꂽ
    fBNg PCM ̓ǂݍ݂s܂B
    ۂɉt邽߂ɂ́Afmp_start() ĂяoKv܂B
    
    ߂lF
        WINFMP_OK                       I
        FMP_ERR_OPEN_MUSIC_FILE          f[^JȂ
        FMP_ERR_WRONG_MUSIC_FILE        FMP ̋ȃf[^ł͂Ȃ
        FMP_ERR_OPEN_PVI_FILE           PVI JȂ
        FMP_ERR_WRONG_PVI_FILE          PVI ُ
        FMP_WARNING_PVI_ALREADY_LOAD    PVI ͊ɓǂݍ܂Ă
        FMP_ERR_OPEN_PPZ1_FILE          PPZ JȂ
        FMP_ERR_WRONG_PPZ1_FILE         PPZ ُ
        FMP_WARNING_PPZ1_ALREADY_LOAD   PPZ ͊ɓǂݍ܂Ă
        FMP_ERR_OUT_OF_MEMORY           s
    
    
===============================================================================
    int fmp_load2(uchar *musdata, int size);
    function fmp_load2(musdata : Pointer; size : Integer) : Integer;
-------------------------------------------------------------------------------
    input
        musdata     ȃf[^̃|C^
        size        ȃf[^̃TCY
    output          L̖߂lQ
-------------------------------------------------------------------------------
    
    musdata  size Ŏw肳郁̋ȃf[^ WinFMP.dll 
    ǂݍ݂܂B
    PCM  setpcmdir() Ŏw肳ꂽfBNgǂݍ܂܂B
    ۂɉt邽߂ɂ́Afmp_start() ĂяoKv܂B
    
    ߂lF
        WINFMP_OK                       I
        FMP_ERR_WRONG_MUSIC_FILE        FMP ̋ȃf[^ł͂Ȃ
        FMP_ERR_OPEN_PVI_FILE           PVI JȂ
        FMP_ERR_WRONG_PVI_FILE          PVI ُ
        FMP_WARNING_PVI_ALREADY_LOAD    PVI ͊ɓǂݍ܂Ă
        FMP_ERR_OPEN_PPZ1_FILE          PPZ JȂ
        FMP_ERR_WRONG_PPZ1_FILE         PPZ ُ
        FMP_WARNING_PPZ1_ALREADY_LOAD   PPZ ͊ɓǂݍ܂Ă
        FMP_ERR_OUT_OF_MEMORY           s
    
    
===============================================================================
    void fmp_start(void);
    procedure fmp_start;
-------------------------------------------------------------------------------
    input           Ȃ
    output          Ȃ
-------------------------------------------------------------------------------
    
    fmp_load() 邢 fmp_load2() œǂݍ܂ꂽȂ̍Jn
    w܂B
    ۂ PCM f[^̎擾ɂ́Afmp_getpcmdata() gpĂB
    
    
===============================================================================
    void fmp_stop(void);
    procedure fmp_stop;
-------------------------------------------------------------------------------
    input           Ȃ
    output          Ȃ
-------------------------------------------------------------------------------
    
    Ȃ̍I܂B
    s fmp_getpcmdata() ĂяoĂf[^擾ł܂B
    
    
===============================================================================
    void fmp_fadeout(int speed);
    procedure fmp_fadeout(speed : Integer);
-------------------------------------------------------------------------------
    input
        speed       tF[hAEg̑x(O`PQV)
    output          Ȃ
-------------------------------------------------------------------------------
    
    Ȃ̃tF[hAEgs܂(FMP ݊)
    speed ͂P`PQVŁA傫قǑȂ܂B
    OȂftHgliRjłB
    
    
===============================================================================
    void fmp_fadeout2(int speed);
    procedure fmp_fadeout2(speed : Integer);
-------------------------------------------------------------------------------
    input
        speed       tF[hAEg܂ł̎(ms PʁA1`2147483647)
    output          Ȃ
-------------------------------------------------------------------------------
    
    Ȃ̃tF[hAEgs܂()
    speed ̓tF[hAEg܂ł̎(ms P)w肵܂B
    
    
===============================================================================
    void fmp_getpcmdata(short *buf, int nsamples);
    procedure fmp_getpcmdata(buf : PSmallInt; nsamples : Integer);
-------------------------------------------------------------------------------
    input
        buf         PCM f[^i[obt@̃|C^
        nsamples    擾Tv
    output          Ȃ
-------------------------------------------------------------------------------
    
    WinFMP.dll ōꂽ PCM f[^擾܂B
    fmp_start() ŋȂ̉tJnĂȂɂ͖f[^擾܂B
     PCM f[^ 16bit, stereo, setpcmrate() Ŏw肵głB
    obt@TCÝAnsamples * 4(bytes)KvłB
    ̊֐Ŏ擾 PCM f[^vCōĐĂB
    
    ex) fmp_setpcmrate(SOUND_44K);      // 44.1kHz w
        fmp_getpcmdata(buf, 44100);     // 1b̃f[^ buf Ɏ擾
                                        // ([N̓ePbi݂܂)
    
    ̊֐ĂяoƂɃ[N̕ύXs܂B
    @r[A[Ń[Ñf[^\ꍇ́AÂǂݏoȂ
    @\ȂȂĂ܂܂B


===============================================================================
    void fmp_setppzinterpolation(bool ip);
    procedure fmp_setppzinterpolation(ip : Boolean);
-------------------------------------------------------------------------------
    input
        ip          ꎟԂsȂ true
    output          Ȃ
-------------------------------------------------------------------------------
    
    PPZ8 p[gňꎟԂsǂw肵܂B
    ꎟԂsƉ͏オ܂AdȂ܂B
    
    
===============================================================================
    void fmp_setadpcmppz8emulate(bool flag);
    procedure fmp_setadpcmppz8emulate(flag : Boolean);
-------------------------------------------------------------------------------
    input
        flag        ADPCM p[g PPZ8 ōĐȂ true
    output          Ȃ
-------------------------------------------------------------------------------
    
    ADPCM p[g PPZ8 ōĐ邩ǂw肵܂B
    ftHg false(ADPCM p[g OPNA ōĐ)łB
    
    
===============================================================================
    char *fmp_getcomment(char *dest, uchar *musdata, int size);
    function fmp_getcomment(dest : PChar; musdata : Pointer; size : Integer)
        : PChar;
-------------------------------------------------------------------------------
    input
        dest        擾i[AhX̃|C^
        musdata     ȃf[^̃|C^
        size        ȃf[^̃TCY
    output          dest Ɠ
-------------------------------------------------------------------------------

    RsRg擾܂B
    musdata = NULL ܂ size = 0 ̏ꍇ WinFMP.dll ɓǂݍ܂
    ȃf[^̂RsRg擾Ȃ̏ꍇ musdata  size 
    w肳郁̋ȃf[^̂RsRg擾܂B
    dest Ŏw肳镶i[p̃obt@ 8192 oCgȏmۂĉB
    
    fmp_getlength(), fmp_getlength2(), fmp_getcomment(), fmp_getcomment2(), 
    fmp_getcomment3(), fmp_fgetcomment(), fmp_fgetcomment2(), 
    fmp_fgetcomment3(), fmp_getdefinedpcmfilename(),
    fmp_getdefinedppzfilename(), fmp_fgetdefinedpcmfilename(),
    fmp_fgetdefinedppzfilename() ̂ǂꂩƑ̊֐̑gݍ킹̂݁A
    ʂ̃Xbh瓯Ɏsł܂B
    
    
===============================================================================
    char *fmp_getcomment2(char *dest, uchar *musdata, int size);
    function fmp_getcomment2(dest : PChar; musdata : Pointer; size : Integer)
        : PChar;
-------------------------------------------------------------------------------
    input
        dest        擾i[AhX̃|C^
        musdata     ȃf[^̃|C^
        size        ȃf[^̃TCY
    output          dest Ɠ
-------------------------------------------------------------------------------
    
    fmp_getcomment() ƂقړlłAQoCgpʏ̔p
    ϊĎ擾܂B
    
    fmp_getlength(), fmp_getlength2(), fmp_getcomment(), fmp_getcomment2(), 
    fmp_getcomment3(), fmp_fgetcomment(), fmp_fgetcomment2(), 
    fmp_fgetcomment3(), fmp_getdefinedpcmfilename(),
    fmp_getdefinedppzfilename(), fmp_fgetdefinedpcmfilename(),
    fmp_fgetdefinedppzfilename() ̂ǂꂩƑ̊֐̑gݍ킹̂݁A
    ʂ̃Xbh瓯Ɏsł܂B
    
    
===============================================================================
    char **fmp_getcomment3(char *dest[], uchar *musdata, int size);
    function fmp_getcomment3(dest : TComment; musdata : Pointer;
        size : Integer) : PComment;
-------------------------------------------------------------------------------
    input
        dest        擾i[AhX̃|C^̔z
        musdata     ȃf[^̃|C^
        size        ȃf[^̃TCY
    output          dest Ɠ
-------------------------------------------------------------------------------
    
    fmp_getcomment2() ɉĂɃGXP[vV[PXATAB 
    Xy[XɕϊARsɕ܂B
    
    dest ́ARsRg擾obt@ւ̃|C^złB
    eobt@́A80+2 oCgȏmۂĂB
    
    ex)
        char    line1[80+2];        // Ps
        char    line2[80+2];        // Qs
        char    line3[80+2];        // Rs
        char    *dest[3];
        
        dest[0] = line1;
        dest[1] = line2;
        dest[2] = line3;
        
        fmp_getcomment3(dest, musdata, size);
    
    
    fmp_getlength(), fmp_getlength2(), fmp_getcomment(), fmp_getcomment2(), 
    fmp_getcomment3(), fmp_fgetcomment(), fmp_fgetcomment2(), 
    fmp_fgetcomment3(), fmp_getdefinedpcmfilename(),
    fmp_getdefinedppzfilename(), fmp_fgetdefinedpcmfilename(),
    fmp_fgetdefinedppzfilename() ̂ǂꂩƑ̊֐̑gݍ킹̂݁A
    ʂ̃Xbh瓯Ɏsł܂B


===============================================================================
    int fmp_fgetcomment(char *dest, char *filename)
    function fmp_fgetcomment(dest : PChar; filename : PChar) : Integer;
-------------------------------------------------------------------------------
    input
        dest        擾i[AhX̃|C^
        filename    ȃf[^̃t@CitpXj
    output          L̖߂lQ
-------------------------------------------------------------------------------

    擾܂B
    t@CŎw肷ȊO fmp_getcomment() ƓłB
    filename = NULL ̏ꍇ WinFMP.dll ɓǂݍ܂Ăȃf[^
    RsRg擾Ȃ̏ꍇ filename Ŏw肳ȃf[^
    RsRg擾܂B

    ߂lF
        WINFMP_OK                   I
        FMP_ERR_OPEN_MUSIC_FILE      f[^JȂ
        FMP_ERR_OUT_OF_MEMORY       s

    fmp_getlength(), fmp_getlength2(), fmp_getcomment(), fmp_getcomment2(), 
    fmp_getcomment3(), fmp_fgetcomment(), fmp_fgetcomment2(), 
    fmp_fgetcomment3(), fmp_getdefinedpcmfilename(),
    fmp_getdefinedppzfilename(), fmp_fgetdefinedpcmfilename(),
    fmp_fgetdefinedppzfilename() ̂ǂꂩƑ̊֐̑gݍ킹̂݁A
    ʂ̃Xbh瓯Ɏsł܂B


===============================================================================
    int fmp_fgetcomment2(char *dest, char *filename)
    function fmp_fgetcomment2(dest : PChar; filename : PChar) : Integer;
-------------------------------------------------------------------------------
    input
        dest        擾i[AhX̃|C^
        filename    ȃf[^̃t@CitpXj
    output          fmp_fgetcomment() Ɠ
-------------------------------------------------------------------------------

    fmp_fgetcomment() ƂقړlłAQoCgpʏ̔p
    ϊĎ擾܂B
    
    fmp_getlength(), fmp_getlength2(), fmp_getcomment(), fmp_getcomment2(), 
    fmp_getcomment3(), fmp_fgetcomment(), fmp_fgetcomment2(), 
    fmp_fgetcomment3(), fmp_getdefinedpcmfilename(),
    fmp_getdefinedppzfilename(), fmp_fgetdefinedpcmfilename(),
    fmp_fgetdefinedppzfilename() ̂ǂꂩƑ̊֐̑gݍ킹̂݁A
    ʂ̃Xbh瓯Ɏsł܂B


===============================================================================
    int fmp_fgetcomment3(char *dest[], char *filename)
    function fmp_fgetcomment3(dest : TComment; filename : PChar)
        : Integer;
-------------------------------------------------------------------------------
    input
        dest        擾i[AhX̃|C^̔z
        filename    ȃf[^̃t@CitpXj
    output          fmp_fgetcomment() Ɠ
-------------------------------------------------------------------------------

    fmp_fgetcomment2() ɉĂɃGXP[vV[PXARs
    ܂B
    
    dest ́ARsRg擾obt@ւ̃|C^złB
    eobt@́A80+2 oCgȏmۂĂB
    
    ex)
        char    line1[80+2];        // Ps
        char    line2[80+2];        // Qs
        char    line3[80+2];        // Rs
        char    *dest[3];
        
        dest[0] = line1;
        dest[1] = line2;
        dest[2] = line3;
        
        fmp_fgetcomment3(dest, filename);
    
    
    fmp_getlength(), fmp_getlength2(), fmp_getcomment(), fmp_getcomment2(), 
    fmp_getcomment3(), fmp_fgetcomment(), fmp_fgetcomment2(), 
    fmp_fgetcomment3(), fmp_getdefinedpcmfilename(),
    fmp_getdefinedppzfilename(), fmp_fgetdefinedpcmfilename(),
    fmp_fgetdefinedppzfilename() ̂ǂꂩƑ̊֐̑gݍ킹̂݁A
    ʂ̃Xbh瓯Ɏsł܂B


===============================================================================
    char *fmp_getdefinedpcmfilename(char *dest, uchar *musdata, int size)
    function fmp_getdefinedpcmfilename(dest : PChar; musdata : Pointer;
        size : Integer) : PChar;
-------------------------------------------------------------------------------
    input
        dest        擾i[AhX̃|C^
        musdata     ȃf[^̃|C^
        size        ȃf[^̃TCY
    output          dest Ɠ
-------------------------------------------------------------------------------

    ȃf[^Œ`Ă ADPCM ̃t@C擾܂B
    musdata = NULL ܂ size = 0 ̏ꍇ WinFMP.dll ɓǂݍ܂
    ȃf[^ɒ`Ă ADPCM t@C擾Ȃ̏ꍇ
    musdata  size Ŏw肳郁̋ȃf[^ɒ`Ă ADPCM
    t@C擾܂B
    dest Ŏw肳镶i[p̃obt@ 12+1 oCgȏmۂĉB
    
    fmp_getlength(), fmp_getlength2(), fmp_getcomment(), fmp_getcomment2(), 
    fmp_getcomment3(), fmp_fgetcomment(), fmp_fgetcomment2(), 
    fmp_fgetcomment3(), fmp_getdefinedpcmfilename(),
    fmp_getdefinedppzfilename(), fmp_fgetdefinedpcmfilename(),
    fmp_fgetdefinedppzfilename() ̂ǂꂩƑ̊֐̑gݍ킹̂݁A
    ʂ̃Xbh瓯Ɏsł܂B


===============================================================================
    char *fmp_getdefinedppzfilename(char *dest, uchar *musdata, int size,
        int bufnum)
    function fmp_getdefinedppzfilename(dest : PChar; musdata : Pointer;
        size : Integer; bufnum : Integer) : PChar;
-------------------------------------------------------------------------------
    input
        dest        擾i[AhX̃|C^
        musdata     ȃf[^̃|C^
        size        ȃf[^̃TCY
        bufnum      obt@ԍ(0 ܂ 1)
    output          dest Ɠ
-------------------------------------------------------------------------------

    ȃf[^Œ`Ă PPZ ̃t@C擾܂B
    musdata = NULL ܂ size = 0 ̏ꍇ WinFMP.dll ɓǂݍ܂
    ȃf[^ɒ`Ă PPZ t@C擾Ȃ̏ꍇ
    musdata  size Ŏw肳郁̋ȃf[^ɒ`Ă PPZ
    t@C擾܂B
    dest Ŏw肳镶i[p̃obt@ 12+1 oCgȏmۂĉB
    bufnum = 0 ݂̂LłBbufnum=1 ̏ꍇAdest ̓NA܂B
    
    fmp_getlength(), fmp_getlength2(), fmp_getcomment(), fmp_getcomment2(), 
    fmp_getcomment3(), fmp_fgetcomment(), fmp_fgetcomment2(), 
    fmp_fgetcomment3(), fmp_getdefinedpcmfilename(),
    fmp_getdefinedppzfilename(), fmp_fgetdefinedpcmfilename(),
    fmp_fgetdefinedppzfilename() ̂ǂꂩƑ̊֐̑gݍ킹̂݁A
    ʂ̃Xbh瓯Ɏsł܂B


===============================================================================
    int fmp_fgetdefinedpcmfilename(char *dest, char *filename)
    function fmp_fgetdefinedpcmfilename(dest : PChar; filename : PChar)
        : Integer;
-------------------------------------------------------------------------------
    input
        dest        擾i[AhX̃|C^
        filename    ȃf[^̃t@CitpXj
    output          L̖߂lQ
-------------------------------------------------------------------------------

    ȃf[^Œ`Ă ADPCM ̃t@C擾܂B
    t@CŎw肷ȊO fmp_getdefinedpcmfilename() ƓłB
    filename = NULL ̏ꍇ WinFMP.dll ɓǂݍ܂Ăȃf[^
    `Ă ADPCM t@C擾Ȃ̏ꍇ filename 
    w肳ȃf[^ɒ`Ă ADPCM t@C擾܂B
    dest Ŏw肳镶i[p̃obt@ 12+1 oCgȏmۂĉB

    ߂lF
        WINFMP_OK                   I
        FMP_ERR_OPEN_MUSIC_FILE      f[^JȂ

    fmp_getlength(), fmp_getlength2(), fmp_getcomment(), fmp_getcomment2(), 
    fmp_getcomment3(), fmp_fgetcomment(), fmp_fgetcomment2(), 
    fmp_fgetcomment3(), fmp_getdefinedpcmfilename(),
    fmp_getdefinedppzfilename(), fmp_fgetdefinedpcmfilename(),
    fmp_fgetdefinedppzfilename() ̂ǂꂩƑ̊֐̑gݍ킹̂݁A
    ʂ̃Xbh瓯Ɏsł܂B


===============================================================================
    int fmp_fgetdefinedppzfilename(char *dest, char *filename, int bufnum)
    function fmp_fgetdefinedppzfilename(dest : PChar; filename : PChar;
        bufnum : Integer) : Integer;
-------------------------------------------------------------------------------
    input
        dest        擾i[AhX̃|C^
        filename    ȃf[^̃t@CitpXj
        bufnum      obt@ԍ(0 ܂ 1)
    output          L̖߂lQ
-------------------------------------------------------------------------------

    ȃf[^Œ`Ă PPZ ̃t@C擾܂B
    t@CŎw肷ȊO fmp_getdefinedppzfilename() ƓłB
    filename = NULL ̏ꍇ WinFMP.dll ɓǂݍ܂Ăȃf[^
    擾Ȃ̏ꍇ filename Ŏw肳ȃf[^
    擾܂B
    dest Ŏw肳镶i[p̃obt@ 12+1 oCgȏmۂĉB
    bufnum = 0 ݂̂LłBbufnum=1 ̏ꍇAdest ̓NA܂B

    ߂lF
        WINFMP_OK                   I
        FMP_ERR_OPEN_MUSIC_FILE      f[^JȂ

    fmp_getlength(), fmp_getlength2(), fmp_getcomment(), fmp_getcomment2(), 
    fmp_getcomment3(), fmp_fgetcomment(), fmp_fgetcomment2(), 
    fmp_fgetcomment3(), fmp_getdefinedpcmfilename(),
    fmp_getdefinedppzfilename(), fmp_fgetdefinedpcmfilename(),
    fmp_fgetdefinedppzfilename() ̂ǂꂩƑ̊֐̑gݍ킹̂݁A
    ʂ̃Xbh瓯Ɏsł܂B


===============================================================================
    char *fmp_getmusicfilename(char *dest);
    function fmp_getmusicfilename(dest : PChar) : PChar;
-------------------------------------------------------------------------------
    input
        dest        擾i[AhX̃|C^
    output          dest Ɠ
-------------------------------------------------------------------------------
    
    WinFMP.dll ɓǂݍ܂Ăȃf[^̃t@C(tpX)
    擾܂B
    
    
===============================================================================
    char *fmp_getpcmfilename(char *dest);
    function fmp_getpcmfilename(dest : PChar) : PChar;
-------------------------------------------------------------------------------
    input
        dest        擾i[AhX̃|C^
    output          dest Ɠ
-------------------------------------------------------------------------------
    
    WinFMP.dll ɓǂݍ܂Ă PVI(ADPCM) ̃t@C(tpX)
    擾܂B
    
    
===============================================================================
    char *fmp_getppzfilename(char *dest, int bufnum);
    function fmp_getppzfilename(dest : PChar; bufnum : Integer) : PChar;
-------------------------------------------------------------------------------
    input
        dest        擾i[AhX̃|C^
        bufnum      obt@ԍ(0 ܂ 1)
    output          dest Ɠ
-------------------------------------------------------------------------------
    
    WinFMP.dll ɓǂݍ܂Ă PPZ8  PCM t@C(tpX)
    擾܂B
    bufnum = 0 ݂̂LłBbufnum=1 ̏ꍇAdest  '\0' ܂B
    
    
===============================================================================
    int fmp_maskon(bool rhythm_flag, int ah)
    function fmp_maskon(rhythm_flag : Boolean; ah : Integer) : Integer;
-------------------------------------------------------------------------------
    input
        rhythm_flag Yp[gǂH
        ah          }XN`l
    output          L̖߂lQ
-------------------------------------------------------------------------------

    p[g}XN܂B
    
    rhythm_flag = true ̏ꍇA
        Ỹp[gAȉ̐l̘aŎw肵܂B
         1          oXh
         2          XlAh
         4          Vo
         8          nCnbg
        16          ^    
        32          Vbg

    rhythm_flag = false ̏ꍇA
         0` 5      FM1 (A)`FM3(C),FM4(G)`FM6(I)
         6` 8      FMEx1`FMEx3
        18`20      SSG1(D)`SSG3(F)
        21          ADPCM(K)


    ߂lF
        WINFMP_OK                   I
        FMP_ERR_WRONG_PARTNO        p[gԍُ
    
    
===============================================================================
    int fmp_maskoff(int ch);
    function fmp_maskoff(ch : Integer) : Integer;
-------------------------------------------------------------------------------
    input
        ch          }XN`l
    output          L̖߂lQ
-------------------------------------------------------------------------------
    
    p[g}XN܂B
    `lԍ fmp_maskon() ƓlłB
    
    ߂lF
        WINFMP_OK                   I
        FMP_ERR_WRONG_PARTNO        p[gԍُ
        FMP_ERR_NOT_MASKED          wp[g̓}XNĂȂ
        FMP_ERR_MUSIC_STOPPED       Ȃ~܂Ă
    
    
===============================================================================
    void fmp_setfmvoldown(int voldown);
    procedure fmp_setfmvoldown(voldown : Integer);
-------------------------------------------------------------------------------
    input
        voldown     elp[g̉ʕ␳l(O`XX)
    output          Ȃ
-------------------------------------------------------------------------------
    
    FM p[g̉ʂw肵l܂B
    
    
===============================================================================
    void fmp_setssgvoldown(int voldown);
    procedure fmp_setssgvoldown(voldown : Integer);
-------------------------------------------------------------------------------
    input
        voldown     rrfp[g̉ʕ␳l(O`PT)
    output          Ȃ
-------------------------------------------------------------------------------
    
    SSG p[g̉ʂw肵l܂B
    
    
===============================================================================
    void fmp_setrhythmvoldown(int voldown);
    procedure fmp_setrhythmvoldown(voldown : Integer);
-------------------------------------------------------------------------------
    input
        voldown     OPNA Ỷʕ␳l(O`UR)
    output          Ȃ
-------------------------------------------------------------------------------
    
    OPNA Ỷʂw肵l܂B
    
    
===============================================================================
    void fmp_setadpcmvoldown(int voldown);
    procedure fmp_setadpcmvoldown(voldown : Integer);
-------------------------------------------------------------------------------
    input
        voldown     ADPCM ̉ʕ␳l(O`XX)
    output          Ȃ
-------------------------------------------------------------------------------
    
    ADPCM ̉ʂw肵l܂B
    
    
===============================================================================
    void fmp_setppzvoldown(int voldown);
    procedure fmp_setppzvoldown(voldown : Integer);
-------------------------------------------------------------------------------
    input
        voldown     
    output          Ȃ
-------------------------------------------------------------------------------
    
    ݂̂Ƃ떳łB
    PPZ8 p[g̉ʂ fmp_setssgvoldown() Őݒł܂B
    
    
===============================================================================
    int fmp_getfmvoldown(void);
    function fmp_getfmvoldown : Integer;
-------------------------------------------------------------------------------
    input           Ȃ
    output          elp[g̉ʕ␳l(O`XX)
-------------------------------------------------------------------------------
    
    FM p[g̉ʕ␳l(fmp_setfmvoldown() Ŏw肵l)擾܂B
    
    
===============================================================================
    int fmp_getssgvoldown(void);
    function fmp_getssgvoldown : Integer;
-------------------------------------------------------------------------------
    input           Ȃ
    output          rrfp[g̉ʕ␳l(O`PT)
-------------------------------------------------------------------------------
    
    SSG p[g̉ʕ␳l(fmp_setssgvoldown() Ŏw肵l)擾܂B
    
    
===============================================================================
    int fmp_getrhythmvoldown(void);
    function fmp_getrhythmvoldown : Integer;
-------------------------------------------------------------------------------
    input           Ȃ
    output          OPNA Ỷʕ␳l(O`UR)
-------------------------------------------------------------------------------
    
    OPNA Ỷʕ␳l(fmp_setrhythmvoldown() Ŏw肵l)
    擾܂B
    
    
===============================================================================
    int fmp_getadpcmvoldown(void);
    function fmp_getadpcmvoldown : Integer;
-------------------------------------------------------------------------------
    input           Ȃ
    output          ADPCM ̉ʕ␳l(O`XX)
-------------------------------------------------------------------------------
    
    ADPCM ̉ʕ␳l(fmp_setadpcmvoldown() Ŏw肵l)擾܂B
    
    
===============================================================================
    int fmp_getppzvoldown(void);
    function fmp_getppzvoldown : Integer;
-------------------------------------------------------------------------------
    input           Ȃ
    output          O
-------------------------------------------------------------------------------
    
    ݂̂Ƃ떳łB
    PPZ8 p[g̉ʂ fmp_getssgvoldown() Ŏ擾ł܂B
    
    
===============================================================================
    void fmp_setpos(int pos);
    procedure fmp_setpos(pos : Integer);
-------------------------------------------------------------------------------
    input           Đʒu(ms P)
    output          Ȃ
-------------------------------------------------------------------------------
    
    tw肵ʒu(ms P)ɃXLbv܂B
    
    
===============================================================================
    void fmp_setpos2(int pos);
    procedure fmp_setpos2(pos : Integer);
-------------------------------------------------------------------------------
    input           Đʒu(TimerB count P)
    output          Ȃ
-------------------------------------------------------------------------------
    
    tw肵ʒu(TimerB count P)ɃXLbv܂B
    
    
===============================================================================
    int fmp_getpos(void);
    function fmp_getpos : Integer;
-------------------------------------------------------------------------------
    input           Ȃ
    output          Đʒu(ms P)
-------------------------------------------------------------------------------
    
    tJn̍Đʒu(ms P)擾܂B
    
    
===============================================================================
    int fmp_getpos2(void);
    function fmp_getpos2 : Integer;
-------------------------------------------------------------------------------
    input           Ȃ
    output          Đʒu(TimerB count P)
-------------------------------------------------------------------------------
    
    tJn̍Đʒu(TimerB count P)擾܂B
    
    
===============================================================================
    bool fmp_getlength(char *filename, int *length, int *loop);
    function fmp_getlength(filename : PChar; var length : Integer;
        var loop : Integer) : Boolean;
-------------------------------------------------------------------------------
    input
        filename    擾ȃf[^̃t@C(tpX)
    output
        ߂l      t@Cǂ߂ĐɎ擾ł true
        length      P[vڂ̒(ms P)
        loop        Q[vڈȍ~̂P[v̒(ms P)
-------------------------------------------------------------------------------
    
    filename Ŏw肳Ȃ̒(ms P)擾܂B
    length łP[vڂ̒Aloop łQ[vڈȍ~̂P[v̒
    擾܂BQ[vvZ邽ߑdłB
    
    fmp_getlength(), fmp_getlength2(), fmp_getcomment(), fmp_getcomment2(), 
    fmp_getcomment3(), fmp_fgetcomment(), fmp_fgetcomment2(), 
    fmp_fgetcomment3(), fmp_getdefinedpcmfilename(),
    fmp_getdefinedppzfilename(), fmp_fgetdefinedpcmfilename(),
    fmp_fgetdefinedppzfilename() ̂ǂꂩƑ̊֐̑gݍ킹̂݁A
    ʂ̃Xbh瓯Ɏsł܂B


===============================================================================
    bool fmp_getlength2(char *filename, int *length, int *loop);
    function fmp_getlength2(filename : PChar;
        var length : Integer; var loop : Integer) : Boolean;
-------------------------------------------------------------------------------
    input
        filename    擾ȃf[^̃t@C(tpX)
    output
        ߂l      t@Cǂ߂ĐɎ擾ł true
        length      P[vڂ̒(TimerB count P)
        loop        Q[vڈȍ~̂P[v̒(TimerB count P)
-------------------------------------------------------------------------------
    
    filename Ŏw肳Ȃ̒(TimerB count P)擾܂B
    length łP[vڂ̒Aloop łQ[vڈȍ~̂P[v̒
    擾܂BQ[vvZ邽ߑdłB
    
    fmp_getlength(), fmp_getlength2(), fmp_getcomment(), fmp_getcomment2(), 
    fmp_getcomment3(), fmp_fgetcomment(), fmp_fgetcomment2(), 
    fmp_fgetcomment3(), fmp_getdefinedpcmfilename(),
    fmp_getdefinedppzfilename(), fmp_fgetdefinedpcmfilename(),
    fmp_fgetdefinedppzfilename() ̂ǂꂩƑ̊֐̑gݍ킹̂݁A
    ʂ̃Xbh瓯Ɏsł܂B


===============================================================================
    int fmp_getloopcount(void);
    function fmp_getloopcount : Integer;
-------------------------------------------------------------------------------
    input           Ȃ
    output          [v
-------------------------------------------------------------------------------
    
    ݂̃[v񐔂擾܂B
    
    ߂lF
        -1                          t~
        0ȏ                       [v


===============================================================================
    void fmp_setfmwait(int nsec);
    function fmp_setfmwait(nsec : Integer);
-------------------------------------------------------------------------------
    input           wait(nsec P)
    output          Ȃ
-------------------------------------------------------------------------------
    
    FM p[g̃WX^Ƀf[^o͂O wait ݒ肵܂B
    ftHg 15000 łBʏ͕ύXKv͂܂B


===============================================================================
    void fmp_setssgwait(int nsec);
    function fmp_setssgwait(nsec : Integer);
-------------------------------------------------------------------------------
    input           wait(nsec P)
    output          Ȃ
-------------------------------------------------------------------------------
    
    SSG p[g̃WX^Ƀf[^o͂O wait ݒ肵܂B
    ftHg 15000 łBʏ͕ύXKv͂܂B


===============================================================================
    void fmp_setrhythmwait(int nsec);
    function fmp_setrhythmwait(nsec : Integer);
-------------------------------------------------------------------------------
    input           wait(nsec P)
    output          Ȃ
-------------------------------------------------------------------------------
    
    Yp[g̃WX^Ƀf[^o͂O wait ݒ肵܂B
    ftHg 15000 łBʏ͕ύXKv͂܂B


===============================================================================
    void fmp_setadpcmwait(int nsec);
    function fmp_setadpcmwait(nsec : Integer);
-------------------------------------------------------------------------------
    input           wait(nsec P)
    output          Ȃ
-------------------------------------------------------------------------------
    
    ADPCM p[g̃WX^Ƀf[^o͂O wait ݒ肵܂B
    ftHg 15000 łBʏ͕ύXKv͂܂B


===============================================================================
    int fmp_getsyncscnt(void);
    function fmp_getsyncscnt : Integer;
-------------------------------------------------------------------------------
    input           Ȃ
    output          JEg
-------------------------------------------------------------------------------
    
    JIPp̓JEg擾܂B


===============================================================================
    int fmp_getlastsyncexttime(void);
    function fmp_getlastsyncexttime : Integer;
-------------------------------------------------------------------------------
    input           Ȃ
    output          JEgŌɍXVꂽ(ms P)
-------------------------------------------------------------------------------
    
    JIPp̓JEgŌɍXVꂽԂ擾܂B


===============================================================================
    WORKS *fmp_getworks(void);
    function fmp_getworks : PWORKS; 
-------------------------------------------------------------------------------
    input           Ȃ
    output          J[Ñ|C^
-------------------------------------------------------------------------------
    J[Ñ|C^擾܂B
    
    [Nւ݂͍̏sȂŉB
    WORKS ̍\͍ύX\܂B
    [N̓eɂĂ̎ɂ͂łȂꍇ܂B



------------------------------------------------------------------------------
A

    E-mail                  HQD00151@nifty.com
    Homepage                http://c60.la.coocan.jp/
    Twitter                 c60fmp



                                                                bUO
