播音
WinLibrary WINMM.DLL
\ DWORD_fdwSound ( 參考 MMSystem.h )
0x0000 CONSTANT SND_SYNC
0x0001 CONSTANT SND_ASYNC
0x0002 CONSTANT SND_NODEFAULT
0x0004 CONSTANT SND_MEMORY
0x0008 CONSTANT SND_LOOP
0x0010 CONSTANT SND_NOSTOP
0x00002000 CONSTANT SND_NOWAIT
0x00010000 CONSTANT SND_ALIAS
0x00110000 CONSTANT SND_ALIAS_ID
0x00020000 CONSTANT SND_FILENAME
0x00040004 CONSTANT SND_RESOURCE
0x0040 CONSTANT SND_PURGE \ WINVER = 0x0400
0x0080 CONSTANT SND_APPLICATION \ WINVER = 0x0400
0 CONSTANT SND_ALIAS_START
(
SND_APPLICATION 用應用程式指定的關聯來播放聲音。
SND_ALIAS pszSound參數指定了註冊表或WIN.INI中的系統事件的別名。
SND_ALIAS_ID pszSound參數指定了預定義的聲音識別字。
SND_ASYNC 用非同步方式播放聲音,PlaySound函數在開始播放後立即返回。
SND_FILENAME pszSound參數指定了WAVE檔案名。
SND_LOOP 重復播放聲音,必須與SND_ASYNC標誌一塊使用。
SND_MEMORY 播放載入到記憶體中的聲音,此時pszSound是指向聲音資料的指標。
SND_NODEFAULT 不播放缺省聲音,若無此標誌,則PlaySound在沒找到聲音時會播放缺省聲音。
SND_NOSTOP PlaySound不打斷原來的聲音播出並立即返回FALSE。
SND_NOWAIT 如果驅動程式正忙則函數就不播放聲音並立即返回。
SND_PURGE 停止所有與調用任務有關的聲音。若參數pszSound?NULL,就停止所有的聲音,否則,停止pszSound指定的聲音。
SND_RESOURCE pszSound參數是WAVE資源的識別字,這時要用到hmod參數。
SND_SYNC 同步播放聲音,在播放完後PlaySound函數才返回。
)
: PlaySound ( DWORD_fdwSound HMODULE_hmod LPCSTR_pszSound --- 1|0 )
call PlaySound
;
: sndPlaySound ( DWORD_fdwSound LPCSTR_pszSound --- 1|0 )
call sndPlaySound
;
: Wav_Play ( .wavfile count -- )
SND_SYNC
NULL
( s" ㄅ.wav" ) ( rel>abs ) drop \ 欲撥放的聲音檔名,v4.2 要加上 rel>abs v61110 則不需
PlaySound drop
;
: ㄅ ( --- )
SND_SYNC
NULL
s" ㄅ.wav" ( rel>abs ) drop \ 欲撥放的聲音檔名,v4.2 要加上 rel>abs v61110 則不需
PlaySound drop
;
\ $Id: EX_SAPI.F,v 1.2 2005/09/18 11:10:30 dbu_de Exp $ \ Example of Speech API \ Thomas Dixon needs FCOM.F \ SAPI 5.0 typelibrary 5 0 typelib {C866CA3A-32F7-11D2-9602-00C04F8EE628} ISpVoice ComIFace voice \ Create voice instance voice ISpVoice 1 0 SpVoice CoCreateInstance drop 0 0 u" Hello World!" drop voice speak . \ Say it slower -9 voice setrate . 0 0 u" I'm talking slower now." drop voice speak . \ Say it faster 5 voice setrate . 0 0 u" I'm talking fast now." drop voice speak . \ Say it higher 0 voice setrate . \ Example of how to build it as an exe! : main ( -- ) voice ISpVoice 1 0 SpVoice CoCreateInstance if true s" Unable to Create SPVoice!" ?messagebox bye then 0 0 u" Hello World!" drop voice speak if true s" Unable to Speak!" ?messagebox bye then 0 bye ; \ ' main turnkey speak.exe