dmusics.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:9k
- /************************************************************************
- * *
- * dmusics.h -- Definitions for created a DirectMusic software synth *
- * *
- * Copyright (c) 1998-1999 Microsoft Corporation
- * *
- ************************************************************************/
- #ifndef _DMUSICS_
- #define _DMUSICS_
- #include "dmusicc.h"
- /* Software synths are enumerated from under this registry key.
- */
- #define REGSTR_PATH_SOFTWARESYNTHS "Software\Microsoft\DirectMusic\SoftwareSynths"
- interface IDirectMusicSynth;
- interface IDirectMusicSynthSink;
- #ifndef __cplusplus
- typedef interface IDirectMusicSynth IDirectMusicSynth;
- typedef interface IDirectMusicSynthSink IDirectMusicSynthSink;
- #endif
- #ifndef _DMUS_VOICE_STATE_DEFINED
- #define _DMUS_VOICE_STATE_DEFINED
- typedef struct _DMUS_VOICE_STATE
- {
- BOOL bExists;
- SAMPLE_POSITION spPosition;
- } DMUS_VOICE_STATE;
- #endif /* _DMUS_VOICE_STATE_DEFINED */
- /* IDirectMusicSynth::Refresh
- *
- * This is the last buffer of the stream. It may be a partial block.
- */
- #define REFRESH_F_LASTBUFFER 0x00000001
- #undef INTERFACE
- #define INTERFACE IDirectMusicSynth
- DECLARE_INTERFACE_(IDirectMusicSynth, IUnknown)
- {
- /* IUnknown */
- STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
- /* IDirectMusicSynth */
- STDMETHOD(Open) (THIS_ LPDMUS_PORTPARAMS pPortParams) PURE;
- STDMETHOD(Close) (THIS) PURE;
- STDMETHOD(SetNumChannelGroups) (THIS_ DWORD dwGroups) PURE;
- STDMETHOD(Download) (THIS_ LPHANDLE phDownload,
- LPVOID pvData,
- LPBOOL pbFree ) PURE;
- STDMETHOD(Unload) (THIS_ HANDLE hDownload,
- HRESULT ( CALLBACK *lpFreeHandle)(HANDLE,HANDLE),
- HANDLE hUserData ) PURE;
- STDMETHOD(PlayBuffer) (THIS_ REFERENCE_TIME rt,
- LPBYTE pbBuffer,
- DWORD cbBuffer) PURE;
- STDMETHOD(GetRunningStats) (THIS_ LPDMUS_SYNTHSTATS pStats) PURE;
- STDMETHOD(GetPortCaps) (THIS_ LPDMUS_PORTCAPS pCaps) PURE;
- STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE;
- STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE;
- STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE;
- STDMETHOD(SetSynthSink) (THIS_ IDirectMusicSynthSink *pSynthSink) PURE;
- STDMETHOD(Render) (THIS_ short *pBuffer,
- DWORD dwLength,
- LONGLONG llPosition) PURE;
- STDMETHOD(SetChannelPriority) (THIS_ DWORD dwChannelGroup,
- DWORD dwChannel,
- DWORD dwPriority) PURE;
- STDMETHOD(GetChannelPriority) (THIS_ DWORD dwChannelGroup,
- DWORD dwChannel,
- LPDWORD pdwPriority) PURE;
- STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pWaveFormatEx,
- LPDWORD pdwWaveFormatExSize) PURE;
- STDMETHOD(GetAppend) (THIS_ DWORD* pdwAppend) PURE;
- };
- #undef INTERFACE
- #define INTERFACE IDirectMusicSynth8
- DECLARE_INTERFACE_(IDirectMusicSynth8, IDirectMusicSynth)
- {
- /* IUnknown */
- STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
- /* IDirectMusicSynth */
- STDMETHOD(Open) (THIS_ LPDMUS_PORTPARAMS pPortParams) PURE;
- STDMETHOD(Close) (THIS) PURE;
- STDMETHOD(SetNumChannelGroups) (THIS_ DWORD dwGroups) PURE;
- STDMETHOD(Download) (THIS_ LPHANDLE phDownload,
- LPVOID pvData,
- LPBOOL pbFree ) PURE;
- STDMETHOD(Unload) (THIS_ HANDLE hDownload,
- HRESULT ( CALLBACK *lpFreeHandle)(HANDLE,HANDLE),
- HANDLE hUserData ) PURE;
- STDMETHOD(PlayBuffer) (THIS_ REFERENCE_TIME rt,
- LPBYTE pbBuffer,
- DWORD cbBuffer) PURE;
- STDMETHOD(GetRunningStats) (THIS_ LPDMUS_SYNTHSTATS pStats) PURE;
- STDMETHOD(GetPortCaps) (THIS_ LPDMUS_PORTCAPS pCaps) PURE;
- STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE;
- STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE;
- STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE;
- STDMETHOD(SetSynthSink) (THIS_ IDirectMusicSynthSink *pSynthSink) PURE;
- STDMETHOD(Render) (THIS_ short *pBuffer,
- DWORD dwLength,
- LONGLONG llPosition) PURE;
- STDMETHOD(SetChannelPriority) (THIS_ DWORD dwChannelGroup,
- DWORD dwChannel,
- DWORD dwPriority) PURE;
- STDMETHOD(GetChannelPriority) (THIS_ DWORD dwChannelGroup,
- DWORD dwChannel,
- LPDWORD pdwPriority) PURE;
- STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pWaveFormatEx,
- LPDWORD pdwWaveFormatExSize) PURE;
- STDMETHOD(GetAppend) (THIS_ DWORD* pdwAppend) PURE;
- /* IDirectMusicSynth8 */
- STDMETHOD(PlayVoice) (THIS_ REFERENCE_TIME rt,
- DWORD dwVoiceId,
- DWORD dwChannelGroup,
- DWORD dwChannel,
- DWORD dwDLId,
- long prPitch, /* PREL not defined here */
- long vrVolume, /* VREL not defined here */
- SAMPLE_TIME stVoiceStart,
- SAMPLE_TIME stLoopStart,
- SAMPLE_TIME stLoopEnd) PURE;
- STDMETHOD(StopVoice) (THIS_ REFERENCE_TIME rt,
- DWORD dwVoiceId ) PURE;
- STDMETHOD(GetVoiceState) (THIS_ DWORD dwVoice[],
- DWORD cbVoice,
- DMUS_VOICE_STATE dwVoiceState[] ) PURE;
- STDMETHOD(Refresh) (THIS_ DWORD dwDownloadID,
- DWORD dwFlags) PURE;
- STDMETHOD(AssignChannelToBuses) (THIS_ DWORD dwChannelGroup,
- DWORD dwChannel,
- LPDWORD pdwBuses,
- DWORD cBuses) PURE;
- };
- #undef INTERFACE
- #define INTERFACE IDirectMusicSynthSink
- DECLARE_INTERFACE_(IDirectMusicSynthSink, IUnknown)
- {
- /* IUnknown */
- STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
- /* IDirectMusicSynthSink */
- STDMETHOD(Init) (THIS_ IDirectMusicSynth *pSynth) PURE;
- STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE;
- STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE;
- STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE;
- STDMETHOD(SampleToRefTime) (THIS_ LONGLONG llSampleTime,
- REFERENCE_TIME *prfTime) PURE;
- STDMETHOD(RefTimeToSample) (THIS_ REFERENCE_TIME rfTime,
- LONGLONG *pllSampleTime) PURE;
- STDMETHOD(SetDirectSound) (THIS_ LPDIRECTSOUND pDirectSound,
- LPDIRECTSOUNDBUFFER pDirectSoundBuffer) PURE;
- STDMETHOD(GetDesiredBufferSize) (THIS_ LPDWORD pdwBufferSizeInSamples) PURE;
- };
- DEFINE_GUID(IID_IDirectMusicSynth, 0x9823661, 0x5c85, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6);
- DEFINE_GUID(IID_IDirectMusicSynth8,0x53cab625, 0x2711, 0x4c9f, 0x9d, 0xe7, 0x1b, 0x7f, 0x92, 0x5f, 0x6f, 0xc8);
- DEFINE_GUID(IID_IDirectMusicSynthSink,0x9823663, 0x5c85, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6);
- /* Property Set GUID_DMUS_PROP_SetSynthSink
- *
- * Item 0: An IUnknown on which the port can QueryInterface for a user-mode synth sink.
- */
- DEFINE_GUID(GUID_DMUS_PROP_SetSynthSink,0x0a3a5ba5, 0x37b6, 0x11d2, 0xb9, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
- /* Property Set GUID_DMUS_PROP_SinkUsesDSound
- *
- * Item 0: A DWORD boolean indicating whether or not the sink requires an IDirectSound interface. The
- * default is FALSE if this property item is not implemented by the sink.
- */
- DEFINE_GUID(GUID_DMUS_PROP_SinkUsesDSound, 0xbe208857, 0x8952, 0x11d2, 0xba, 0x1c, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
- #endif