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 }