Catégories
Liens
Ceci est une ancienne révision du document !
Contrôleur MIDI réalisé avec des capteurs piézo-électriques.
// P6 project // http://reso-nance.org/wiki/projets/p6/accueil // Moule 3D pour un capteur piézo-électrique // Moulage en silicone // mars 2016 // Variables $fn=80; // résolution epaisseur=3; interieur=6; // Affichage de l'objet p6_mold(); // Objet 3D module p6_mold(){ container(); piezo(); } // Modules module container(){ difference(){ cylinder(r = 26, h = epaisseur+interieur); translate([0,0,epaisseur]) cylinder(r = 23, h = interieur+1); } } module piezo(){ cylinder(r = 23, h = epaisseur); cylinder(r = 20, h = epaisseur + 3); cylinder(r = 14, h = epaisseur + 4); // pour les fils //translate([14,0,0]) cylinder(r = 2, h = epaisseur + interieur); rotate([90,0,0]) translate([-2,7,0]) cube([4,2,20]); }
/* * P6 project * Teensy MIDI with 6 analog sensors * */ boolean DEBUG = false; // Analog sensors int anaPins[] = {21,20,19,18,17,16}; // analog pins const int anaNb = 6; int anaValues[anaNb]; // current analog values int anaLastValues[anaNb]; // previous analog values // MIDI const int channel = 1; int anaCtl[] = {1,2,3,4,5,6}; // midi mapping // Sampling rate const long interval = 30; unsigned long currentMillis; unsigned long previousMillis = 0; void setup() { if (DEBUG) Serial.begin(9600); } void loop() { currentMillis = millis(); if(currentMillis - previousMillis >= interval) { previousMillis = currentMillis; for (int i = 0; i < anaNb; i++) { anaValues[i] = analogRead(anaPins[i]) / 4 ; if (anaValues[i] != anaLastValues[i]) { usbMIDI.sendControlChange(anaCtl[i], anaValues[i], channel); if (DEBUG)Serial.print(anaValues[i]); if (DEBUG)Serial.print("\t"); anaLastValues[i] = anaValues[i]; } } if (DEBUG)Serial.println(); } // MIDI Controllers should discard incoming MIDI messages. while (usbMIDI.read()) { } }