CLAVIER MIDI "COPPER KEY by Berru

by BRUGL in Circuits > Arduino

737 Views, 4 Favorites, 0 Comments

CLAVIER MIDI "COPPER KEY by Berru

COPPER KEY BF 1.jpg

Bonjour, voici mon premier projet arduino.

Supplies

La

Keyboard MIDI.

COPPER KEY BF 4.png
COPPER KEY BF 1.jpg
COPPER KEY BF 3.png
COPPER KEY BF 2.jpg

Bonjour communauté. Je commence dans le monde merveilleux d'Arduino et je viens de créer ce clavier MIDI.

Besoin de votre aide car le projet n'est pas terminé :)

Il s'agit d'un clavier (multitouch) sur cuivre. J'utilise les entrées analogiques du méga Arduino (plus nombreuses que sur le "uno") pour avoir mes notes 16; qui représente deux octaves (sans le #), cela laisse place à deux potentiomètres sur le Pin Analog.

Le code est basé sur la bibliothèque "ADCTouchSensor", le même programme qui est utilisé pour faire de son "Arduino" une sorte de "Makey makey".

J'ai essayé d'ajouter des potentiomètres, afin de jouer en analogique sur "Ableton", de plusieurs façons, avec plusieurs déclarations et fonctions, sans succès.

Je cherche donc des conseils pour m'aider à bien programmer toutes ses options.

Ces options ont été effectuées avec un clavier à touches et deux potentiomètres en MIDI pour la carte Ableton, mais je ne peux pas ajouter ses options au programme ADCTouchSensor, aucune déclaration ou fonction ne fonctionne.

Ses fonctions sont certainement différentes, mais mon niveau actuel de compréhension actuel du code ne me permet pas de les implémenter.

Voici le code actuel; ////////////////////////////////////////////// //// //////////////////////////////////////////////// // /////////////////////////////////

// CAPACITIVE TOUCH BASIC AVEC TESTE POTARD EN ANALOG MARS 2020
// BASE DIFFERENTE EN BAULT | CAPACITIF A 115200 ET POTARD A 9600 |

// int val = 0; // Nos valeurs initiales en pot. Nous avons besoin d'un pour la première valeur et d'un deuxième pour tester s'il y a un changement. Cela doit être fait pour les 3 pots.

/ * int lastVal = 0;

int val1 = 0;

int lastVal1 = 0;

int val2 = 0; // Nos valeurs initiales en pot. Nous avons besoin d'un pour la première valeur et d'un deuxième pour tester s'il y a un changement. Cela doit être fait pour les 3 pots.

int lastVal2 = 0;

int val3 = 0;

int lastVal3 = 0; int val4 = 0; // Nos valeurs initiales en pot. Nous avons besoin d'un pour la première valeur et d'un deuxième pour tester s'il y a un changement. Cela doit être fait pour les 3 pots. int lastVal4 = 0; * / //////////////////////||||||||||||||||| ///////// || || POTARD

#comprendre

#ifdef ADCTOUCH_INTERNAL_GROUNDING # définir GROUNDED_PIN -1 #endif

#ifdef ARDUINO_ARCH_AVR # définir SLOW_SAMPLING # undef FAST_SAMPLING # undef MEDIUM_SAMPLING

#define LED_OFF 0

#si défini (PIN_A7) broches int [] = {A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15}; #else int pins [] = {A0, A1, A2, A3, A4, A5}; #fin si

#else // STM32F1

#define USB_MIDI

# include // https://github.com/arpruss/USBHID_stm32f1

#define LED_BUILTIN PB12 // #define LED_OFF 1 broches int [] = {PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7};

#ifndef ADCTOUCH_INTERNAL_GROUNDING # définir ADCTOUCH_INTERNAL_GROUNDING PA8 #endif

USBMIDI MidiUSB;

#fin si

//// NOTE BLANCHE ||||| PAS TOUS LES BEMOL |||| AJOUTER 5 BROCHE ANALOG PAR GAMME

const uint8_t notes [] = {52,54,56,57,59,61,63,64,66,68,69,71,73,75}; // GAMME COMPLETE {64, 65,66, 67,68, 69,70, 71, 72,73,74,75,76,77,78,79,80,81,82,83,84,85,86 , 87};

const int numPins = sizeof (pins) / sizeof (* pins);

const uint8_t NOTE_ON = 0b10010000; const uint8_t NOTE_OFF = 0b10000000;

int ref [numPins];

uint8_t prev [numPins];

Capteurs ADCTouchSensor * [numPins];

int val = 0; // Nos valeurs initiales en pot. Nous avons besoin d'un pour la première valeur et d'un second pour tester s'il y a eu un changement. Cela doit être fait pour les 3 pots.

int lastVal = 0;

void setup() {

#si défini (ARDUINO_ARCH_AVR) // par défaut: diviser l'horloge par 128

#ifdef FAST_SAMPLING ADCSRA = (ADCSRA & ~ 0b111) | 0b100; // 16

#autre

#ifdef MEDIUM_SAMPLING ADCSRA = (ADCSRA & ~ 0b111) | 0b110; // 64

#fin si

#fin si

#fin si

#ifndef USB_MIDI

Serial.begin (115200);

#else MidiUSB.begin ();

#fin si

pinMode (LED_BUILTIN, OUTPUT);

digitalWrite (LED_BUILTIN, 1 ^ LED_OFF);

pour (int i = 0;

je commence();

prev [i] = 0; }

digitalWrite (LED_BUILTIN, 0 ^ LED_OFF);

// uint32_

tt = micros ();

ADCTouch.read (A0, 10000); //

t = micros () -t; //

Serial.println (t); }

void midiNote (état uint8_t, note uint8_t, vitesse uint8_t) {

#ifdef USB_MIDI if (status == NOTE_ON) MidiUSB.sendNoteOn (0, note, velocity);

else if (status == NOTE_OFF) MidiUSB.sendNoteOff (0, note, vélocité);

#autre

Serial.write (statut);

Serial.write (note);

Serial.write (vitesse);

#fin si}

boucle vide () {uint8_t pressé = 0;

verser (int i = 0;

iread ()> 25) {pressé = 1;

if (! prev [i]) {midiNote (NOTE_ON, notes [i], 127);

prev [i] = 1; }}

autre {

if (prev [i]) {

midiNote (NOTE_OFF, notes [i], 127);

prev [i] = 0;

}}} digitalWrite (LED_BUILTIN, pressé ^ LED_OFF);

}

//////////////////////////////////////////////////// // //////////// SHEMA ///////////////////////////////////// //// //////////////////////////////////////////////// ////// ////////

Pour le montage, je suis en direct sur des broches analogiques, puis 10M de résistance (fonctionne sans, mais pas "homologué") Que pensez-vous? Je commence aussi dans l'électronique.

PS: désolé pour la mise en page du copieur-coller et pour la traduction google;) mon anglais est mauvais.

Qui peut m'aider à prendre la bonne direction pour obtenir ces deux potentiomètres en plus de mes deux octaves?

En cas de coup, j'habite à Nantes, si vous connaissez des groupes à apprendre, je suis.

Merci. Bonne journée.

Berru