Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


projets:brutbox:v1:accueil

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
projets:brutbox:v1:accueil [2017/04/10 18:16]
resonance [Réalisation]
projets:brutbox:v1:accueil [2019/10/04 19:44] (Version actuelle)
resonance [Matériel]
Ligne 2: Ligne 2:
 La Brutbox v1.0 est un contrôleur MIDI/USB que l'on peut connecter à son ordinateur. Un micro-contrôleur Teensy 2.0 envoie les données de 8 capteurs simples (mono signal) : pression, bouton, lumière, distance, rotatif. La Brutbox v1.0 est un contrôleur MIDI/USB que l'on peut connecter à son ordinateur. Un micro-contrôleur Teensy 2.0 envoie les données de 8 capteurs simples (mono signal) : pression, bouton, lumière, distance, rotatif.
  
-Tous les fichiers sur https://git.framasoft.org/resonance/brutbox+Tous les fichiers de fabrication sur notre [[https://git.framasoft.org/resonance/brutbox|git.framasoft.org/resonance]]. 
 + 
 +{{:projets:brutbox:v1:bb-logo.jpg?400|}}
  
 ===== Électronique =====  ===== Électronique ===== 
Ligne 12: Ligne 14:
   * Capteurs : distance (x2), luminosité LDR (x2), potentiomètre (x2), pression (x1) et bouton d'arcade (x2)   * Capteurs : distance (x2), luminosité LDR (x2), potentiomètre (x2), pression (x1) et bouton d'arcade (x2)
   * Prise USB A (x8) et B (x8)   * Prise USB A (x8) et B (x8)
 +  * {{ :projets:brutbox:v1:liste_achat_brutbox_-_feuille_1.pdf |liste/liens indicatifs d'achats}}
  
-<WRAP info 60%>**Note sur les prises USB** : On utilise +, - et  **D+**.</WRAP>+<WRAP important 80center>**Prises USB** : on utilise les broches +, - et  D+.</WRAP>
  
 ====Réalisation==== ====Réalisation====
Ligne 19: Ligne 22:
  
 <WRAP group> <WRAP group>
-<WRAP third column>{{:projets:brutbox:v1:brutbox-v1-typons.jpg?400|}}<</WRAP> +<WRAP third column>{{:projets:brutbox:v1:brutbox-v1-typons.jpg|}} \\ Impression du typon</WRAP> 
-<WRAP third column>{{:projets:brutbox:v1:brutbox-v1-pcb.jpg?400|}}</WRAP> +<WRAP third column>{{:projets:brutbox:v1:brutbox-v1-pcb.jpg|}} \\ Perçage des trous avec une fraiseuse numérique</WRAP> 
-<WRAP third column>{{:projets:brutbox:v1:brutbox-v1-pcb-result.jpg?400|}}</WRAP>+<WRAP third column>{{:projets:brutbox:v1:brutbox-v1-pcb-result.jpg|}} \\ Gravure chimique de la plaque</WRAP>
 </WRAP> </WRAP>
  
Ligne 27: Ligne 30:
  
 ===== Boîtes =====  ===== Boîtes ===== 
-Découpe de plaques en bois de 3mm avec une machine à découpe laser.+Découpe de trois plaques en bois de 3mm d'épaisseurs et de dimensions 50x30cm, avec une machine à découpe laser. Munissez-vous d'une colle à bois pour assembler les capteurs. Nous ne collons pas la face du dessus pour ouvrir et montrer comment sont connectés les capteurs. 
 + 
 +<WRAP group> 
 +<WRAP third column>{{:projets:brutbox:v1:bb-boites-capteurs.png?400|}} \\ Planche capteurs à découper deux fois </WRAP> 
 +<WRAP third column>{{:projets:brutbox:v1:bb-boites-teensy.png?400|}} \\ Planche Teensy et capteurs à découper une fois </WRAP> 
 +<WRAP third column>{{:projets:brutbox:v1:dsc_7410.jpg?400|}} \\ Assemblage</WRAP> 
 +</WRAP> 
 + 
 + 
  
 ===== Logiciel =====  ===== Logiciel ===== 
-Code Teensy pour recevoir huit capteurs analogiques et envoyer les informations en MIDI :+ 
 +==== Teensy==== 
 +Code Teensy pour recevoir huit capteurs analogiques et envoyer les informations en MIDI
 + 
 +  * Installer le logiciel Arduino 
 +  * Installer l'extension [[https://www.pjrc.com/teensy/teensyduino.html|Teensyduino]] pour utiliser la Teensy avec Arduino 
 +  * Téléverser le code sur votre Teensy
  
 ++++ teensy-8-in.ino | ++++ teensy-8-in.ino |
Ligne 122: Ligne 140:
 </code> </code>
 ++++ ++++
 +
 +=== Utiliser deux CC par entrée analogique pour avoir 1023 valeur au lieu de 127 ===
 +
 +ensuite dans puredata il faudra combiner les deux valeurs
 +
 +{{:projets:brutbox:v1:screen_shot_10-17-17_at_12.11_pm.png?nolink|}}
 + 
 +
 +++++ teensy 8 control - 16 cc midi  |
 +<code cpp>
 +// the MIDI channel number to send messages
 +const int channel = 1;
 +
 +//Definir les sorties en fonction des canaux midi
 +const int cc_A=8; const int cc_Abis=18;  // A = pour l'entrée physique A0
 +const int cc_B=7; const int cc_Bbis=17;  // B = pour l'entrée physique A1 ...etc
 +const int cc_C=6; const int cc_Cbis=16;
 +const int cc_D=5; const int cc_Dbis=15;
 +const int cc_E=4; const int cc_Ebis=14;
 +const int cc_F=3; const int cc_Fbis=13;
 +const int cc_G=2; const int cc_Gbis=12;
 +const int cc_H=1; const int cc_Hbis=11;
 +
 +
 +void setup() {}
 +
 +int previous_n0a = -1; int previous_n0b = -1;
 +int previous_n1a = -1; int previous_n1b = -1;
 +int previous_n2a = -1; int previous_n2b = -1;
 +int previous_n3a = -1; int previous_n3b = -1;
 +int previous_n4a = -1; int previous_n4b = -1;
 +int previous_n5a = -1; int previous_n5b = -1;
 +int previous_n6a = -1; int previous_n6b = -1;
 +int previous_n7a = -1; int previous_n7b = -1;
 +
 +elapsedMillis msec = 0;
 + 
 +void loop() {
 +  // only check the analog cc_s 50 times per second (20ms),
 +  // to prevent a flood of MIDI messages
 +  if (msec >= 20) {
 +    msec = 0;
 +    int n0a = analogRead(A0) / 100;
 +    int n0b = analogRead(A0) - n0a*100;
 +
 +    int n1a = analogRead(A1) / 100;
 +    int n1b = analogRead(A1) - n1a*100;
 +    
 +    int n2a = analogRead(A2) / 100;
 +    int n2b = analogRead(A2) - n2a*100;
 +
 +    int n3a = analogRead(A3) / 100;
 +    int n3b = analogRead(A3) - n3a*100;
 +    
 +    int n4a = analogRead(A4) / 100;
 +    int n4b = analogRead(A4) - n4a*100;
 +
 +    int n5a = analogRead(A5) / 100;
 +    int n5b = analogRead(A5) - n5a*100;
 +    
 +    int n6a = analogRead(A6) / 100;
 +    int n6b = analogRead(A6) - n6a*100;
 +
 +    int n7a = analogRead(A7) / 100;
 +    int n7b = analogRead(A7) - n7a*100;
 +
 +    // only transmit MIDI messages if analog cc_ changed
 +    //       usbMIDI.sendControlChange(cc, value, channel);
 +
 +    // control change
 +    if (n0a != previous_n0a) {
 +      usbMIDI.sendControlChange(cc_A, n0a, channel);
 +      previous_n0a = n0a;
 +    }
 +
 +    if (n0b != previous_n0b) {
 +      usbMIDI.sendControlChange(cc_Abis, n0b, channel);
 +      previous_n0b = n0b;
 +    }
 +    
 +    // control change
 +    if (n1a != previous_n1a) {
 +      usbMIDI.sendControlChange(cc_B, n1a, channel);
 +      previous_n1a = n1a;
 +    }
 +
 +    if (n1b != previous_n1b) {
 +      usbMIDI.sendControlChange(cc_Bbis, n1b, channel);
 +      previous_n1b = n1b;
 +    }    
 +
 +    // control change
 +    if (n2a != previous_n2a) {
 +      usbMIDI.sendControlChange(cc_C, n2a, channel);
 +      previous_n2a = n2a;
 +    }
 +
 +    if (n2b != previous_n2b) {
 +      usbMIDI.sendControlChange(cc_Cbis, n2b, channel);
 +      previous_n2b = n2b;
 +    }    
 +
 +    // control change
 +    if (n3a != previous_n3a) {
 +      usbMIDI.sendControlChange(cc_D, n3a, channel);
 +      previous_n3a = n3a;
 +    }
 +
 +    if (n3b != previous_n3b) {
 +      usbMIDI.sendControlChange(cc_Dbis, n3b, channel);
 +      previous_n3b = n3b;
 +    }    
 +
 +    // control change
 +    if (n4a != previous_n4a) {
 +      usbMIDI.sendControlChange(cc_E, n4a, channel);
 +      previous_n4a = n4a;
 +    }
 +
 +    if (n4b != previous_n4b) {
 +      usbMIDI.sendControlChange(cc_Ebis, n4b, channel);
 +      previous_n4b = n4b;
 +    }   
 +
 +    // control change
 +    if (n5a != previous_n5a) {
 +      usbMIDI.sendControlChange(cc_F, n5a, channel);
 +      previous_n5a = n5a;
 +    }
 +
 +    if (n5b != previous_n5b) {
 +      usbMIDI.sendControlChange(cc_Fbis, n5b, channel);
 +      previous_n5b = n5b;
 +    }   
 +
 +    // control change
 +    if (n6a != previous_n6a) {
 +      usbMIDI.sendControlChange(cc_G, n6a, channel);
 +      previous_n6a = n6a;
 +    }
 +
 +    if (n6b != previous_n6b) {
 +      usbMIDI.sendControlChange(cc_Gbis, n6b, channel);
 +      previous_n6b = n6b;
 +    }   
 +
 +    // control change
 +    if (n7a != previous_n7a) {
 +      usbMIDI.sendControlChange(cc_H, n7a, channel);
 +      previous_n7a = n7a;
 +    }
 +
 +    if (n7b != previous_n7b) {
 +      usbMIDI.sendControlChange(cc_Hbis, n7b, channel);
 +      previous_n7b = n7b;
 +    }   
 +
 +  }
 + 
 +  // MIDI Controllers should discard incoming MIDI messages.
 +  // http://forum.pjrc.com/threads/24179-Teensy-3-Ableton-Analog-CC-causes-midi-crash
 +  while (usbMIDI.read()) {
 +    // ignore incoming messages
 +  }
 +}
 +</code>
 +++++
 +
 +
 +==== Pure Data ====
 +Nous utilisons Pure Data pour générer les sons et les images. Nous nous basons sur notre //framework// [[http://malinette.info|Malinette]].
 +
 +  * Télécharger Pure Data Extended
 +  * Ouvrir le fichier "brutbox/software/puredata/brutbox/BRUTBOX-expert.pd" 
 +
 +{{:projets:brutbox:v1:bb-puredata.png?800|}}
/home/resonancg/www/wiki/data/attic/projets/brutbox/v1/accueil.1491841001.txt.gz · Dernière modification: 2017/04/10 18:16 de resonance