Pages: [1]   Go Down
Author Topic: Midi drum kit  (Read 1940 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 ;D bonjour à toutes et tous,
j'essaie de réaliser le montage midi drum kit pour lire des sons à partir d'un piezo utilisé en capteur.
j'ai des signaux qui arrivent du piezo sous forme de lettres, de signes et de point d'interrogation (monitor) mais pas de knock...
de plus je n'arrive à lire aucun son à partir de ces signaux.


j'utilise une interface midi/usb...mais cela necessite t il d'avoir un soft pour gérer les sons ou les sons sont ils compris dans la syntaxe Arduino?

merci
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 198
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut !
Les signaux c'est du numérique ou de l'analogique ?
Pour jouer des sons à partir d'Arduino, utlises Processing  smiley-wink
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 :)merci vincent,
les signaux qui arrivent par le piezo sont analogiques, piezo raccordé sur le Anal 0
voici le lien ou il y a le schéma de montage
http://todbot.com/blog/2006/10/29/spooky-arduino-projects-4-and-musical-arduino/
je trouve pas dans les librairie de processing ce que je veux faire...
en fait il s'agit de lancer la lecture d'un enregistrement sonore de ma voix quand le piezo capte des valeurs...
si tu as une idée :smiley
merci pour ta réponse
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 198
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour processing, as tu regardé dans les librairies supplémentaires dispo sur le site de Processing ?
Peux tu montrer ton code pour voir d'où pourrais venir le probléme ?
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

pour le moment j'essaie de faire tourner le montage avec la syntaxe du Midi drumKit dans sa version initiale. je n'utilise pas les boutons j'utilise seulement un piezo.
mon montage Piezo(zener et Resistance) dans entrée anal 0 et un femelle midi(resistance) sur numérique 1 en sortie reliée à mon mac via une interface Midi/usb.
je n'utilise pas de module, ni de soft de zick...


/*
 * MIDI Drum Kit
 * -------------
 * Convert Arduino to a MIDI controller using various inputs and
 * the serial port as a MIDI output.
 *
 * This sketch is set up to send General MIDI (GM) drum notes
 * on MIDI channel 1, but it can be easily reconfigured for other
 * notes and channels
 *
 * It uses switch inputs to send MIDI notes of a fixed velocity with
 * note on time determined by duration of keypress and it uses
 * piezo buzzer elements as inputs to send MIDI notes of a varying velocity
 * & duration, depending on forced of impulse imparted to piezo sensor.
 *
 * To send MIDI, attach a MIDI out jack (female DIN-5) to Arduino.
 * DIN-5 pinout is:                                      _____
 *    pin 2 - Gnd                                          /     \
 *    pin 4 - 220 ohm resistor to +5V           | 3   1 |  MIDI jack
 *    pin 5 - Arduino D1 (TX)                       |  5 4  |
 *    all other pins - unconnected                 \__2__/
 * On my midi jack, the color of the wires for the pins are:
 *   3 = n/c
 *   5 = black  (blue)
 *   2 = red    (red)
 *   4 = orange (yellow)
 *   1 = brown
 *
 * Based off of Tom Igoe's work at:
 *    http://itp.nyu.edu/physcomp/Labs/MIDIOutput
 *
 * Created 25 October 2006
 * copyleft 2006 Tod E. Kurt <tod@todbot.com
 * http://todbot.com/
 */

// what midi channel we're sending on
#define drumchan           1

// general midi drum notes
#define note_bassdrum     35
#define note_snaredrum    38
#define note_hihatclosed  42
#define note_hihatopen    44
#define note_crash        49

// define the pins we use
#define switchAPin 7
#define switchBPin 6
#define switchCPin 5
#define piezoAPin  0
#define piezoBPin  1
#define ledPin     13  // for midi out status

// analog threshold for piezo sensing
#define PIEZOTHRESHOLD 100

int switchAState = LOW;
int switchBState = LOW;
int switchCState = LOW;
int currentSwitchState = LOW;

int val,t;

void setup() {
  pinMode(switchAPin, INPUT);
  pinMode(switchBPin, INPUT);
  pinMode(switchCPin, INPUT);
  digitalWrite(switchAPin, HIGH);  // turn on internal pullup
  digitalWrite(switchBPin, HIGH);  // turn on internal pullup
  digitalWrite(switchCPin, HIGH);  // turn on internal pullup

  pinMode(ledPin, OUTPUT);
  Serial.begin(31250);   // set MIDI baud rate
}

void loop() {
  // deal with switchA
  currentSwitchState = digitalRead(switchAPin);
  if( currentSwitchState == LOW && switchAState == HIGH ) // push
    noteOn(drumchan,  note_bassdrum, 100);
  if( currentSwitchState == HIGH && switchAState == LOW ) // release
    noteOff(drumchan, note_bassdrum, 0);
  switchAState = currentSwitchState;

  // deal with switchB
  currentSwitchState = digitalRead(switchBPin);
  if( currentSwitchState == LOW && switchBState == HIGH ) // push
    noteOn(drumchan,  note_snaredrum, 100);
  if( currentSwitchState == HIGH && switchBState == LOW ) // release
    noteOff(drumchan, note_snaredrum, 0);
  switchBState = currentSwitchState;

  // deal with switchC
  currentSwitchState = digitalRead(switchCPin);
  if( currentSwitchState == LOW && switchCState == HIGH ) // push
    noteOn(drumchan,  note_hihatclosed, 100);
  if( currentSwitchState == HIGH && switchCState == LOW ) // release
    noteOff(drumchan, note_hihatclosed, 0);
  switchCState = currentSwitchState;

  // deal with first piezo, this is kind of a hack
  val = analogRead(piezoAPin);
  if( val >= PIEZOTHRESHOLD ) {
    t=0;
    while(analogRead(piezoAPin) >= PIEZOTHRESHOLD/2) {
      t++;
    }
    noteOn(1,note_hihatopen, t*2);
    delay(t);
    noteOff(1,note_hihatopen,0);
  }

  // deal with second piezos, this is kind of a hack
  val = analogRead(piezoBPin);
  if( val >= PIEZOTHRESHOLD ) {
    t=0;
    while(analogRead(piezoBPin) >= PIEZOTHRESHOLD/2) {
      t++;
    }
    noteOn(1,note_crash, t*2);
    delay(t);
    noteOff(1,note_crash,0);
  }
}

// Send a MIDI note-on message.  Like pressing a piano key
void noteOn(byte channel, byte note, byte velocity) {
  midiMsg( (0x80 | (channel<<4)), note, velocity);
}

// Send a MIDI note-off message.  Like releasing a piano key
void noteOff(byte channel, byte note, byte velocity) {
  midiMsg( (0x80 | (channel<<4)), note, velocity);
}

// Send a general MIDI message
void midiMsg(byte cmd, byte data1, byte data2) {
  digitalWrite(ledPin,HIGH);  // indicate we're sending MIDI data
  Serial.print(cmd, BYTE);
  Serial.print(data1, BYTE);
  Serial.print(data2, BYTE);
  digitalWrite(ledPin,LOW);
}
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

dans la syntaxe

// what midi channel we're sending on
#define drumchan           1
 
// general midi drum notes
#define note_bassdrum     35
#define note_snaredrum    38
#define note_hihatclosed  42
#define note_hihatopen    44
#define note_crash        49

 je ne sais pas si la definition des notes correspond à celle de son module drum ou que cela correspond à une note que peut générer arduino (fréquence ou quelque chose comme ça)
« Last Edit: April 15, 2007, 08:58:39 am by cruchovic » Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 198
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En fait, je pense que ce que tu as dans le monitor c'est les valeurs analogique (peut être en hexa si y'a des lettres). Avec Processing tu doit pouvoir récupérer la valeurs et en fonction de celle si, jouer tel ou tel son.
Pour Processing, va voir http://processing.org/reference/libraries/index.html dans les librairies Sound.  smiley-wink
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Et, à propos ... j'essaye de faire un truc similaire avec Pure Data pour les sons, avec le modèle

capteurs (piezos, bouttons, etc.)  -----> Arduino ---(série)---> PC \ Pure Data ----> readsf~ "..."

J'ai trouvé des fichiers son ici:
http://www.philharmonia.co.uk/thesoundexchange/sound_samples/sample_libraries/notes/
(librairie impressionnante)
... que j'ai téléchargé en masse via un script php de ma confection

Par contre, ça nécessite d'apprendre à se servir de Pure Data, ce qui ne me semble pas fortuit quand on veut faire des choses sympa en musique électronique !

Pour plus de détails, je peux fournir ma configuration, mais elle n'a rien de standart (n'ayant pas réussi à installer les librairies de communication avec arduino pour Pd, par exemple)
Logged

Bordeaux, France
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
j'utilise une interface midi/usb...mais cela necessite t il d'avoir un soft pour gérer les sons ou les sons sont ils compris dans la syntaxe Arduino?
Je ne me suis pas penché sur le code en détail mais d'après ce que j'ai vu sur le site:
Le piezo, c'est juste une sorte "d'interrupteur" un peu mieux, ensuite ça envoie des commandes midi. Les commandes midi, ce ne sont que des commandes, il n'y a pas de son dans un signal midi. Il te faut donc quelque chose qui associe telle note midi à tel son.
Cette association peut-être faite par un appareil genre un synthétiseur, une batterie électronique etc. ou un ordinateur sur lequel il te faut un logiciel de musique en effet.
J'ai déjà fait ça avec le logiciel Ableton LIVE mais c'est un peu une usine à gaz si tu veux juste envoyer quuleques sons.
Je sais que QuickTime sais faire cette association quand il lit des fichiers .mid, par contre je ne sais pas si tu peux lui faire faire pour un signal midi en entrée de ta carte midi...
Le plus simple doit être d'utiliser GarageBand, il me semble que tu peux faire l'association (ou qu'elle est faite automatiquement lorsque t'enregistre en midi).

Je compte réaliser ce Midi drum kit quand j'aurai un peu de temps. Je vous tiendrai au courant. smiley
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 7
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je suis en train de fabriquer ce drum kit .
Mais alors quelqu'un à réussit à le faire ici ou non?
En fait je voudrais savoir si il n'y a pas moyen de récupéré le midi qui vient de l'arduino via midi yoke et de le choper après en In dans Ableton Live ?
Mais je ne sais pas si c'est plus simple que de brancher en midi physiquement.
C'est juste que sa éviterait l'achat de matériels inutile. Ou pas .

Fru .
Vive Arduino ! ;D
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

where does the midi data go??
to midi controller?or what?
Logged

Massongex, Suisse
Offline Offline
Full Member
***
Karma: 3
Posts: 169
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Whaou, ça c'est du déterrage de post (presque 2 ans). Et "in english" en plus :-)
Logged

Pages: [1]   Go Up
Jump to: