git.s-ol.nu hw/0x33.board/firmware / 74af30d
reorder menu s-ol 3 months ago
1 changed file(s) with 29 addition(s) and 29 deletion(s). Raw diff Collapse all Expand all
8282 self.settings = Settings(
8383 {
8484 # MIDI
85 "midi_ch_usb": Slider16Setting(
85 'midi_ch_usb': Slider16Setting(
8686 "USB MIDI CHANNEL", fmt="CH{}", thresh=_eq
8787 ),
88 "midi_ch_trs": Slider16Setting(
88 'midi_ch_trs': Slider16Setting(
8989 "TRS MIDI CHANNEL", fmt="CH{}", thresh=_eq
9090 ),
91 "midi_vel": SliderSetting("MIDI VELOCITY", 127, default=64),
91 'midi_vel': SliderSetting("MIDI VELOCITY", 127, default=64),
9292 # I2C
93 "i2c_mode": ChoiceSetting(
93 'i2c_mode': ChoiceSetting(
9494 "I2C MODE",
9595 [False, 'leader', 'follower'],
9696 default=False,
9797 color=_color_offor
9898 ),
99 "i2c_addr": SliderSetting(
99 'i2c_addr': SliderSetting(
100100 "I2C ADDRESS", 127, default=0x33, fmt="0x{0:02x} ({0:d})"
101101 ),
102102 # DISPLAY
103 "flip": ChoiceSetting(
104 "DISPLAY FLIP", [False, True], default=False, color=_color_offor
105 ),
106 "rgb_eff": ChoiceSetting(
103 'rgb_eff': ChoiceSetting(
107104 "RGB EFFECT",
108105 ['scale', 'rainbow', 'rainbow scale', 'rainbow scale alt'],
109106 default='scale',
110107 ),
111 "rgb_bright": SliderSetting(
108 'rgb_bright': SliderSetting(
112109 "RGB BRIGHTNESS",
113110 100,
114111 default=100,
116113 color=_color_offor,
117114 thresh=_thresh_offor,
118115 ),
119 "jam_timeout": ChoiceSetting(
116 'jam_timeout': ChoiceSetting(
120117 "JAM MODE FADE TIME",
121118 [0, 0.5, 1, 1.5, 2, 3, 4, 6, 8, 10, 12, 20],
122119 default=6,
123120 fmt="{:.2f}s",
124121 color=_color_offor,
125122 ),
123 'flip': ChoiceSetting(
124 "DISPLAY FLIP", [False, True], default=False, color=_color_offor
125 ),
126126 # LAYOUT
127 "layout_name": ChoiceSetting(
127 'layout_name': ChoiceSetting(
128128 "KEYBOARD LAYOUT",
129129 ['wicki/hayden', 'harmonic table', 'gerhard', 'jankó', 'trad piano'],
130130 default='wicki/hayden',
131131 ),
132 "layout_offset": SliderSetting(
132 'layout_offset': SliderSetting(
133133 "LAYOUT START NOTE",
134134 127,
135135 default=24,
136136 fmt=lambda p: '{} ({})'.format(p, self.scale.label(p, octave=True)),
137137 ),
138138 # SCALE (hidden)
139 "scale_name": ChoiceSetting(
139 'scale_name': ChoiceSetting(
140140 "HIGHLIGHT SCALE",
141141 [
142142 'major',
149149 ],
150150 default='major',
151151 ),
152 "scale_root": SliderSetting("SCALE ROOT NOTE", 127, default=43)
152 'scale_root': SliderSetting("SCALE ROOT NOTE", 127, default=43)
153153 },
154154 readonly=self.board.dev_mode,
155155 )
174174
175175 self.sticky_modes = {}
176176 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(
180180 self,
181181 settings=self.settings,
182182 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' ],
187187 ],
188188 ),
189189 }
190 self.mode = self.modes["base"]
190 self.mode = self.modes['base']
191191
192192 self.settings.load()
193193 self.mode.update_scale()
202202 self.velocity = vel
203203
204204 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()
207207
208208 def on_rgb_bright(self, b, last):
209209 self.pixels.brightness = b / 100
215215 name = self.settings.get('layout_name').value
216216 offset = self.settings.get('layout_offset').value
217217 self.layout = LAYOUTS[name](offset)
218 self.modes["base"].update_scale()
218 self.modes['base'].update_scale()
219219
220220 def on_flip(self, flip, last):
221221 self.display.rotation = 0 if flip else 180
222222 self.flip = flip
223223
224 for key in self.modes["base"].keys:
224 for key in self.modes['base'].keys:
225225 key.update_pos()
226226
227227 self.on_layout(None, None)
246246 name = self.settings.get('scale_name').value
247247 root = self.settings.get('scale_root').value
248248 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()
251251
252252 @property
253253 def mode(self) -> Mode: