Subversion Repositories svn.mios32

Compare Revisions

Ignore whitespace Rev 2606 → Rev 2607

/trunk/apps/sequencers/midibox_seq_v4/CHANGELOG.txt
9,6 → 9,10
MIDIboxSEQ V4.095
~~~~~~~~~~~~~~~~~
 
o support for midiphy Frontpanel.
The appr. HW configuration file can be found under
hwcfg/midiphy_lh/MBSEQ_HW.V4 and hwcfg/midiphy_rh/MBSEQ_HW.V4
 
o introduced first "MBSEQV4+" function.
MIDIbox SEQ V4+ is a special firmware variant for the STM32F4 core.
It offers additional memory and/or CPU hungry functions which can't be implemented
56,11 → 60,13
o new terminal command "lcd" allows to display a temporary message from on LCD from
an external device via SysEx
 
o encoder buttons can now be assigned in the MBSEQ_HW.V4 file (currently hardcoded to FAST function)
 
o STM32F4 board: orange LED shows SD Card available, red LED any received MIDI IN, blue LED any transmitted MIDI OUT
 
o experimental (might be optional in future): show measure and pattern step position in main screen
 
o STM32F4 board: orange LED shows measure, red LED any received MIDI IN, blue LED any transmitted MIDI OUT
 
 
MIDIboxSEQ V4.094b
~~~~~~~~~~~~~~~~~~
 
/trunk/apps/sequencers/midibox_seq_v4/core/seq_hwcfg.c
101,6 → 101,26
.direct_bookmark[14] = ((( 0 -1)<<3)+ 0),
.direct_bookmark[15] = ((( 0 -1)<<3)+ 0),
 
// SR ignore Pin
.enc[0] = ((( 0 -1)<<3)+ 0), // Datawheel
.enc[1] = ((( 0 -1)<<3)+ 0), // GP1
.enc[2] = ((( 0 -1)<<3)+ 0), // GP2
.enc[3] = ((( 0 -1)<<3)+ 0), // GP3
.enc[4] = ((( 0 -1)<<3)+ 0), // GP4
.enc[5] = ((( 0 -1)<<3)+ 0), // GP5
.enc[6] = ((( 0 -1)<<3)+ 0), // GP6
.enc[7] = ((( 0 -1)<<3)+ 0), // GP7
.enc[8] = ((( 0 -1)<<3)+ 0), // GP8
.enc[9] = ((( 0 -1)<<3)+ 0), // GP9
.enc[10] = ((( 0 -1)<<3)+ 0), // GP10
.enc[11] = ((( 0 -1)<<3)+ 0), // GP11
.enc[12] = ((( 0 -1)<<3)+ 0), // GP12
.enc[13] = ((( 0 -1)<<3)+ 0), // GP13
.enc[14] = ((( 0 -1)<<3)+ 0), // GP14
.enc[15] = ((( 0 -1)<<3)+ 0), // GP15
.enc[16] = ((( 0 -1)<<3)+ 0), // GP16
.enc[17] = ((( 0 -1)<<3)+ 0), // BPM
 
// SR ignore Pin
.par_layer[0] = ((( 3 -1)<<3)+ 4),
.par_layer[1] = ((( 3 -1)<<3)+ 5),
/trunk/apps/sequencers/midibox_seq_v4/core/seq_hwcfg.h
77,6 → 77,8
 
u16 direct_bookmark[SEQ_HWCFG_NUM_DIRECT_BOOKMARK];
 
u16 enc[SEQ_HWCFG_NUM_ENCODERS];
 
