Jump to content

Besoin d'aide pour contrôler Ableton Live!


Beber
 Share

Recommended Posts

Bonjour à tous !

Je viens de construire ma première MBox, mais je n'arrive pas à contrôler Ableton Live !!!  :-\

Je me suis renseigné sur le forum et sur d'autres sites, j'ai vu qu'il fallait utiliser des protocoles midi comme Mackie Control .

J'ai donc téléchargé des .hex mais je dois avouer que je suis un peu largué !  ???

Pour info, ma mbox est composée d'un module AIN, un DIN, et bien sur le CORE.

J'ai placé 20 Boutons poussoirs et 31 potars dont 4 faders.

Le problème c'est que le logiciel reconnait les boutons mais pas les potars!

Je voulais donc savoir si vous pouviez m'aider à programmer mon pic pour que je puisse enfin passer des heures sur ma Mbox à triturer tous les boutons !  ;D

Voici le programme qui est installé en ce moment:

 ==========================================================================

;; ---[ MIOS header file ]---
#include "mios.h"

;; ---[ useful macros ]---
#include "macros.h"

;; ---[ vectors to MIOS functions (never change!) ]---
#include "mios_vectors.inc"

;; ---[ user hooks (never change!) ]---
#include "user_vectors.inc"

;; ==========================================================================
;;  General Application Settings
;; ==========================================================================

;; ---[ variables used by application ]---
#include "app_defines.h"

;; these settings are used in lc_init.inc to initialize the drivers
#define LC_EMULATION_ID	0x15		; use 0x10 for Logic Control
					;     0x11 for Logic Control XT
					;     0x14 for Mackie Control
					;     0x15 for Mackie Control XT (?)

#define LCD_USE_SECOND	1		; the emulation handles with two character LCDs if 1
#define LCD_EMU_COL     55		; number of emulated columns (characters per line)
					;    o graphical LCDs: use 55 (like a Logic Control)
					;    o one 2x40 LCD: use 40   (unfortunately..)
					;    o two 2x40 LCDs: use 55  (like a Logic Control)

#define INITIAL_DISPLAY_PAGE	0	; initial display page after startup (choose your favourite one: 0-3)

#define ENABLE_MOTORDRIVER	1	; if 0, MF module will not be enabled
#define NUMBER_MOTORFADERS	8	; number of motorfaders
#define MOTORFADERS_DEADBAND	3	; so called "deadband" of motorfaders
#define AIN_DEADBAND		3	; so called "deadband" of ADC
#define MOTORFADERS_PWM_DUTY_UP	  0x01	; PWM duty cycle for upward moves   (see http://www.ucapps.de/mbhp_mf.html)
#define MOTORFADERS_PWM_DUTY_DOWN 0x01	; PWM duty cycle for downward moves (see http://www.ucapps.de/mbhp_mf.html)
#define MOTORFADERS_PWM_PERIOD    0x03	; PWM period                        (see http://www.ucapps.de/mbhp_mf.html)

#define MOTORFADER0_IS_MASTERFADER 0	; if set, the first motorfader acts as master fader

;; following setting configures the touch sensor behaviour. The touch sensors of the motorfaders
;; have to be assigned to the DIN pins in lc_io_tables.inc - the appr. IDs are:
;; ID_FADER_TOUCH_CHN1, ID_FADER_TOUCH_CHN2, ... ID_FADER_TOUCH_CHN8 (8 sensors)
;; If the master fader option is used, the ID is ID_FADER_TOUCH_MASTER
;; 
;; TOUCH_SENSOR_MODE EQU 0: touch sensor events (pressed/depressed) are forwarded to the host program
;;                          like specified in the Logic/Mackie Control specification
;; TOUCH_SENSOR_MODE EQU 1: like mode 0, but additionaly the motors will be suspended via MIOS, so
;;                          that they are not moved so long as the touch sensor is pressed
;; TOUCH_SENSOR_MODE EQU 2: like mode 0+1, additionally no fader move (PitchBender event) will be
;;                          sent when the touch sensor is not pressed.
;; 
;; The mode "1" 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 TOUCH_SENSOR_MODE	1

#define NUMBER_SHIFTREGISTERS	16	; length of shift register chain (max value: 16 == 128 DIN/DOUT pins)
#define SRIO_UPDATE_FREQUENCY	1	; we are using rotary encoders: use 1 ms!
#define TOUCHSENSOR_SENSITIVITY 3	; for the motorfader touchsensors


;; define the encoder speed modes and dividers here
#define ENC_VPOT_SPEED_MODE          2  ; 0 = slow, 1 = normal, 2 = fast
#define ENC_VPOT_SPEED_DIVIDER       2  ; see description about MIOS_ENC_SpeedSet

#define ENC_JOGWHEEL_SPEED_MODE      2  ; 0 = slow, 1 = normal, 2 = fast
#define ENC_JOGWHEEL_SPEED_DIVIDER   1  ; see description about MIOS_ENC_SpeedSet

