IMA4 2016/2017 P19 : Différence entre versions

De Wiki de Projets IMA
(Rencontre avec M Prieux (18/02))
(Rencontre avec M Prieux (18/02))
Ligne 302 : Ligne 302 :
 
* Le mode live sera utilisé uniquement pour la composition des morceaux, il doit donc être le plus modulable possible
 
* Le mode live sera utilisé uniquement pour la composition des morceaux, il doit donc être le plus modulable possible
 
* Les morceaux ainsi composés seront écrit à l'aide du logiciel Ableton et générés au format MIDI. Nous devrons donc mettre au point une procédure automatique de traduction du code MIDI afin que ce dernier soit exploitable par la RPI
 
* Les morceaux ainsi composés seront écrit à l'aide du logiciel Ableton et générés au format MIDI. Nous devrons donc mettre au point une procédure automatique de traduction du code MIDI afin que ce dernier soit exploitable par la RPI
* Il n'est pas nécessaire de faire un ampli de puissance pour les HDDs car leur son sera capté par un micro, et mixé par le régisseur
+
* Il n'est pas nécessaire de faire un ampli de puissance pour les HDDs car le son qu'ils produisent sera capté par un micro, et mixé par le régisseur
  
 
== Fichiers Rendus ==
 
== Fichiers Rendus ==

Version du 1 mars 2017 à 16:31


Cahier des charges

Discussion du 09/12/16 avec M Redon :

  • Contrôle des lecteurs disquettes et HDD fonctionnel
  • Revoir la régulation de l'imprimante matricielle : potentiellement juste effectuer des tests "réponse à une entrée" pour établir la fonction de transfert de l'imprimante
  • Réussir à "faire croire" aux modems qu'ils communiquent via un serveur vocal : explorer la piste du module Pluscom skype/pstn gateway
  • Approfondir l'analyse des fichiers MIDI
  • Éventuellement chercher d'autres instruments !

Discussion du 26/01/17 avec M Roj :

  • Reprendre la configuration matérielle initialement choisie, à savoir :
    • Une RPI servant à rediriger le flux MIDI selon chaque canal (instrument)
    • Une arduino UNO en amont de chaque canal transcrivant le flux MIDI en données propre à chaque instrument
  • Récupération d'un fichier MIDI opérationnelle mais adapter le code au clavier de M Prieux
  • Caractériser l'imprimante matricielle
  • Amplification du son produit par les HDDs

Présentation générale du projet

Contexte

Pour ce projet nous reprendrons celui de l'an passé. Il s'agira de finir les tâches entamées et d'en commencer de nouvelles afin de fournir à l'artiste Lucas Prieux, un orchestre électronique fonctionnel et répondant à ses souhaits afin qu'il puisse assurer son spectacle Humains dans des conditions idéales.

Description du projet

Ce projet consiste à mettre au point un orchestre électronique, c'est à dire utiliser des appareils obsolètes tels qu'une imprimante matricielle, des disques durs, lecteurs de disques, scanners, modems,... afin de produire des sons joués par l'artiste via un clavier MIDI et de mettre au point une interface WEB afin de gérer les instruments déployés.

Objectif du projet

L'objectif est de compléter le travail effectuer l'an passé par nos camarades, il se divise en deux grandes parties :

  • Électronique : commander l'imprimante matricielle et les modems.
  • Informatique : analyser un fichier MIDI afin de générer la commande de nos divers instruments.

Choix techniques : matériel et logiciel

Nous reprendrons le matériel utilisé par le groupe de l'an dernier, à savoir :

  • Raspberry Pi
  • Des adaptateurs USB-MIDI avec 1 USB et 2 sorties MIDI_IN et MIDI_OUT
  • Instruments électroniques:
    • Lecteurs de disquettes
    • Disque dur
    • Imprimante matricielle
    • Modem 56k
    • Magnétoscope
    • Lecteurs CD/ROM
    • Scanner
    • Clavier MIDI

Calendrier prévisionnel

Liste des tâches à effectuer

Dans un premier temps nous souhaitons :

  • Analyser un fichier MIDI, afin de pouvoir traiter les données envoyées par le clavier MIDI et générer une commande adaptée à chaque instrument
    • Récupération du fichier
    • Isoler les informations utiles
    • Traiter ces informations de façon à générer une commande adaptée à chaque instrument (lecteur disquette, imprimante...)
  • Commander les modems 56k
  • Commander l'imprimante matricielle
  • Commander le scanner

Calendrier

A la vue des premières recherches que nous avons effectuées et du temps nécessaire à la réalisation de chaque tâche:

  • Vivian se consacrera principalement à l'analyse du fichier MIDI
  • Antoine s'occupera de commander les modems et l'imprimante matricielle