u16 edit;
u16 mute;
u16 pattern;
/trunk/apps/sequencers/midibox_seq_v4/core/seq_ui.c
1346,6 → 1346,19
}
 
 
static s32 SEQ_UI_Button_Enc(s32 depressed, u32 enc_button)
{
// 0=Datawheel, 1..16=GPx, 17=BPM
 
// current hardcoded to FAST mode
seq_ui_button_state.FAST_ENCODERS = depressed ? 0 : 1;
 
SEQ_UI_InitEncSpeed(0); // no auto config
 
return 0; // no error
}
 
 
static s32 SEQ_UI_Button_Select(s32 depressed)
{
// double function: -> Bookmark if menu button pressed
2361,6 → 2374,10
if( pin == seq_hwcfg_button.direct_bookmark[i] )
return SEQ_UI_Button_DirectBookmark(pin_value, i);
 
for(i=0; i<SEQ_HWCFG_NUM_ENCODERS; ++i)
if( pin == seq_hwcfg_button.enc[i] )
return SEQ_UI_Button_Enc(pin_value, i);
 
if( pin == seq_hwcfg_button.track_sel )
return SEQ_UI_Button_TrackSel(pin_value);
 
2519,10 → 2536,18
// always print debugging message
#if 1
MUTEX_MIDIOUT_TAKE;
DEBUG_MSG("[SEQ_UI_Button_Handler] Button SR:%d, Pin:%d not mapped, it has been %s.\n",
(pin >> 3) + 1,
pin & 7,
pin_value ? "depressed" : "pressed");
if( pin < 32*8 ) {
DEBUG_MSG("[SEQ_UI_Button_Handler] Button SR:%d, Pin:D%d not mapped, it has been %s.\n",
(pin / 8) + 1,
pin % 8,
pin_value ? "depressed" : "pressed");
} else {
DEBUG_MSG("[SEQ_UI_Button_Handler] Button SR:M%d%c, Pin:D%d not mapped, it has been %s.\n",
1 + (((pin-32*8) / 8) % 8),
'A' + ((pin-32*8) / (8*8)),
pin % 8,
pin_value ? "depressed" : "pressed");
}
MUTEX_MIDIOUT_GIVE;
#endif
 
3346,8 → 3371,11
SEQ_LED_PinSet(seq_hwcfg_led.measure, measure_led_on);
 
// mirror to red status LED
MIOS32_BOARD_LED_Set(0x00000002, measure_led_on ? 2 : 0);
//MIOS32_BOARD_LED_Set(0x00000002, measure_led_on ? 2 : 0);
// now used for SD Card indicator
MIOS32_BOARD_LED_Set(0x00000002, FILE_SDCardAvailable() ? 2 : 0);
 
 
// MIDI IN/OUT LEDs
SEQ_LED_PinSet(seq_hwcfg_led.midi_in_combined, seq_midi_port_in_combined_ctr);
MIOS32_BOARD_LED_Set(0x00000004, seq_midi_port_in_combined_ctr ? 4 : 0);
/trunk/apps/sequencers/midibox_seq_v4/core/seq_file_hw.c
569,11 → 569,31
s32 bookmark = get_dec(parameter);
if( bookmark < 1 || bookmark > SEQ_HWCFG_NUM_DIRECT_BOOKMARK ) {
#if DEBUG_VERBOSE_LEVEL >= 1
DEBUG_MSG("[SEQ_FILE_HW] ERROR in BUTTON_DIRECT_BOOKMARK%s definition: invalid track number '%s'!", parameter, parameter);
DEBUG_MSG("[SEQ_FILE_HW] ERROR in BUTTON_DIRECT_BOOKMARK%s definition: invalid function number '%s'!", parameter, parameter);
#endif
continue;
}
seq_hwcfg_button.direct_bookmark[bookmark-1] = din_value;
} else if( strncasecmp(parameter, "ENC", 3) == 0 ) {
parameter += 3;
 
#if SEQ_HWCFG_NUM_ENCODERS != 18
#error "please adapt this code to new encoder assignments"
#endif
if( strcasecmp(parameter, "_DATAWHEEL") == 0 ) {
seq_hwcfg_button.enc[0] = din_value;
} else if( strcasecmp(parameter, "_BPM") == 0 ) {
seq_hwcfg_button.enc[17] = din_value;
} else {
s32 gp = get_dec(parameter);
if( gp < 1 || gp > 16 ) {
#if DEBUG_VERBOSE_LEVEL >= 1
DEBUG_MSG("[SEQ_FILE_HW] ERROR in BUTTON_ENC%s definition: invalid enc number '%s'!", parameter, parameter);
#endif
continue;
}
seq_hwcfg_button.enc[gp] = din_value; // GPs located at index 1..16
}
} else if( strncasecmp(parameter, "DIRECT_TRACK", 12) == 0 ) {
parameter += 12;
 
/trunk/apps/sequencers/midibox_seq_v4/hwcfg/wilba_tpd/MBSEQ_HW.V4
568,7 → 568,30
BUTTON_DIRECT_BOOKMARK16 0 0
 
 
# Encoder buttons (currently hard-coded to FAST function)
 
# SR Pin
BUTTON_ENC_DATAWHEEL 0 0
BUTTON_ENC_BPM 0 0
 
BUTTON_ENC1 0 0
BUTTON_ENC2 0 0
BUTTON_ENC3 0 0
BUTTON_ENC4 0 0
BUTTON_ENC5 0 0
BUTTON_ENC6 0 0
BUTTON_ENC7 0 0
BUTTON_ENC8 0 0
BUTTON_ENC9 0 0
BUTTON_ENC10 0 0
BUTTON_ENC11 0 0
BUTTON_ENC12 0 0
BUTTON_ENC13 0 0
BUTTON_ENC14 0 0
BUTTON_ENC15 0 0
BUTTON_ENC16 0 0
 
 
##################################################
# Button behaviour
# 0: active mode as long as button pressed
/trunk/apps/sequencers/midibox_seq_v4/hwcfg/midiphy_lh/MBSEQ_HW.V4
576,7 → 576,30
BUTTON_DIRECT_BOOKMARK16 0 0
 
 
# Encoder buttons (currently hard-coded to FAST function)
 
# SR Pin
BUTTON_ENC_DATAWHEEL M8C 2
BUTTON_ENC_BPM 0 0
 
BUTTON_ENC1 M1A 0
BUTTON_ENC2 M1A 1
BUTTON_ENC3 M1A 2
BUTTON_ENC4 M1A 3
BUTTON_ENC5 M5A 4
BUTTON_ENC6 M5A 5
BUTTON_ENC7 M5A 6
BUTTON_ENC8 M5A 7
BUTTON_ENC9 M1B 0
BUTTON_ENC10 M1B 1
BUTTON_ENC11 M1B 2
BUTTON_ENC12 M1B 3
BUTTON_ENC13 M5B 4
BUTTON_ENC14 M5B 5
BUTTON_ENC15 M5B 6
BUTTON_ENC16 M5B 7
 
 
##################################################
# Button behaviour
# 0: active mode as long as button pressed
653,4 → 676,4
ENC_BPM 0 0 DETENTED3
 
# the speed value for the BPM encoder which is used when the "FAST" function is activated
ENC_BPM_FAST_SPEED 3s
ENC_BPM_FAST_SPEED 3
/trunk/apps/sequencers/midibox_seq_v4/hwcfg/standard_v4/MBSEQ_HW.V4
564,6 → 564,30
BUTTON_DIRECT_BOOKMARK16 0 0
 
 
# Encoder buttons (currently hard-coded to FAST function)
 
# SR Pin
BUTTON_ENC_DATAWHEEL 0 0
BUTTON_ENC_BPM 0 0
 
BUTTON_ENC1 0 0
BUTTON_ENC2 0 0
BUTTON_ENC3 0 0
BUTTON_ENC4 0 0
BUTTON_ENC5 0 0
BUTTON_ENC6 0 0
BUTTON_ENC7 0 0
BUTTON_ENC8 0 0
BUTTON_ENC9 0 0
BUTTON_ENC10 0 0
BUTTON_ENC11 0 0
BUTTON_ENC12 0 0
BUTTON_ENC13 0 0
BUTTON_ENC14 0 0
BUTTON_ENC15 0 0
BUTTON_ENC16 0 0
 
 
##################################################
# Button behaviour
# 0: active mode as long as button pressed
/trunk/apps/sequencers/midibox_seq_v4/hwcfg/midiphy_rh/MBSEQ_HW.V4
576,7 → 576,30
BUTTON_DIRECT_BOOKMARK16 0 0
 
 
# Encoder buttons (currently hard-coded to FAST function)
 
# SR Pin
BUTTON_ENC_DATAWHEEL M8C 2
BUTTON_ENC_BPM 0 0
 
BUTTON_ENC1 M1A 0
BUTTON_ENC2 M1A 1
BUTTON_ENC3 M1A 2
BUTTON_ENC4 M1A 3
BUTTON_ENC5 M5A 4
BUTTON_ENC6 M5A 5
BUTTON_ENC7 M5A 6
BUTTON_ENC8 M5A 7
BUTTON_ENC9 M1B 0
BUTTON_ENC10 M1B 1
BUTTON_ENC11 M1B 2
BUTTON_ENC12 M1B 3
BUTTON_ENC13 M5B 4
BUTTON_ENC14 M5B 5
BUTTON_ENC15 M5B 6
BUTTON_ENC16 M5B 7
 
 
##################################################
# Button behaviour
# 0: active mode as long as button pressed
653,4 → 676,4
ENC_BPM 0 0 DETENTED3
 
# the speed value for the BPM encoder which is used when the "FAST" function is activated
ENC_BPM_FAST_SPEED 3s
ENC_BPM_FAST_SPEED 3
/trunk/apps/sequencers/midibox_seq_v4/hwcfg/antilog/MBSEQ_HW.V4
574,7 → 574,30
BUTTON_DIRECT_BOOKMARK16 0 0
 
 
# Encoder buttons (currently hard-coded to FAST function)
 
# SR Pin
BUTTON_ENC_DATAWHEEL 0 0
BUTTON_ENC_BPM 0 0
 
BUTTON_ENC1 0 0
BUTTON_ENC2 0 0
BUTTON_ENC3 0 0
BUTTON_ENC4 0 0
BUTTON_ENC5 0 0
BUTTON_ENC6 0 0
BUTTON_ENC7 0 0
BUTTON_ENC8 0 0
BUTTON_ENC9 0 0
BUTTON_ENC10 0 0
BUTTON_ENC11 0 0
BUTTON_ENC12 0 0
BUTTON_ENC13 0 0
BUTTON_ENC14 0 0
BUTTON_ENC15 0 0
BUTTON_ENC16 0 0
 
 
##################################################
# Button behaviour
# 0: active mode as long as button pressed
/trunk/apps/sequencers/midibox_seq_v4/hwcfg/tk/MBSEQ_HW.V4
564,6 → 564,30
BUTTON_DIRECT_BOOKMARK16 0 0
 
 
# Encoder buttons (currently hard-coded to FAST function)
 
# SR Pin
BUTTON_ENC_DATAWHEEL 0 0
BUTTON_ENC_BPM 0 0
 
BUTTON_ENC1 0 0
BUTTON_ENC2 0 0
BUTTON_ENC3 0 0
BUTTON_ENC4 0 0
BUTTON_ENC5 0 0
BUTTON_ENC6 0 0
BUTTON_ENC7 0 0
BUTTON_ENC8 0 0
BUTTON_ENC9 0 0
BUTTON_ENC10 0 0
BUTTON_ENC11 0 0
BUTTON_ENC12 0 0
BUTTON_ENC13 0 0
BUTTON_ENC14 0 0
BUTTON_ENC15 0 0
BUTTON_ENC16 0 0
 
 
##################################################
# Button behaviour
# 0: active mode as long as button pressed
/trunk/apps/sequencers/midibox_seq_v4/hwcfg/wilba/MBSEQ_HW.V4
567,7 → 567,30
BUTTON_DIRECT_BOOKMARK16 0 0
 
 
# Encoder buttons (currently hard-coded to FAST function)
 
# SR Pin
BUTTON_ENC_DATAWHEEL 0 0
BUTTON_ENC_BPM 0 0
 
BUTTON_ENC1 0 0
BUTTON_ENC2 0 0
BUTTON_ENC3 0 0
BUTTON_ENC4 0 0
BUTTON_ENC5 0 0
BUTTON_ENC6 0 0
BUTTON_ENC7 0 0
BUTTON_ENC8 0 0
BUTTON_ENC9 0 0
BUTTON_ENC10 0 0
BUTTON_ENC11 0 0
BUTTON_ENC12 0 0
BUTTON_ENC13 0 0
BUTTON_ENC14 0 0
BUTTON_ENC15 0 0
BUTTON_ENC16 0 0
 
 
##################################################
# Button behaviour
# 0: active mode as long as button pressed