;; used by lc_srio.inc
;; the schematic can be found under http://www.ucapps.de/midibox_lc/midibox_lc_ledrings_meters.pdf
;; NOTE: it's possible to display the meter values with the LEDrings by using ID_MBLC_*LEDMETER* buttons!
;; this feature saves you from adding additional LEDs to your MIDIbox
#define LEDRINGS_ENABLED	1	; if 1, ledrings are enabled
#define METERS_ENABLED		0	; if 1, meters are enabled
;; NOTE2: the shift registers are counted from zero here, means: 0 is the first shift register, 1 the second...
#define LEDRINGS_SR_CATHODES	8	; shift register with cathodes of the 8 LED rings
#define METERS_SR_CATHODES	9	; shift register with cathodes of the 8 meters
#define LEDRINGS_METERS_SR_ANODES_1 10	; first shift register with anodes of the 8 LED rings (and 8 meters)
#define LEDRINGS_METERS_SR_ANODES_2 11	; second shift register with anodes of the 8 LED rings (and 8 meters)

;; used by lc_leddigits.inc
;; the schematic can be found under http://www.ucapps.de/midibox_lc/midibox_lc_leddigits.pdf
;; NOTE: in principle this driver supports up to 16 LED digits, but only 12 of them are used
#define LEDDIGITS_ENABLED		0	; if 1, leddigits are enabled
#define LEDDIGITS_SR_SEGMENTS_1		12	; shift register which drives the segments of digit 7-0 (right side)
#define LEDDIGITS_SR_SELECT_1		13	; shift register which selects the digits 7-0
#define LEDDIGITS_SR_SEGMENTS_2		14	; shift register which drives the segments of digit 15-8 (left side)
#define LEDDIGITS_SR_SELECT_2		15	; shift register which selects the digits 15-8

;; the GPC (General Purpose Controller) feature can be activated by using ID_MBLC_*GPC* buttons
;; up to 128 midi events are defined in mios_tables.inc
;; the lables are defined in lc_gpc_lables.inc
;; optionally a MIDI event will be sent when entering/leaving this mode:
#define GPC_BUTTON_SENDS_MIDI_EVENT	0	; enables the "send button" feature

#define GPC_BUTTON_ON_EVNT0		0x9f	; on event, byte #0
#define GPC_BUTTON_ON_EVNT1		0x3c	; on event, byte #1
#define GPC_BUTTON_ON_EVNT2		0x7f	; on event, byte #2

#define GPC_BUTTON_OFF_EVNT0		0x9f	; off event, byte #0
#define GPC_BUTTON_OFF_EVNT1		0x3c	; off event, byte #1
#define GPC_BUTTON_OFF_EVNT2		0x00	; off event, byte #2

;; with MIOS V1.4 the MIDI Rx/Tx streams can be monitored, this gives you the possibility
;; to realize software controlled MIDI status LEDs - feature has to be enabled here:
#define MIDI_MONITOR_ENABLED		0	; if 1, the Tx/Rx LEDs are enabled
#define MIDI_MONITOR_RX_LED		0x00	; DOUT pin of the MIDI Rx LED
#define MIDI_MONITOR_TX_LED		0x01	; DOUT pin of the MIDI Tx LED

; ==========================================================================

;; ---[ configuration table for MIDI processor rotary encoders ]---
#include "mios_tables.inc"

;; ---[ Custom LCD driver ]---
#include "app_lcd.inc"


;; ==========================================================================
;;  Standard MIOS hooks
;; ==========================================================================

;; --------------------------------------------------------------------------
;;  This function is called by MIOS after startup to initialize the 
;;  application
;; --------------------------------------------------------------------------
USER_Init
	;; initialize application specific variables
	movlw	LC_EMULATION_ID		; Logic Control ID
	movwf	LC_ID
	clrf	LC_SYSEX_STATE
	clrf	LC_CURSOR
	clrf	LC_MTC_CURSOR

	;; init the MTC digits
	SET_BSR	LC_MTC_DIGIT_0
	movlw	'0'
	movwf	LC_MTC_DIGIT_0, BANKED
	movwf	LC_MTC_DIGIT_1, BANKED
	movwf	LC_MTC_DIGIT_2, BANKED
	movwf	LC_MTC_DIGIT_3, BANKED
	movwf	LC_MTC_DIGIT_4, BANKED
	movwf	LC_MTC_DIGIT_5, BANKED
	movwf	LC_MTC_DIGIT_6, BANKED
	movwf	LC_MTC_DIGIT_7, BANKED
	movwf	LC_MTC_DIGIT_8, BANKED
	movwf	LC_MTC_DIGIT_9, BANKED
	movlw	':'
	movwf	LC_MTC_DIGIT_C0, BANKED
	movwf	LC_MTC_DIGIT_C1, BANKED
	movwf	LC_MTC_DIGIT_C2, BANKED
	movlw	' '
	movwf	LC_MTC_DIGIT_SPACE, BANKED

	movlw	'R' - 0x40
	movwf	LC_STATUS_DIGIT_A, BANKED
	movlw	'T' - 0x40
	movwf	LC_STATUS_DIGIT_B, BANKED

