mirror of
https://github.com/jhbruhn/eurorack.git
synced 2025-03-15 02:55:49 +00:00
68 lines
2.4 KiB
C++
68 lines
2.4 KiB
C++
#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;
|
|
})
|
|
, 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;
|
|
})
|
|
, 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;
|
|
})
|
|
, item_midi_thru_mode("MIDI thru", (uint8_t*)&_part->mutable_part_data()->midi_thru_mode, kMidiThruStrings, 3)
|
|
{
|
|
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);
|
|
this->menu.add_item(&this->item_midi_channel);
|
|
this->menu.add_item(&this->item_midi_input);
|
|
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;
|
|
}
|
|
|
|
void PartMenu::render(U8G2* u8g2, int x, int y, int width, int height)
|
|
{
|
|
menu.render(u8g2, x, y, width, height);
|
|
}
|