gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

controllermap.cpp (1162B)


      1 #include "controllermap.h"
      2 
      3 namespace pluginLib
      4 {
      5 	void ControllerMap::add(synthLib::MidiStatusByte _midiStatusByte, uint8_t _cc, uint32_t _paramIndex)
      6 	{
      7 		m_ccToParamIndex[_midiStatusByte][_cc].push_back(_paramIndex);
      8 		m_paramIndexToCC[_midiStatusByte][_paramIndex].push_back(_cc);
      9 	}
     10 
     11 	const std::vector<uint32_t>& ControllerMap::getControlledParameters(const synthLib::SMidiEvent& _ev) const
     12 	{
     13 		static std::vector<uint32_t> empty;
     14 		const uint8_t type = _ev.a & 0xf0;
     15 
     16 		const auto itType = m_ccToParamIndex.find(type);
     17 		if(itType == m_ccToParamIndex.end())
     18 			return empty;
     19 
     20 		const auto itValue = itType->second.find(_ev.b);
     21 		if(itValue == itType->second.end())
     22 			return empty;
     23 
     24 		return itValue->second;
     25 	}
     26 
     27 	std::vector<uint8_t> ControllerMap::getControlChanges(const synthLib::MidiStatusByte _midiStatusByte, const uint32_t _paramIndex) const
     28 	{
     29 		static std::vector<uint8_t> empty;
     30 		const auto itType = m_paramIndexToCC.find(_midiStatusByte);
     31 		if(itType == m_paramIndexToCC.end())
     32 			return empty;
     33 		const auto itCCList = itType->second.find(_paramIndex);
     34 		if(itCCList == itType->second.end())
     35 			return empty;
     36 		return itCCList->second;
     37 	}
     38 }