Jump to content

Menu buttons at MB64e


LX
 Share

Recommended Posts

Hi

Can I move shift register 1 for menu buttons and ENC left/right to another shift register for example 8? I don't know how to setup in main.asm.

There is only setup for pins

 #define DEFAULT_DIN_MENU_EXEC		7	; menu exec button assigned to DIN pin #7
  #define DEFAULT_DIN_MENU_SNAPSHOT	6	; menu snapshot button assigned to DIN pin #4
  #define DEFAULT_DIN_MENU_RIGHT	5	; NOT USED - overlayed by datawheel
  #define DEFAULT_DIN_MENU_LEFT		4	; NOT USED - overlayed by datawheel

but how to set the shift register? I try set pin instead #7 to #56, but dont work. If we understand interval for DIN pins from 0 to 127, but I'm afraid the interval is only from 0 to 7 for 1st shift register.

Thanks for some ideas

LX

Link to comment
Share on other sites

but how to set the shift register? I try set pin instead #7 to #56, but dont work. If we understand interval for DIN pins from 0 to 127, but I'm afraid the interval is only from 0 to 7 for 1st shift register.

no, you can defined button numbers from 0 to 127 - hm, maybe the button function is overruled by an encoder entry? How does your encoder table look like?

Best Regards, Thorsten.

Link to comment
Share on other sites

Thanks for reply, I find setup witch I didnt saw before... ???

#define DEFAULT_ENC_DATAWHEEL   0

I thought that this setup is only 0 for no ENC and 1 for enable ENC but I can set number of ENC. I'm reading too quikly :-\

So I have same problems with hardware I must find where is mistake...

B.R. LX

Link to comment
Share on other sites

