je me lance dans la fabrication d’un midifilter (projet qui semble tomber dans les oublittes de midibox…) pour interfacer un pédalier midi sur un sampler, et en suivant la procédure décrite par thorsten, je tombe sur un os :
“open the .pjt file” > mon mplab v7.10 ne peut pas ouvrir ce type de fichier environnement … il ne peut que ouvrir un .mcp
Avez-vous une idée du pourquoi ? et du comment y remédier ? en installant une version antérieure ?
J’ai essayé en ouvrant tout les .asm et .inc et lancer la compil à la main, et le Build fail avec ce message :
Skipping link step. The project contains no linker script.
BUILD FAILED: Thu Sep 15 04:37:07 2005
Etant donné que je ne suis pas très familier avec la programmation (juste assez pour modifier les quelques lignes nécessaires à mon projet), je ne sais pas comment utiliser le “linker script”
Il me manque juste de quoi faire correctement une soustraction (ou un opération donna tle même résultat)
Le but étant de tranformer un message Program Change en message Note On
Voilà comment j’ai modifié le fichier proc.inc dans la partie concernée :
PROC_ReceivedCn
;; branch when PC number is 0x01
movf MIDI_LASTEVENT2, W
xorlw 0x01
bz PROC_ReceivedCn01
PROC_ReceivedCn01
 ;génération du message note on et midi channel identique
movf MIDI_LASTEVENT0, W ;récupère le message PC
????????????? ;Soustraire 0x30 pour transformer PC en Noteon
call MIDI_SendByte ;en gardant le canal midi
 ;génération du note number
movf MIDI_LASTEVENT2, W ;récupère le program number
addlw 0x23 ;Ajouter 0x23 au program number (voir table)
call MIDI_SendByte
 ;génération de la vélocité
movlw 0xFF ;vélocité max 0XFF par défaut
call MIDI_SendByte
 ;transformation terminée
return
Le seul point noire c’est la ligne avec les ??? : Soustraire 0x30 du registre W pour transformer PC en Noteon
Cn <> 1100 nnnn (message program change sur canal midi ‘n’)
9n <> 1001 nnnn (message note on sur canal midi ‘n’)
Cette “soustraction” est surement possible par le truchement de quelques AND, XOR, OR … pour éviter l’utilisation de SUBWF ou autre
(…après qq minutes de bataillage…)
Il semblerait que ca fonctionne en utilisant : XORLW 0x50
ca inverse les 2 bits qui font la différence entre le Cn et le 9n sans changer les nnnn … ca a l’air bon
on va dire que c’est bon, je suis content de vous avoir tenu au courant de mes tribulations
Reste à voir s’il ne sera pas nécessaire d’envoyer un message note off ensuite, ce qui est une autre histoire !