Jump to content

réalisation d'une "interface" midi assez particulière...


Recommended Posts

Posted

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 aide

A+

Posted

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

Posted

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

Posted

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 :-[

Posted

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

pour 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_1

movlw    [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_2

movlw    (le canal de la note que tu veux au final)

call        MIOS_MIDI_TxBufferPut

movlw    (le numéro de la note que tu veux au final)

call        MIOS_MIDI_TxBufferPut

movf      MIOS_PARAMETER_3, 0

call        MIOS_MIDI_TxBufferPut

call        MIOS_MIDI_EndStream

TRANSP_note_2

movlw    (le numéro de la 2eme note  qui doit être transposée)

cpfseq    MIOS_PARAMETER_2, banked

goto TRANSP_note_3

movlw    (le canal de la note que tu veux au final)

call        MIOS_MIDI_TxBufferPut

movlw    (le numéro de la note que tu veux au final)

call        MIOS_MIDI_TxBufferPut

movf      MIOS_PARAMETER_3, 0

call        MIOS_MIDI_TxBufferPut

call        MIOS_MIDI_EndStream

TRANSP_note_3

idem...

ç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 -)

Posted

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

Posted

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

Posted

c'est ça,

1/ le "bootstrap loader" avec un programmateur de PIC

2/ le MIOS via MIDI (avec MIOS Studio)

3/l'application via MIDI (avec MIOS Studio)

et ça roule ;-)

Posted

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+

Posted

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 3

il te faut aussi remettre à zéro les reg. mios_parameter_1 2 et 3 quand ta fonction est finie

edite ton appli avec mplab (lien et tutoriel sur Ucapps.de), compile-la avec ce programme.

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