#if LCD_USE_SECOND
	;; initialize the LCD: we allow graphical LCD and up to 2 character LCDs
	;; for the 2-character LCD option, we have to set the offset of 
	;; line 3 and line 4 to 0x80/0xc0
	movlw	0x00
	movwf	MIOS_PARAMETER1
	movlw	0x40
	movwf	MIOS_PARAMETER2
	movlw	0x80
	movwf	MIOS_PARAMETER3
	movlw	0xc0
	call	MIOS_LCD_YAddressSet
#endif

	;; use LC_STAT.LC_STAT_GLCD as indicator if graphical LCD
	;; or character LCD is connected
	bcf	LC_STAT, LC_STAT_GLCD
	call	MIOS_LCD_TypeGet
	skpz
	bsf	LC_STAT, LC_STAT_GLCD

	;; initialize the AIN driver
	movlw	NUMBER_MOTORFADERS
	call	MIOS_AIN_NumberSet
	call	MIOS_AIN_UnMuxed

	movlw	AIN_DEADBAND
	call	MIOS_AIN_DeadbandSet

#if ENABLE_MOTORDRIVER == 1
	;; initialize the MF driver
	call	MIOS_MF_Enable
	movlw	MOTORFADERS_DEADBAND
	call	MIOS_MF_DeadbandSet

	movlw	MOTORFADERS_PWM_DUTY_UP
	call	MIOS_MF_PWM_DutyCycleUpSet
	movlw	MOTORFADERS_PWM_DUTY_DOWN
	call	MIOS_MF_PWM_DutyCycleDownSet
	movlw	MOTORFADERS_PWM_PERIOD
	call	MIOS_MF_PWM_PeriodSet
#endif

	;; initialize the shift registers
	movlw	NUMBER_SHIFTREGISTERS
	call	MIOS_SRIO_NumberSet
	movlw	SRIO_UPDATE_FREQUENCY
	call	MIOS_SRIO_UpdateFrqSet
	movlw	TOUCHSENSOR_SENSITIVITY
	call	MIOS_SRIO_TS_SensitivitySet

	;; initialize encoder speed modes
	clrf	TMP1		; loop 8 times
USER_Init_EncSpeedLoop
	movlw	ENC_VPOT_SPEED_DIVIDER
	movwf	MIOS_PARAMETER2
	movlw	ENC_VPOT_SPEED_MODE
	movwf	MIOS_PARAMETER1
	movf	TMP1, W
	call	MIOS_ENC_SpeedSet

	incf	TMP1, F
	movlw	8-1
	cpfsgt	TMP1, ACCESS
	rgoto USER_Init_EncSpeedLoop

	movlw	ENC_JOGWHEEL_SPEED_DIVIDER
	movwf	MIOS_PARAMETER2
	movlw	ENC_JOGWHEEL_SPEED_MODE
	movwf	MIOS_PARAMETER1
	movlw	8
	call	MIOS_ENC_SpeedSet

	;; initialize the integrated MIDI merger
	movlw	MIOS_MIDI_MERGER_DISABLED
	call	MIOS_MIDI_MergerSet

	;; initialize the user timer (used for the meter handling)
	;; (see lc_led.inc)
	;; timer should be called every 20 ms == 200000 ticks
	;; since this value is greater than 16 bit (== 65535 max) we just
	;; use a 1:4 prescaler so the init value must be: 200000 / 4 == 50000
	;; (see also the MIOS_TIMER_Init documentation)
	movlw	50000 & 0xff		; low-byte
	movwf	MIOS_PARAMETER1
	movlw	50000 >> 8		; high-byte
	movlw	0x02			; use 1:4 prescaler
	call	MIOS_TIMER_Init

	;; init display page
	movlw	INITIAL_DISPLAY_PAGE
	movwf	LC_DISPLAY_PAGE

	;; update LEDs which have been assigned to MBLC specific functions
	call	LC_SFB_LED_Update

	;; request update of meters and ledrings
	movlw	0xff
	movwf	LC_METER_UPDATE_REQ	
	movwf	LC_LEDRING_UPDATE_REQ

	;; fill host and GPC message screen with spaces
	movlw	0x80
	movwf	TMP1
	lfsr	FSR0, MSG_HOST_BEGIN
	lfsr	FSR1, MSG_GPC_BEGIN
	movlw	' '
