Contrôleur Midi - romainbulot.comromainbulot.com/dave/cv/files/Controleur_MIDI.pdf · I –...

13
Contrôleur Midi Projet Microcontrôleur Florian Derue Ashvin Silvestro David Robert ING4 – SE4

Transcript of Contrôleur Midi - romainbulot.comromainbulot.com/dave/cv/files/Controleur_MIDI.pdf · I –...

Contrôleur Midi Projet Microcontrôleur

Florian Derue Ashvin Silvestro David Robert ING4 – SE4

Table des matières I – Introduction ............................................................................................................................................ 3  

II – présentation du projet ........................................................................................................................ 3  

Qu’est-ce qu’un contrôleur Midi ? ...................................................................................................... 3  

Notre Contrôleur Midi ......................................................................................................................... 3  

Principes techniques ............................................................................................................................... 4  

III - Fonctionnement .................................................................................................................................... 5  

1.   Récupération des notes .................................................... Error! Bookmark not defined.  

2.   Affichage Matricielle ....................................................................................................................... 6  

3.   Communication Midi ...................................................................................................................... 9  

IV - Réalisation .......................................................................................................................................... 12  

Difficulté techniques ............................................................................................................................ 12  

Pourquoi ce projet ? ............................................................................................................................ 12  

Séparation du travail : ......................................................................................................................... 12  

Arduino .................................................................................................................................................. 12  

Code ....................................................................................................................................................... 12  

Conclusion ................................................................................................................................................. 13  

I – Introduction

Dans le cadre du système embarqué, maitriser les utilisations d’un microcontrôleur est une étape fondamentale dans la construction des compétences essentielles à cette majeure. Ce projet a alors pour but de nous confronter aux possibilités, mais aussi les limites des microcontrôleurs. C’est ainsi que le thème laissé libre, permet une recherche avancée et non cadré des utilisations, ce qui permet de laisser cours a une créativité qui peut s’avérer louable pour la qualité d’un projet.

II – présentation du projet

Qu’est-ce qu’un contrôleur Midi ?

C’est un appareil électronique utilisé dans le domaine de la musique, il permet faciliter la commande des logiciels musicaux, et permettre le jeu des notes via cet outil. Il est forcément donc couplé avec un ordinateur. Le Contrôleur Midi ne transmet alors que des commandes, informations, que l’ordinateur lui les interprètes et agit en fonctions. Par exemple, un le contrôleur Midi peut être un piano qui envoie les notes au logiciel de musique qui s’occupe de la jouer avec l’instrument de notre choix. Il en existe maintenant de toute sorte.

Notre Contrôleur Midi Principe : l’appareil lit, de manière synchronisé avec un logiciel, des notes qu’on active/désactive. Visuel : nous nous sommes inspirés d’un contrôleur célèbre : le Monôme C’est une matrice de boutons lumineux. Le Séquenceur lit les notes activées de gauche à droite en allumant progressivement les boutons. Voici un exemple en ligne : http://tonematrix.audiotool.com/ Et le site du Monome : http://monome.org/

Principes techniques

v Envoyer les notes de manière synchronisée à l’ordinateur.

v Afficher les notes et la lecture sur une matrice 8x8

v On active/désactive les note via un KeyPad 4x4

Ainsi nous avons réalisé une maquette rendant compte de ces 3 parties :

Ce projet à l’avantage de présenter 3 grandes parties, ainsi la séparation des parties a été facile. Nous avons réalisé un diagramme montrant l’interaction des différentes fonctions au niveau du code à réaliser :

III - Fonctionnement Nous avons pour des soucis de simplicité utilisé l’interface EasyPic 4 de mikroelectronika, basée sur un microcontrôleur PIC16F877A. Nous avons utilisé une série de composants additionnels spécifiques qu’on détaillera dans chaque partie.

1. Gestion des notes Les objectifs de cette partie sont de : - reconnaitre les touches actives d'un keypad (matrice de boutons) - effectuer les actions correspondantes

Le keypad ne possède, bien-entendu, pas une connexion pour chaque bouton (16), mais seulement 8, de la manière suivante :

Le principe de fonctionnement est simple : il faut effectuer un multiplexage sur les rangés et du "polling" sur les colonnes.

Le multiplexage : les rangés (B0 à B3) sont par défauts à l'état bas (0v), on les actives les une après les autres (5v). Un signal reçut sur une des entrées (B4 à B7) ne peut alors venir que de la rangée active. Le "polling" (poll = sondage) : le programme relève l'état des entrées (B4 à B7) une part une entre chaque changement de rangé active. Ce processus s'effectue en boucle. L'appuie sur une touche étant très lent par rapport à la vitesse du PIC on peut considérer que pendant l'activation d'une touche l'état de chaque bouton est "testé". Dans notres cas seules 11 boutons sont utilisés : 8 notes, play, changement de colonne et reset. Le programme est donc aussi chargé : - d'assigner une variable contenant les caractéristiques de chaque note : on/off et vélocité (puissance : caractéristique imposée par le protocole MIDI) - d'assigner une variable indiquant la colonne active, si la lecture n'est pas activée. Sinon la colonne active est modifié par l'interface MIDI.

II. Interface visuelle Pour avoir une représentation visuel de la séquence nous avons choisis d’utiliser une Matrice à leds 8x8.

