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

n2xParts.cpp (1185B)


      1 #include "n2xParts.h"
      2 
      3 #include "n2xController.h"
      4 #include "n2xEditor.h"
      5 
      6 namespace n2xJucePlugin
      7 {
      8 	Parts::Parts(Editor& _editor): m_editor(_editor)
      9 	{
     10 		m_parts[0] = _editor.findComponentT<Part>("PerfSlotActiveA");
     11 		m_parts[1] = _editor.findComponentT<Part>("PerfSlotActiveB");
     12 		m_parts[2] = _editor.findComponentT<Part>("PerfSlotActiveC");
     13 		m_parts[3] = _editor.findComponentT<Part>("PerfSlotActiveD");
     14 
     15 		m_partLeds[0].reset(new PartLed(_editor, 0));
     16 		m_partLeds[1].reset(new PartLed(_editor, 1));
     17 		m_partLeds[2].reset(new PartLed(_editor, 2));
     18 		m_partLeds[3].reset(new PartLed(_editor, 3));
     19 
     20 		for(uint8_t p=0; p<static_cast<uint8_t>(m_parts.size()); ++p)
     21 		{
     22 			auto* part = m_parts[p];
     23 			part->initalize(p);
     24 		}
     25 
     26 		onCurrentPartChanged.set(_editor.getN2xController().onCurrentPartChanged, [this](const uint8_t& _part)
     27 		{
     28 			setCurrentPart(_part);
     29 		});
     30 
     31 		setCurrentPart(0);
     32 	}
     33 
     34 	void Parts::setCurrentPart(const uint8_t _part) const
     35 	{
     36 		juce::MessageManager::callAsync([this, _part]
     37 		{
     38 			for(uint8_t p=0; p<static_cast<uint8_t>(m_parts.size()); ++p)
     39 			{
     40 				auto* part = m_parts[p];
     41 				part->setToggleState(_part == p, juce::dontSendNotification);
     42 			}
     43 		});
     44 	}
     45 }