USER_Init_Msg_Loop1
	movwf	POSTINC0
	movwf	POSTINC1
	decfsz	TMP1, F
	rgoto	USER_Init_Msg_Loop1

	;; copy welcome message to msg buffer
	TABLE_ADDR USER_INIT_MSG_STR
	lfsr	FSR0, MSG_HOST_BEGIN
	tblrd*+
	movff	TABLAT, TMP1
USER_Init_Msg_Loop2
	tblrd*+
	movff	TABLAT, POSTINC0
	decfsz	TMP1, F
	rgoto	USER_Init_Msg_Loop2

	;; init rec/solo/mute status
	lfsr	FSR0, RSM_MSG_BEGIN
	movlw	8
	movwf	TMP1
	movlw	'-'
USER_Init_Msg_Loop3
	movwf	POSTINC0
	decfsz	TMP1, F
	rgoto	USER_Init_Msg_Loop3

	;; init sel status
	lfsr	FSR0, SEL_MSG_BEGIN
	movlw	8
	movwf	TMP1
	movlw	'.'
USER_Init_Msg_Loop4
	movwf	POSTINC0
	decfsz	TMP1, F
	rgoto	USER_Init_Msg_Loop4

	;; clear position offset of general purpose controller mode
	clrf	GPC_OFFSET

	return

	;;               <------------------------------------------------------>
USER_INIT_MSG_STR db 54, "xxxx---===< Logic Control Emulation ready. >===---xxxx"



;; --------------------------------------------------------------------------
;;  This function is called by MIOS in the mainloop when nothing else is to do
;; --------------------------------------------------------------------------
USER_Tick
	;; check meter update request flags
	call	LC_METERS_Handler

	;; check ledring update request flags
	call	LC_LEDRING_Handler

	return


;; --------------------------------------------------------------------------
;;  This function is periodically called by MIOS. The frequency has to be
;;  initialized with MIOS_Timer_Set
;;  Note that this is an interrupt service routine! Use FSR2 instead of FSR0
;;  and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible!
;; --------------------------------------------------------------------------
USER_Timer
	;; branch to Meter Timer
	goto	LC_LED_MeterTimer


;; --------------------------------------------------------------------------
;;  This function is called by MIOS when a debug command has been received
;;  via SysEx
;;  Input:
;;     o WREG, MIOS_PARAMETER1, MIOS_PARAMETER2, MIOS_PARAMETER3 like
;;       specified in the debug command
;;  Output:
;;     o return values WREG, MIOS_PARAMETER1, MIOS_PARAMETER2, MIOS_PARAMETER3
;; --------------------------------------------------------------------------
USER_MPROC_DebugTrigger
	return


;; --------------------------------------------------------------------------
;;  This function is called by MIOS when the display content should be 
;;  initialized. Thats the case during startup and after a temporary message
;;  has been printed on the screen
;; --------------------------------------------------------------------------
USER_DISPLAY_Init
	;; clear screen
	call	MIOS_LCD_Clear

	;; branch to LC_[GC]LCD_Init
	GOTO_IFCLR LC_STAT, LC_STAT_GLCD, ACCESS, LC_CLCD_Init
	goto	LC_GLCD_Init

;; --------------------------------------------------------------------------
;;  This function is called in the mainloop when no temporary message is shown
;;  on screen. Print the realtime messages here
;; --------------------------------------------------------------------------
USER_DISPLAY_Tick
	;; check if host/GPC message update has been requested
	btfss	LC_STAT, LC_STAT_MSG_UPDATE_REQ
	return
	;; yes:	clear request flag, print message
	bcf	LC_STAT, LC_STAT_MSG_UPDATE_REQ
	goto	LC_DISPLAY_Print_Msg


;; --------------------------------------------------------------------------
;;  This function is called by MIOS when a complete MIDI event has been received
;;  Input:
;;     o first  MIDI event byte in MIOS_PARAMETER1
;;     o second MIDI event byte in MIOS_PARAMETER2
;;     o third  MIDI event byte in MIOS_PARAMETER3
;; --------------------------------------------------------------------------
USER_MPROC_NotifyReceivedEvent
	;; continue at LC MPROC handler
	goto	LC_MPROC_NotifyReceivedEvent


;; --------------------------------------------------------------------------
;;  This function is called by MIOS when a MIDI event has been received
;;  which has been specified in the CONFIG_MIDI_IN table
;;  Input:
;;     o number of entry in WREG
;;     o first  MIDI event byte in MIOS_PARAMETER1
;;     o second MIDI event byte in MIOS_PARAMETER2
;;     o third  MIDI event byte in MIOS_PARAMETER3
;; --------------------------------------------------------------------------
USER_MPROC_NotifyFoundEvent
	;; update GPC value
	goto	LC_GPC_AbsValue_Set


;; --------------------------------------------------------------------------
;;  This function is called by MIOS when a MIDI event has not been completly
;;  received within 2 seconds
;; --------------------------------------------------------------------------
USER_MPROC_NotifyTimeout
	;; -> jump to "ActionInvalid" for a proper reset of the sysex parser
	goto	LC_SYSEX_ActionInvalid


