Orchestre électronique : Différence entre versions

De Wiki d'activités IMA
(Semaine 1)
(Semaine 1)
Ligne 94 : Ligne 94 :
 
<ul>
 
<ul>
 
<li> Découverte de la programmation des GPIO sur la RPi avec Python (bibliothèque RPi.GPIO)</li>
 
<li> Découverte de la programmation des GPIO sur la RPi avec Python (bibliothèque RPi.GPIO)</li>
<li> Toujours avec Python, nous réussissons à faire vibrer le moteur du lecteur de disquette (en utilisant une PWM et en contrôlant les bonnes broches du floppy disk - '''utilisation la méthode ChangeFrequency de la bibliothèque GPIO.PWM''')</li>
+
<li> Toujours avec Python, nous réussissons à faire vibrer le moteur du lecteur de disquette (en utilisant une PWM et en contrôlant les bonnes broches du floppy disk)<br />
 +
Dans une boucle conditionné par des exceptions (try/catch), nous faisons vibrer pendant un certain temps le moteur à des fréquences différentes, en utilisant alternativement les méthodes ChangeFrequency sur l'objet représentant la PWM (p.ChangeFrequency(220) par exemple), et en utilisant la bibliothèque time et la méthode sleep (time.sleep(<durée de la note>))<br /></li>
 
<li> Programme pouvant "approximativement" jouer la marche impériale (Star Wars). Petites photos :<br />
 
<li> Programme pouvant "approximativement" jouer la marche impériale (Star Wars). Petites photos :<br />
 
[[Fichier:floppy_disk.JPG | 500px | center]]<br />
 
[[Fichier:floppy_disk.JPG | 500px | center]]<br />

Version du 8 février 2016 à 14:30


Cahier des charges

Présentation générale du projet

Le projet s'inscrit dans la démarche artistique de M. Lucas PRIEUX, artiste marionnettiste. Son souhait est de montrer ce que les nouvelles technologies d'aujourd'hui nous apportent.
Le dossier de création de la pièce HUMAINS est disponible ici [[1]]

Objectif du projet

L'objectif final du projet est de créer un dispositif comprenant une entrée MIDI (standard pour le son), et des sorties sur lesquelles on brancherait des instruments électroniques du type scanner ou lecteur de disquettes.

Description du projet

Le projet se divise donc en différentes étapes :
- La première étape est de bien définir le cahier des charges avec l'artiste afin de connaître ses attentes sur ce projet
- la seconde étape va être de mettre en place un dispositif (Raspberry Pi) permettant de décoder la trame MIDI reçu sur l'entrée et d'afficher les notes jouées par les instruments
- la dernière étape s'appuiera sur les volontés de l'artiste et des encadrants.

Choix techniques : matériel et logiciel

Matériel nécessaire :

  • Raspberry Pi
  • Adaptateurs USB-MIDI avec 1 USB et 2 sorties MIDI_IN et MIDI_OUT disponible chez LDLC [[2]]
  • Instruments électroniques: du vieux matériel disponible ici en occasion pour pas cher:[[3]]
    • Lecteurs de disquettes
    • (vieux lecteurs disponibles au fabricarium)
    • Disque dur
    • (fabricarium peut-être)
    • Imprimante matricielle
    • Modem 56k
    • Magnétoscope
    • Lecteurs CD/ROM
    • (fabricarium toujours)

Calendrier prévisionnel

Avancement du Projet

Préparation du projet : Mise en place du cahier des charges

2/11/15 : Réunion avec les différents acteurs du projet afin de bien fixer les attentes, les volontés de ces derniers.
C'est également lors de cette réunion que l'on fixera le cahier des charges et le matériel nécessaire
Résumé de la réunion :
L'objectif de cette réunion était de fixer les attentes et les volontés du porteur du projet.
Dans un premier temps, nous avons discutés avec M.PRIEUX du contexte dans lequel était inséré ce projet.
Ensuite, nous avons discutés des fonctionnalités du dispositif. Nous lui avons soumis 2 idées :

  • Soit jouer en direct sur les instruments électroniques ce qui est joué sur un clavier
  • Soit pré-enregistrer une séquence d'instruments électroniques et de la re-jouer au moment voulu

