⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mixerstatus.cpp

📁 miXo is a buzz machine (www.buzzmachines.com) - a plugin for the freely available jeskola buzz track
💻 CPP
字号:
// MixerStatus.cpp: implementation of the CMixerStatus class.
//
//////////////////////////////////////////////////////////////////////
#include <sstream>
#include "data_version.h"
#include "MixerStatus.h"
#include "MachineInterface.h"
#include "dsplib.h"


#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//class A
//{
//public:
//	A();
//	void f() {};
//};
//typedef void (A::*FPTR)();
//A::A()
//{
//	FPTR p=f;
//	this->*p();
//}


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMixerStatus::CMixerStatus()
 : m_cSet(),m_cPreset(),m_cKeyTable(),
 m_iCurTrack(0),m_iChanges(0),m_bUpdate(false),
 m_pCB(NULL),m_bBufferClear(false),m_uBufLen(0),
 m_eMode(CMixerTrack::em_Normal),m_cWrapList()
{
	ClearBuf();
	//SetMode(m_eMode);
}

CMixerStatus::~CMixerStatus()
{
}
bool CMixerStatus::HandleInput(int idx,int amp,int pan)
{
	m_iCurTrack=idx;
#ifdef _DEBUG
	stringstream strm;
	strm << "HandleInput: idx: " << idx << ends;
	OutputDebugString(strm.str().c_str());
#endif
	return true;
}
bool CMixerStatus::ProcessInput(float *p,const int n,float fAmp)
{
	if(p) {
		//fAmp/=float(m_cSet.GetSize());
		if(m_cSet.ProcessInput(m_iCurTrack,p,n,m_fBuf,fAmp))
			if(n > m_uBufLen){
				m_uBufLen=n;
				assert(m_uBufLen < efBufferSize);
			}
			//			assert(n==m_uBufLen);
			m_iChanges++;
	}
	m_iCurTrack++;
	if(m_iCurTrack == m_cSet.GetSize()) {
		m_iCurTrack=0;
		if(m_iChanges) {
			SetUpdateFlag();
			m_iChanges=0;
		}
	}
	return true;
}
void CMixerStatus::CopyBuf(float *pout,int n) 
{ 
/*
	assert(n*2 < efBufferSize);
	assert(m_uBufLen*2 < efBufferSize);
	if(n < m_uBufLen) {
		DSP_Copy(pout,m_fBuf,m_uBufLen*2);
		OutputDebugString("n>m_uBuflen");
	}
	else 
*/
	DSP_Copy(pout,m_fBuf,n*2);
	
}

void CMixerStatus::Save(CMachineDataOutput * const po)
{
	po->Write(int(G_Const_Data_Version));
	m_cSet.Save(po);
	m_cPreset.Save(po);
	m_cKeyTable.Save(po);
}
void CMixerStatus::Init(CMachineDataInput * const pi)
{
	int iDataVersion;
	pi->Read(iDataVersion);
	m_cSet.Init(pi,iDataVersion);
	m_cPreset.Init(pi,iDataVersion);
	m_cKeyTable.Init(pi,iDataVersion);
}
void CMixerStatus::AddTrack(const char *sz,bool b)
{
	assert(sz);
	int i=m_cSet.FindUnusedKeyDef(&m_cKeyTable);
	if(i == -1) {
		string strKeyDef;
		stringstream stmName;
		stmName << '#' << (m_cSet.GetSize()+1) << ends;
		strKeyDef=stmName.str();
		CMixerKeyDef c(strKeyDef);
		i=m_cKeyTable.AddKeyDef(c);
	}
	m_cSet.AddTrack(sz,i,b);
	m_cPreset.AddTrack(sz,i,b);
}
void CMixerStatus::DeleteTrack(const char *sz)
{
	assert(sz);
	m_cSet.DeleteTrack(sz);
	m_cPreset.DeleteTrack(sz);
}
void CMixerStatus::RenameTrack(const char *szOld,const char *szNew)
{
	assert(szOld);
	assert(szNew);
	m_cSet.RenameTrack(szOld,szNew);
	m_cPreset.RenameTrack(szOld,szNew);
}
void CMixerStatus::SetTrackInputChannels(const char *sz,bool bStereo)
{
	assert(sz);
	m_cSet.SetTrackInputChannels(sz,bStereo);
	m_cPreset.SetTrackInputChannels(sz,bStereo);
}
void CMixerStatus::LoadMixerPreset(string s)
{
	CMixerSet *pSet=m_cPreset.Get(s);
	if(pSet) {
		m_cSet=*pSet;
		m_cSet.SetMode(m_eMode);
	}
}
void CMixerStatus::SetMode(CMixerTrack::TEMode m)
{
	m_cSet.SetMode(m);
	m_eMode=m;
}

void CMixerStatus::SetSampleDataAccuracy(int i)
{
	m_cSet.SetSampleDataAccuracy(i);
	m_cPreset.SetSampleDataAccuracy(i);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -