Ritournelle : Différence entre versions

De fablabo
Aller à : navigation, rechercher
(Page créée avec « {{Projet <!--Header--> |name = MIDI_TOY |status = experimental <!--Image--> |image = autonome.JPG <!--General--> |description = prototypage d'une interface MIDI pour contr... »)
 
 
(141 révisions intermédiaires par 6 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
{{Projet
 
{{Projet
<!--Header-->
+
|status=Prototype
|name = MIDI_TOY
+
|status_pub=Publié
|status = experimental
+
|image=ritournelle_sur_breadboard_photo.jpg
<!--Image-->
+
|description=Interface MIDI pour jouets électroniques
|image = autonome.JPG
+
|license=GPL v3.0 / CC-NC-BY-SA
<!--General-->
+
|contributeurs=ThomasB,Emoc
|description = prototypage d'une interface MIDI pour contrôler tous types de jouets.
+
|ingrédients=electronique, code, Processing, Arduino
|license = GPL v3.0
+
|machines=FraiseuseCNC,
|contributeurs = [[contributeur::Thomas]]
+
|name=RITOURNELLE
|matériaux = [[materiau::electronique]],[[materiau::code]],[[materiau::Processing]], [[materiau::Arduino]]
 
|cadModel =  
 
|url =  
 
 
}}
 
}}
  
=Contrôleur MIDI pour engins électroniques modifiés=
 
  
==Note d'intention :==
+
=INTERFACE M.I.D.I POUR OBJETS ÉLECTRONIQUES DÉTOURNÉS=
Le but est de pouvoir contrôler n'importe quel machine électronique fonctionnant sur faible voltage (12V maximum) et que l'on peut trouver à bas coût dans les vides greniers, emmaus … en MIDI dans un premier temps.
 
Afin de pouvoir créer des instruments de musique électronique à partir de n'importe quel rebut électronique de préférence sonores.
 
  
De cette façon on peut modifier un jouet, changer la hauteur de note de ses sonorités par exemple, puis l'intégrer à son ''set'' d'instruments électroniques grâce à la possibilité d'y intégrer ce module MIDI.
+
'''Le code et les schémas nécessaires sont téléchargeables ici : [https://github.com/emoc/ritournelle ritournelle]
 +
'''
 +
==NOTE D'INTENTION==
 +
Ritournelle est une interface électronique qui transforme un jouet électronique en instrument de musique. Le but est de pouvoir contrôler en M.I.D.I n'importe quelle machine électronique fonctionnant sur faible voltage (12V maximum).<br />
 +
La plupart de ces machines peuvent se trouver à bas coût dans les vides greniers, ressourceries etc. De cette façon, il est possible de créer des instruments de musique électronique soi-même à partir d’objets électroniques facilement accessibles et peu coûteux.<br />
  
Par ailleurs, je cherche à réaliser rapidement, à l'aide des machines CNC, des circuits électroniques simples pour intégrer des effets audio aux jouets modifiés (fuzz, filtre ...)
+
Ainsi Ritournelle transforme tout type de rebut électronique en un potentiel instrument à intégrer à son équipement.<br />
 +
C'est aussi une façon de prolonger la pratique du [https://www.youtube.com/watch?v=w6Pbyg_kcEk circuit-bending] en y ajoutant de nouvelles possibilités de jeu et de nouvelles pratiques de hacking :<br />
 +
Après avoir modifier certaines sonorités d'un jouet par exemple, en court-circuitant ses circuits électroniques ou en ajoutant d'autres, il est désormais possible de séquencer ce jouet avec un logiciel ou un séquenceur M.I.D.I.
  
==Quels modes de synchronisation possibles ?==
+
Une des intentions également, est de pouvoir proposer un objet que l'on puisse réaliser soi même, sous licence libre, et avec un coût le plus bas possible en terme de composants par exemple. Un objet que l'on puisse produire chez soi ou dans l'atelier du coin en fonction de la demande, et en remerciant au passage les ouvriers de l'empire du milieu qui œuvrent à la production de condensateurs et autres transistors à bas coût tout en déversant moult solvants et acides dans leurs rivières.<br />
  
MIDI
+
==JOURNAL DE BORD==
 +
Au-delà de cette documentation à destination de celles et ceux qui souhaitent soit utiliser, soit construire une Ritournelle, vous pouvez également accéder à ce journal de bord que je tiens à jour à chacune des résidences de travail sur ce projet.<br />
 +
[http://etherpad.pingbase.net/RA-ritournelle Le journal de bord est à cette adresse]
  
Sync
+
== PRINCIPE ==
  
CV/Gate
+
Ritournelle reçoit des commandes MIDI entre 60 et 75 (16 sorties), chacune de ces commandes active un contact électrique, comme si l'on appuyait sur un des boutons du jouet.
 +
Le circuit permet d'activer 16 boutons sur un ou plusieurs jouets différents. Pour relier Ritournelle à un jouet sonore, deux fils sont nécessaires. Ils doivent être reliés au circuit imprimé du jouet, aux deux pôles du contact à déclencher.
  
OSC
+
==PARTIE MATÉRIELLE==
  
==Plusieurs pistes existantes pour contrôler des machines 12V==
+
===Liste des composants===
  
===Casper Electronics version :===
+
* 2 x résistances 220 Ω
 +
* 1 x résistance 270
 +
* 1 x prise MIDI DIN 5
 +
* 1 x diode 1N4148
 +
* 1 x LED
 +
* 1 x optocoupleur 6N138
 +
* 4 x circuit intégré 4066 (quadruple interrupteur)
 +
* 1 x arduino nano (microcontrôleur)
  
[[File:Casper version.png|border|640px|méthode proposée par Casper Electronics]]
+
==== MIDI ====
  
===HighLy Liquid version :===
+
Ritournelle utilise le protocole de communication [https://fr.wikipedia.org/wiki/Musical_Instrument_Digital_Interface MIDI] qui est un protocole déjà ancien puisqu’il date de 1983. C'est un protocole qui a ses limites mais un de ses avantages est qu'il soit devenu une norme pour les instruments électroniques. C'est en quelques sorte, le jargon universel de la grande majorité de nos petites bébêtes électroniques disposant des fameuses prises DIN à 5 broches, permettant de les relier physiquement les unes aux autres.
  
[http://store.highlyliquid.com/collections/midi-controllers/ Le site de Highy liquid ]
+
Dans Ritournelle, le MIDI va permettre de relier un instrument qui peut générer des notes MIDI à un jouet électronique par exemple, et ainsi, le contrôler, lui envoyer des notes, en lui précisant la hauteur de la notes, la durée, etc.<br />
 +
Intégrer une entrée MIDI sur un microcontrôleur ATMEGA328 n'est pas quelque chose de bien compliqué. Pour cela, il faut ajouter quelques composants : un optocoupleur, une diode et deux résistances.
  
Matériel et composants utilisés :
+
=== Circuit électronique ===
 
transistors NPN :
 
  
Relais :
+
==== Schéma ====
  
multiplexer 4066 :
+
[[File:ritournelle_circuit.png|700px]]
  
multiplexer 4051 :
+
==== Sur plaque d'expérimentation ====
  
===Little Scale versions :===
+
Il est possible d'assembler Ritournelle sur deux plaques d'expérimentation.
  
== Version 4066 ==
+
[[File:ritournelle_sur_breadboard.png|700px]]
  
http://little-scale.blogspot.fr/search/label/circuit%20bending?updated-max=2013-05-22T17:45:00%2B09:30&max-results=20&start=6&by-date=false
 
  
Utilisation d'un multiplexeur quad analog switch quad(4066) pour émuler la pression de boutons avec un microcontrolleur du type d'Arduino, le contrôle d'un oscillateur etc.<br />
+
==== Sur circuit imprimé ====
Chaque bouton sur un jouet met en contact deux parties du circuit du jouet. Il s'agit dans un premier temps de trouver ces 2 parties et de trouver un endroit ou il est possible de les connecter afin de les relier plus tard à mon  multiplexeur.
 
  
==== Partie hardware ====
+
En cours de réalisation
 +
[[Fichier:Ritournelle circuit vue002a.png|700px]]
 +
[[Fichier:Ritournelle circuit vue002b.png|700px]]
  
<gallery widths=320px heights=240px>
+
=== Circuit annexe, un testeur MIDI ===
File:20130517_150800.jpg|emprunt au site de [http://little-scale.blogspot.fr/search/label/circuit%20bending little scape]
 
File:20130517_150803-with-labs.jpg|emprunt au site de [http://little-scale.blogspot.fr/search/label/circuit%20bending little scape]
 
File:4066.jpg
 
</gallery>
 
  
+
Ce circuit envoie des commandes MIDI et peut être utilisé pour simuler un instrument si on n'en a pas un sous la main...
Connecter le point A au point 1 équivaux à presser le bouton correspondant.  
 
  
Il s'agit maintenant de connecter ses points là de façon électrique en utilisant Arduino.  
+
[[File:testeur_midi_sur_breadboard.png|700px]]
  
Arduino ne peut pas connecter à lui seul 2 boutons, il faut utiliser une puce 4066 (4066 Quad Bi-Lateral Switch CMOS IC).
+
==PARTIE LOGICIELLE==
  
Cette  puce coûte à peu près 50 centimes.
+
'''Le code et les schémas nécessaires sont téléchargeables ici : [https://github.com/emoc/ritournelle ritournelle]'''
Le 4066 est une puce switch qui combine 4 interrupteurs électriques.  
 
  
Par exemple le pin 13 contrôle le mécanisme pour fermer et ouvrir les pin 1 & 2 et ainsi contrôler l'ouverture et la fermeture du bouton de façon électrique.
+
=== Micrologiciel pour arduino ===
  
Si on envoi 5V sur le pin13 le pin 1 & 2 sont connectés, sinon ils sont déconnectés. Ce signal de 5V peut être généré par Arduino.
+
Le code est utilisable avec un arduino nano V3. Il est réalisé avec la [https://github.com/FortySevenEffects/arduino_midi_library/ library MIDI pour arduino]
  
NB : la résistance entre 1 & 2 se nomme RON, on trouve cette valeur dans le datasheet de la puce. Sa valeur est de 470 Ohm à 25°C pour la HCF4066. Cette valeur est peut être la raison pour laquelle le 4066 ne marche pas pour l'instant sur tous les jouets -> Après tests le problème ne vient pas de là.
+
La dernière version du code est à télécharger sur le dépôt en lien ci-dessus.
  
Voici comment connecter le 4066 avec Arduino et le jouet :
+
=== Séquenceur réalisé avec processing ===
  
[[File:4066_diagram.jpg|border|640px|méthode proposée par Casper Electronics]]
+
[[File:sequenceur_ritournelle_screenshot.png|700px]]
  
[[File:Working_arduino.jpg|border|800px|méthode proposée par Casper Electronics]]
+
La dernière version du code est à télécharger sur le dépôt en lien ci-dessus.
  
==== Partie software ====
+
==EXEMPLE D’USAGE==
  
Voici un code simple pour tester le trigger dans Arduino :
+
Un jouet séquencé par P5
  
<code code lang='c'>
+
Un jouet séquencé par un séquenceur hardware
void setup() {
 
pinMode(0, OUTPUT);
 
}
 
 
 
void loop() {
 
digitalWrite(0, HIGH);
 
delay(500);
 
digitalWrite(0, LOW);
 
delay(500);
 
}
 
</code>
 
 
 
Le code utilisé pour MIDI TOY version 4066
 
 
 
<code code lang='c'>
 
int incomingByte = 0; // for incoming serial data
 
 
 
const int nb = 12;
 
int toy [nb];
 
char input [nb] = {
 
  'A', 'Z', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'Q', 'S'};
 
 
 
 
 
void setup() {
 
  Serial.begin(9600);
 
 
 
  for(int i=0; i<nb; i++){
 
    toy[i] = i;
 
    pinMode(toy[i]+2, OUTPUT);
 
  }
 
}
 
 
 
void loop(){
 
  if(Serial.available() > 0){
 
 
 
    incomingByte = Serial.read();
 
 
 
    for(int i=0; i<nb; i++){
 
      if(incomingByte == input[i])
 
        digitalWrite(toy[i]+2, HIGH);
 
    }
 
  }
 
 
 
  // cette partie est importante car elle permet de réguler la vitesse de commutation des touches du jouet
 
  // on peut la changer en fonction du jouet (10ms pour un jouet de bonne qualité permettra de créer des
 
  // rythmes rapides sans coupures de son)
 
  delay(70); 
 
 
 
  for(int i=0; i<nb; i++){
 
    digitalWrite(toy[i]+2, LOW);
 
  }
 
}
 
</code>
 
 
 
== Version multiplexer 4051 ==
 
 
 
Utilisation d'une puce 4051 analog multiplexer.
 
 
 
==== Partie hardware ====
 
 
 
Illustration du fonctionnement du multiplexer CD4051.
 
 
 
<gallery widths=320px heights=240px>
 
File:Screen Shot 2013-05-21 at 6.00.07 PM.png|emprunt au site de [http://little-scale.blogspot.fr/search/label/circuit%20bending little scape]
 
File:Screen_Shot_2013-05-22_at_3.43.06_PM.png|emprunt au site de [http://little-scale.blogspot.fr/search/label/circuit%20bending little scape]
 
File:Screen_Shot_2013-05-22_at_3.50.09_PM.png|emprunt au site de [http://little-scale.blogspot.fr/search/label/circuit%20bending little scape]
 
File:Screen_Shot_2013-05-22_at_3.50.09_PM.png|emprunt au site de [http://little-scale.blogspot.fr/search/label/circuit%20bending little scape]
 
File:Screen Shot 2013-05-22 at 3.50.09 PM.png|emprunt au site de [http://little-scale.blogspot.fr/search/label/circuit%20bending little scape]
 
File:ExampleCD4051.jpg|emprunt au site de [http://little-scale.blogspot.fr/search/label/circuit%20bending little scape]
 
</gallery>
 
 
 
Maintenant que vous avez compris parfaitement le fonctionnement d'un multiplexer. Voyons voir comment ça se soude sur notre Arduino :
 
 
 
[[File:Working_2_4.jpg|border|320px|méthode proposée par Casper Electronics]]
 
 
 
==== Partie software ====
 
 
 
Le code utilisé pour MIDI TOY version 4051
 
 
 
Pour l'instant pas commenté, mais il faut noter qu'il est nécessaire d'utiliser le point inhibit de la puce pour éviter un effet boucle sur le déclenchement des sons.
 
 
 
[[File:Index4051.png|border|320px|méthode proposée par Casper Electronics]]
 
 
 
<code code lang='c'>
 
int incomingByte = 0; // for incoming serial data
 
 
 
const int nb = 12;
 
int inhibit = 7;
 
int out1 = 8;
 
int out2 = 9;
 
int out3 = 10;
 
char input [nb] = {
 
  'A', 'Z', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'Q', 'S'};
 
 
 
 
 
void setup() {
 
  Serial.begin(9600);
 
  pinMode(out1,OUTPUT);
 
  pinMode(out2,OUTPUT);
 
  pinMode(out3,OUTPUT);
 
  pinMode(inhibit, OUTPUT);
 
}
 
 
 
void loop() {
 
  if(Serial.available() > 0){
 
 
 
    incomingByte = Serial.read();
 
 
 
    for(int i=0; i<nb; i++){
 
      if(incomingByte == input[i]){
 
        switch(incomingByte){
 
        case 'A':
 
          /* Select Input 1 */
 
          digitalWrite(inhibit, LOW);
 
          digitalWrite(out1, LOW);
 
          digitalWrite(out2, LOW);
 
          digitalWrite(out3, LOW);
 
          delay(70);
 
          break;     
 
        case 'Z':
 
          /* Select Input 2 */
 
          digitalWrite(inhibit, LOW);
 
          digitalWrite(out1, LOW);
 
          digitalWrite(out2, LOW);
 
          digitalWrite(out3, HIGH);
 
          delay(70);
 
          break;
 
        case 'E':
 
          /* Select Input 3 */
 
          digitalWrite(inhibit, LOW);
 
          digitalWrite(out1, LOW);
 
          digitalWrite(out2, HIGH);
 
          digitalWrite(out3, LOW);
 
          delay(70);
 
          break;
 
        case 'R':
 
          /* Select Input 4 */
 
          digitalWrite(inhibit, LOW);
 
          digitalWrite(out1, LOW);
 
          digitalWrite(out2, HIGH);
 
          digitalWrite(out3, HIGH);
 
          delay(70);
 
          break;
 
        case 'T':
 
          /* Select Input 5 */
 
          digitalWrite(inhibit, LOW);
 
          digitalWrite(out1, HIGH);
 
          digitalWrite(out2, LOW);
 
          digitalWrite(out3, LOW);
 
          delay(70);
 
          break;
 
        case 'Y':
 
          /* Select Input 6 */
 
          digitalWrite(inhibit, LOW);
 
          digitalWrite(out1, HIGH);
 
          digitalWrite(out2, LOW);
 
          digitalWrite(out3, HIGH);
 
          delay(70);
 
          break;
 
        case 'U':
 
          /* Select Input 7 */
 
          digitalWrite(inhibit, LOW);
 
          digitalWrite(out1, HIGH);
 
          digitalWrite(out2, HIGH);
 
          digitalWrite(out3, LOW);
 
          delay(70);
 
          break;
 
        case 'I':
 
          /* Select Input 8 */
 
          digitalWrite(inhibit, LOW);
 
          digitalWrite(out1, HIGH);
 
          digitalWrite(out2, HIGH);
 
          digitalWrite(out3, HIGH);
 
          delay(70);
 
          break;
 
 
 
        default:
 
          digitalWrite(inhibit, HIGH);
 
          delay(70);
 
        }
 
      }
 
    }
 
  }
 
  else{
 
 
 
    digitalWrite(inhibit, HIGH);
 
    delay(70);
 
  }
 
}
 
</code>
 
 
 
= Projet parallèle : modules d'effets audio electroniques simples =
 
 
 
Un certains Tim Escobedo réalise des montage électroniqes simples pour faire des effets sonores à bas coûts DIY.
 
 
 
La plupart de ses réalisations fonctionnant en 9V, il est possible de de les intégrer à des jouets modifier, à la façon de modules intégrables.
 
 
 
On peut les trouver ici : [[http://www.jiggawoo.eclipse.co.uk/guitarhq/Circuitsnippets/snippets.html Site de TIM ESCOBEDO]]
 
 
 
Parmi ceux ci :
 
 
 
* '''BOOST O RAMA''' [http://www.geocities.ws/diygescorp/schematics.html trouvé sur cette page]
 
 
 
[[File:Boostoramalayout.gif|border|640px]]
 
 
 
* '''IDIOT WAH''' [http://www.geocities.ws/diygescorp/schematics.html trouvé sur cette page]
 
 
 
[[File:Idiotwahlayout.gif|border|640px]]
 
 
 
* '''THING MODULATOR''' [http://www.geocities.ws/diygescorp/schematics.html trouvé sur cette page]
 
 
 
[[File:Thingmodulatorlayout.gif|border|640px]]
 
 
 
* '''T.M.K''' [http://www.geocities.ws/diygescorp/schematics.html trouvé sur cette page]
 
 
 
[[File:Tmk1.3layout.gif|border|640px]]
 
 
 
= utilisation de GedA =
 
 
 
J'ai utilisé la suite CAO libre Geda pour réaliser mes pcb.
 
 
 
Plus d'informations ici : http://fablabo.net/wiki/Geda
 
 
 
=  Divers =
 
 
 
Pour coder la puce Atmel Tiny ATTiny85, une version simple mais qui comporte certains risques électriques d'après laurentB
 
 
 
http://www.hacknowledge.org/drupal/?q=ispprogrammer
 

Version actuelle en date du 22 juillet 2021 à 13:01


Interface MIDI pour jouets électroniques

Ritournelle sur breadboard photo.jpg

Contributeur·ice·s

Statut du projet

Prototype

Statut de la publication

Publié

License

GPL v3.0 / CC-NC-BY-SA

Inspiration

Fichiers source

Machines

Lien





INTERFACE M.I.D.I POUR OBJETS ÉLECTRONIQUES DÉTOURNÉS

Le code et les schémas nécessaires sont téléchargeables ici : ritournelle

NOTE D'INTENTION

Ritournelle est une interface électronique qui transforme un jouet électronique en instrument de musique. Le but est de pouvoir contrôler en M.I.D.I n'importe quelle machine électronique fonctionnant sur faible voltage (12V maximum).
La plupart de ces machines peuvent se trouver à bas coût dans les vides greniers, ressourceries etc. De cette façon, il est possible de créer des instruments de musique électronique soi-même à partir d’objets électroniques facilement accessibles et peu coûteux.

Ainsi Ritournelle transforme tout type de rebut électronique en un potentiel instrument à intégrer à son équipement.
C'est aussi une façon de prolonger la pratique du circuit-bending en y ajoutant de nouvelles possibilités de jeu et de nouvelles pratiques de hacking :
Après avoir modifier certaines sonorités d'un jouet par exemple, en court-circuitant ses circuits électroniques ou en ajoutant d'autres, il est désormais possible de séquencer ce jouet avec un logiciel ou un séquenceur M.I.D.I.

Une des intentions également, est de pouvoir proposer un objet que l'on puisse réaliser soi même, sous licence libre, et avec un coût le plus bas possible en terme de composants par exemple. Un objet que l'on puisse produire chez soi ou dans l'atelier du coin en fonction de la demande, et en remerciant au passage les ouvriers de l'empire du milieu qui œuvrent à la production de condensateurs et autres transistors à bas coût tout en déversant moult solvants et acides dans leurs rivières.

JOURNAL DE BORD

Au-delà de cette documentation à destination de celles et ceux qui souhaitent soit utiliser, soit construire une Ritournelle, vous pouvez également accéder à ce journal de bord que je tiens à jour à chacune des résidences de travail sur ce projet.
Le journal de bord est à cette adresse

PRINCIPE

Ritournelle reçoit des commandes MIDI entre 60 et 75 (16 sorties), chacune de ces commandes active un contact électrique, comme si l'on appuyait sur un des boutons du jouet. Le circuit permet d'activer 16 boutons sur un ou plusieurs jouets différents. Pour relier Ritournelle à un jouet sonore, deux fils sont nécessaires. Ils doivent être reliés au circuit imprimé du jouet, aux deux pôles du contact à déclencher.

PARTIE MATÉRIELLE

Liste des composants

  • 2 x résistances 220 Ω
  • 1 x résistance 270
  • 1 x prise MIDI DIN 5
  • 1 x diode 1N4148
  • 1 x LED
  • 1 x optocoupleur 6N138
  • 4 x circuit intégré 4066 (quadruple interrupteur)
  • 1 x arduino nano (microcontrôleur)

MIDI

Ritournelle utilise le protocole de communication MIDI qui est un protocole déjà ancien puisqu’il date de 1983. C'est un protocole qui a ses limites mais un de ses avantages est qu'il soit devenu une norme pour les instruments électroniques. C'est en quelques sorte, le jargon universel de la grande majorité de nos petites bébêtes électroniques disposant des fameuses prises DIN à 5 broches, permettant de les relier physiquement les unes aux autres.

Dans Ritournelle, le MIDI va permettre de relier un instrument qui peut générer des notes MIDI à un jouet électronique par exemple, et ainsi, le contrôler, lui envoyer des notes, en lui précisant la hauteur de la notes, la durée, etc.
Intégrer une entrée MIDI sur un microcontrôleur ATMEGA328 n'est pas quelque chose de bien compliqué. Pour cela, il faut ajouter quelques composants : un optocoupleur, une diode et deux résistances.

Circuit électronique

Schéma

Ritournelle circuit.png

Sur plaque d'expérimentation

Il est possible d'assembler Ritournelle sur deux plaques d'expérimentation.

Ritournelle sur breadboard.png


Sur circuit imprimé

En cours de réalisation Ritournelle circuit vue002a.png Ritournelle circuit vue002b.png

Circuit annexe, un testeur MIDI

Ce circuit envoie des commandes MIDI et peut être utilisé pour simuler un instrument si on n'en a pas un sous la main...

Testeur midi sur breadboard.png

PARTIE LOGICIELLE

Le code et les schémas nécessaires sont téléchargeables ici : ritournelle

Micrologiciel pour arduino

Le code est utilisable avec un arduino nano V3. Il est réalisé avec la library MIDI pour arduino

La dernière version du code est à télécharger sur le dépôt en lien ci-dessus.

Séquenceur réalisé avec processing

Sequenceur ritournelle screenshot.png

La dernière version du code est à télécharger sur le dépôt en lien ci-dessus.

EXEMPLE D’USAGE

Un jouet séquencé par P5

Un jouet séquencé par un séquenceur hardware