;; --------------------------------------------------------------------------
;;  This function is called by MIOS when a MIDI byte has been received
;;  Input:
;;     o received MIDI byte in WREG and MIOS_PARAMETER1
;; --------------------------------------------------------------------------
USER_MPROC_NotifyReceivedByte
	;; -> continue at LC sysex parser
	goto	LC_SYSEX_Parser

;; --------------------------------------------------------------------------
;;  This function is called by MIOS before the transfer of a MIDI byte. 
;;  It can be used to monitor the Tx activity or to do any other actions
;;  (e.g. to switch a pin for multiplexed MIDI Outs) before the byte will 
;;  be sent.
;;  Note that this is an interrupt service routine! Use FSR2 instead of FSR0
;;  and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible!
;;  Input:
;;     o transmitted byte in WREG
;; --------------------------------------------------------------------------
USER_MIDI_NotifyTx
	;; branch directly to "midi_rxtx.inc"
	goto	MIDI_RXTX_NotifyTx

;; --------------------------------------------------------------------------
;;  This function is called by MIOS when a MIDI byte has been received.
;;  It can be used to monitor the Rx activity or to do any action - e.g.
;;  to react on realtime events like MIDI clock (0xf8) with a minimum latency
;;  Note that this is an interrupt service routine! Use FSR2 instead of FSR0
;;  and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible!
;;  Input:
;;     o received byte in WREG
;; --------------------------------------------------------------------------
USER_MIDI_NotifyRx
	;; branch directly to "midi_rxtx.inc"
	goto	MIDI_RXTX_NotifyRx


;; --------------------------------------------------------------------------
;;  This function is called by MIOS when an button has been toggled
;;  Input:
;;     o Button number in WREG and MIOS_PARAMETER1
;;     o Button value MIOS_PARAMETER2:
;;       - 1 if button has been released (=5V)
;;       - 0 if button has been pressed (=0V)
;; --------------------------------------------------------------------------
USER_DIN_NotifyToggle
	goto	LC_BUTTON_Handler

;; --------------------------------------------------------------------------
;;  This function is called by MIOS when an encoder has been moved
;;  Input:
;;     o Encoder number in WREG and MIOS_PARAMETER1
;;     o signed incrementer value in MIOS_PARAMETER2:
;;       - is positive when encoder has been turned clockwise
;;       - is negative when encoder has been turned counter clockwise
;; --------------------------------------------------------------------------
USER_ENC_NotifyChange
	goto	LC_ENC_Handler


;; --------------------------------------------------------------------------
;;  This function is called by MIOS before the shift register are loaded
;;  Note that this is an interrupt service routine! Use FSR2 instead of FSR0
;;  and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible
;; --------------------------------------------------------------------------
USER_SR_Service_Prepare
	;; ledrings/meters handler
	call	LC_LED_DOUT_Handler

#if LEDDIGITS_ENABLED
	;; leddigits handler
	call	LC_LEDDIGITS_Update
#endif

#if MIDI_MONITOR_ENABLED != 0
	;; MIDI Rx/Tx Monitor handler
	call	MIDI_RXTX_Handler
#endif

	return


;; --------------------------------------------------------------------------
;;  This function is called by MIOS after the shift register have been loaded
;;  Note that this is an interrupt service routine! Use FSR2 instead of FSR0
;;  and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible
;; --------------------------------------------------------------------------
USER_SR_Service_Finish
	return


;; --------------------------------------------------------------------------
;;  This function is called by MIOS when a pot has been moved
;;  Input:
;;     o Pot number in WREG and MIOS_PARAMETER1
;;     o LSB value in MIOS_PARAMETER2
;;     o MSB value in MIOS_PARAMETER3
;; --------------------------------------------------------------------------
USER_AIN_NotifyChange
	goto	LC_MF_FaderEvent


;; ==========================================================================
;;  standard (reusable) routines
;; ==========================================================================
#include "midi_rxtx.inc"

;; ==========================================================================
;;  Configuration
;; ==========================================================================

;; ---[ LC button/LED functions ]---
#include "lc_io_table.inc"

;; ---[ GPC Labels ]---
#include "lc_gpc_lables.inc"

;; ==========================================================================
;;  Application code (see comments in files)
;; ==========================================================================
#include "lc_glcd.inc"
#include "lc_display.inc"
#include "lc_clcd.inc"
#include "lc_sysex.inc"
#include "lc_mproc.inc"
#include "lc_buttons.inc"
#include "lc_sfb.inc"
#include "lc_enc.inc"
#include "lc_leds.inc"
#include "lc_leddigits.inc"
#include "lc_ledrings.inc"
#include "lc_meters.inc"
#include "lc_mf.inc"
#include "lc_hlp.inc"

