Catégories
Liens
Ceci est une ancienne révision du document !
contributeurs: BrutPop, Reso-nance
description : Pratiques musicales collective
date: 2014-… (en développement)
techniques: électronique magnétisme
tags: ateliers
fichiers:cahierdescharges-2015-01.pdf
licence: GNUGPL
liens: http://brutpop.blogspot.fr
}}}
cccc
Outils pour favoriser la pratique musicale collective, la BrutBox permet une approche intuitive et expérimentale du geste et de sa restitution musicale. Le projet est à destination de tous publics, d'encadrement pédagogique ou social. Basée sur le framework développé pour la Malinette, la Brutbox associe du logiciel et une interface permettant la connexion avec une collection non-exhaustive de capteurs. ssssss
Janvier 2015
juin 2015 au LFO
Objets Pure Data à développer
Teensy 2. Ajouter la librairie : adafruit-mpr121 pour le module capacitif MPR121.
teensy_brutbox_x6_touchI2C.ino
#include <Bounce.h> #include <Wire.h> #include "Adafruit_MPR121.h" // Connection Teensy2 SCL = DO, SDA = D1 // Touch Adafruit_MPR121 cap = Adafruit_MPR121(); int currentTouchValues[4]; int lastTouchValues[4]; const int touchThreshold = 60; // the MIDI channel number to send messages const int channel = 1; // the MIDI continuous controller for each analog input const int controllerA0 = 10; // 10 = pan position const int controllerA1 = 11; // 11 = volume/expression const int controllerA2 = 12; // 91 = reverb level const int controllerA3 = 13; // 93 = chorus level const int controllerA4 = 14; // 93 = chorus level const int controllerA5 = 15; // 93 = chorus level void setup() { delay(1000); cap.begin(0x5A); for (uint8_t i=0; i<4; i++) { lastTouchValues[i] = cap.filteredData(i); //Serial.println(cap.filteredData(i)); } } // store previously sent values, to detect changes int previousA0 = -1; int previousA1 = -1; int previousA2 = -1; int previousA3 = -1; int previousA4 = -1; int previousA5 = -1; elapsedMillis msec = 0; // delay long previousMillis = 0; long intervalle = 50; void loop() { // only check the analog inputs 50 times per second, // to prevent a flood of MIDI messages unsigned long currentMillis = millis(); if(currentMillis - previousMillis > intervalle) { previousMillis = currentMillis; int n0 = analogRead(A0) / 8; int n1 = analogRead(A1) / 8; int n2 = analogRead(A2) / 8; int n3 = analogRead(A3) / 8; int n4 = analogRead(A4) / 8; int n5 = analogRead(A5) / 8; // only transmit MIDI messages if analog input changed if (n0 != previousA0) { usbMIDI.sendControlChange(controllerA0, n0, channel); previousA0 = n0; } if (n1 != previousA1) { usbMIDI.sendControlChange(controllerA1, n1, channel); previousA1 = n1; } if (n2 != previousA2) { usbMIDI.sendControlChange(controllerA2, n2, channel); previousA2 = n2; } if (n3 != previousA3) { usbMIDI.sendControlChange(controllerA3, n3, channel); previousA3 = n3; } if (n4 != previousA4) { usbMIDI.sendControlChange(controllerA4, n4, channel); previousA4 = n4; } if (n5 != previousA5) { usbMIDI.sendControlChange(controllerA5, n5, channel); previousA5 = n5; } for (uint8_t i=0; i<4; i++) { currentTouchValues[i] = cap.filteredData(i); if ((currentTouchValues[i] - lastTouchValues[i]) < -touchThreshold) usbMIDI.sendControlChange(i, 127, channel); if ((currentTouchValues[i] - lastTouchValues[i]) > touchThreshold) usbMIDI.sendControlChange(i, 0, channel); lastTouchValues[i] = currentTouchValues[i]; } } // 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 } }