Feuille d'heures

Tâche Prélude Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Total
Définition cahier des charges 2H
Analyse de la norme du fichier MIDI 8H
Réunion avec Thomas Roj 2H
Récuperation d'un fichier MIDI existant 2H
Ecriture programme pour récupérer par octet les informations MIDI 4H
Prise en main du clavier MIDI 2H
Ecriture programme récupération note du clavier MIDI 4H
Reprise et amélioration du programme de contrôle de l'imprimante matricielle (mode graphique) 4H
Programmation imprimante matricielle (mode multipoints) 6H
Programmation imprimante matricielle (mode RLE) 6H
Programmation imprimante matricielle (mode bit image) 4H

Avancement du Projet

Semaine 1 (23/01 : 27/01)

Recherche à propos de la construction d'un fichier MIDI :
jchr.be
midi.org
D'après la spécification MIDI on distingue deux principaux types de message MIDI :
Message de statut permettant de choisir :

  • Une fonction : note on, note off, contrôle/change mode ...

Dans le cas d'un contrôle de note (note on/off) on peut préciser :

  • Un canal(1 à 16)
  • La hauteur de note (0 à 127)
  • Sa vélocité (0 à 127)

Message de contrôle permettant diverses fonctions de contrôle, de modulation de note, d'effets ...
Ces données sont précédées d'une entête de 14 octets :

  • 4 octets pour préciser le format du fichier (MIDI)
  • 4 octets pour définir la longueur de l'entête
  • 2 octets pour définir le format ( single, double track ou multiple song)
  • 2 octets pour définir le nombre de pistes
  • 2 octets pour définir le nombre de subdivisions découpant un temps (beat)

Chaque octet transmis est précédé d'un bit de start et suivi d'un bit de stop.

Semaine 2 (31/01 : 03/02)

  • Découverte imprimante matricielle et du langage ESC/P 2
  • Reprise du programme de test débuté l'an dernier

Semaine 3 (06/02 : 10/02)

  • Large modification du programme de test pour l'imprimante matricielle
  • Établissement d'un protocole de test afin d'identifier les paramètres influant sur le son généré
  • Récupération d'un fichier midi en hexadécimal grâce aux commandes shell
  • Création de programme pour récupérer les informations utiles

Semaine 4 (13/02 : 18/02)

Comparaison des fonctionnalités des imprimantes EPSON (celle utilisée est une LQ-570+) :

Caractéristiques LQ 570+


Mémo caractéristiques LQ-570+ :
Built in features DIP switch settings 1 DIP switch settings 2
Test du mode de commande multipoint. On teste indépendamment de faire varier :

  • les caractères envoyés
  • le nombre de fois qu'ils sont envoyés
  • la table de caractère utilisée
  • écriture en mode double-strike

On perçoit (très) difficilement des variations de hauteur de note en jouant avec ces paramètres. On va alors tester le mode RLE Compressed Raster Graphics.
Test du mode Compressed Raster Graphics :

  • Les sons produits sont similaires à ceux produits en mode multipoint, bien que les données (caractères à imprimer) envoyées soient différentes. Une lecture plus approfondi de chaque commande ESC/P 2 est nécessaire.


  • Prise en main du clavier MIDI et de son fonctionnement grâce à l'utilitaire aseqdump.
  • Début d'écriture d'un programme pour récupérer les notes du clavier à l'aide de la bibliothèque aslo/asoundlib.
    • initialisation du port
    • création du port
    • connection sur le port
    • lecture d'un événement
    • fermeture du port

Rencontre avec M Prieux (18/02)

Durant cette discussion nous avons pu faire connaissance avec M Prieux et éclaircir quelques points du CDCF :

  • Analyse spectrale (sonore) de chaque instrument afin que les notes jouées sur le clavier MIDI correspondent exactement à la note jouée par l'instrument en question i.e. la touche correspondant à un LA sur le clavier produira la note LA (audible)
  • Associer (au moins) une octave (10 disponibles sur le clavier) à un canal MIDI i.e. à un instrument (ou à un groupe d'instruments identiques)
  • Utiliser des sons percussifs, par exemple, le bruit produit lorsque le chariot de l'imprimante matricielle arrive en butée
  • Le mode live sera utilisé uniquement pour la composition des morceaux, il doit donc être le plus modulable possible
  • Les morceaux ainsi composés seront écrit à l'aide du logiciel Ableton et générés au format MIDI. Nous devrons donc mettre au point une procédure automatique de traduction du code MIDI afin que ce dernier soit exploitable par la RPI
  • Il n'est pas nécessaire de faire un ampli de puissance pour les HDDs car le son qu'ils produisent sera capté par un micro, et mixé par le régisseur

Fichiers Rendus