#include "lc_cali.inc"
#include "lc_gpc.inc"

;; ==========================================================================
;;  Fonts and icons for graphical display
;; ==========================================================================
#include "lc_fonts.inc"

	END

C'est sans doute du grand n'importe quoi donc n'hésitez pas à me conseiller !

Merci d'avance.

Bertrand

Link to comment
Share on other sites

Déja merci pour ta réponse ! ;)

Alors en fait, j'ai pas de fader motorisé, c'est juste des faders classiques que j'ai connecté à mon module AIN4X.

Ensuite, j'ai quand même 2 potars et un fader que le logiciel reconnait, mais pas le reste du module AIN.

Et je comprends pas comment tout cela fonctionne....

Peux-tu répondre a mes quelques question  :

1- Comment je dois expliquer au PIC que j'ai 31 potars ?

2- Les valeurs que prend la course d'un potar va de 0 à 16352 ; Je croyais que c'était de 0 a 127 ... Qu'est-ce qui ne va pas ?

3- Si j'ai bien compris, un potar est considéré comme un PitchBend sur un canal. Comme il n'y a que 16 canaux, ça veut dire que je peux faire fonctionner que 16 potars a la fois ??

4- N'éxiste-t-il pas une application qui gère seulement des boutons et des potars sous Mackie ?

5- J'ai aussi un autre petit problème, quand j'ai conçu le design de la face avant, je pensais utiliser de petits faders que j'avais trouver sur ebay. Je n'avais pas fait attention qu'ils devaient faire 10k! J'ai du en acheter d'autres mais qui étaient beaucoup plus long... Je me retrouve donc avec 3 faders qui ont une course incomplète....  :-\

Comment puis-je faire pour numériser seulement la course utile ?

Voilà, ça fait beaucoup, je suis désolé....

Link to comment
Share on other sites

Alors en fait, j'ai pas de fader motorisé, c'est juste des faders classiques que j'ai connecté à mon module AIN4X.

si tu n'as pas le hardware correspondant à la LC, utilise plutôt l'appli mb64 ou 64e

1- Comment je dois expliquer au PIC que j'ai 31 potars ?

en editant le fichier main.asm:

; 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
[u]#define DEFAULT_NUMBER_AIN		[color=red]1[/color] <-----[/u]
;
; 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
[u]#define DEFAULT_ENABLE_AIN_MUX		[color=red]1[/color] <----[/u]

2- Les valeurs que prend la course d'un potar va de 0 à 16352

si tu as chargé l'appli LC, les faders envoie tjrs des message de pitchbend (14bit)

4- N'éxiste-t-il pas une application qui gère seulement des boutons et des potars sous Mackie ?

?? ...si tu veux vraiment rester sur la LC, tu peux tjrs désactiver les MF..

Comment puis-je faire pour numériser seulement la course utile ?

c'est quoi la taille des faders (les petits) pour laquelle ta façade est conçue? pareil j'en ai 2 ou trois à te dépanner..

sinon, je sais pas comment tu peux faire....

Link to comment
Share on other sites

si tu n'as pas le hardware correspondant à la LC, utilise plutôt l'appli mb64 ou 64e

Mais Ableton live ne va pas comprendre non ?  Il lui faut des protocoles particuliers comme :

Mackie

Oxygen

Ozone

Axiom ....

c'est quoi la taille des faders (les petits) pour laquelle ta façade est conçue?

La course est de 4,5 cm, mais je t'avoue que j'ai déja du repercer ma façade pour caler les nouveaux faders, et j'ai pas envie de la charcuter encore une fois ... a moins que la distance entre les perçages soit de 5,6 cm comme je l'avais prévu avec les petits faders..

en tous cas merci de proposer

Link to comment
Share on other sites

et pourquoi tu lui mettrais pas ça dans le ventre à ton core ?

http://www.ucapps.de/mios/ain64_din128_dout128_v2_0.zip

ensuite dans LIVE tu peux éditer un fichier pour ta propre surface de controle ou tu déclare en fait quel note, CC correspondent aux commandes de la mackie (page up/down des faders, les boutons de pan, les select/rec/mute, etc ..). Un utilitaire de lecture de message midi te sera utile comme midiox (PC) ou midi monitor sous OSX, afin de savoir ce qu'envoie ta boite.

Pour live va voir dans /user/library/preferences/ableton/live6,0,10/user remote scripts

Sous windows je connais pas.

Je l'ai fait pour une midibox custom, ça marchait. Depuis je me suis concentré sur ma mackie.

Sinon il reste le midi learn.

Link to comment
Share on other sites

et pourquoi tu lui mettrais pas ça dans le ventre à ton core ?

http://www.ucapps.de/mios/ain64_din128_dout128_v2_0.zip

J'ai essayé de faire ça, mais rien ne se passe du coté de live....  :-\

Je me demande si tout fonctionne bien du côté hardware.

Comment je peux savoir si tous les boutons et les potars fonctionnent ?

ensuite dans LIVE tu peux éditer un fichier pour ta propre surface de contrôle ou tu déclare en fait quel note, CC correspondent aux commandes de la mackie

Et comment on fait ça ???

Link to comment
Share on other sites

faut déclarer la midibox comme télécommande dans les ports IN et OUT des preferences de Live.

t'as midibox est sensée envoyer des messages Notes On/off quand t'appuies sur les boutons, des Control changes quand tu tritures les potards et elle allume ses LED quand tu lui envoies des Notes en MIDI.

MIDIOX MIDIOX MIDIOX !!!!

Le fichier "script" s'édite avec Notepad. Et tu le sauves. Il suffit de simplement lire les instructions indiquées à l'intérieur pour comprendre le fonctionnement.

Courage !

Link to comment
Share on other sites

pffffff je perds espoir.......  :'(

J'arrive a rien là !

Je comprends pas comment on programme le pic.....

Je sais même pas si tous mes potars et boutons marchent.

Par exemple quand j'appuie sur un bouton particulier j'ai droit au message :

00000011822472 ms | [90 00 7F] Channel 1: Note On C-1 velocity: 127

00000011822477 ms | [90 01 7F] Channel 1: Note On C#-1 velocity: 127

00000011822478 ms | [90 02 7F] Channel 1: Note On D-1 velocity: 127

00000011822478 ms | [90 03 7F] Channel 1: Note On D#-1 velocity: 127

00000011822645 ms | [90 00 00] Channel 1: Note On C-1 velocity: 0

00000011822646 ms | [90 01 00] Channel 1: Note On C#-1 velocity: 0

00000011822646 ms | [90 02 00] Channel 1: Note On D-1 velocity: 0

00000011822647 ms | [90 03 00] Channel 1: Note On D#-1 velocity: 0

alors que pour les autres j'ai juste:

00000011821566 ms | [90 05 7F] Channel 1: Note On F-1 velocity: 127

00000011821717 ms | [90 05 00] Channel 1: Note On F-1 velocity: 0

ensuite j'ai que 3 potars sur 31 qui me renvoient un signal

et encore, y'en a un qui renvoie n'importe quoi.

S'il vous plait aidez moiiiiiiiii !!!!

Link to comment
Share on other sites

Va faire tes devoirs comme lire la documentation, lire les F.A.Q. etc...

c'est pas faux, mais on va rester cool

alors , vu ton message midi, tu a ton bouton qui en fait est relié à 3 pins du 74hc165 (un court circuit en fait, que TU as créé). Donc, déjà, revérifier toutes tes liaisons éléctriques au multimètre en mode "bipbip", afin de voir que ton schéma électrique correspond bien à tes soudures.

Par expérience, 98% des erreurs sont dûes à ça.

Le reste de tes boutons semble OK.

Les potards sont sensés envoyer des messages de control change.

Je comprends pas comment on programme le pic.....

là tu déconnes, tu l'as programmé si tu as les massages correspondant. En sysex ou via miosstudio

Link to comment
Share on other sites

Ca va les gars, pas la peine de s'énerver...

Je suis loin d'être un super pro comme vous, et j'imagine que quand vous avez débuté vous aussi, vous avez rencontré beaucoup de difficultés a comprendre tous ça non ?

Enfin, merci quand même.

"Je vas faire mes devoirs" alors...

Link to comment
Share on other sites

ah! de la passion ! ;-)

beber, oui, méthode bip-bip, déjà ça règle les soucis côté materiel, aprés ça, tu pourras vite voir si tu as des soucis dans la config de ton appli...

le mieux, c'est effectivement de charger l'application 128din_128dout en premier...

Link to comment
Share on other sites

Re !

Bon j'ai vérifié les soudures, il y avait bien un problème !

J'avais oublié de connecté les pins du core Axx non utilisés a la masse....  ::)

Malgré ça, quand je tourne certains potars je reçois des infos sur plusieurs canaux...

Çà sent le faux contact a plein nez, mais j'ai tout vérifié en mode 'bip bip' et j'ai l'impression que c'est bon.

Vous pensez que ça vient de mauvaises soudures, ou bien de la programmation du pic ?

Link to comment
Share on other sites

Malgré ça, quand je tourne certains potars je reçois des infos sur plusieurs canaux...

c'est à dire? le même CC avec la même valeur sur different canaux midi, ou bien en tournant un potar ça transmet plusieurs cc differents?

as-tu bien mis sur "1" le flag "#define DEFAULT_ENABLE_AIN_MUX" dont on parlait il y a quelques jours?

si oui , es-tu sûr que la compilation c'est bien déroulée aprés les modifs de tes fichiers? (fait un "make clean" d'abord, puis un "make"..

