Arduino

Sparkfun Midi Shield (2)

Sunday, December 16, 2012
Sparkfun Midi Shield (2)Like0

Hier een geupdate versie van de code van gisteren.

Indien een van de knoppen wordt in gedrukt, kun je de pitchbend veranderen van een al spelende midi sound (dus: neem in Nuendo een noot op, laat deze loopen en gebruik deze patch om met de potmeter de pitchbend aan te passen).

De reden dat ik gisteren op bepaalde noten dialoog schermen te zien kreeg (en loop aan/uit, rec aan/uit, et cetera) was simpel en logisch, maar je moet er maar opkomen: midi kanaal 1 wordt normaal gesproken gebruikt voor de Mackie Controller. Ik gebruik nu dus mijn tweede midi-ingang en dan is het probleem verdwenen.

——–

// 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 note;                              // Definieer midi note
byte velocity;                          // Definieer midi velocity
int pot;                                // Definieer potentiometer (pin A0)

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 ***************//

pot = analogRead(0);                                        // pot = analoge waarde uitlezing van pin 0   (tussen 0 – 1023)
note = 127-(pot/8);                                         // mappen naar 0-127 en draairichting knop omdraaien
if(button(BUTTON1) || button(BUTTON2) || button(BUTTON3))   // Als drukknop 1, 2 of 3 wordt ingedrukt,
{
Midi_Send(0xE0,note,note);                                // Stuur midi commando (note on op channel 1 (0x90)), note, middel velocity

delay(10);
}
}

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

void blink(){
digitalWrite(STAT1, HIGH);
delay(100);
digitalWrite(STAT1, LOW);
delay(100);
}

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.