reorder menu
s-ol
3 months ago
82 | 82 | self.settings = Settings( |
83 | 83 | { |
84 | 84 | # MIDI |
85 | "midi_ch_usb": Slider16Setting( | |
85 | 'midi_ch_usb': Slider16Setting( | |
86 | 86 | "USB MIDI CHANNEL", fmt="CH{}", thresh=_eq |
87 | 87 | ), |
88 | "midi_ch_trs": Slider16Setting( | |
88 | 'midi_ch_trs': Slider16Setting( | |
89 | 89 | "TRS MIDI CHANNEL", fmt="CH{}", thresh=_eq |
90 | 90 | ), |
91 | "midi_vel": SliderSetting("MIDI VELOCITY", 127, default=64), | |
91 | 'midi_vel': SliderSetting("MIDI VELOCITY", 127, default=64), | |
92 | 92 | # I2C |
93 | "i2c_mode": ChoiceSetting( | |
93 | 'i2c_mode': ChoiceSetting( | |
94 | 94 | "I2C MODE", |
95 | 95 | [False, 'leader', 'follower'], |
96 | 96 | default=False, |
97 | 97 | color=_color_offor |
98 | 98 | ), |
99 | "i2c_addr": SliderSetting( | |
99 | 'i2c_addr': SliderSetting( | |
100 | 100 | "I2C ADDRESS", 127, default=0x33, fmt="0x{0:02x} ({0:d})" |
101 | 101 | ), |
102 | 102 | # DISPLAY |
103 | "flip": ChoiceSetting( | |
104 | "DISPLAY FLIP", [False, True], default=False, color=_color_offor | |
105 | ), | |
106 | "rgb_eff": ChoiceSetting( | |
103 | 'rgb_eff': ChoiceSetting( | |
107 | 104 | "RGB EFFECT", |
108 | 105 | ['scale', 'rainbow', 'rainbow scale', 'rainbow scale alt'], |
109 | 106 | default='scale', |
110 | 107 | ), |
111 | "rgb_bright": SliderSetting( | |
108 | 'rgb_bright': SliderSetting( | |
112 | 109 | "RGB BRIGHTNESS", |
113 | 110 | 100, |
114 | 111 | default=100, |
116 | 113 | color=_color_offor, |
117 | 114 | thresh=_thresh_offor, |
118 | 115 | ), |
119 | "jam_timeout": ChoiceSetting( | |
116 | 'jam_timeout': ChoiceSetting( | |
120 | 117 | "JAM MODE FADE TIME", |
121 | 118 | [0, 0.5, 1, 1.5, 2, 3, 4, 6, 8, 10, 12, 20], |
122 | 119 | default=6, |
123 | 120 | fmt="{:.2f}s", |
124 | 121 | color=_color_offor, |
125 | 122 | ), |
123 | 'flip': ChoiceSetting( | |
124 | "DISPLAY FLIP", [False, True], default=False, color=_color_offor | |
125 | ), | |
126 | 126 | # LAYOUT |
127 | "layout_name": ChoiceSetting( | |
127 | 'layout_name': ChoiceSetting( | |
128 | 128 | "KEYBOARD LAYOUT", |
129 | 129 | ['wicki/hayden', 'harmonic table', 'gerhard', 'jankó', 'trad piano'], |
130 | 130 | default='wicki/hayden', |
131 | 131 | ), |
132 | "layout_offset": SliderSetting( | |
132 | 'layout_offset': SliderSetting( | |
133 | 133 | "LAYOUT START NOTE", |
134 | 134 | 127, |
135 | 135 | default=24, |
136 | 136 | fmt=lambda p: '{} ({})'.format(p, self.scale.label(p, octave=True)), |
137 | 137 | ), |
138 | 138 | # SCALE (hidden) |
139 | "scale_name": ChoiceSetting( | |
139 | 'scale_name': ChoiceSetting( | |
140 | 140 | "HIGHLIGHT SCALE", |
141 | 141 | [ |
142 | 142 | 'major', |
149 | 149 | ], |
150 | 150 | default='major', |
151 | 151 | ), |
152 | "scale_root": SliderSetting("SCALE ROOT NOTE", 127, default=43) | |
152 | 'scale_root': SliderSetting("SCALE ROOT NOTE", 127, default=43) | |
153 | 153 | }, |
154 | 154 | readonly=self.board.dev_mode, |
155 | 155 | ) |
174 | 174 | |
175 | 175 | self.sticky_modes = {} |
176 | 176 | self.modes = { |
177 | "base": BaseMode(self), | |
178 | "base_shift": BaseShiftMode(self), | |
179 | "menu": MenuMode( | |
177 | 'base': BaseMode(self), | |
178 | 'base_shift': BaseShiftMode(self), | |
179 | 'menu': MenuMode( | |
180 | 180 | self, |
181 | 181 | settings=self.settings, |
182 | 182 | groups=[ |
183 | [ "midi_ch_usb", "midi_ch_trs", "midi_vel" ], | |
184 | [ "i2c_mode", "i2c_addr" ], | |
185 | [ "flip", "rgb_eff", "rgb_bright", "jam_timeout" ], | |
186 | [ "layout_name", "layout_offset" ], | |
183 | [ 'midi_ch_usb', 'midi_ch_trs', 'midi_vel' ], | |
184 | [ 'i2c_mode', 'i2c_addr' ], | |
185 | [ 'rgb_eff', 'rgb_bright', 'jam_timeout', 'flip' ], | |
186 | [ 'layout_name', 'layout_offset' ], | |
187 | 187 | ], |
188 | 188 | ), |
189 | 189 | } |
190 | self.mode = self.modes["base"] | |
190 | self.mode = self.modes['base'] | |
191 | 191 | |
192 | 192 | self.settings.load() |
193 | 193 | self.mode.update_scale() |
202 | 202 | self.velocity = vel |
203 | 203 | |
204 | 204 | def on_rgb_eff(self, effect, last): |
205 | self.modes["base"].rgb = RGB_EFFECTS[effect](self) | |
206 | self.modes["base"].rgb.prepare() | |
205 | self.modes['base'].rgb = RGB_EFFECTS[effect](self) | |
206 | self.modes['base'].rgb.prepare() | |
207 | 207 | |
208 | 208 | def on_rgb_bright(self, b, last): |
209 | 209 | self.pixels.brightness = b / 100 |
215 | 215 | name = self.settings.get('layout_name').value |
216 | 216 | offset = self.settings.get('layout_offset').value |
217 | 217 | self.layout = LAYOUTS[name](offset) |
218 | self.modes["base"].update_scale() | |
218 | self.modes['base'].update_scale() | |
219 | 219 | |
220 | 220 | def on_flip(self, flip, last): |
221 | 221 | self.display.rotation = 0 if flip else 180 |
222 | 222 | self.flip = flip |
223 | 223 | |
224 | for key in self.modes["base"].keys: | |
224 | for key in self.modes['base'].keys: | |
225 | 225 | key.update_pos() |
226 | 226 | |
227 | 227 | self.on_layout(None, None) |
246 | 246 | name = self.settings.get('scale_name').value |
247 | 247 | root = self.settings.get('scale_root').value |
248 | 248 | self.scale = Scale(root, Scale.STEPS[name], name) |
249 | self.modes["base"].update_scale() | |
250 | self.modes["base_shift"].update_display() | |
249 | self.modes['base'].update_scale() | |
250 | self.modes['base_shift'].update_display() | |
251 | 251 | |
252 | 252 | @property |
253 | 253 | def mode(self) -> Mode: |