Subversion Repositories svn.mios32

Rev

Rev 1794 | Rev 1864 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1794 Rev 1810
Line 1... Line 1...
1
// $Id: seq_ui_opt.c 1794 2013-05-31 19:25:43Z tk $
1
// $Id: seq_ui_opt.c 1810 2013-06-17 21:14:23Z tk $
2
/*
2
/*
3
 * Options page
3
 * Options page
4
 *
4
 *
5
 * ==========================================================================
5
 * ==========================================================================
6
 *
6
 *
Line 14... Line 14...
14
/////////////////////////////////////////////////////////////////////////////
14
/////////////////////////////////////////////////////////////////////////////
15
// Include files
15
// Include files
16
/////////////////////////////////////////////////////////////////////////////
16
/////////////////////////////////////////////////////////////////////////////
17
17
18
#include <mios32.h>
18
#include <mios32.h>
-
 
19
#include <string.h>
19
#include "tasks.h"
20
#include "tasks.h"
20
21
21
#include "seq_lcd.h"
22
#include "seq_lcd.h"
22
#include "seq_ui.h"
23
#include "seq_ui.h"
23
24
Line 33... Line 34...
33
34
34
/////////////////////////////////////////////////////////////////////////////
35
/////////////////////////////////////////////////////////////////////////////
35
// Local definitions
36
// Local definitions
36
/////////////////////////////////////////////////////////////////////////////
37
/////////////////////////////////////////////////////////////////////////////
37
38
38
#define NUM_OF_ITEMS       8
-
 
39
#define ITEM_STEPS_MEASURE 0
39
#define ITEM_STEPS_MEASURE   0
40
#define ITEM_STEPS_PATTERN 1
40
#define ITEM_STEPS_PATTERN   1
41
#define ITEM_SYNC_CHANGE   2
41
#define ITEM_SYNC_CHANGE     2
42
#define ITEM_RATOPC        3
42
#define ITEM_RATOPC          3
-
 
43
#define ITEM_PATTERN_MIXER_MAP_COUPLING 4
43
#define ITEM_SYNC_MUTE     4
44
#define ITEM_SYNC_MUTE       5
44
#define ITEM_SYNC_UNMUTE   5
45
#define ITEM_SYNC_UNMUTE     6
45
#define ITEM_PASTE_CLR_ALL 6
46
#define ITEM_PASTE_CLR_ALL   7
46
#define ITEM_INIT_CC       7
47
#define ITEM_INIT_CC         8
-
 
48
#define ITEM_LIVE_LAYER_MUTE 9
47
49
-
 
50
#define NUM_OF_ITEMS         10
-
 
51
-
 
52
-
 
53
static const char *item_text[NUM_OF_ITEMS][2] = {
-
 
54
 
-
 
55
  {//<-------------------------------------->
-
 
56
    "Track Synchronisation",
-
 
57
    "Steps per Measure:" // %3d
-
 
58
  },
-
 
59
-
 
60
  {//<-------------------------------------->
-
 
61
    "Pattern Change Synchronisation",
-
 
62
    "Change considered each " // %3d steps
-
 
63
  },
-
 
64
-
 
65
  {//<-------------------------------------->
-
 
66
    "Pattern Change Synchronisation",
-
 
67
    NULL, // enabled/disabled
-
 
68
  },
-
 
69
-
 
70
  {//<-------------------------------------->
-
 
71
    "Restart all Tracks on Pattern Change",
-
 
72
    NULL, // enabled/disabled
-
 
73
  },
-
 
74
-
 
75
  {//<-------------------------------------->
-
 
76
    "Dump a predefined Mixer Map on",
-
 
77
    "Pattern Changes: ", // enabled/disabled
-
 
78
  },
-
 
79
-
 
80
  {//<-------------------------------------->
-
 
81
    "Synchronize MUTE to Measure",
-
 
82
    NULL, // enabled/disabled
-
 
83
  },
-
 
84
-
 
85
  {//<-------------------------------------->
-
 
86
    "Synchronize UNMUTE to Measure",
-
 
87
    NULL, // enabled/disabled
-
 
88
  },
-
 
89
-
 
90
  {//<-------------------------------------->
-
 
91
    "Paste and Clear button will modify",
-
 
92
    NULL, // Only Steps/Complete Track
-
 
93
  },
-
 
94
-
 
95
  {//<-------------------------------------->
-
 
96
    "Initial CC value for Clear and Init",
-
 
97
    "is: ",
-
 
98
  },
-
 
99
-
 
100
  {//<-------------------------------------->
-
 
101
    "If Live function, matching received",
-
 
102
    "MIDI Events will: ",
-
 
103
  },
-
 
104
};
48
105
49
/////////////////////////////////////////////////////////////////////////////
106
/////////////////////////////////////////////////////////////////////////////
50
// Local variables
107
// Local variables
51
/////////////////////////////////////////////////////////////////////////////
108
/////////////////////////////////////////////////////////////////////////////
52
109
53
static u8 store_file_required;
110
static u8 store_file_required;
-
 
111
static u8 local_selected_item = 0; // stays stable when menu is exit
54
112
55
113
56
/////////////////////////////////////////////////////////////////////////////
114
/////////////////////////////////////////////////////////////////////////////
57
// Local LED handler function
115
// Local LED handler function
58
/////////////////////////////////////////////////////////////////////////////
116
/////////////////////////////////////////////////////////////////////////////
59
static s32 LED_Handler(u16 *gp_leds)
117
static s32 LED_Handler(u16 *gp_leds)
60
{
118
{
61
  if( ui_cursor_flash ) // if flashing flag active: no LED flag set
119
  if( ui_cursor_flash ) // if flashing flag active: no LED flag set
62
    return 0;
120
    return 0;
63
121
64
  switch( ui_selected_item ) {
122
  *gp_leds = 0xffc0;
65
    case ITEM_STEPS_MEASURE:  *gp_leds = 0x0003; break;
-
 
66
    case ITEM_STEPS_PATTERN:  *gp_leds = 0x000c; break;
-
 
67
    case ITEM_SYNC_CHANGE:    *gp_leds = 0x0030; break;
-
 
68
    case ITEM_RATOPC:         *gp_leds = 0x00c0; break;
-
 
69
    case ITEM_SYNC_MUTE:      *gp_leds = 0x0100; break;
-
 
70
    case ITEM_SYNC_UNMUTE:    *gp_leds = 0x0200; break;
-
 
71
    case ITEM_PASTE_CLR_ALL:  *gp_leds = 0x3000; break;
-
 
72
    case ITEM_INIT_CC:        *gp_leds = 0xc000; break;
-
 
73
  }
-
 
74
123
75
  return 0; // no error
124
  return 0; // no error
76
}
125
}
77
126
78
127
Line 84... Line 133...
84
//   0 if value hasn't been changed
133
//   0 if value hasn't been changed
85
//  -1 if invalid or unsupported encoder
134
//  -1 if invalid or unsupported encoder
86
/////////////////////////////////////////////////////////////////////////////
135
/////////////////////////////////////////////////////////////////////////////
87
static s32 Encoder_Handler(seq_ui_encoder_t encoder, s32 incrementer)
136
static s32 Encoder_Handler(seq_ui_encoder_t encoder, s32 incrementer)
88
{
137
{
89
  switch( encoder ) {
-
 
90
    case SEQ_UI_ENCODER_GP1:
-
 
91
    case SEQ_UI_ENCODER_GP2:
-
 
92
      ui_selected_item = ITEM_STEPS_MEASURE;
-
 
93
      break;
-
 
94
-
 
95
    case SEQ_UI_ENCODER_GP3:
-
 
96
    case SEQ_UI_ENCODER_GP4:
-
 
97
      ui_selected_item = ITEM_STEPS_PATTERN;
-
 
98
      break;
-
 
99
-
 
100
    case SEQ_UI_ENCODER_GP5:
-
 
101
    case SEQ_UI_ENCODER_GP6:
138
  if( encoder <= SEQ_UI_ENCODER_GP6 )
102
      ui_selected_item = ITEM_SYNC_CHANGE;
-
 
103
      break;
-
 
104
-
 
105
    case SEQ_UI_ENCODER_GP7:
-
 
106
    case SEQ_UI_ENCODER_GP8:
-
 
107
      ui_selected_item = ITEM_RATOPC;
-
 
108
      break;
-
 
109
-
 
110
    case SEQ_UI_ENCODER_GP9:
-
 
111
      ui_selected_item = ITEM_SYNC_MUTE;
-
 
112
      break;
-
 
113
-
 
114
    case SEQ_UI_ENCODER_GP10:
-
 
115
      ui_selected_item = ITEM_SYNC_UNMUTE;
-
 
116
      break;
-
 
117
-
 
118
    case SEQ_UI_ENCODER_GP11:
-
 
119
    case SEQ_UI_ENCODER_GP12:
-
 
120
      return -1; // not mapped
139
    return -1; // not mapped
121
140
122
    case SEQ_UI_ENCODER_GP13:
141
  // change page
123
    case SEQ_UI_ENCODER_GP14:
142
  if( encoder == SEQ_UI_ENCODER_GP7 || encoder == SEQ_UI_ENCODER_GP8 ) {
124
      ui_selected_item = ITEM_PASTE_CLR_ALL;
143
    if( SEQ_UI_Var8_Inc(&local_selected_item, 0, NUM_OF_ITEMS-1, incrementer) >= 0 ) {
125
      break;
144
      return 1; // changed
126
145
    }
127
    case SEQ_UI_ENCODER_GP15:
-
 
128
    case SEQ_UI_ENCODER_GP16:
146
    return 0; // not changed
129
      ui_selected_item = ITEM_INIT_CC;
-
 
130
      break;
-
 
131
  }
147
  }
132
148
133
  // for GP encoders and Datawheel
149
  // for GP encoders and Datawheel
134
  switch( ui_selected_item ) {
150
  switch( local_selected_item ) {
135
    case ITEM_STEPS_MEASURE:
151
    case ITEM_STEPS_MEASURE:
136
      if( encoder == SEQ_UI_ENCODER_GP1 ) {
152
      if( encoder == SEQ_UI_ENCODER_GP16 ) {
137
    // increment in +/- 16 steps
153
    // increment in +/- 16 steps
138
    u8 value = seq_core_steps_per_measure >> 4;
154
    u8 value = seq_core_steps_per_measure >> 4;
139
    if( SEQ_UI_Var8_Inc(&value, 0, 15, incrementer) >= 0 ) {
155
    if( SEQ_UI_Var8_Inc(&value, 0, 15, incrementer) >= 0 ) {
140
      seq_core_steps_per_measure = (value << 4) + 15;
156
      seq_core_steps_per_measure = (value << 4) + 15;
141
      store_file_required = 1;
157
      store_file_required = 1;
Line 148... Line 164...
148
    }
164
    }
149
      }
165
      }
150
      return 0;
166
      return 0;
151
167
152
    case ITEM_STEPS_PATTERN:
168
    case ITEM_STEPS_PATTERN:
153
      if( encoder == SEQ_UI_ENCODER_GP3 ) {
169
      if( encoder == SEQ_UI_ENCODER_GP16 ) {
154
    // increment in +/- 16 steps
170
    // increment in +/- 16 steps
155
    u8 value = seq_core_steps_per_pattern >> 4;
171
    u8 value = seq_core_steps_per_pattern >> 4;
156
    if( SEQ_UI_Var8_Inc(&value, 0, 15, incrementer) >= 0 ) {
172
    if( SEQ_UI_Var8_Inc(&value, 0, 15, incrementer) >= 0 ) {
157
      seq_core_steps_per_pattern = (value << 4) + 15;
173
      seq_core_steps_per_pattern = (value << 4) + 15;
158
      store_file_required = 1;
174
      store_file_required = 1;
Line 169... Line 185...
169
    case ITEM_SYNC_CHANGE:
185
    case ITEM_SYNC_CHANGE:
170
      if( incrementer )
186
      if( incrementer )
171
    seq_core_options.SYNCHED_PATTERN_CHANGE = incrementer > 0 ? 1 : 0;
187
    seq_core_options.SYNCHED_PATTERN_CHANGE = incrementer > 0 ? 1 : 0;
172
      else
188
      else
173
    seq_core_options.SYNCHED_PATTERN_CHANGE ^= 1;
189
    seq_core_options.SYNCHED_PATTERN_CHANGE ^= 1;
-
 
190
      store_file_required = 1;
-
 
191
      return 1;
-
 
192
-
 
193
    case ITEM_PATTERN_MIXER_MAP_COUPLING:
-
 
194
      if( incrementer )
-
 
195
    seq_core_options.PATTERN_MIXER_MAP_COUPLING = incrementer > 0 ? 1 : 0;
-
 
196
      else
-
 
197
    seq_core_options.PATTERN_MIXER_MAP_COUPLING ^= 1;
174
      store_file_required = 1;
198
      store_file_required = 1;
175
      return 1;
199
      return 1;
176
200
177
    case ITEM_PASTE_CLR_ALL:
201
    case ITEM_PASTE_CLR_ALL:
178
      if( incrementer )
202
      if( incrementer )
179
    seq_core_options.PASTE_CLR_ALL = incrementer > 0 ? 1 : 0;
203
    seq_core_options.PASTE_CLR_ALL = incrementer > 0 ? 1 : 0;
180
      else
204
      else
181
    seq_core_options.PASTE_CLR_ALL ^= 1;
205
    seq_core_options.PASTE_CLR_ALL ^= 1;
182
      store_file_required = 1;
206
      store_file_required = 1;
183
      return 1;
207
      return 1;
184
-
 
185
    case ITEM_INIT_CC: {
-
 
186
      u8 value = seq_core_options.INIT_CC;
-
 
187
      if( SEQ_UI_Var8_Inc(&value, 0, 127, incrementer) >= 0 ) {
-
 
188
    seq_core_options.INIT_CC = value;
-
 
189
    store_file_required = 1;
-
 
190
    return 1;
-
 
191
      }
-
 
192
      return 0;
-
 
193
    } break;
-
 
194
208
195
    case ITEM_RATOPC:
209
    case ITEM_RATOPC:
196
      if( incrementer )
210
      if( incrementer )
197
    seq_core_options.RATOPC = incrementer > 0 ? 1 : 0;
211
    seq_core_options.RATOPC = incrementer > 0 ? 1 : 0;
198
      else
212
      else
Line 215... Line 229...
215
      else
229
      else
216
    seq_core_options.SYNCHED_UNMUTE ^= 1;
230
    seq_core_options.SYNCHED_UNMUTE ^= 1;
217
      store_file_required = 1;
231
      store_file_required = 1;
218
      return 1;
232
      return 1;
219
    } break;
233
    } break;
-
 
234
-
 
235
    case ITEM_INIT_CC: {
-
 
236
      u8 value = seq_core_options.INIT_CC;
-
 
237
      if( SEQ_UI_Var8_Inc(&value, 0, 127, incrementer) >= 0 ) {
-
 
238
    seq_core_options.INIT_CC = value;
-
 
239
    store_file_required = 1;
-
 
240
    return 1;
-
 
241
      }
-
 
242
      return 0;
-
 
243
    } break;
-
 
244
-
 
245
    case ITEM_LIVE_LAYER_MUTE: {
-
 
246
      u8 value = seq_core_options.LIVE_LAYER_MUTE_STEPS;
-
 
247
      if( SEQ_UI_Var8_Inc(&value, 0, 7, incrementer) >= 0 ) {
-
 
248
    seq_core_options.LIVE_LAYER_MUTE_STEPS = value;
-
 
249
    store_file_required = 1;
-
 
250
    return 1;
-
 
251
      }
-
 
252
      return 0;
-
 
253
    } break;
-
 
254
220
  }
255
  }
221
256
222
  return -1; // invalid or unsupported encoder
257
  return -1; // invalid or unsupported encoder
223
}
258
}
224
259
Line 247... Line 282...
247
  // remaining buttons:
282
  // remaining buttons:
248
  switch( button ) {
283
  switch( button ) {
249
    case SEQ_UI_BUTTON_Select:
284
    case SEQ_UI_BUTTON_Select:
250
    case SEQ_UI_BUTTON_Right:
285
    case SEQ_UI_BUTTON_Right:
251
      if( depressed ) return -1;
286
      if( depressed ) return -1;
252
      if( ++ui_selected_item >= NUM_OF_ITEMS )
287
      if( ++local_selected_item >= NUM_OF_ITEMS )
253
    ui_selected_item = 0;
288
    local_selected_item = 0;
254
      return 1; // value always changed
289
      return 1; // value always changed
255
290
256
    case SEQ_UI_BUTTON_Left:
291
    case SEQ_UI_BUTTON_Left:
257
      if( depressed ) return -1;
292
      if( depressed ) return -1;
258
      if( ui_selected_item == 0 )
293
      if( local_selected_item == 0 )
259
    ui_selected_item = NUM_OF_ITEMS-1;
294
    local_selected_item = NUM_OF_ITEMS-1;
260
      else
295
      else
261
    --ui_selected_item;
296
    --local_selected_item;
262
      return 1; // value always changed
297
      return 1; // value always changed
263
298
264
    case SEQ_UI_BUTTON_Up:
299
    case SEQ_UI_BUTTON_Up:
265
      if( depressed ) return -1;
300
      if( depressed ) return -1;
266
      return Encoder_Handler(SEQ_UI_ENCODER_Datawheel, 1);
301
      return Encoder_Handler(SEQ_UI_ENCODER_Datawheel, 1);
Line 285... Line 320...
285
320
286
  // layout:
321
  // layout:
287
  // 00000000001111111111222222222233333333330000000000111111111122222222223333333333
322
  // 00000000001111111111222222222233333333330000000000111111111122222222223333333333
288
  // 01234567890123456789012345678901234567890123456789012345678901234567890123456789
323
  // 01234567890123456789012345678901234567890123456789012345678901234567890123456789
289
  // <--------------------------------------><-------------------------------------->
324
  // <--------------------------------------><-------------------------------------->
290
  //  Measure   Pattern  SyncChange   RATOPC  SyncMute            Paste/Clr  Init CC 
325
  //                                 Option  Track Synchronisation
291
  //  16 Steps  16 Steps     off       off   Mute Unmute            Steps       64   
326
  //                                   1/10  Steps per Measure:  16
292
327
293
  ///////////////////////////////////////////////////////////////////////////
328
  ///////////////////////////////////////////////////////////////////////////
294
  SEQ_LCD_CursorSet(0, 0);
329
  SEQ_LCD_CursorSet(0, 0);
295
  SEQ_LCD_PrintString(" Measure   Pattern  SyncChange   RATOPC  SyncMute            Paste/Clr  Init CC ");
-
 
296
  SEQ_LCD_PrintSpaces(18);
330
  SEQ_LCD_PrintSpaces(32);
-
 
331
  SEQ_LCD_PrintString("Option  ");
-
 
332
  SEQ_LCD_PrintStringPadded((char *)item_text[local_selected_item][0], 40);
297
333
298
  ///////////////////////////////////////////////////////////////////////////
334
  ///////////////////////////////////////////////////////////////////////////
299
  SEQ_LCD_CursorSet(0, 1);
335
  SEQ_LCD_CursorSet(0, 1);
-
 
336
  SEQ_LCD_PrintSpaces(33);
-
 
337
  SEQ_LCD_PrintFormattedString("%2d/%-2d  ", local_selected_item+1, NUM_OF_ITEMS);
300
338
301
  ///////////////////////////////////////////////////////////////////////////
339
  ///////////////////////////////////////////////////////////////////////////
302
  if( ui_selected_item == ITEM_STEPS_MEASURE && ui_cursor_flash ) {
340
  char *str = (char *)item_text[local_selected_item][1];
303
    SEQ_LCD_PrintSpaces(10);
341
  u32 len = strlen(str);
304
  } else {
-
 
305
    SEQ_LCD_PrintFormattedString("%3d Steps ", (int)seq_core_steps_per_measure + 1);
342
  int enabled_value = -1; // cheap: will print enabled/disabled in second line if >= 0
306
  }
343
-
 
344
  switch( local_selected_item ) {
307
345
308
  ///////////////////////////////////////////////////////////////////////////
346
  ///////////////////////////////////////////////////////////////////////////
-
 
347
  case ITEM_STEPS_MEASURE: {
-
 
348
    SEQ_LCD_PrintString(str);
309
  if( ui_selected_item == ITEM_STEPS_PATTERN && ui_cursor_flash ) {
349
    if( ui_cursor_flash ) {
310
    SEQ_LCD_PrintSpaces(10);
350
      SEQ_LCD_PrintSpaces(3);
311
  } else {
351
    } else {
312
    SEQ_LCD_PrintFormattedString("%3d Steps ", (int)seq_core_steps_per_pattern + 1);
352
      SEQ_LCD_PrintFormattedString("%3d", (int)seq_core_steps_per_measure + 1);
313
  }
353
    }
314
  SEQ_LCD_PrintSpaces(4);
354
    SEQ_LCD_PrintSpaces(40-3-len);
-
 
355
  } break;
315
356
316
  ///////////////////////////////////////////////////////////////////////////
357
  ///////////////////////////////////////////////////////////////////////////
-
 
358
  case ITEM_STEPS_PATTERN: {
-
 
359
    SEQ_LCD_PrintString(str);
317
  if( ui_selected_item == ITEM_SYNC_CHANGE && ui_cursor_flash ) {
360
    if( ui_cursor_flash ) {
318
    SEQ_LCD_PrintSpaces(3);
361
      SEQ_LCD_PrintSpaces(9);
319
  } else {
362
    } else {
320
    SEQ_LCD_PrintString(seq_core_options.SYNCHED_PATTERN_CHANGE ? "on " : "off");
363
      SEQ_LCD_PrintFormattedString("%3d steps", (int)seq_core_steps_per_pattern + 1);
321
  }
364
    }
322
  SEQ_LCD_PrintSpaces(7);
365
    SEQ_LCD_PrintSpaces(40-9-len);
-
 
366
  } break;
323
367
324
  ///////////////////////////////////////////////////////////////////////////
368
  ///////////////////////////////////////////////////////////////////////////
-
 
369
  case ITEM_SYNC_CHANGE: {
-
 
370
    enabled_value = seq_core_options.SYNCHED_PATTERN_CHANGE;
-
 
371
  } break;
-
 
372
-
 
373
  ///////////////////////////////////////////////////////////////////////////
-
 
374
  case ITEM_RATOPC: {
-
 
375
    enabled_value = seq_core_options.RATOPC;
-
 
376
  } break;
-
 
377
-
 
378
  ///////////////////////////////////////////////////////////////////////////
-
 
379
  case ITEM_PATTERN_MIXER_MAP_COUPLING: {
-
 
380
    SEQ_LCD_PrintString(str);
-
 
381
325
  if( ui_selected_item == ITEM_RATOPC && ui_cursor_flash ) {
382
    if( ui_cursor_flash ) {
326
    SEQ_LCD_PrintSpaces(3);
383
      SEQ_LCD_PrintSpaces(40-len);
327
  } else {
384
    } else {
328
    SEQ_LCD_PrintString(seq_core_options.RATOPC ? " on" : "off");
385
      SEQ_LCD_PrintStringPadded(seq_core_options.PATTERN_MIXER_MAP_COUPLING ? "enabled" : "disabled", 40-len);
329
  }
386
    }
330
  SEQ_LCD_PrintSpaces(3);
387
  } break;
331
388
-
 
389
  ///////////////////////////////////////////////////////////////////////////
-
 
390
  case ITEM_SYNC_MUTE: {
-
 
391
    enabled_value = seq_core_options.SYNCHED_MUTE;
-
 
392
  } break;
-
 
393
-
 
394
  ///////////////////////////////////////////////////////////////////////////
-
 
395
  case ITEM_SYNC_UNMUTE: {
-
 
396
    enabled_value = seq_core_options.SYNCHED_UNMUTE;
-
 
397
  } break;
332
398
333
  ///////////////////////////////////////////////////////////////////////////
399
  ///////////////////////////////////////////////////////////////////////////
-
 
400
  case ITEM_PASTE_CLR_ALL: {
334
  if( ui_selected_item == ITEM_SYNC_MUTE && ui_cursor_flash ) {
401
    if( ui_cursor_flash ) {
335
    SEQ_LCD_PrintSpaces(4);
402
      SEQ_LCD_PrintSpaces(14);
336
  } else {
403
    } else {
337
    SEQ_LCD_PrintString(seq_core_options.SYNCHED_MUTE ? "Mute" : " off");
404
      SEQ_LCD_PrintFormattedString("%-8s", seq_core_options.PASTE_CLR_ALL ? "Complete Track" : "Only Steps    ");
338
  }
405
    }
339
  SEQ_LCD_PrintSpaces(1);
406
    SEQ_LCD_PrintSpaces(40-14);
-
 
407
  } break;
340
408
341
  ///////////////////////////////////////////////////////////////////////////
409
  ///////////////////////////////////////////////////////////////////////////
-
 
410
  case ITEM_INIT_CC: {
-
 
411
    SEQ_LCD_PrintString(str);
342
  if( ui_selected_item == ITEM_SYNC_UNMUTE && ui_cursor_flash ) {
412
    if( ui_cursor_flash ) {
343
    SEQ_LCD_PrintSpaces(6);
413
      SEQ_LCD_PrintSpaces(3);
344
  } else {
414
    } else {
345
    SEQ_LCD_PrintString(seq_core_options.SYNCHED_UNMUTE ? "Unmute" : "  off ");
415
      SEQ_LCD_PrintFormattedString("%3d", seq_core_options.INIT_CC);
346
  }
416
    }
347
  SEQ_LCD_PrintSpaces(12);  
417
    SEQ_LCD_PrintSpaces(40-3-len);
-
 
418
  } break;
348
419
349
  ///////////////////////////////////////////////////////////////////////////
420
  ///////////////////////////////////////////////////////////////////////////
-
 
421
  case ITEM_LIVE_LAYER_MUTE: {
-
 
422
    SEQ_LCD_PrintString(str);
-
 
423
350
  if( ui_selected_item == ITEM_PASTE_CLR_ALL && ui_cursor_flash ) {
424
    if( ui_cursor_flash ) {
351
    SEQ_LCD_PrintSpaces(5);
425
      SEQ_LCD_PrintSpaces(22);
352
  } else {
426
    } else {
-
 
427
      if( seq_core_options.LIVE_LAYER_MUTE_STEPS == 0 ) {
-
 
428
    SEQ_LCD_PrintStringPadded("do nothing", 22);
-
 
429
      } else if( seq_core_options.LIVE_LAYER_MUTE_STEPS == 1 ) {
-
 
430
    SEQ_LCD_PrintStringPadded("mute the appr. layer", 22);
353
    SEQ_LCD_PrintString(seq_core_options.PASTE_CLR_ALL ? "Track" : "Steps");
431
      } else if( seq_core_options.LIVE_LAYER_MUTE_STEPS == 2 ) {
-
 
432
    SEQ_LCD_PrintStringPadded("mute layer for 1 step ", 22);
-
 
433
      } else {
-
 
434
    SEQ_LCD_PrintFormattedString("mute layer for %d steps", seq_core_options.LIVE_LAYER_MUTE_STEPS-1);
354
  }
435
      }
-
 
436
    }
355
  SEQ_LCD_PrintSpaces(6);
437
  } break;
356
438
357
  ///////////////////////////////////////////////////////////////////////////
439
  ///////////////////////////////////////////////////////////////////////////
358
  if( ui_selected_item == ITEM_INIT_CC && ui_cursor_flash ) {
440
  default:
359
    SEQ_LCD_PrintSpaces(3);
441
    SEQ_LCD_PrintSpaces(40);
360
  } else {
-
 
361
    SEQ_LCD_PrintFormattedString("%3d", seq_core_options.INIT_CC);
-
 
362
  }
442
  }
-
 
443
  ///////////////////////////////////////////////////////////////////////////
363
  SEQ_LCD_PrintSpaces(3);
444
  ///////////////////////////////////////////////////////////////////////////
364
445
-
 
446
-
 
447
  // for cheap enabled/disabled
-
 
448
  if( enabled_value >= 0 ) {
-
 
449
    if( ui_cursor_flash ) {
-
 
450
      SEQ_LCD_PrintSpaces(40);
-
 
451
    } else {
-
 
452
      SEQ_LCD_PrintStringPadded(enabled_value ? "enabled" : "disabled", 40);
-
 
453
    }
-
 
454
  }
365
455
366
  return 0; // no error
456
  return 0; // no error
367
}
457
}
368
458
369
459