📄 midimusic.cpp
字号:
// MIDIMusic.cpp: implementation of the CMIDIMusic class.
//
//////////////////////////////////////////////////////////////////////
#include "MIDIMusic.h"
#include "AudioManager.h"
#include <dmusicf.h>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
namespace AudioEngine {
CMIDIMusic::CMIDIMusic(CAudioManager *mgr) : CDirectMusicSegment(mgr)
{
}
CMIDIMusic::~CMIDIMusic()
{
}
void CMIDIMusic::SetTempo(int beats_per_minute)
{
DMUS_TEMPO_PARAM Tempo;
Tempo.dblTempo = beats_per_minute;
ThrowIfFailed(m_Segment->SetParam(GUID_TempoParam, 0xFFFF, 0, 0, &Tempo),
"CMIDIMusic::SetTempo: SetParam failed!");
DMUS_TEMPO_PMSG* pTempo;
ThrowIfFailed(m_Manager->GetPerformance()->AllocPMsg(sizeof(DMUS_TEMPO_PMSG), (DMUS_PMSG**)&pTempo),
"CMIDIMusic::SetTempo: couldn't allocate PMsg!");
// Cue the tempo event.
ZeroMemory(pTempo, sizeof(DMUS_TEMPO_PMSG));
pTempo->dwSize = sizeof(DMUS_TEMPO_PMSG);
pTempo->dblTempo = beats_per_minute;
pTempo->dwFlags = DMUS_PMSGF_REFTIME;
pTempo->dwType = DMUS_PMSGT_TEMPO;
ThrowIfFailed(m_Manager->GetPerformance()->SendPMsg((DMUS_PMSG*)pTempo),
"CMIDIMusic::SetTempo: couldn't send PMsg!");
}
int CMIDIMusic::GetTempo()
{
DMUS_TEMPO_PARAM Tempo;
m_Segment->GetParam(GUID_TempoParam, 0xFFFF, 0, 0, NULL, &Tempo);
return(Tempo.dblTempo);
}
} // namespace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -