Website

Midi shield: beide potmeters werken

Sunday, December 16, 2012
Midi shield: beide potmeters werkenLike0

Zie hier het resultaat:

[youtube clip_id=Q2t1RKGtsfY]

De sketch stuurt nu voor beide meters continu midi data door. Het is natuurlijk beter om alleen data door te sturen indien er daadwerkelijk aan de knop gedraaid wordt. Dat komt nog.

Interessant is dat pitch en modulatie heel anders werken in MIDI.
Voor pitch zeg je “doe mij maar pitch (0xE0), 0, waarde.

Voor modulatie zeg je “doe mij maar een controller (0xb0), namelijk de modulatie coarse (0x01, fine is 0x33) en wel met de volgende waarde. Het duurde even voor ik daar achter was, maar deze link gaf mij het antwoord:

http://home.roadrunner.com/~jgglatt/tech/midispec/ctllist.htm

Voor geïnteresseerden, hier de geüpdatet sketch, gebruikt in de Youtube video:

// SparkFun MIDI Shield and MIDI Breakout test code
// Defines bare-bones routines for sending and receiving MIDI data
// Written 02/16/10
// Modified by Lucas van Tol @ 16-12-2012

// defines for MIDI Shield components only
#define KNOB1  0                        // Definieer draaiknop 1
#define KNOB2  1                        // Definieer draaiknop 2

#define BUTTON1  2                      // Definieer drukknop 1
#define BUTTON2  3                      // Definieer drukknop 2
#define BUTTON3  4                      // Definieer drukknop 3

#define STAT1  7                        // Definieer STAT1 als led output op shield
#define STAT2  6                        // Definieer STAT2 als led output op shield

byte note1;                              // Definieer midi note
byte note2;                              // Definieer midi note
byte velocity;                          // Definieer midi velocity
int pot1;                                // Definieer potentiometer (pin A0)
int pot2;

void setup() {

pinMode(STAT1,OUTPUT);              // Pin 7 is vanaf nu een output.
pinMode(STAT2,OUTPUT);              // Pin 6 is vanaf nu een output.

pinMode(BUTTON1,INPUT);              // Drukknop 1 op pin 2 is nu een input.
pinMode(BUTTON2,INPUT);              // Drukknop 2 op pin 3 is nu een input.
pinMode(BUTTON3,INPUT);              // Drukknop 3 op pin 4 is nu een input.

digitalWrite(BUTTON1,HIGH);          // Schrijf de waarde HIGH naar drukknop 1
digitalWrite(BUTTON2,HIGH);          // Schrijf de waarde HIGH naar drukknop 2
digitalWrite(BUTTON3,HIGH);          // Schrijf de waarde HIGH naar drukknop 3

for(int i = 0;i < 10;i++)             // Knipper MIDI Shield LED’s tijdens het opstarten
{
digitalWrite(STAT1,HIGH);          // HIGH betekent: LED UIT
digitalWrite(STAT2,LOW);           // LOW betekent: LED AAN
delay(100);
digitalWrite(STAT1,LOW);
digitalWrite(STAT2,HIGH);
delay(100);
}
digitalWrite(STAT1,HIGH);             // Zet uiteindelijk beide LEDjes uit
digitalWrite(STAT2,HIGH);

Serial.begin(31250);                  // Baudrate voor MIDI moet 31250 zijn
}

void loop () {

//*************** MIDI OUT ***************//

pot1 = analogRead(0);                                        // pot = analoge waarde uitlezing van pin 0   (tussen 0 – 1023)
note1 = 127-(pot1/8);                                         // mappen naar 0-127 en draairichting knop omdraaien

Midi_Send(0xE0,note1,note1);                                // Stuur midi commando
delay(15);

pot2 = analogRead(1);
note2 = 127-(pot2/8);                                         // mappen naar 0-127 en draairichting knop omdraaien

Midi_Send(0xB0,0x01,note2);                                // 0xB0=Stuur Controller, 0x01=Modulation coarse (0x33 is fine)
delay(15);

}

void Midi_Send(byte cmd, byte data1, byte data2) {
Serial.print(cmd, BYTE);
Serial.print(data1, BYTE);
Serial.print(data2, BYTE);
}

char button(char button_num)
{
return (!(digitalRead(button_num)));
}

 

 

 

 

0

Leave a Reply

Your email address will not be published.

Follow @ Guerrilla Games
Instagram has returned invalid data.