M.PRIEUX a souhaité que ces 2 fonctionnalités soient intégrés au dispositif.

Il a également été question du coeur de notre dispositif. Nous nous sommes tous dit que si l'on utilisait un Arduino, il aurait été obligatoire d'ajouter en plus une Raspberry Pi pour y intégrer le logiciel. Nous avons donc conclus qu'utiliser une Raspberry Pi serait mieux pour éviter l'encombrement et pour disposer de plus de fonctionnalités.
Concernant la RP, une distribution Linux spécialisé pour le traitement du son a été évoqué.

Il a aussi été demandé d'étudier la plage de fréquences des différents appareils afin de répartir les notes sur les instruments.

Cahier des charges :
Le dispositif est donc composé de :

  • Une entrée MIDI afin de brancher un clavier
  • Une Raspberry Pi afin de déterminer les canaux MIDI et de réaliser l'interface Web
  • Une sortie MIDI pour venir y brancher un synthétiseur de son MIDI afin de synthétiser les sons impossibles à jouer avec les instruments électroniques (possibilité de mise en place d'une deuxième RP muni du logiciel Rosegarden [[4]]
  • Une carte électronique permettant de venir brancher les différents instruments électroniques

Notre dispositif devra donc avoir 2 fonctionnalités :

  • Une première fonctionnalité sera de jouer en direct les notes sortant d'un clavier MIDI
  • Une deuxième fonctionnalité sera de pré-enregistrer une séquence d'instruments électroniques et de la rejouer au moment voulu

Un petit schéma résumé s'impose :
Synopsis.jpg

Sons disponibles avec tout notre matériel :

Ici, un très joli bruit caractéristique d'un modem 56k (Ah, la nostalgie ...) : [[5]]
La, un très bon morceau joué sur lecteur de disquette : [[6]]
Et maintenant, l'impression (on dirait les machines à tickets de caisses ...) avec une imprimante matricielle : [[7]]
Le tout mis en oeuvre : [[8]]

Semaine 1

25/01/16 :

  • Réception du matériel (disques dur, lecteurs de disquette, lecteurs CD, scanner et imprimantes)
  • Découverte du fonctionnement des lecteurs de disquettes (brochage, pins à utiliser pour piloter le moteur)

27/01/2016 :

  • Découverte de la programmation des GPIO sur la RPi avec Python (bibliothèque RPi.GPIO)
  • Toujours avec Python, nous réussissons à faire vibrer le moteur du lecteur de disquette (en utilisant une PWM et en contrôlant les bonnes broches du floppy disk)
    Dans une boucle conditionné par des exceptions (try/catch), nous faisons vibrer pendant un certain temps le moteur à des fréquences différentes, en utilisant alternativement les méthodes ChangeFrequency sur l'objet représentant la PWM (p.ChangeFrequency(220) par exemple), et en utilisant la bibliothèque time et la méthode sleep (time.sleep(<durée de la note>))
  • Programme pouvant "approximativement" jouer la marche impériale (Star Wars). Petites photos :
    Floppy disk.JPG

    RPi.JPG

    La vidéo est à venir prochainement

Semaine 2

01/02/2016 :

  • Amélioration du programme permettant de jouer la marche impériale (utilisation de 2 tableaux : un contenant la fréquence des notes à jouer, et l'autre contenant la durée des notes)

03/02/2016 :

  • Début d'écriture d'un programme Python permettant de décoder un fichier MIDI --> Conclusion : Utilisation d'une bibliothèque au lieu de tout faire à la main
  • Test sur l'imprimante à aiguilles pour piloter le moteur --> SANS SUCCES (Communication série ?)

04/06/2016 :

  • Ecriture du programme communiquant avec l'imprimante a aiguilles en série avec la RPi (langage de description de page (PDL) Epson ESC/P2 pour envoyer les commandes en série à l'imprimante)

Liens

floppy drive music
Disk organ

Fichiers Rendus