HW problem solved  :) but I have still problem with setup  :(

This is my map of SR:

SR:      1  2  3  4  5  6  7    8    9  10 11 12  13 14 15  16

DINs:  o--o--o--o--o--o--o----o----o--o--o--o--o--o--o--o

          (---- Note 56x -----) (Menu)  (----- ENC 30x -------)

SR:      1  2  3  4  5  6  7      8    9  10 11 12  13 14 15  16

DOUTs:  o--o--o--o--o--o--o----o----o--o--o--o--o--o--o--o

            (---- Note 56x -----) (Menu) (---- LEDRings 30x ----)

Here is definition from main.asm

; MIOS Application
; MIDIbox64E
;
;
#ifndef SEPERATE_SETUP_FILE
; Hardware related setup:
;
; Number of connected encoders: 1-64
#define DEFAULT_NUMBER_ENCS	30	; number of connected encoders
; NOTE: the encoders have to be assigned to the DIN pins in mios_tables.inc
;
; Width of a group - normaly matches with the number of connected encoders, but
; the MB64E_LCD_PrintGroupNumber function in mb64e_bank.inc only supports 
; group widths which are a power of two (1, 2, 4, 8, 16, 32, 64)
#define DEFAULT_ENCODER_GROUP_WIDTH	4

; Number of connected buttons
; Allowed values: 1-64
#define DEFAULT_NUMBER_BUTTONS  64	; number of connected buttons
;
; debounce counter (see the function description of MIOS_SRIO_DebounceSet)
; Use 0 for high-quality buttons, use higher values for low-quality buttons
; NOTE: with a value > 0 the ledrings will flicker on every button movement!
#define DEFAULT_SRIO_DEBOUNCE_CTR 0
;
;
; A difficult decition: define here if you want to store many banks or many patches
; in the (optional) BankStick(s).
;    - Bank based  (PATCHMODE 0): 8 complete configurations are stored in each BankStick
;    - Patch based (PATCHMODE 1): 1 configuration bank and 128 patches are stored in each BankStick
#define DEFAULT_PATCHMODE 0
;
; Chip Select Number of BankStick which should be used:
;    -1: allows the MIDIbox to address up to 8 BankSticks (-> 64/8 Banks)
;     0: the MIDIbox addresses only the BankStick with CS=0 (-> 8/1 Banks)
;     ...
;     7: the MIDIbox addresses only the BankStick with CS=7 (-> 8/1 Banks)
;     all others: don't use any BankStick
;
; * -1 is the most prefered choice, also when only one BankStick is connected.
; * specify a CS number 0...7 when you are using different Applications 
;   with your MIDIbox in order to assign a dedicated EEPROM to it.
; * specifiy any other number to disable BankStick support at all
#define DEFAULT_BANKSTICK_CS	-1
;
; Channel which is used to send a program change event on bank changes
; and to listen for bank change requests
; Allowed values: 1-16
#define DEFAULT_BANK_PRG_CHNG_CHANNEL 16
;
; Channel which is used to send a program change event on patch changes
; and to listen for patch change requests
; Allowed values: 1-16
#define DEFAULT_PATCH_PRG_CHNG_CHANNEL 15
;
; here you can change the default device ID
#define DEFAULT_DEVICE_ID	0x00
;
; if this option is enabled (1), the DEFAULT_DEVICE_ID won't be used, but
; it will be automatically derived from the MIOS Device ID instead
#define DEFAULT_AUTO_DEVICE_ID	1
;
; For MIDI activity monitor: define the DOUT pins for the Rx and Tx LED
#define DEFAULT_MIDI_MONITOR_ENABLED 0  ; if 1, the Tx/Rx LEDs are enabled
#define DEFAULT_MIDI_RX_LED 0x40	; DOUT SR#9, pin D0
#define DEFAULT_MIDI_TX_LED 0x41	; DOUT SR#9, pin D1
;
; --> define the DOUT registers which are connected to the LED rings here:
; --> the shift registers are counted from one here - means: 1 for the first, 2 for the second, etc...
; --> please mark unused ledrings with 0
#define LEDRINGS_SR_ENC1_16_CATHODES_1	9	; first shift register with cathodes of the first 16 LED rings
#define LEDRINGS_SR_ENC1_16_CATHODES_2	10	; second shift register with cathodes of the first 16 LED rings
#define LEDRINGS_SR_ENC1_16_ANODES_1	11	; first shift register with anodes of the first 16 LED rings
#define LEDRINGS_SR_ENC1_16_ANODES_2	12	; second shift register with anodes of the first 16 LED rings

#define LEDRINGS_SR_ENC17_32_CATHODES_1	13	; first shift register with cathodes of the first 16 LED rings
#define LEDRINGS_SR_ENC17_32_CATHODES_2	14	; second shift register with cathodes of the first 16 LED rings
#define LEDRINGS_SR_ENC17_32_ANODES_1	15	; first shift register with anodes of the first 16 LED rings
#define LEDRINGS_SR_ENC17_32_ANODES_2	16	; second shift register with anodes of the first 16 LED rings

#define LEDRINGS_SR_ENC33_48_CATHODES_1	0	; first shift register with cathodes of the first 16 LED rings
#define LEDRINGS_SR_ENC33_48_CATHODES_2	0	; second shift register with cathodes of the first 16 LED rings
#define LEDRINGS_SR_ENC33_48_ANODES_1	0	; first shift register with anodes of the first 16 LED rings
#define LEDRINGS_SR_ENC33_48_ANODES_2	0	; second shift register with anodes of the first 16 LED rings
;
#define LEDRINGS_SR_ENC49_64_CATHODES_1	0	; first shift register with cathodes of the first 16 LED rings
#define LEDRINGS_SR_ENC49_64_CATHODES_2	0	; second register with cathodes of the first 16 LED rings
#define LEDRINGS_SR_ENC49_64_ANODES_1	0	; first shift register with anodes of the first 16 LED rings
#define LEDRINGS_SR_ENC49_64_ANODES_2	0	; second shift register with anodes of the first 16 LED rings

;; see the documentation of MIOS_ENC_SpeedSet for the purpose of these values
#define DEFAULT_ENC_SPEED_NORMAL_MODE   MIOS_ENC_SPEED_NORMAL
#define DEFAULT_ENC_SPEED_NORMAL_DIV	0
#define DEFAULT_ENC_SPEED_SLOW_MODE     MIOS_ENC_SPEED_SLOW
#define DEFAULT_ENC_SPEED_SLOW_DIV	6	; (6: increment on every 7th step)
#define DEFAULT_ENC_SPEED_FAST_MODE     MIOS_ENC_SPEED_FAST
#define DEFAULT_ENC_SPEED_FAST_DIV	2	; (2: divider = 2^(7-2) = 32)

; This DIN map allows you to customize the MB64E application to different hardwares
; The MB64E dump structure allows the use of up to 64 buttons, they are grouped to 8 buttons per shift register
; Define the used shift registers for the buttons here
; the shift registers are counted from one - means: 1 for the first, 2 for the second, etc...
; mark unused button groups with 0
	;; NOTE: by default, the first two DIN shift registers are used for the encoders
#define DEFAULT_DIN_SR_PIN_01_08	1
#define DEFAULT_DIN_SR_PIN_09_16	2
#define DEFAULT_DIN_SR_PIN_17_24	3
#define DEFAULT_DIN_SR_PIN_25_32	4
#define DEFAULT_DIN_SR_PIN_33_40	5
#define DEFAULT_DIN_SR_PIN_41_48	6
#define DEFAULT_DIN_SR_PIN_49_56	7
#define DEFAULT_DIN_SR_PIN_57_64	8
;
; Datawheel for menu navigation/data entry connected or not?
; A datawheel can replace the left/right buttons!
; if 0: datawheel not connected
; if >= 1: encoder number assigned to datawheel function
; don't forget to check the pins of the datawheel in MIOS_ENC_PIN_TABLE (-> mios_tables.inc or setup_*.asm)
; it has to be connected to pin 4 and 5 by default
#define DEFAULT_ENC_DATAWHEEL   30
;
; DIN pin numbers of menu buttons
#if DEFAULT_ENC_DATAWHEEL == 0
  #define DEFAULT_DIN_MENU_EXEC		1	; menu exec button assigned to DIN pin #7
  #define DEFAULT_DIN_MENU_RIGHT	2	; menu right button assigned to DIN pin #6
  #define DEFAULT_DIN_MENU_LEFT		3	; menu left button assigned to DIN pin #5
  #define DEFAULT_DIN_MENU_SNAPSHOT	4	; menu snapshot button assigned to DIN pin #4
#else
  #define DEFAULT_DIN_MENU_EXEC		58	; menu exec button assigned to DIN pin #7
  #define DEFAULT_DIN_MENU_SNAPSHOT	59	; menu snapshot button assigned to DIN pin #4
  #define DEFAULT_DIN_MENU_RIGHT	56	; NOT USED - overlayed by datawheel
  #define DEFAULT_DIN_MENU_LEFT		57	; NOT USED - overlayed by datawheel
#endif
;
; This DOUT map allows you to customize the MB64E application to different hardwares
; The MB64E dump structure allows the use of up to 64 LEDs, they are grouped to 8 LEDs per shift register
; Define the used shift registers for the LEDs here
; the shift registers are counted from one - means: 1 for the first, 2 for the second, etc...
; mark unused LED groups with 0
	;; NOTE: by default, the first four DOUT shift registers are used for the encoders
#define DEFAULT_DOUT_SR_PIN_01_08	1
#define DEFAULT_DOUT_SR_PIN_09_16	2
#define DEFAULT_DOUT_SR_PIN_17_24	3
#define DEFAULT_DOUT_SR_PIN_25_32	4
#define DEFAULT_DOUT_SR_PIN_33_40	5
#define DEFAULT_DOUT_SR_PIN_41_48	6
#define DEFAULT_DOUT_SR_PIN_49_56	7
#define DEFAULT_DOUT_SR_PIN_57_64	8
;
;
; Some menus are providing the possibility to use 16 "general purpose" buttons
; for selecting a parameter - e.g. the Bank Select menu allows to directly change the
; Bank with these buttons. So long as you stay in this menu, the normal function of
; these buttons (triggering MIDI or SFB events) is disabled
; Define the two shift registers which are assigned to this function here:
; 0 disables the GP buttons (not recommented!)
#define DEFAULT_GP_DIN_SR0	0	; first GP DIN shift register assigned to SR#2
#define DEFAULT_GP_DIN_SR1	0	; second GP DIN shift register assigned to SR#3
;
; above these buttons LEDs should be mounted to visualize the selected parameter
; (e.g. to visualize the bank which corresponds with the buttons below)
; Define the two shift registers which are assigned to this function here:	
; 0 disables the GP LEDs (not recommented!)
#define DEFAULT_GP_DOUT_SR0	0	; first GP DOUT shift register assigned to SR#5
#define DEFAULT_GP_DOUT_SR1	0	; second GP DOUT shift register assigned to SR#6
;
; with following settings it is possible to center the screen on 2x20 and 2x40 LCDs
; see also the functional description of MIOS_LCD_YAddressSet
					; recommented values:
					; 2x16 | 2x20 | 4x20 | Comments
					; -----+------+------+----------
#define DEFAULT_YOFFSET_LINE0	0x00	; 0x00 | 0x02 | 0x42 | cursor pos: 0x00-0x0f
#define DEFAULT_YOFFSET_LINE1	0x40	; 0x40 | 0x42 | 0x16 | cursor pos: 0x40-0x4f
#define DEFAULT_YOFFSET_LINE2	0x14	; 0x14 | 0x16 | 0x02 | cursor pos: 0x80-0x8f (not used yet)
#define DEFAULT_YOFFSET_LINE3	0x54	; 0x54 | 0x56 | 0x56 | cursor pos: 0xc0-0xcf (not used yet)
;
; The morphing function uses addresses within the MIOS address range which are 
; reserved for the AIN handler. 
; NOTE: morphing is automatically disabled if analog pots/faders are connected
#define DEFAULT_MORPH_FUNCTION_ENABLED 0
;
; Although MIDIbox64E has been designed for rotary encoders, it can also handle with
; up to 64 pots/faders or up to 8 motorfaders.
; Pots and faders are mapped to the "encoder" entries 64-128.
; Example: if group width is 16, and group 1 is selected, encoders are using
; entry 1-16, and pots are using entry 64-70
; NOTE: morphing is automatically disabled if analog pots/faders are connected
#define DEFAULT_NUMBER_AIN		0
;
; you could enable the multiplexers here to test this application
; with a MIDIbox64 based hardware
; if 0: no multiplexers (a *must* when MF module connected)
; if 1: use multiplexers
#define DEFAULT_ENABLE_AIN_MUX		0
;
; motorfaders connected?
; if 0: MF module disabled
; if 1: MF module enabled
#define DEFAULT_ENABLE_MOTORDRIVER	0
;
; The well known motorfader calibration values -- can also be changed "online" in the calibration menu
#define DEFAULT_MF_PWM_DUTY_UP	  0x01	; PWM duty cycle for upward moves   (see http://www.ucapps.de/mbhp_mf.html)
#define DEFAULT_MF_PWM_DUTY_DOWN  0x01	; PWM duty cycle for downward moves (see http://www.ucapps.de/mbhp_mf.html)
#define DEFAULT_MF_PWM_PERIOD     0x03	; PWM period                        (see http://www.ucapps.de/mbhp_mf.html)
;
;
; following settings configure the touch sensors
; The DIN shift register to which the 8 touch sensors are connected has to be defined here
;    Shift Register 9-16: touch sensor changes won't trigger the MBMF button handler
;                         no MIDI event will be sent
;    Shift Register 1-8:  touch sensor changes will trigger the MBMF button handler
;    0:                   touch sensor disabled
#define DEFAULT_TOUCH_SENSOR_SR		0
;
; Now define one of three behaviours (note: value can be changed "online" in the TS mode menu)
; The TS mode works independent from the MBMF button handler, means: use TOUCH_SENSOR_SR >= 8
; to suspend the motors w/o allocating a button function
; 
; TOUCH_SENSOR_MODE EQU 0: no additional action when touch sensor pressed/depressed
; TOUCH_SENSOR_MODE EQU 1: the motor will be suspended via MIOS when the appr. touch sensor 
;                          is pressed, so that it will not be moved on incoming MIDI events
; TOUCH_SENSOR_MODE EQU 2: like mode 1, additionally no MIDI event will be sent when the
;                          touch sensor is *not* pressed.
; 
; Mode "1" is used by default to avoid circular troubleshooting requests in the MIDIbox forum from people
; who don't read this information before starting the application.
; Mode "2" should be the prefered setting if your touch sensors are working properly
#define DEFAULT_TOUCH_SENSOR_MODE	1
;
; The touch sensor sensitivity (can also be changed "online" in the "Touch Sensor" menu)
#define	DEFAULT_TOUCH_SENSOR_SENSITIVITY 3
#endif
Here is mios_tables.inc
MIOS_MPROC_EVENT_TABLE
	;; entry 0x00-0x0f
	MT_ENTRY  0xb1, 0x00
	MT_ENTRY  0xb1, 0x01
	MT_ENTRY  0xb1, 0x02
	MT_ENTRY  0xb1, 0x03
	MT_ENTRY  0xb1, 0x04
	MT_ENTRY  0xb1, 0x05
	MT_ENTRY  0xb1, 0x06
	MT_ENTRY  0xb1, 0x07
	MT_ENTRY  0xb1, 0x08
	MT_ENTRY  0xb1, 0x09
	MT_ENTRY  0xb1, 0x0a
	MT_ENTRY  0xb1, 0x0b
	MT_ENTRY  0xb1, 0x0c
	MT_ENTRY  0xb1, 0x0d
	MT_ENTRY  0xb1, 0x0e
	MT_ENTRY  0xb1, 0x0f

	;; entry 0x10-0x1f	
	MT_ENTRY  0xb1, 0x10
	MT_ENTRY  0xb1, 0x11
	MT_ENTRY  0xb1, 0x12
	MT_ENTRY  0xb1, 0x13
	MT_ENTRY  0xb1, 0x14
	MT_ENTRY  0xb1, 0x15
	MT_ENTRY  0xb1, 0x16
	MT_ENTRY  0xb1, 0x17
	MT_ENTRY  0xb1, 0x18
	MT_ENTRY  0xb1, 0x19
	MT_ENTRY  0xb1, 0x1a
	MT_ENTRY  0xb1, 0x1b
	MT_ENTRY  0xb1, 0x1c
	MT_ENTRY  0xb1, 0x1d
	MT_ENTRY  0xb1, 0x1e
	MT_ENTRY  0xb1, 0x1f

	;; entry 0x20-0x2f
	MT_ENTRY  0xb1, 0x20
	MT_ENTRY  0xb1, 0x21
	MT_ENTRY  0xb1, 0x22
	MT_ENTRY  0xb1, 0x23
	MT_ENTRY  0xb1, 0x24
	MT_ENTRY  0xb1, 0x25
	MT_ENTRY  0xb1, 0x26
	MT_ENTRY  0xb1, 0x27
	MT_ENTRY  0xb1, 0x28
	MT_ENTRY  0xb1, 0x29
	MT_ENTRY  0xb1, 0x2a
	MT_ENTRY  0xb1, 0x2b
	MT_ENTRY  0xb1, 0x2c
	MT_ENTRY  0xb1, 0x2d
	MT_ENTRY  0xb1, 0x2e
	MT_ENTRY  0xb1, 0x2f

	;; entry 0x30-0x3f
	MT_ENTRY  0xb1, 0x30
	MT_ENTRY  0xb1, 0x31
	MT_ENTRY  0xb1, 0x32
	MT_ENTRY  0xb1, 0x33
	MT_ENTRY  0xb1, 0x34
	MT_ENTRY  0xb1, 0x35
	MT_ENTRY  0xb1, 0x36
	MT_ENTRY  0xb1, 0x37
	MT_ENTRY  0xb1, 0x38
	MT_ENTRY  0xb1, 0x39
	MT_ENTRY  0xb1, 0x3a
	MT_ENTRY  0xb1, 0x3b
	MT_ENTRY  0xb1, 0x3c
	MT_ENTRY  0xb1, 0x3d
	MT_ENTRY  0xb1, 0x3e
	MT_ENTRY  0xb1, 0x3f
MIOS_ENC_PIN_TABLE
	;; encoders 1-16
	;;        SR  Pin  Mode
	ENC_ENTRY  9,  0,  MIOS_ENC_MODE_DETENTED	; V-Pot 1
	ENC_ENTRY  9,  2,  MIOS_ENC_MODE_DETENTED	; V-Pot 2
	ENC_ENTRY  9,  4,  MIOS_ENC_MODE_DETENTED	; V-Pot 3
	ENC_ENTRY  9,  6,  MIOS_ENC_MODE_DETENTED	; V-Pot 4
	ENC_ENTRY  10,  0,  MIOS_ENC_MODE_DETENTED	; V-Pot 5
	ENC_ENTRY  10,  2,  MIOS_ENC_MODE_DETENTED	; V-Pot 6
	ENC_ENTRY  10,  4,  MIOS_ENC_MODE_DETENTED	; V-Pot 7
	ENC_ENTRY  10,  6,  MIOS_ENC_MODE_DETENTED	; V-Pot 8
	ENC_ENTRY  11,  0,  MIOS_ENC_MODE_DETENTED	; V-Pot 9
	ENC_ENTRY  11,  2,  MIOS_ENC_MODE_DETENTED	; V-Pot 10
	ENC_ENTRY  11,  4,  MIOS_ENC_MODE_DETENTED	; V-Pot 11
	ENC_ENTRY  11,  6,  MIOS_ENC_MODE_DETENTED	; V-Pot 12
	ENC_ENTRY  12,  0,  MIOS_ENC_MODE_DETENTED	; V-Pot 13
	ENC_ENTRY  12,  2,  MIOS_ENC_MODE_DETENTED	; V-Pot 14
	ENC_ENTRY  12,  4,  MIOS_ENC_MODE_DETENTED	; V-Pot 15
	ENC_ENTRY  12,  6,  MIOS_ENC_MODE_DETENTED	; V-Pot 16

	;; encoders 17-32
	ENC_ENTRY  13,  0,  MIOS_ENC_MODE_DETENTED	; V-Pot 17
	ENC_ENTRY  13,  2,  MIOS_ENC_MODE_DETENTED	; V-Pot 18
	ENC_ENTRY  13,  4,  MIOS_ENC_MODE_DETENTED	; V-Pot 19
	ENC_ENTRY  13,  6,  MIOS_ENC_MODE_DETENTED	; V-Pot 20
	ENC_ENTRY  14,  0,  MIOS_ENC_MODE_DETENTED	; V-Pot 21
	ENC_ENTRY  14,  2,  MIOS_ENC_MODE_DETENTED	; V-Pot 22
	ENC_ENTRY  14,  4,  MIOS_ENC_MODE_DETENTED	; V-Pot 23
	ENC_ENTRY  14,  6,  MIOS_ENC_MODE_DETENTED	; V-Pot 24
	ENC_ENTRY  15,  0,  MIOS_ENC_MODE_DETENTED	; V-Pot 25
	ENC_ENTRY  15,  2,  MIOS_ENC_MODE_DETENTED	; V-Pot 26
	ENC_ENTRY  15,  4,  MIOS_ENC_MODE_DETENTED	; V-Pot 27
	ENC_ENTRY  15,  6,  MIOS_ENC_MODE_DETENTED	; V-Pot 28
	ENC_ENTRY  16,  0,  MIOS_ENC_MODE_DETENTED	; V-Pot 29
	ENC_ENTRY  8,  0,  MIOS_ENC_MODE_DETENTED	; Menu Left/Right
	ENC_EOT
	ENC_EOT 

With this setup is function:

DIN pins 1-16 are Note 1-16 its OK,  than DINs 17-20 are any direct control menu buttons (like bank select) ???, than DINs 21-32 are Note 5-16  ???, than DINs 33-48 are Note 1-16  ???, than DINs 49-64 are Note 1-16 and menu buttons(DINs 58,59) sending Note  :-[

Encoders function is OK to 16 than instead 17 number is 1...and continute to 12

30th ENC  sending Note instead controling menu.

I dont know how to set  :-[

it looks like some groups or something  :-\

thanks for some help. I know that will be some foolish mistake  ;)

LX

Link to comment
Share on other sites

menu enc problem solved  :D

I set menu enc to SR#16 and its ok.

problem with buttons solved - I didnt know about sysex setup MK_syx  ::) there I set all buttons by my way.

But I dont still understant how work Patches and Banks  :-\

Im right if I think that Bank is complete setup of MK_SYX - midibox64.syx

When I want save my MK_syx bank in bankscick I must upload it to core via midi and than copy from core to some place in bankstick by core menu settings.

What is mean patch? this is only midi event setting?

thanks for reply

B.R. LX

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...