Example #1
0
//--------------------------------
// DirectSound用バッファの確保
//--------------------------------
LPDIRECTSOUNDBUFFER Sound::creatBuffer()
{
	LPDIRECTSOUNDBUFFER pDSBuffer = NULL;
	if(m_pDirectSound)
	{
		DSBUFFERDESC Desc;
		ZeroMemory(&Desc,sizeof(DSBUFFERDESC));
		Desc.dwSize = sizeof(DSBUFFERDESC);
		Desc.dwFlags = DSBCAPS_STATIC|DSBCAPS_LOCSOFTWARE|DSBCAPS_GLOBALFOCUS;
		Desc.dwBufferBytes = getWaveData()->getDataSize();
		Desc.lpwfxFormat = getWaveData()->getFormat();
		m_pDirectSound->CreateSoundBuffer(&Desc,&pDSBuffer,NULL);
		if(pDSBuffer)
		{
			LPVOID pData1;
			DWORD dwBytes1;
			pDSBuffer->Lock(0,getWaveData()->getDataSize(),&pData1,&dwBytes1,NULL,NULL,0);
			CopyMemory(pData1,getWaveData()->getWaveData(),dwBytes1);
			pDSBuffer->Unlock(pData1,dwBytes1,NULL,0);
		}
	}
	return pDSBuffer;
}
Example #2
0
//--------------------------------
// 同時発音用バッファの確保
//--------------------------------
void Sound::createList(int nCount,int bFlag)
{
	int i;
	if(!getWaveData()->isData())
		return;
	release();
	m_ppDSBuffer = NEW LPDIRECTSOUNDBUFFER[nCount];
	m_nCount = nCount;
//	if(bFlag == 0)
	{
		m_ppDSBuffer[0] = creatBuffer();
		for(i=1;i<m_nCount;i++)
			m_pDirectSound->DuplicateSoundBuffer(m_ppDSBuffer[0],&m_ppDSBuffer[i]);
	}

}
void DisplayWave::draw()
{
	sf::Vector2i windowSize = Globals::Window->getSize();
	float * wave = getWaveData(windowSize.x);
	
	OpenGLUtils::Enable2d();
	float y, lastY;
	for (int i = 0; i < windowSize.x - 2; i += 2)
	{
		y = (windowSize.y / 2) + (windowSize.y / 3) * wave[i];
		if (i != 0)
			OpenGLUtils::DrawLine(i - 2, lastY, i, y, sf::Color(140, 25, 25));
		lastY = y;
	}
	
	delete wave;
}
Example #4
0
//--------------------------------
// WAVファイルを読む
//--------------------------------
BOOL Sound::open(LPCSTR pName,LPCSTR pType)
{
	getWaveData()->open(pName,pType);
	createList(3);
	return TRUE;
}