//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1998 - 1998 // // File: dmcomposerobj.cpp // //-------------------------------------------------------------------------- // dmPerformanceObj.cpp #include "dmusici.h" #include "dmusicc.h" #include "dmusicf.h" #include "stdafx.h" #include "Direct.h" #include "dms.h" #include "dmChordMapObj.h" #include "dmStyleObj.h" #include "dmComposerObj.h" #include "dmSegmentObj.h" extern void *g_dxj_DirectMusicComposer; extern void *g_dxj_DirectMusicSegment; extern void *g_dxj_DirectMusicChordMap; extern HRESULT BSTRtoGUID(LPGUID,BSTR); CONSTRUCTOR(_dxj_DirectMusicComposer, {}); DESTRUCTOR(_dxj_DirectMusicComposer, {}); GETSET_OBJECT(_dxj_DirectMusicComposer); typedef IDirectMusicSegment* LPDIRECTMUSICSEGMENT; typedef IDirectMusicPerformance* LPDIRECTMUSICPERFORMANCE; typedef IDirectMusicChordMap* LPDIRECTMUSICCHORDMAP; typedef IDirectMusicStyle* LPDIRECTMUSICSTYLE; HRESULT C_dxj_DirectMusicComposerObject::autoTransition( /* [in] */ I_dxj_DirectMusicPerformance __RPC_FAR *Performance, /* [in] */ I_dxj_DirectMusicSegment __RPC_FAR *ToSeg, /* [in] */ long lCommand, /* [in] */ long lFlags, /* [in] */ I_dxj_DirectMusicChordMap __RPC_FAR *chordmap, /* [retval][out] */ I_dxj_DirectMusicSegment __RPC_FAR *__RPC_FAR *ppTransSeg) { HRESULT hr; DO_GETOBJECT_NOTNULL(LPDIRECTMUSICPERFORMANCE, pPerf,Performance); DO_GETOBJECT_NOTNULL(LPDIRECTMUSICSEGMENT, pToSeg,ToSeg); DO_GETOBJECT_NOTNULL(LPDIRECTMUSICCHORDMAP, pMap,chordmap); LPDIRECTMUSICSEGMENT pNewSeg=NULL; hr=m__dxj_DirectMusicComposer->AutoTransition(pPerf,pToSeg,(WORD)lCommand,(DWORD)lFlags,pMap,&pNewSeg,NULL,NULL); if FAILED(hr) return hr; if (pNewSeg) { INTERNAL_CREATE_NOADDREF(_dxj_DirectMusicSegment,pNewSeg,ppTransSeg); } else{ *ppTransSeg=NULL; } return hr; } HRESULT C_dxj_DirectMusicComposerObject::composeSegmentFromTemplate( /* [in] */ I_dxj_DirectMusicStyle __RPC_FAR *style, /* [in] */ I_dxj_DirectMusicSegment __RPC_FAR *TemplateSeg, /* [in] */ short activity, /* [in] */ I_dxj_DirectMusicChordMap __RPC_FAR *chordmap, /* [retval][out] */ I_dxj_DirectMusicSegment __RPC_FAR *__RPC_FAR *SectionSeg) { HRESULT hr; DO_GETOBJECT_NOTNULL(LPDIRECTMUSICSTYLE, pStyle,style); DO_GETOBJECT_NOTNULL(LPDIRECTMUSICSEGMENT, pTemp,TemplateSeg); DO_GETOBJECT_NOTNULL(LPDIRECTMUSICCHORDMAP, pMap,chordmap); LPDIRECTMUSICSEGMENT pNewSeg=NULL; hr=m__dxj_DirectMusicComposer->ComposeSegmentFromTemplate(pStyle,pTemp,activity,pMap,&pNewSeg); if FAILED(hr) return hr; INTERNAL_CREATE_NOADDREF(_dxj_DirectMusicSegment,pNewSeg,SectionSeg); return hr; } HRESULT C_dxj_DirectMusicComposerObject::composeSegmentFromShape( /* [in] */ I_dxj_DirectMusicStyle __RPC_FAR *style, /* [in] */ short numberOfMeasures, /* [in] */ short shape, /* [in] */ short activity, /* [in] */ VARIANT_BOOL bIntro, /* [in] */ VARIANT_BOOL bEnd, /* [in] */ I_dxj_DirectMusicChordMap __RPC_FAR *chordmap, /* [retval][out] */ I_dxj_DirectMusicSegment __RPC_FAR *__RPC_FAR *SectionSeg) { HRESULT hr; BOOL bi= (bIntro==VARIANT_TRUE); BOOL be= (bEnd==VARIANT_TRUE); DO_GETOBJECT_NOTNULL(LPDIRECTMUSICSTYLE, pStyle,style); DO_GETOBJECT_NOTNULL(LPDIRECTMUSICCHORDMAP, pMap,chordmap); LPDIRECTMUSICSEGMENT pNewSeg=NULL; hr=m__dxj_DirectMusicComposer->ComposeSegmentFromShape(pStyle,numberOfMeasures,shape,activity,bi,be,pMap,&pNewSeg); if FAILED(hr) return hr; INTERNAL_CREATE_NOADDREF(_dxj_DirectMusicSegment,pNewSeg,SectionSeg); return hr; } HRESULT C_dxj_DirectMusicComposerObject::composeTransition( /* [in] */ I_dxj_DirectMusicSegment __RPC_FAR *FromSeg, /* [in] */ I_dxj_DirectMusicSegment __RPC_FAR *ToSeg, /* [in] */ long mtTime, /* [in] */ long lCommand, /* [in] */ long lFlags, /* [in] */ I_dxj_DirectMusicChordMap __RPC_FAR *chordmap, /* [retval][out] */ I_dxj_DirectMusicSegment __RPC_FAR *__RPC_FAR *SectionSeg) { HRESULT hr; DO_GETOBJECT_NOTNULL(LPDIRECTMUSICSEGMENT, pFromSeg,FromSeg); DO_GETOBJECT_NOTNULL(LPDIRECTMUSICSEGMENT, pToSeg,ToSeg); DO_GETOBJECT_NOTNULL(LPDIRECTMUSICCHORDMAP, pMap,chordmap); LPDIRECTMUSICSEGMENT pNewSeg=NULL; hr=m__dxj_DirectMusicComposer->ComposeTransition(pFromSeg,pToSeg,(MUSIC_TIME)mtTime,(WORD)lCommand,(DWORD)lFlags,pMap,&pNewSeg); if FAILED(hr) return hr; INTERNAL_CREATE_NOADDREF(_dxj_DirectMusicSegment,pNewSeg,SectionSeg); return hr; } HRESULT C_dxj_DirectMusicComposerObject::composeTemplateFromShape( /* [in] */ short numMeasures, /* [in] */ short shape, /* [in] */ VARIANT_BOOL bIntro, /* [in] */ VARIANT_BOOL bEnd, /* [in] */ short endLength, /* [retval][out] */ I_dxj_DirectMusicSegment __RPC_FAR *__RPC_FAR *TempSeg) { HRESULT hr; BOOL bi=(bIntro==VARIANT_TRUE); BOOL be=(bEnd==VARIANT_TRUE); LPDIRECTMUSICSEGMENT pNewSeg=NULL; hr=m__dxj_DirectMusicComposer->ComposeTemplateFromShape(numMeasures,shape,bi,be,endLength,&pNewSeg); if FAILED(hr) return hr; INTERNAL_CREATE_NOADDREF(_dxj_DirectMusicSegment,pNewSeg,TempSeg); return hr; } HRESULT C_dxj_DirectMusicComposerObject::changeChordMap( /* [in] */ I_dxj_DirectMusicSegment __RPC_FAR *segment, /* [in] */ VARIANT_BOOL trackScale, /* [retval][out] */ I_dxj_DirectMusicChordMap __RPC_FAR *ChordMap) { HRESULT hr; DO_GETOBJECT_NOTNULL(LPDIRECTMUSICSEGMENT, pSeg,segment); DO_GETOBJECT_NOTNULL(LPDIRECTMUSICCHORDMAP, pMap,ChordMap); BOOL bs=(trackScale==VARIANT_TRUE); hr=m__dxj_DirectMusicComposer->ChangeChordMap(pSeg,bs,pMap); return hr; }