eurorack/deprecated/midi2cv/ui/part_menu.cc

69 lines
2.4 KiB
C++
Raw Permalink Normal View History

#include "part_menu.h"
#include "../menu/menu.h"
#include "../menu/menu_items.h"
#include <u8g2.h>
static const char* kVoiceDetailStrings[] = { "S", "M", "L", "XL" };
static const char* kMidiChannelStrings[] = { "omni", "1", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "11", "12", "13",
"14", "15", "16" };
static const char* kMidiInputStrings[] = { "omni", "midi", "usb" };
static const char* kMidiThruStrings[] = { "off", "on", "polychain" };
PartMenu::PartMenu(Part* _part)
: part(_part)
, item_voice_count("voice count", (uint8_t*)&_part->mutable_part_data()->part_voice_count, 1, 4, 1)
, item_voice_detail("voice detail", (uint8_t*)&_part->mutable_part_data()->part_voice_detail, kVoiceDetailStrings, 4)
, item_midi_filter_enabled("MIDI filter", &_part->mutable_part_data()->midi_filter_channel_enabled, "on", "off")
, item_midi_channel("MIDI channel", (uint8_t*)&_part->mutable_part_data()->midi_filter_channel, kMidiChannelStrings, 17, [_part] {
return _part->part_data().midi_filter_channel_enabled;
})
, item_midi_input("MIDI input", (uint8_t*)&_part->mutable_part_data()->midi_filter_input, kMidiInputStrings, 3, [_part] {
return _part->part_data().midi_filter_channel_enabled;
2020-02-26 18:29:42 +00:00
})
, item_midi_lowest_note("MIDI lowest", (uint8_t*)&_part->mutable_part_data()->midi_filter_lowest_note, [_part] {
return _part->part_data().midi_filter_channel_enabled;
2020-02-26 18:29:42 +00:00
})
, item_midi_highest_note("MIDI highest", (uint8_t*)&_part->mutable_part_data()->midi_filter_highest_note, [_part] {
return _part->part_data().midi_filter_channel_enabled;
2020-02-26 18:29:42 +00:00
})
, item_midi_thru_mode("MIDI thru", (uint8_t*)&_part->mutable_part_data()->midi_thru_mode, kMidiThruStrings, 3)
{
2020-02-22 23:15:01 +00:00
this->menu.add_item(&this->item_voice_count);
this->menu.add_item(&this->item_voice_detail);
this->menu.add_item(&this->item_midi_filter_enabled);
2020-02-22 23:15:01 +00:00
this->menu.add_item(&this->item_midi_channel);
this->menu.add_item(&this->item_midi_input);
2020-02-22 23:15:01 +00:00
this->menu.add_item(&this->item_midi_lowest_note);
this->menu.add_item(&this->item_midi_highest_note);
this->menu.add_item(&this->item_midi_thru_mode);
}
void PartMenu::up()
{
menu.up();
}
void PartMenu::down()
{
menu.down();
}
bool PartMenu::back()
{
if (menu.back())
return true;
return false;
}
bool PartMenu::enter()
{
menu.enter();
return false;
}
2020-02-23 10:15:27 +00:00
void PartMenu::render(U8G2* u8g2, int x, int y, int width, int height)
{
menu.render(u8g2, x, y, width, height);
}