v Les lignes représentent les notes (Do, Ré, Mi, Fa, Sol, La, Si, Do)

v Les colonnes représentent les divisions temporelles

Que fait-on ? On allume les notes activées, et toute la colonne qui correspond au moment où les notes de la colonne sont jouées Comment ? On utilise l’intégralité du PORTB pour les lignes, et 4 pins du PORTC pour les colonnes. En effet il faut multiplexer pour l’affichage : Par exemple si on veut allumer la Led (1,1) il faut alimenter la première colonne, mettre toute les lignes au même potentiel que la colonne, sauf la led ciblée, qu’on mettra a un état bas, ce qui permettra le passage d’un courant Par persistance rétinienne, l’exécution multiple dès cette opération pour toutes led par le pic donnera l’impression d’un affichage instantané et statique malgré une exécution successive. Comme on allume qu’une seule colonne en même temps nous avons alors pensé a utilisé un décodeur BCD, ce qui nous permis de réduire le nombre de pins demandé de 16 à 12 et d’augmenter la fluidité d’affichage. Principe du décodeur BCD : Reçois un binaire de 4 bit via les pins de l’easyPIC et allume un pin correspondant. Exemple : on envoi 0001 sur le PORTC, cela allume le pin 1 du BCD

Ainsi cette fonction, travaillant sur le visuel, et donc à vitesse humaine, nous avons choisi de l placer dans l’exécution de la boucle principal (Main).

1. Communication Midi Qu’est-ce que le MIDI ?

v C’est un protocole de communication série

v Il est unidirectionnel

v il utilise un baud rate de 31250

Une table de message codé sur 8,16 et 32 bits est utilisée comme convention pour la communication des infos. En voici un extrait.

Comment est réalisée la connexion avec le PC ? Même Si maintenant la plupart des contrôleurs midi utilisent une connexion USB, le Protocole Midi à son câble dédié :

Que doit réaliser la partie midi du projet ?

v On doit envoyer les notes de la colonne « activée » à l’ordinateur

v Recevoir un « tick » de synchro de l’ordinateur

v Connaître l’état de lecture du logiciel.

Comment ? Afin de communiquer on avons utiliser une interface Midi/USB, car nous aurions pu communiquer via USB, mais le développement d’un driver logiciel ne nous a paru une perte de temps et hors-sujet. Sur l’easyPIC : Nous utilisons RC6 et RC7 ( Tx / Rx ) avec le branchement suivant deux câble ( Rx et Tx )

Au niveau du PC : nous avons utilisé une carte Son/midi Maudio qui elle est branché en USB

Que fait le Code ? Pour la Synchro : On utilise une interruption, car c’est un événement à vitesse machine, et la plus grande vitesse possible est requise. A chaque réception du mot 0xF8 qui correspond au tick de synchro on incrémente la colonne activée (on change de colonne sur la matrice). Pour les Note : On envoie un signal « note on » qui permet de jouer la note voulu Il est composé de 3 mots de 8 bits :

v 0x90, event note on

v 0xKK, avec KK, un nombre (entre 0 et 127) qui correspond à la note

v 0xKK, correspond à la vélocité (force de la note)

Mais au changement de colonne on doit « arrêter la note » par un signal « Note Off » composé de la même manière que le « note on » si ce n’est le premier mot de 8bits : 0x80 Il y a donc une notion de On/off pour rendre compte de la longueur.

IV - Réalisation

Difficulté techniques Seule la partie de l’affichage nous a réellement posé un problème de par sa complexité au niveau du multiplexage, et de l’agencement. En effet le branchement est lourd, et nous avons eu des problèmes de led « fantômes » qui s’allument légèrement alors qu’elles ne devraient pas. Cela est dû au multiplexage et aux interférences de masses. Nous avons réglé ce problème en rajoutant des délais imperceptible a l’œil nu. La matrice à leds est un composant fragile et a malheureusement été grillé le jour de la démonstration. Au niveau de la lecture des notes un petit délai de latence était perceptible par rapport au logiciel. Ceci est dû aux microcontrôleur (trop lent).

Pourquoi ce projet ? Nous aimons la musique, et ce choix s’est fait naturellement, aussi nous pensons que ce projet est une opportunité excellente pour expérimenter tous les domaines d’utilisations d’un microcontrôleur : La communication, l’interactivité machine/homme via les boutons et l’affichage.

Séparation du travail : Nous étions 3, et ce projet comportait 3 grande parties, même si nous avons participé au 3 parties, nous avions en charge chacun une partie : David Robert : Maquettage et gestion des notes Florian Derue : Interface visuelle Ashvin Silvestro : Communication MIDI

Arduino Une simple remarque concernant notre démarche : nous avons d'abord testé nos éléments (keypad et matrice à leds) sur arduino.

Code Le projet MPLAB, en C (Hi-Tech compiler) est dans le ZIP fourni en annexe du mail.

Conclusion

Pour conclure, nous pouvons déjà dire que nous avons beaucoup aimé réalisé ce projet, car il nous a permis de connaître une application concrète du cours et des TP, d’allier notre passion artistique à notre travail d’ingénieur, d’utiliser une bonne partie des domaines d’utilisation du PIC, d’en connaître les limitations et découvrir ses avantages. Ce projet permettra ainsi d’alourdir notre bagage de connaissances personnelles, et notre capacité de conception et de réalisation.