Partition Graphique - Jade Rouanet

De {}
Aller à la navigation Aller à la recherche

Introduction

Schéma2-CLAV-P.G.-PRINT.jpg

Visual Ambitus 03 est une des branches que je souhaite développer autour de la visualisation graphique de la musique. Il est davantage orienté vers la notation de la musique et s'intéresse particulièrement à la génération de partition graphique. Détaché du solfège et autre forme de langage existante, je cherche à expérimenter une forme de traduction de la musique qui laisse place à la subjectivité de l'interprète. À partir d'un programme qui s'inspire de la structure mathématique de la musique et des sons, il vise à imprimer une partition dont il déterminera la notation graphique.

Cette installation se compose donc d'un synthétiseur émettant des signaux analogiques et MIDI relié à un rapsberry Pi. Ce micro ordinateur traite les données de deux manières : - via Ableton ou un logiciel open source comme LMMS, traduisant les signaux en son et les transmettant à un ampli. - via processing, traduisant les signaux en forme graphique. Ces formes graphiques sont traduites en image bitmap et directement transmises à l'imprimante thermique, qui imprime en direct et en continu ce que le claviste joue.

Dans un premier temps, cette installation capture l'intégralité de l'intervention du claviste. Le but des partitions qui s'en suivent est de les faire réinterpréter par d'autres musiciens, qui ne disposent ni d'autres outils que leur expérience et connaissance de leur instrument, ni d'autres codes que cette notation graphique basée sur une forme "d'objectivité mathématique" de la musique.

Schéma CLAVIER-P.G.-PRINT.02.jpg

Problématiques

1/ créer un programme processing > données MIDI + Visualisation graphique

2/ faire interagir le logiciel de MAO et processing

3/ récupérer les données MIDI et analogiques (potentiomètres)

4/ envoyer la partition graphique à l'imprimante thermique

5/ configurer l'imprimante thermique au rapsberry pi

6/ imprimer l'information en temps réel et en continu


1/ Programme processing / MIDI

A. générer des formes basiques activées par le synthétiseur

CODE.P.png

Ce test a été dans un premier temps réalisé avec le clavier de l'ordinateur. Premiers résultats: Capture d’écran 2018-12-11 à 15.25.49.png

Il faut maintenant configurer le clavier afin de le connecter au programme processing

Configurer le clavier

Dans l’app Configuration audio et MIDI sur le Mac (attention c'est dans le cas de Mac!), choisir Fenêtre > Afficher Studio MIDI, pour obtenir cette interface.


Config-clavier2.png

Si une interface MIDI est connecté au port USB de votre Mac, elle doit apparaître dans la fenêtre MIDI Studio.

S'il y a un/des problème.s de connexion ou que vous souhaiter créer de nouveaux appareils MIDI, cliquer sur ce lien [1]

Code MIDI-Processing

Capture d’écran 2018-12-14 à 20.42.44.png

//-----------------INITIALISATION------------------

import processing.pdf.*; import themidibus.*;// import de la librairie MidiBus myBus;//la librairie the Midibus boolean record;

float px=0;//position de démarage de la note float py=25; float vx=0;//vitesse float vy=0;

int channel=1; int pitch=0; int velocity=0; int spitch;

int b=pitch;


ArrayList<Ball> balls = new ArrayList<Ball>(); PApplet theApp;

//-----------------PROGRAMME------------------

void setup() {

 size(270, 800);
 textSize(20);
 background(255);
 theApp=this;
 MidiBus.list();
 myBus = new MidiBus(this, 2, 1);

}

void draw () {

 background(255);
 
 myBus.sendNoteOn(channel, pitch, velocity); // envoie MidiOn
 //delay(200);
 myBus.sendNoteOff(channel, pitch, velocity); // envoie MidiOf
 
 int number = 0;
 int value = 90;
 ball();
 myBus.sendControllerChange(channel, number, value); // Send a controllerChange
 //delay(2000);
Capture d’écran 2018-12-14 à 18.12.42.png

for (int i=0; i<balls.size(); i++) {

   Ball b=balls.get(i);
   b.draw();
   b.move();

} } void ball(){

 Ball b;
 
   if (spitch == 24 ) {                      //C1_D0 ________________________________
   b=new Ball(25,py, 20, color(0));
   balls.add(b);
   b.vx=0; 
   b.vy=1;
 }

Ouvrir un second onglet pour coder l'arraylist :

class Ball {

 // propriétés
 float x, y; //position
 float vx, vy; //vitesse
 int taille, tailleV; //diamêtre
 //colorMode (RGB,minPitch,maxPitch);
 color c;
 
 //méthodes
 
 Ball (float x0, float y0, int s, color c) {
 //Ball (float x0, float y0, int s, int pitch) {
 // constructeur
 x=x0; y=y0;
 taille=s; tailleV=taille;
 c=0;
 }
 

void draw() {

   fill(c);
   ellipse(x, y, taille, tailleV);

}

void move() {

   x+=vx; // x=x+vzx
   y+=vy; 

}


}

<embedvideo service="youtube"> https://youtu.be/crVl6EUEVUQ</embedvideo>

B. Créer des éléments entiers (et pas une superposition de formes)

Processing est un programme qui génère automatiquement les formes les unes par dessus les autres, donnant parfois l'impression de solides. Or cela alourdit le code et ne permet de pas de moduler la forme.


===C

C.Enregistrer les formes produites dans la mémoire et créer un pdf adapté

D. Rendre les forme sensibles à la vélocité

3/Configurer le RaspberryPi

Pour toute la configuration du RPI, la démarche à suivre se trouve sur ce lien [[2]]. Donc maintenant lorsque je veux me connecter sur le RPI (connecté via éthernet), je vais sur le terminal et j'utilise la commande BASH ssh : ______________________________________________________________________________________________________________________________________________ Capture d’écran 2019-05-04 à 20.23.54.png ______________________________________________________________________________________________________________________________________________


Si le RPI est connecté en wifi, alors on a besoin de connaître son adresse IP. Dans ce cas, on utilise la commande ifconfig afin de récupérer l'adresse IP. On la repère à la suite de la ligne contenant “inet addr": 225.225.225.225. Dans ce cas , taper dans le terminal ssh pi@225.225.225.225.


Le mot de passe (ne s'affiche pas lorsque vous l'écrivez) est : raspberry. On sait que le RPI est bien connecté lorsqu'il apparaît comme ceci : ______________________________________________________________________________________________________________________________________________ Capture d’écran 2019-05-04 à 20.24.13.png ______________________________________________________________________________________________________________________________________________


Pour insérer un programme dans le RPI, on peut passer par de chemins :

-classique : via un FTP classique (par exemple sur Filezilla) : Pour se connecter au RPI, remplir avec l'adresse IP dans le cas d'une utilisation en wifi ou le nom de connection de celui-ci(comme-ci dessous). Ensuite glisser les fichier de votre ordinateur vers le RPI. Afin de faire fonctionner l'imprimante, installer le langage python sur le rpi pour pouvoir installer la bibliothèque de l'imprimante avec la commande: sudo apt-get install python3-picamera git clone [3] Il se peut que la configuration du RPI bloque le transfert des fichiers : Capture d’écran 2019-05-04 à 19.18.41 copie.png


Il s'agit d'un problème d'accès et de propriétés, alors il faut vérifier la configuration du programme qui autorise l'entrée d'un fichier dans FileZilla. Pour se faire, taper dans le terminal : sudo nano /etc/vsftpd.conf , puis remplacer les "no" par "yes" Capture d’écran 2019-05-09 à 10.45.48 copie.png


-rapide : le logiciel d'interopérabilité Samba[4] nous permet d'afficher le contenu du RPI tel un bureau informatique avec des dossiers, fichiers. Une fois installé sur l'ordinateur et le rPI connecté, cliquer sur "aller" de la barre du finder, puis "se connecter au serveur" avec l'adresse du RPI puis "se connecter" (il vous demandera le mot de passe correspondant à celui de votre ordinateur) Capture d’écran 2019-05-09 à 10.24.48.png



[[Forum > Imprimer depuis processing]][5]

RPI LAB [6]

Deadpixel [http://www.deadpixel.ca/command/examples/Print/Print.pde

forum sur processing [7]

Imprimer avec le modèle d'imprimante thermique [8]

hey [9]


" Serial The Serial library reads and writes data to and from external devices one byte at a time. It allows two computers to send and receive data. This library has the flexibility to communicate with custom microcontroller devices and to use them as the input or output to Processing programs. The serial port is a nine pin I/O port that exists on many PCs and can be emulated through USB.

"Anyway, you're going to need to learn more about the particular printer you are using. What model is it? What protocol(s) does it support? Is it bluetooth? Is it connected via USB? Serial? Serial USB? Is there a serial protocol it supports? Is there a standard protocol used by most receipt printers?

If it supports a serial protocol, you can use the Serial library. If it's bluetooth, you might be able to use the Bluetooth Desktop library. Either way, you will need to learn more about the specific type of messages used by the printer to communicate with the computer.

There also may be an established way to talk to it from Java (lots of standard business applications are written in Java, but not so much in Processing). Since Processing actually *is* a form of Java, googling for receipt printer java might turn up something useful. Substituting "Java" for "Processing" in your search terms is an especially good idea for non-art applications (e.g. business, science, etc.). " PR[10]

[[11]][12] = pour installer la librairie PIL

Liens

La musique cybernétique[13]


Déclinaisons

1/Graphic worksite

Le projet qui relie la partition graphique à un chantier. Traductions sonores et visuelles de leur activité[14]

2/L'électro-magnétisme pour le son

Le principe de ce projet est de capturer les différents sons émis par le champ électro-magnétique des ventilateurs. Ces champs électro-magnétiques sont capté par un micro spécial, appelé bit coil. La problématique du projet se trouve dans la maîtrise des vitesses de rotation de l'hélice. À L'aide d'une diode et d'un transistor (mosfet), il est possible de ralentir la vitesse à son minimum.

Capture d’écran 2018-11-13 à 16.09.04.png

Les ventilateurs utilisés pour ce projet sont issus d'unités centrales et sont en 12V. Dans un premier temps, il faut être équipé d'une alimentation d'ordinateur que l'on aura cours-circuitée afin qu'il puisse distribuer de l'énergie en 5 et 12V. L'alimentation dispose de 4 câbles de connexion. On connectera alors le - du ventilateur sur le ground (noir) et le + sur le 12V (jaune).

Capture d’écran 2018-12-11 à 15.35.26.png

01.jpg (Schéma du circuit pour 1 ventilateur. Le courant sort de l'unité centrale pour alimenter l'ensemble de la breadboard. Il passe en premier par la diode, puis par le ventilateur. Ensuite il passe par le transistor, se dirige vers l'arduino qui calcule sa vitesse et termine son parcours vers le -.)

Ce premier code permet de faire fonctionner deux ventilateurs indépendamment avec une vitesse propre à chacun. Capture d’écran 2018-12-15 à 16.20.27.png


Le code suivant me permet de modifier pour chacun des ventilateur des temps de vitesses différents qui induisent des sons différents. C'est à partir de ce moment que le projet devient intéressant, car Il est possible de créer des mélodies. Capture d’écran 2018-12-15 à 16.23.39.png

Voici ce que cela peut donner:

<embedvideo service="youtube"> https://youtu.be/lSt1ZJHTg4c</embedvideo>

La vidéo suivante est le résultat de plusieurs bidouillages et d'erreurs de contact/transmission électrique. On peut observer que l'électricté de mon corps participe à l'impulsion donnée au ventilateur et donc au son.

<embedvideo service="youtube">https://youtu.be/ShaRfylE-MM</embedvideo>

PrototypeA.jpg PrototypeB.jpg

L'exploration de ce projet se tourne alors vers d'autres machines qui émetteront du son, basé sur le même type de moteur que celui du ventilateur.

08.jpg 02.jpg 07.jpg 06.jpg 05.jpg 04.jpg 03.jpg