Link to comment
Share on other sites

c'est à dire? le même CC avec la même valeur sur différent canaux midi, ou bien en tournant un potar ça transmet plusieurs cc différents?

en tournant un potar ça transmet plusieurs cc différents

Mais là c'est plus grave en fait....

Mes soudures n'arrêtent pas de se barrer !

Tu utilise quoi pour souder tes potars au module AIN ? Parce que j'avais lu qu'il fallait directement les souder sur le pcb sans utiliser de cavalier mais c'est vraiment trop casse c**** !

Ah et oui autre question : c'est quoi la meilleure méthode pour connecter l'alimentation aux potars?

Parce que moi, j'ai connecté le vd et le vs de chaque registre sur un des huit potars, et aprés j'ai fait des sortes de ponts entre les 7 potars qui restent. (oui c'est pas trés clair)

voilà pour aujourd'hui !  ;D

Link to comment
Share on other sites

Tu utilise quoi pour souder tes potars au module AIN ? Parce que j'avais lu qu'il fallait directement les souder sur le pcb sans utiliser de cavalier mais c'est vraiment trop casse c**** !

je pense que tu fait une confusion avec le fait que certains recommandent (notament pour l'audio) de ne pas utiliser de socket pour les AOPs et autre ICs, je vois pas trop la difference entre utiliser un SIL et souder directement le cable au PCB (sinon la prise de choux, comme tu dis..)

Mais là c'est plus grave en fait....

Mes soudures n'arrêtent pas de se barrer !

soigne ça d'abord! cherche sur le net, y'a des tutoriels pour bien souder et savoir distinguer une soudure foireuse d'une réussie...

Ah et oui autre question : c'est quoi la meilleure méthode pour connecter l'alimentation aux potars?

Parce que moi, j'ai connecté le vd et le vs de chaque registre sur un des huit potars, et aprés j'ai fait des sortes de ponts entre les 7 potars qui restent. (oui c'est pas trés clair)

http://www.ucapps.de/mbhp/mbhp_ainx4_64pots.pdf

ta méthode semble correcte..

en tournant un potar ça transmet plusieurs cc différents

des court-circuits, surement coté PCB, là ou tu as soudé tes cables directement sur le circuit..

et don't worry, ça finit tjrs par fonctionner, une MIDIbox!

Link to comment
Share on other sites

référence de connecteur
HE10 à sertir.

Smash en vend, mais tu vas attendre longtemps. Selectronic en vend, de bonne qualité. Radio saint quantin, plus cher, moins bon. Super pratique, faut le sertir à l'étau ou avec une pince multiple en étant très soigneux et très doux.

Pour tes soudures, un petit tuyau : l'étain va là où c'est chaud ... donc on chauffe la partie qui doit recevoir la soudure, on applique le fil d'étain sur la patte de composant et la pastille puis on retire vite le fer en laissant le fil appuyé, comme ça l'étain ne va pas sur le fer. C'est un coup de main à prendre, mais avec les trous métallisés or, c'est Rolls Royce.

Link to comment
Share on other sites

Bonjour à tous.

Depuis le dernier post, je me suis procuré les connecteur he10 suivants : http://fr.farnell.com/jsp/search/productdetail.jsp?SKU=3815778

J'ai tout ressoudé en faisant bien attention et.......... CA MARCHE TOUJOURS PAS !!!!!!!!!

J'ai pleins de messages aléatoires qui s'affichent...  :'(

J'avoue que là j'ai un peu du mal a comprendre.

Je sais que mes soudures sur la carte ain sont bonnes (mode bip bip), ça doit donc forcément venir des connexions au niveau des potars.

Mais avec les connecteurs je me doute que le problème ne vient pas de la soudure au niveau de la carte mais plutôt au niveau des pâtes des potars.

Y a t-il des erreurs classiques que j'aurais pu commettre ?

Link to comment
Share on other sites

les pins non utilisées des AIN, tu les a reliées à la masse ? t'as désactivé J5 ? les messages control change aléatoires c'est quand des pins sont restées libres alors qu'il devrait y avoir un potar branché dessus. tu as lu les explications de TK ?

Link to comment
Share on other sites

wai je me suis dis la même chose: j'ai bien relié à la masse les pins non utilisés et pareil pour le J5 que j'utilise pas.

Y'a certainement une mauvaise soudure qq part, mais je la trouve pas...

enfin bon, jvé de nouveau tout reprendre à zéro et on verra bien

a+

Link to comment
Share on other sites

Re !

Bon voilà ça marche enfin !

J'arrive a contrôler ableton mais... il y a encore un nouveau problème ! héhéhéhé  ;D

Je n'arrive plus a uploader les fichiers *.hex !

Je peux envoyer les fichiers *.syx mais j'ai pas compris comment on passe du fichier hex -> syx

Quelqu'un peut-il me donner la marche a suivre svp ?

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...