Vous êtes ici :   Accueil » Pédale d'expression MIDI
 
 

Pédale d'expression MIDI (Do It Yourself!!)

Je me suis remis à la guitare il y a peu, mais plutôt que d'avoir un bazar d'ampli et pédales branché (dont le son sera de toute façon au minimum sous peine de représailles du reste de la famille agacée...) et trainant dans un coin de la maison, je me suis penché vers une installation "zéro matos", enfin, disons plutôt "Minimum matos"...  

Il suffit d'un ordinateur, d'une carte son, d'un casque et bien sur d'une guitare (ou basse).

Tout ceci est plutôt bien expliqué ici:

http://guitare-studiopro-masterclass.com/cours-de-guitare-gratuit/materiel-guitare

 

Hé oui..., la puissance des PC actuels permet avec de bon softs de modéliser en temps réel quasiment tous les amplis, baffles, pédales d'effet et autres outils de traitement de son.

C'est pas un home studio pro, loin de la, mais avec un investissement plus que raisonnable, ca permet de s'amuser tout de suite. 

 

 Voici donc mon installation:

 

 

 

 

Il faut ajouter à cela le DAW (Digital Audio Workstation), l'enregistreur audio numérique qui supportera les plugins VST (plugins de simulation et traitement audio) nécessaires à simuler la config de son guitariste préféré.... smile

J'ai choisi REAPER, il est vraiment pas cher (environ 40€), et dispose d'une période d'essai de 2 mois ce qui est bien pour s'en faire une idée. Il est assez simple d'utilisation, pas trop mal foutu, assez stable, et je pense très complet même si je ne sais en utiliser pour l'instant que moins de 10% de ses capacités...

Lien: http://www.cockos.com/reaper/

 

 

 

 

Il faut ensuite adjoindre à REAPER les plugins VST de simulation d'ampli

Voici un lien vers un site très bien fait avec de nombreuses infos et une page notamment sur les plugins d'ampli gratuits. 

Lien: http://www.grebz.fr/simulator_freeamp.php

 

Exemple de modélisation de tête d'ample avec double baffle:

(dispo ici: http://lepouplugins.blogspot.fr/)

 

 

 

 

 On peut donc régler les plugins à la souris avec les boutons virtuels pour obtenir le son désiré.

Le problème c'est avec des simulation de pédales d'effet comme la Whammy ou la Wahwah, puisqu'on modifie les paramètres en temps réel pendant que l'on joue. 

 

 

 

Il existe des pédales d'expression  dans le commerce, mais on peut aussi en bidouiller une facilement avec un Arduino.

Ce que je veux faire, c'est donc une pédale que je pourrai assigner soit  au plugin Whamdrive  (une Whammy, lien ICI) soit au plugin GreenMachine Wah (une Wahwah, lien ICI).

Le tout sera assignable par un ou deux switch.

Et ca tombe bien j'ai ce qu'il faut..... une vieille Wah dont je vais utiliser le potentiomètre, un Switch d'ampli et un Arduino Nano qui traine....

Voila ce que je veux obtenir:

 

 

 

 

Je n'ai rien inventé, on trouve déjà ce type de montage, très bien documentés, notamment sur ce lien:

http://www.codeproject.com/Articles/38203/Arduino-Based-MIDI-Expression-Pedal

Je l'ai juste modifié pour y ajouter 2 switchs et une LED.

Voici donc le schéma:

 

  

 

Et le schéma de câblage que j'ai intégré dans le boitier de ma Wah:

 

 

 

Reste plus que le code à balancer dans le microcontrôleur:

Je suis partit du code de jeffb42 (voir lien plus haut) que j'ai adapté pour pouvoir sélectionner  avec le switch 1 le plugin whamdrive (Led allumé) ou GreenMachine Wah (Led éteinte).

Le switch 2 dans mon cas sert à activer ou désactiver le pitch.

 

Code ARDUINO

//#define DEBUG                 1

// Constants
const int LED_PIN = 12;             // LED connected to digital pin 12
const int SW2_PIN = 11;             // Switch 1 connected to digital pin 11
const int SW1_PIN = 10;             // Switch 2 connected to digital pin 10
const int POT_PIN = 0;              // Pot connected to analog pin 0
const int POT_THRESHOLD = 7;        // Threshold amount to guard against false values
const int MIDI_CHANNEL = 0;         // MIDI Channel 1

#ifdef DEBUG
const int DEBUG_RATE = 9600;        // Serial debugging communicates at 9600 baud
const int SERIAL_PORT_RATE = DEBUG_RATE;
#else
const int MIDI_BAUD_RATE = 31250;   // MIDI communicates at 31250 baud
const int SERIAL_PORT_RATE = MIDI_BAUD_RATE;
#endif


void setup()
{
    pinMode(LED_PIN, OUTPUT);       // Sets the digital pin as output
    pinMode(SW1_PIN, INPUT);            // Sets the Switch 1 digital pin as input
    pinMode(SW2_PIN, INPUT);            // Sets the Switch 2 digital pin as input
   
    digitalWrite(LED_PIN, HIGH);    // Turn the LED on
    Serial.begin(SERIAL_PORT_RATE);  // Starts communication with the serial port
}

void loop()
{
    static int s_nLastPotValue = 0;
    static int s_nLastMappedValue = 0;
    static int SW2LastValue = 0;
    static int SW2Value = 0;
   
    if(digitalRead(SW1_PIN) == HIGH){         
      digitalWrite(LED_PIN, HIGH);              // LED ON for Whammy
    } else {
      digitalWrite(LED_PIN, LOW);               // LED OFF for Wah
    } 
   
    SW2Value = digitalRead(SW2_PIN);
    if ((SW2Value != SW2LastValue) && (digitalRead(SW1_PIN)) == HIGH){
      if((digitalRead(SW2_PIN)) == HIGH){                    
        Serial.write(0xB0 | (byte (MIDI_CHANNEL) & 0x0F));    // Control change command
        Serial.write(0x0C);                                   // foot controler command for Pitch Shifter Bypass
        Serial.write(byte (127) & 0x7F);                      // Pitch Shifter ON
        SW2LastValue = HIGH;
      } else {
        Serial.write(0xB0 | (byte (MIDI_CHANNEL) & 0x0F));    // Control change command
        Serial.write(0x0C);                                   // foot controler command for Pitch Shifter Bypass
        Serial.write(byte (0) & 0x7F);                        // Pitch Shifter OFF
        SW2LastValue = LOW;
      }
    }
     
    int nCurrentPotValue = analogRead(POT_PIN);
    if(abs(nCurrentPotValue - s_nLastPotValue) < POT_THRESHOLD)
        return;
    s_nLastPotValue = nCurrentPotValue;

    int nMappedValue = map(nCurrentPotValue, 1023, 0, 0, 127); // Map the value to 0-127
    // Change to map(nCurrentPotValue, 0, 1023, 0, 127) will change the direction of the potentiometer if needed
    if(nMappedValue == s_nLastMappedValue)
        return;
    s_nLastMappedValue = nMappedValue;

   
    if(digitalRead(SW1_PIN) == HIGH){
     MidiWhamdrivePot(MIDI_CHANNEL, nMappedValue);
    } else {
     MidiGreenMachineWhaPot(MIDI_CHANNEL, nMappedValue);
    } 
}

 

void MidiWhamdrivePot(byte channel, byte position)
{
#ifdef DEBUG
    Serial.println(position, DEC);
#else
    Serial.write(0xB0 | (channel & 0x0F));    // Control change command
    Serial.write(0x04);                       // foot controler command for whammy vst
    Serial.write(position & 0x7F);            // Position of expression pedal (0-127)
#endif
}

 

void MidiGreenMachineWhaPot(byte channel, byte position)
{
#ifdef DEBUG
    Serial.println(position, DEC);
#else
    Serial.write(0xB0 | (channel & 0x0F));    // Control change command
    Serial.write(0x0B);                       // foot controler command for green machine wha vst
    Serial.write(position & 0x7F);              // Position of expression pedal (0-127)
#endif
}

 

 

 

à venir: la configuration de REAPER... 

 

 

 

 

 


Date de création : 04/11/2013 @ 14:11
Dernière modification : 07/11/2013 @ 23:11
Catégorie : - Guitare
Précédent  
  Suivant


Réactions à cet article

Personne n'a encore laissé de commentaire.
Soyez donc le premier !

Vous êtes ici :   Accueil » Pédale d'expression MIDI