HLP

  • タグ:
  • タグはありません
;----------------------
;typedef struct _MMCKINFO
;{
; FOURCC ckid; /* chunk ID */
; DWORD cksize; /* chunk size */
; FOURCC fccType; /* form type or list type */
; DWORD dwDataOffset; /* offset of data portion of chunk */
; DWORD dwFlags; /* flags used by MMIO functions */
;} MMCKINFO, *PMMCKINFO, NEAR *NPMMCKINFO, FAR *LPMMCKINFO;
#define _ckid 0
#define _cksize 4
#define _fccType 8
#define _dwDataOffset 12
#define _dwFlags 16
;----------------------
#uselib "winmm.dll"
//WAVE
#func waveOutOpen "waveOutOpen" sptr, sptr, sptr, sptr, sptr, sptr
#define WAVE_MAPPER 0xFFFFFFFF
#define CALLBACK_NULL 0x00000000
#func waveOutPrepareHeader "waveOutPrepareHeader" sptr, sptr, sptr
#func waveOutWrite "waveOutWrite" sptr, sptr, sptr
#func waveOutReset "waveOutReset" sptr
#func waveOutUnprepareHeader "waveOutUnprepareHeader" sptr, sptr, sptr
#func waveOutClose "waveOutClose" sptr
//Wave
#func mmioOpen "mmioOpenA" sptr,sptr,sptr
#define MMIO_READ 0x00000000
#func mmioRead "mmioRead" sptr,sptr,sptr
#func mmioSeek "mmioSeek" sptr,sptr,sptr
#define SEEK_SET 0 //
#define SEEK_END 2 //
#func mmioClose "mmioClose" sptr,sptr
#func mmioDescend "mmioDescend" sptr,sptr,sptr,sptr
#define MMIO_FINDRIFF 0x0020
#define MMIO_FINDCHUNK 0x0010
#func mmioAscend "mmioAscend" sptr,sptr,sptr
//FOURCC
#cfunc mmioStringToFOURCC "mmioStringToFOURCCA" sptr,sptr
alloc WAVEHDR,8*4
gosub*ReadWaveFile//
hwo=0;
waveOutOpen varptr(hwo),WAVE_MAPPER,varptr(WAVEFORMATEX),0,0,CALLBACK_NULL
if stat=0{mes "WAVEOUT OPEN:OK"}else{end}
wpoke WAVEHDR,0,varptr(Data)// 0:lpdata
wpoke WAVEHDR,4,DataSize// 4:dwBufferLength
wpoke WAVEHDR,16,0//16:dwFlags
waveOutPrepareHeader hwo,varptr(WAVEHDR),32
if stat=0{mes "WAVE PREPARE:OK"}else{end}
waveOutWrite hwo,0,32
waveOutWrite hwo,varptr(WAVEHDR),32
stop
*ReadWaveFile//ReadWaveFile使WAVEFORMATEXDATA,DataSize//
FileName="sample.wav"
alloc mmckRiff,4*5
alloc mmckFmt,4*5
alloc mmckData,4*5
alloc WAVEFORMATEX,18
//
String=FileName
mmioOpen FileName,NULL,MMIO_READ
hmmio = stat
if hmmio = 0 {end}else{mes "MMIO OPEN:OK,FILE:"+Name}
//RIFF
lpoke mmckRiff,_ffcType,mmioStringToFOURCC("WAVE",0)
mmioDescend hmmio,varptr(mmckkRiff),0,MMIO_FINDRIFF
if stat=0{mes "RIFF DESCEND:OK"}else{end}
//fmt ->
lpoke mmckFmt,_ckid,mmioStringToFOURCC("fmt ",0)
mmioDescend hmmio,varptr(mmckFmt),0,MMIO_FINDCHUNK
if stat=0{mes "fmt DESCEND:OK"}else{end}
mmioRead hmmio,varptr(WAVEFORMATEX),wpeek(mmckFmt,_cksize)
if stat<=0{end}else{mes "GET WAVEFORMATEX:OK"}
mmioAscend hmmio,varptr(mmckFmt),0
if stat=0{mes "fmt ASCEND:OK"}else{end}
if wpeek(WAVEFORMATEX,0)=1{mes "THIS IS PCMDATA"}else{mes "THIS IS NOT PCMDATA"}//PCM
//DATA->
lpoke mmckData,_ckid,mmioStringToFOURCC("data",0)
mmioDescend hmmio,varptr(mmckData),0,MMIO_FINDCHUNK
if stat=0{mes "DATA DESCEND:OK"}else{end}
Alloc Data,wpeek(mmckData,_cksize)//WAVE
mmioRead hmmio,varptr(Data),wpeek(mmckData,_cksize)
if stat=0{end}else{mes "GET DATA:OK"}
mmioAscend hmmio,varptr(mmckData),0
//RIFF
mmioAscend hmmio,varptr(mmckData),0
mmioClose hmmio,0
DataSize=wpeek(mmckData,_cksize)//WAVE
return
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX