Octaaf verschuiven

Niet helemaal voor de hand liggend, maar kan wel exact wat je wilt: een Opcode Studio 5LX.

Dat het niet voor de hand liggend is, vind ik alleen maar leuk, dan kom je tot creatieve oplossingen. Wat ik aan het bouwen ben is ook niet voor de hand liggend.
Ik heb gezocht naar de Opcode, maar tot op heden niet kunnen vinden.

De Arduino plus midishield kostte euro 37.60 en inderdaad heel veel tijd, maar een kick op het moment dat het werkt.

Bedankt voor je medewerking.
 
Ik ben wel benieuwd hoe die code er uit ziet, welk format het heeft.

Kan je een stukje code laten zien? Dan heb ik een beter beeld bij Arduino, De voorbeelden op de website zijn me wat te onnozel , Ledje laten branden, dat soort werk.
 
Ik ben wel benieuwd hoe die code er uit ziet, welk format het heeft.

Kan je een stukje code laten zien? Dan heb ik een beter beeld bij Arduino, De voorbeelden op de website zijn me wat te onnozel , Ledje laten branden, dat soort werk.

.
Hier is de code om één octaaf te verschuiven als er een ingang aangesproken wordt. Dit kan je uitbreiden zoveel als je wilt.

------------------


// Riny Assink
// 13-03-2013
// t.b.v. Roland Customized PD 31drum-synth-set

/*

byte commandByte;
byte noteByte;
byte velocityByte;
byte noteOn = 144;
const int buttonPin=2;
const int ledPin=7;
int buttonState;
int octave_1;


void setup(){
Serial.begin(31250);
pinMode(13,OUTPUT);
pinMode(ledPin,OUTPUT);
pinMode(buttonPin,INPUT);
digitalWrite(13,LOW);
}

void checkMIDI(){
do{

buttonState=digitalRead(buttonPin);
if (buttonState==HIGH) {
octave_1=12;
}
else {
octave_1=0;
}

if (Serial.available()){
commandByte = Serial.read();
noteByte = Serial.read();
velocityByte = Serial.read();
Serial.write(noteOn);
Serial.write(noteByte + octave_1);
Serial.write(velocityByte);
noteByte=0;
velocityByte=0;

}

}
while (Serial.available() > 24);
}

void loop(){
checkMIDI();
delay(100);
digitalWrite(13,LOW);
}




byte commandByte;
byte noteByte;
byte velocityByte;
byte noteOn = 144;
const int buttonPin=2;
const int ledPin=7;
int buttonState;
int octave_1;


void setup(){
Serial.begin(31250);
pinMode(13,OUTPUT);
pinMode(ledPin,OUTPUT);
pinMode(buttonPin,INPUT);
digitalWrite(13,LOW);
}

void checkMIDI(){
do{

buttonState=digitalRead(buttonPin);
if (buttonState==HIGH) {
octave_1=12;
}
else {
octave_1=0;
}

if (Serial.available()){
commandByte = Serial.read();//read first byte
noteByte = Serial.read();//read next byte
velocityByte = Serial.read();//read final byte
Serial.write(noteOn);
Serial.write(noteByte + octave_1);
Serial.write(velocityByte);
noteByte=0;
velocityByte=0;

}

}
while (Serial.available() > 24);
}

void loop(){
checkMIDI();
delay(100);
}

Succes
 
Laatst gewijzigd:
Ik zou wel nog even een check toevoegen of die eerste byte daadwerkelijk een note-on/off is, en zo nee alles skippen tot de volgende note-on/off. Want als hij nu om wat voor reden dan ook een byte mist is hij helemaal de weg kwijt.
 
Ik zou wel nog even een check toevoegen of die eerste byte daadwerkelijk een note-on/off is, en zo nee alles skippen tot de volgende note-on/off. Want als hij nu om wat voor reden dan ook een byte mist is hij helemaal de weg kwijt.

Dit is een goede tip. Hoe zou jij dat programmeren in dit geval. Ik ben met de taal net begonnen.
Alvast bedankt
 
Back
Top