lthomas Posted August 29, 2007 Report Share Posted August 29, 2007 Bonjour, je débute dans la programmation des pics avec les cous de Bigonoff... Bon c'est pas évident...Je suis également musicien, et j'ai une douzaine de pads électroniques (avec sortie midi) que j'aimerai brancher sur une autre interface midi. Le problème c'est que les numéros des notes ne sont pas compatibles : les pads envoient 33, 45, 67,... et l'interface attend 55, 56, 57... par exemple. J'aimerai donc faire une interface midi permettant de changer le numéro de la note tout en conservant les messages note on et note off, ainsi que le paramètre vélocité. C'est assez simple, mais dure à faire (pour moi en tout cas)...Alors je suis à la recherche de routines d'envoi et de réception des messages midi en assembleur, pour que je puisse réaliser un programme pour un PIC16F628A assez façilement... USART ça ne me parle pas trop ! Si, en théorie ça va, mais dès qu'on passe à la pratique ça se gâte... Donc une routine d'envoie et une routine de réception qui fonctionnent me simplifiraient énromément la vie ! Est-ce que quelqu'un aurai ça ? A mois que quelqu'un ai d'autres idées ?Merci pour votre aideA+ Quote Link to comment Share on other sites More sharing options...
moxi Posted August 29, 2007 Report Share Posted August 29, 2007 tu peux t'aider pour ça des routines en C du midi-Router :http://www.ucapps.de/midi_router.htmltu trouvera une routine pour transposer les évènements entrants dans le fichier router.c de l'archive:http://www.ucapps.de/mios/midi_router_v1_1.zipsinon la MBseq fait ça trés bien aussi ;-) Quote Link to comment Share on other sites More sharing options...
lthomas Posted August 30, 2007 Author Report Share Posted August 30, 2007 merci Moxi pour ta réponse ! Mais tout ça c'est du chinois pour moi !! Y a pas plus simple pour les débutants ? Quote Link to comment Share on other sites More sharing options...
lthomas Posted September 2, 2007 Author Report Share Posted September 2, 2007 Bon ben je crois que je devrai me débrouiller seul...J'ai juste une question au niveau des signaux midis (exemple pour un note on sur canal1)Est-ce comme ça :.... - start bit - 10010001 - stop bit - ... - start bit - 0"num note" - stop bit - ... - start bit - 0"velocité" - stop bit - .......Ou alors comme ça :.... - start bit - 10010001 0"num note" 0"velocité" - stop bit - ...Faut-il envoyer les 3 octets en même temps ou un après l'autre ?Le niveau au repos est bien 0V ? Dans ce cas le start bit est un 1 ?Merci pour vos réponses Quote Link to comment Share on other sites More sharing options...
moxi Posted September 3, 2007 Report Share Posted September 3, 2007 ??? j'en sais rien...pourquoi n'utilise-tu pas un PIC avec le mios, à partir de là tu n'as plus qu'à utiliser les fonctions déjà existante du MIOS Quote Link to comment Share on other sites More sharing options...
lthomas Posted September 3, 2007 Author Report Share Posted September 3, 2007 Mais je suis d'accord mais je ne sais pas comment procéder, le MIOS c'est un programme ? C'est super compliqué ce qu'il ya sur le site ! Surtout que je suis nul en anglais :-[ Quote Link to comment Share on other sites More sharing options...
moxi Posted September 3, 2007 Report Share Posted September 3, 2007 salut, le "mios" c'est l'OS des midibox, une fois chargé (avec le bootstrap loader), il te reste à écrire une application que tu vas uploader dans le PIC via MIDI. pour charger le mios via MIDI, il te faut avant charger le "bootstrap loader" avec un programmateur de PIC.- tu télécharge le skeleton (page download)- tu y ajoutes ton code en utlisant les fonctions implémentée dans le Mios (celle dont tu as besoin existe déjà ):http://www.ucapps.de/cmios_fun.htmlpour chaque fonction il y a des exemples là .ensuite tu charge ton appli dans le PIC via MIDI.les fonction dont tu auras besoin:"USER_MPROC_NotifyReceivedEvent" pour récupérer le canal/numéro/velocité de note entrant, les trois byte seront mis dans MIOS_PARAMETER_1, MIOS_PARAMETER_2 et MIOS_PARAMETER_3"MIOS_MIDI_TxBufferPut" pour envoyer sur ta sortie MIDI une (autre) note exemple (pour l'idée juste):call USER_MPROC_NotifyReceivedEvent///ici tu peux déjà t'assurer que le message est bien un message de note en comparant la valeur du registre "MIOS_PARAMETER_1"///TRANSP_note_1movlw [le numéro de la 1ere des notes qui doit être transposée]//tu charge w avec le num. de note que tu veux modifiée///cpfseq MIOS_PARAMETER_2, banked//goto TRANSP_note_2movlw (le canal de la note que tu veux au final)call MIOS_MIDI_TxBufferPutmovlw (le numéro de la note que tu veux au final)call MIOS_MIDI_TxBufferPutmovf MIOS_PARAMETER_3, 0call MIOS_MIDI_TxBufferPutcall MIOS_MIDI_EndStreamTRANSP_note_2movlw (le numéro de la 2eme note qui doit être transposée)cpfseq MIOS_PARAMETER_2, bankedgoto TRANSP_note_3movlw (le canal de la note que tu veux au final)call MIOS_MIDI_TxBufferPutmovlw (le numéro de la note que tu veux au final)call MIOS_MIDI_TxBufferPutmovf MIOS_PARAMETER_3, 0call MIOS_MIDI_TxBufferPutcall MIOS_MIDI_EndStreamTRANSP_note_3idem...ça risque de pas marcher aussi simplement, c'est vraiment pour t'orienter...y'en a sûrement des plus calé ici qui pourront affiner tout ça -) Quote Link to comment Share on other sites More sharing options...
lthomas Posted September 3, 2007 Author Report Share Posted September 3, 2007 ah ok donc je programme une fois le pic avec l'OS puis je créé un autre programme !! C'est ce que je n'avais pas capté. Je vais regarder un peu les fonctions...J'aurai sans doute d'autres questions ! ;D Quote Link to comment Share on other sites More sharing options...
lthomas Posted September 3, 2007 Author Report Share Posted September 3, 2007 Bon alors je vais déjà faire un module core, puis programmer le pic avec le .hex qui se trouve dans le dossier burner de mios_update_v1_9f-1.zip c'est celà ? Et après je pourrai envoyer mon application par midi. Il faut aussi que j'installe MIOS Studio sur mon pc Quote Link to comment Share on other sites More sharing options...
moxi Posted September 3, 2007 Report Share Posted September 3, 2007 c'est ça, 1/ le "bootstrap loader" avec un programmateur de PIC2/ le MIOS via MIDI (avec MIOS Studio)3/l'application via MIDI (avec MIOS Studio)et ça roule ;-) Quote Link to comment Share on other sites More sharing options...
lthomas Posted September 4, 2007 Author Report Share Posted September 4, 2007 Bon maintenant pour écrire l'application en assembleur, en regardant ton exemple ça correspod à ce que je veux faire ! Mais pour écrire le .asm j'écris juste le programme comme ça ou il faut rajouter d'autres éléments genre initialisation, END etc... ? Une fois que j'ai mon .asm il faut que je le convertisse en .hex pour l'envoyer ? Si oui comment ?Merci ! Je commence à y voir plus claire ! :)A+ Quote Link to comment Share on other sites More sharing options...
moxi Posted September 5, 2007 Report Share Posted September 5, 2007 il faut définir les variables dans "app_defines.h"ensuite dans le fichier "main.asm" tu as une entrée "USER_MPROC_NotifyReceivedEvent", juste aprés tu appelle ta fonction, que tu mets dans un fichier séparé -qu'il faut déclarer dans le main.asm (à la fin) avec "include...."en fait par apport à l'exemple que je t'ai donné plus haut, je pense que tu n'as même pas besoin d'utiliser "call USER_MPROC_NotifyReceivedEvent", la fonction se fait dans la boucle principale, à partir de là , dans ta prog, tu commence directement à analyser les reg. mios_parameter_1 2 et 3il te faut aussi remettre à zéro les reg. mios_parameter_1 2 et 3 quand ta fonction est finieedite ton appli avec mplab (lien et tutoriel sur Ucapps.de), compile-la avec ce programme. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.