|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1998 - 1999
//
// File: dmperformanceobj.h
//
//--------------------------------------------------------------------------
// d3drmLightObj.h : Declaration of the C_dxj_DirectMusicPerformanceObject
#include "dmusici.h"
#include "dmusicc.h"
#include "dmusicf.h"
#include "resource.h" // main symbols
#define typedef__dxj_DirectMusicPerformance IDirectMusicPerformance8*
/////////////////////////////////////////////////////////////////////////////
// Direct
//REVIEW -- using pointers to ID's is necessary because some compilers don't like
//references as template arguments.
class C_dxj_DirectMusicPerformanceObject : public I_dxj_DirectMusicPerformance, //public CComCoClass<C_dxj_DirectMusicPerformanceObject, &CLSID__dxj_DirectMusicPerformance>,
public CComObjectRoot { public: C_dxj_DirectMusicPerformanceObject(); virtual ~C_dxj_DirectMusicPerformanceObject();
BEGIN_COM_MAP(C_dxj_DirectMusicPerformanceObject) COM_INTERFACE_ENTRY(I_dxj_DirectMusicPerformance) END_COM_MAP()
//DECLARE_REGISTRY(CLSID__dxj_DirectMusicPerformance, "DIRECT.DirectMusicPerformance.1", "DIRECT.Direct3dRMLight.3", IDS_D3DRMLIGHT_DESC, THREADFLAGS_BOTH)
DECLARE_AGGREGATABLE(C_dxj_DirectMusicPerformanceObject)
public: STDMETHOD(InternalSetObject)(IUnknown *lpdd); STDMETHOD(InternalGetObject)(IUnknown **lpdd);
#if 0
HRESULT STDMETHODCALLTYPE init( /* [in] */ I_dxj_DirectSound __RPC_FAR *DirectSound, /* [in] */ long hWnd, I_dxj_DirectMusic **ret); #endif
HRESULT STDMETHODCALLTYPE closeDown( void); HRESULT STDMETHODCALLTYPE playSegment( /* [in] */ I_dxj_DirectMusicSegment __RPC_FAR *segment, /* [in] */ long lFlags, /* [in] */ long startTime, /* [retval][out] */ I_dxj_DirectMusicSegmentState __RPC_FAR *__RPC_FAR *segmentState); HRESULT STDMETHODCALLTYPE stop( /* [in] */ I_dxj_DirectMusicSegment __RPC_FAR *segment, /* [in] */ I_dxj_DirectMusicSegmentState __RPC_FAR *segmentState, /* [in] */ long mtTime, /* [in] */ long lFlags); HRESULT STDMETHODCALLTYPE getSegmentState( /* [in] */ long mtTime, /* [retval][out] */ I_dxj_DirectMusicSegmentState __RPC_FAR *__RPC_FAR *ret); HRESULT STDMETHODCALLTYPE invalidate( /* [in] */ long mtTime, /* [in] */ long flags); HRESULT STDMETHODCALLTYPE isPlaying( /* [in] */ I_dxj_DirectMusicSegment __RPC_FAR *segment, /* [in] */ I_dxj_DirectMusicSegmentState __RPC_FAR *segmentState, /* [retval][out] */ VARIANT_BOOL __RPC_FAR *b); HRESULT STDMETHODCALLTYPE addNotificationType( /* [in] */ CONST_DMUS_NOTIFICATION_TYPE type); HRESULT STDMETHODCALLTYPE removeNotificationType( /* [in] */ CONST_DMUS_NOTIFICATION_TYPE type); #ifdef _WIN64
HRESULT STDMETHODCALLTYPE setNotificationHandle( /* [in] */ HWND hnd); #else
HRESULT STDMETHODCALLTYPE setNotificationHandle( /* [in] */ long hnd); #endif
HRESULT STDMETHODCALLTYPE getNotificationPMSG( /* [out][in] */ DMUS_NOTIFICATION_PMSG_CDESC __RPC_FAR *message, VARIANT_BOOL *b); HRESULT STDMETHODCALLTYPE musicToClockTime( /* [in] */ long mtTime, /* [retval][out] */ long __RPC_FAR *rtTime); HRESULT STDMETHODCALLTYPE clockToMusicTime( /* [in] */ long rtTime, /* [retval][out] */ long __RPC_FAR *mtTime); HRESULT STDMETHODCALLTYPE getMusicTime( /* [retval][out] */ long __RPC_FAR *ret); HRESULT STDMETHODCALLTYPE getClockTime( /* [retval][out] */ long __RPC_FAR *ret); HRESULT STDMETHODCALLTYPE getPrepareTime( /* [retval][out] */ long __RPC_FAR *lMilliSeconds); HRESULT STDMETHODCALLTYPE getBumperLength( /* [retval][out] */ long __RPC_FAR *lMilliSeconds); HRESULT STDMETHODCALLTYPE getLatencyTime( /* [retval][out] */ long __RPC_FAR *rtTime0); HRESULT STDMETHODCALLTYPE getQueueTime( /* [retval][out] */ long __RPC_FAR *rtTime); HRESULT STDMETHODCALLTYPE getResolvedTime( /* [in] */ long rtTime, /* [in] */ long flags, /* [retval][out] */ long __RPC_FAR *ret); HRESULT STDMETHODCALLTYPE setPrepareTime( /* [in] */ long lMilliSeconds); HRESULT STDMETHODCALLTYPE setBumperLength( /* [in] */ long lMilliSeconds); HRESULT STDMETHODCALLTYPE adjustTime( /* [in] */ long rtAmount); HRESULT STDMETHODCALLTYPE setMasterAutoDownload( /* [in] */ VARIANT_BOOL b); HRESULT STDMETHODCALLTYPE getMasterAutoDownload( /* [retval][out] */ VARIANT_BOOL __RPC_FAR *b); HRESULT STDMETHODCALLTYPE setMasterTempo( /* [in] */ float tempo); HRESULT STDMETHODCALLTYPE getMasterTempo( /* [retval][out] */ float __RPC_FAR *tempo); HRESULT STDMETHODCALLTYPE setMasterVolume( /* [in] */ long vol); HRESULT STDMETHODCALLTYPE getMasterVolume( /* [retval][out] */ long __RPC_FAR *v); HRESULT STDMETHODCALLTYPE setMasterGrooveLevel( /* [in] */ short level); HRESULT STDMETHODCALLTYPE getMasterGrooveLevel( /* [retval][out] */ __RPC_FAR short *level); HRESULT STDMETHODCALLTYPE Reset(long flags); HRESULT STDMETHODCALLTYPE getStyle( /* [in] */ long mtTime, /* [out][in] */ long __RPC_FAR *mtUntil, /* [retval][out] */ I_dxj_DirectMusicStyle __RPC_FAR *__RPC_FAR *ret); HRESULT STDMETHODCALLTYPE getChordMap( /* [in] */ long mtTime, /* [out][in] */ long __RPC_FAR *mtUntil, /* [retval][out] */ I_dxj_DirectMusicChordMap __RPC_FAR *__RPC_FAR *ret); HRESULT STDMETHODCALLTYPE getCommand( /* [in] */ long mtTime, /* [out][in] */ long __RPC_FAR *mtUntil, /* [retval][out] */ Byte __RPC_FAR *command); HRESULT STDMETHODCALLTYPE getGrooveLevel( /* [in] */ long mtTime, /* [out][in] */ long __RPC_FAR *mtUntil, /* [retval][out] */ Byte __RPC_FAR *level); HRESULT STDMETHODCALLTYPE getTempo( /* [in] */ long mtTime, /* [out][in] */ long __RPC_FAR *mtUntil, /* [retval][out] */ double __RPC_FAR *tempo); HRESULT STDMETHODCALLTYPE getTimeSig( /* [in] */ long mtTime, /* [out][in] */ long __RPC_FAR *mtUntil, /* [out][in] */ DMUS_TIMESIGNATURE_CDESC __RPC_FAR *timeSig); HRESULT STDMETHODCALLTYPE sendNotePMSG( /* [in] */ long mtTime, /* [in] */ long flags, /* [in] */ long channel, /* [in] */ DMUS_NOTE_PMSG_CDESC __RPC_FAR *msg); HRESULT STDMETHODCALLTYPE sendCurvePMSG( /* [in] */ long mtTime, /* [in] */ long flags, /* [in] */ long channel, /* [in] */ DMUS_CURVE_PMSG_CDESC __RPC_FAR *msg); HRESULT STDMETHODCALLTYPE sendMIDIPMSG( /* [in] */ long mtTime, /* [in] */ long flags, /* [in] */ long channel, /* [in] */ Byte status, /* [in] */ Byte byte1, /* [in] */ Byte byte2); HRESULT STDMETHODCALLTYPE sendPatchPMSG( /* [in] */ long mtTime, /* [in] */ long flags, /* [in] */ long channel, /* [in] */ Byte instrument, /* [in] */ Byte byte1, /* [in] */ Byte byte2); HRESULT STDMETHODCALLTYPE sendTempoPMSG( /* [in] */ long mtTime, /* [in] */ long flags, // /* [in] */ long channel,
/* [in] */ double tempo); HRESULT STDMETHODCALLTYPE sendTransposePMSG( /* [in] */ long mtTime, /* [in] */ long flags, /* [in] */ long channel, /* [in] */ short transpose); HRESULT STDMETHODCALLTYPE sendTimeSigPMSG( /* [in] */ long mtTime, /* [in] */ long flags, /* [in] */ DMUS_TIMESIGNATURE_CDESC __RPC_FAR *timesig); #if 0
HRESULT STDMETHODCALLTYPE getPortName( /* [in] */ long i, /* [retval][out] */ BSTR __RPC_FAR *name); HRESULT STDMETHODCALLTYPE getPortCount( /* [retval][out] */ long __RPC_FAR *c); HRESULT STDMETHODCALLTYPE getPortCaps( long i, /* [out][in] */ DMUS_PORTCAPS_CDESC __RPC_FAR *caps); HRESULT STDMETHODCALLTYPE setPort( /* [in] */ long portid, /* [in] */ long numGroups); #endif
#ifdef _WIN64
HRESULT STDMETHODCALLTYPE InitAudio(HWND hWnd, long lFlags, DMUS_AUDIOPARAMS_CDESC *AudioParams, I_dxj_DirectSound **DirectSound, long lDefaultPathType, long lPChannelCount); #else
HRESULT STDMETHODCALLTYPE InitAudio(long hWnd, long lFlags, DMUS_AUDIOPARAMS_CDESC *AudioParams, I_dxj_DirectSound **DirectSound, long lDefaultPathType, long lPChannelCount); #endif
HRESULT STDMETHODCALLTYPE PlaySegmentEx(IUnknown *Source, long lFlags, long StartTime, IUnknown *From, IUnknown *AudioPath, #if 0
BSTR SegmentName, IUnknown *Transition, #endif
I_dxj_DirectMusicSegmentState **ppSegmentState);
HRESULT STDMETHODCALLTYPE StopEx(IUnknown *ObjectToStop, long lStopTime, long lFlags);
HRESULT STDMETHODCALLTYPE CreateAudioPath(IUnknown *SourceConfig, VARIANT_BOOL fActive, I_dxj_DirectMusicAudioPath **ppNewPath);
HRESULT STDMETHODCALLTYPE CreateStandardAudioPath(long lType, long lPChannelCount, VARIANT_BOOL fActive, I_dxj_DirectMusicAudioPath **ppNewPath);
HRESULT STDMETHODCALLTYPE SetDefaultAudioPath(I_dxj_DirectMusicAudioPath *AudioPath); HRESULT STDMETHODCALLTYPE GetDefaultAudioPath(I_dxj_DirectMusicAudioPath **ppAudioPath);
#if 0
HRESULT STDMETHODCALLTYPE AddPort(I_dxj_DirectMusicPort *port); HRESULT STDMETHODCALLTYPE RemovePort(I_dxj_DirectMusicPort *port); HRESULT STDMETHODCALLTYPE AssignPChannel(long lPChannel, I_dxj_DirectMusicPort *Port, long lGroup, long lMChannel); HRESULT STDMETHODCALLTYPE AssignPChannelBlock(long lPChannel, I_dxj_DirectMusicPort *Port, long lGroup); HRESULT STDMETHODCALLTYPE PChannelInfo(long lPChannel, I_dxj_DirectMusicPort *Port, long *lGroup, long *lMChannel); #endif
////////////////////////////////////////////////////////////////////////////////////
//
private: HRESULT InternalInit(); HRESULT InternalCleanup();
IDirectMusic8 *m_pDM; IDirectMusicPort8 *m_pPort; DECL_VARIABLE(_dxj_DirectMusicPerformance); long m_portid; long m_number_of_groups;
public: DX3J_GLOBAL_LINKS( _dxj_DirectMusicPerformance) };
|