BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

poly_channels.cpp (1059B)


      1 
      2 #include "poly_channels.hpp"
      3 
      4 using namespace bogaudio;
      5 
      6 #define POLY_CHANNELS "poly_channels"
      7 
      8 json_t* PolyChannelsModule::saveToJson(json_t* root) {
      9 	json_object_set_new(root, POLY_CHANNELS, json_integer(_polyChannels));
     10 	return root;
     11 }
     12 
     13 void PolyChannelsModule::loadFromJson(json_t* root) {
     14 	json_t* pc = json_object_get(root, POLY_CHANNELS);
     15 	if (!pc) {
     16 		pc = json_object_get(root, "noise_channels"); // backward compatibility hack.
     17 	}
     18 	if (pc) {
     19 		_polyChannels = json_integer_value(pc);
     20 	}
     21 }
     22 
     23 
     24 Menu* PolyChannelsMenuItem::createChildMenu() {
     25 	Menu* menu = new Menu;
     26 	PolyChannelsModule* m = _module;
     27 	menu->addChild(new OptionMenuItem("Monophonic", [m]() { return m->_polyChannels == 1; }, [m]() { m->_polyChannels = 1; }));
     28 	for (int i = 2; i <= _maxChannels; i++) {
     29 		menu->addChild(new OptionMenuItem(std::to_string(i).c_str(), [m, i]() { return m->_polyChannels == i; }, [m, i]() { m->_polyChannels = i; }));
     30 	}
     31 	return menu;
     32 }
     33 
     34 void PolyChannelsMenuItem::step() {
     35 	MenuItem::step();
     36 	this->rightText = format("%d ▸", _module->_polyChannels);
     37 }