Jump to content

Recommended Posts

Posted

just a question: in midibox 64E, along with the encoder, i mounted also analog pots.

but: is there a specific reason why in this mios release it was not included the pot behaviour like in the midibox 64? (snap/relative/parallax mode)

i was thinking of trying to port the changes from MB64 to MB64E, in order to get pot behaviour also here...

did someone already did that?

i did a rapid search and found that the pot behaviour reference appears only in:

app_defines.h

cs_m_potmode

mb64_lcd

mb64_pots

if i make the changes only in these parts of the routines, will it work?

Posted
but: is there a specific reason why in this mios release it was not included the pot behaviour like in the midibox 64? (snap/relative/parallax mode)

yes, no free memory for all this stuff

Best Regards, Thorsten.

Posted

uhm...

that is not encouraging!! :-)

anyway, what i'd be interested into is only adding the snap mode by default (i.e. the analog pots always behaves in that mode) for the pots of my midibox 64e...

i guess that the code to be used is this one (from mb64_pots.inc):


MB64_POT_ConvSnap
	;; "snap" mode selected: "soft-takeover"

	;; branch depending on clockwise or counter clockwise turn
	;; means: last value <= new value
	movf	MB64_POT_LAST_VALUE, W, BANKED
	IFLEQ	MB64_POT_NEW_VALUE, BANKED, rgoto MB64_POT_ConvSnap_CClockwise
MB64_POT_ConvSnap_Clockwise
	;; pot has been moved clockwise

	;; exit if if new value <= active value
	movf	INDF0, W
	IFLEQ	MB64_POT_NEW_VALUE, BANKED, rgoto MB64_POT_Conv_DontSend

	;; exit if active value >= last value
	IFGEQ	MB64_POT_LAST_VALUE, BANKED, rgoto MB64_POT_Conv_DontSend

	;; else continue
	rgoto	MB64_POT_ConvBypass

MB64_POT_ConvSnap_CClockwise
	;; pot has been counter clockwise
	;; exit if if new value >= active value
	movf	INDF0, W
	IFGEQ	MB64_POT_NEW_VALUE, BANKED, rgoto MB64_POT_Conv_DontSend

	;; exit if active value <= last value
	IFLEQ	MB64_POT_LAST_VALUE, BANKED, rgoto MB64_POT_Conv_DontSend

	;; else continue
	rgoto	MB64_POT_ConvBypass

	;; ------------------------------------------------------------------

MB64_POT_ConvBypass
	;; save new value in active value
	movff	MB64_POT_NEW_VALUE, INDF0

	;; ------------------------------------------------------------------
MB64_POT_Conv_DontSend
	andlw	0x00		; (set zero bit)
	return

that is to be included, in some way, into mb64e_fader.inc  in this position:
;; --------------------------------------------------------------------------
;;  This function is used to send a fader value
;;  Input:
;;     o fader number in MB64E_CURRENT_ENTRY
;;     o absolute position in WREG
;; --------------------------------------------------------------------------
MB64E_FADER_Send
	;; store current position in TMP1
	movwf	TMP1

	;; scale value depending on Min/Max entry
	;; calc address to Min/Max entry:
	call	MB64E_ADDR_FaderEntry
	;; select the 3rd byte
	movlw	3-1
	addwf	MB_ADDRL, F

	;; scale value:
	;; copy min value to MB64E_ENTRY_MIN_VALUE
	;; copy max value to MB64E_ENTRY_MAX_VALUE
	;; move fader value to WREG
	call	MB64E_BANK_Read
	movff	WREG, MB64E_ENTRY_MIN_VALUE
	call	MB64E_BANK_Read
	movff	WREG, MB64E_ENTRY_MAX_VALUE
	movf	TMP1, W
	call	MB64E_FADER_ScaleValue

	;; store result in MB64E_FADER_NEW_VALUE
	movff	WREG, MB64E_FADER_NEW_VALUE

	;; get pointer to FADER_VALUE_xx register
	call	MB64E_FSR_FaderValue

	;; store value in MB64E_FADER_VALUE
	movff	INDF0, MB64E_FADER_LAST_VALUE

	;; copy the new value into this location for the next call
	movff	MB64E_FADER_NEW_VALUE, INDF0

	;; if new value == old value, branch to the end
	SET_BSR	MB64E_BASE
	movf	MB64E_FADER_NEW_VALUE, W, BANKED
	xorwf	MB64E_FADER_LAST_VALUE, W, BANKED
	bz	MB64E_FADER_Send_End

	;; store new value
	call	MB64E_FSR_FaderValue
	movff	MB64E_FADER_NEW_VALUE, INDF0

	;; send MIDI value
	call	MB64E_MIDI_SendFaderEvent

	;; clear request fader pos update
	bcf	MB_STAT3, MB_STAT3_FADER_UPDATE_REQ
	bcf	MB_STAT3, MB_STAT3_FADER_SOFT_UPDATE_REQ

	;; request display update
	bsf	CS_STAT, CS_STAT_DISPLAY_UPDATE_REQ
	;; reset the cursor of the CS
	call	CS_MENU_ResetCursor

MB64E_FADER_Send_End
	return

however, i make a lot of confusion when i try to understand what the code exacly does... and where to insert the new code...

moreover, if i use new variables or subroutines, i feel that i have to declare them somewhere and to assign memory locations.....

maybe, i could use variables needed for the motorfaders/touchsensors, which i don't use

perhaps in appdefines.h (which for me is a nightmare!!!!)

some help!??!

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...
×
×
  • Create New...