@@ -5,8 +5,8 @@ mod model;
55pub use model:: ColorSchemaV1 ;
66use model:: {
77 AppearanceConfig , AppearanceConfigV1 , DevicesConfig , DevicesConfigV1 , History , HistoryV1 ,
8- LayoutConfig , LayoutConfigV1 , Model , PlaybackConfig , PlaybackConfigV1 , SynthConfig ,
9- SynthConfigV1 , WaterfallConfig , WaterfallConfigV1 ,
8+ LayoutConfig , LayoutConfigV1 , Model , PcKeyboardConfig , PcKeyboardConfigV1 , PlaybackConfig ,
9+ PlaybackConfigV1 , SynthConfig , SynthConfigV1 , WaterfallConfig , WaterfallConfigV1 ,
1010} ;
1111
1212fn ron_options ( ) -> ron:: Options {
@@ -44,6 +44,7 @@ impl Model {
4444 synth,
4545 keyboard_layout,
4646 appearance,
47+ pc_keyboard,
4748 } = config;
4849
4950 Self {
@@ -54,6 +55,7 @@ impl Model {
5455 keyboard_layout : LayoutConfig :: V1 ( keyboard_layout) ,
5556 devices : DevicesConfig :: V1 ( devices) ,
5657 appearance : AppearanceConfig :: V1 ( appearance) ,
58+ pc_keyboard : PcKeyboardConfig :: V1 ( pc_keyboard) ,
5759 }
5860 }
5961
@@ -80,6 +82,9 @@ impl Model {
8082 keyboard_layout : match self . keyboard_layout {
8183 LayoutConfig :: V1 ( v) => v,
8284 } ,
85+ pc_keyboard : match self . pc_keyboard {
86+ PcKeyboardConfig :: V1 ( v) => v,
87+ } ,
8388 }
8489 }
8590}
@@ -93,6 +98,7 @@ pub struct Config {
9398 synth : SynthConfigV1 ,
9499 history : HistoryV1 ,
95100 keyboard_layout : LayoutConfigV1 ,
101+ pc_keyboard : PcKeyboardConfigV1 ,
96102}
97103
98104impl Default for Config {
@@ -255,6 +261,21 @@ impl Config {
255261 self . playback . speed_multiplier = speed_multiplier. max ( 0.0 ) ;
256262 }
257263
264+ pub fn pc_keyboard_octave ( & self ) -> u8 {
265+ self . pc_keyboard . octave_shift . min ( 10 )
266+ }
267+
268+ pub fn pc_keyboard_shift_octave_up ( & mut self ) {
269+ self . pc_keyboard . octave_shift += 1 ;
270+ }
271+
272+ pub fn pc_keyboard_shift_octave_down ( & mut self ) {
273+ if self . pc_keyboard . octave_shift == 0 {
274+ return ;
275+ }
276+ self . pc_keyboard . octave_shift -= 1 ;
277+ }
278+
258279 pub fn save ( & self ) {
259280 let res = ron_options ( ) . to_string_pretty (
260281 & Model :: from_config ( self . clone ( ) ) ,
0 commit comments