Salve a tutti, vi ringrazio in anticipo per l'aiuto che ci date a noi noooooooobbbssss dell'arduino. Premetto che è il mio primo post... cercherò di essere chiaro.
Seguendo questa guida
Spooky Arduino Projects
ho collegato due piezo e un connettore midi alla dashboard, con un cavo da midi a usb sono passato al pc e con cubase e un vst ho fatto suonare il tutto. Fin qui tutto bene!!
Funziona tutto a meraviglia, se non chè, se suono un piezo per volta tutto bene, riporduce il suono del vst, ma se li suono insieme uno dei due si annulla. Praticamente si annulla sempre il piezo che sta sull' analogico 0, mentre suona quello sull'analogico 1.
Prima di postarvi il codice vi elenco un altro problema riferito a quest'ultimo.. In pratica, sarà che non sono molto pratico, non riesco a settare i canali separati per strumento del vst. Anche se do 0x90-0x91-0x92 ecc su arduino una volta caricato in cubase suona tutto dallo stesso canale sia del vst che della traccia audio di cubase.
posto il codice che è un sunto di vari codici trovati su siti.. so che magari è una porcata ma abbiate pietà please..
#define drumchan 1
#define drumchan2 2
#define switchAPin 11
#define PIEZOTHRESHOLD 40
#define PIEZOTHRESHOLD1 40
#define piezoAPin 0
#define piezoBPin 1
int val, val1,t,c;
int ledPin = 13;
byte note = 0;
int switchAState = LOW;
int currentSwitchState = LOW;
int sensorValue;
int sensorPin = 0;
void setup() {
pinMode(switchAPin, INPUT);
digitalWrite(switchAPin, HIGH);
Serial.begin(31250);
}
void loop() {
val = analogRead(piezoAPin);
if( val >= PIEZOTHRESHOLD ) {
t=0;
while(analogRead(piezoAPin) >= PIEZOTHRESHOLD/2) {
t++;
}
noteOn(0x90| (drumchan2) ,38, 0x45);
delay(t);
noteOff(0x90 | (drumchan2),38,0);
}
val1 = analogRead(piezoBPin);
if( val1 >= PIEZOTHRESHOLD1 ) {
c=0;
while(analogRead(piezoBPin) >= PIEZOTHRESHOLD1/2) {
c++;
}
noteOn(0x91,36, 0x40);
delay(100);
noteOff(0x91,36,0);
}
currentSwitchState = digitalRead(switchAPin);
// Check to see that the switch is pressed:
if (currentSwitchState == 1) {
// check to see that the switch wasn't pressed last time
// through the main loop:
noteOn(0x92, 60, 0x45);
delay (100);
if (currentSwitchState == 0) {
// set the note value based on the analog value, plus a couple octaves:
// note = note + 60;
// start a note playing:
noteOff(0x92, 60, 0x00);
// save the note we played, so we can turn it off:
switchAState = currentSwitchState;
}
}
}
void noteOn(byte cmd, byte data1, byte data2) {
Serial.print(cmd, BYTE);
Serial.print(data1, BYTE);
Serial.print(data2, BYTE);
}
// Send a MIDI note-off message. Like releasing a piano key
void noteOff(byte channel, byte note, byte velocity) {
midiMsg( (0x80 | channel), 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);
}
Se qualcuno ha qualche idea vi faccio un monumento!! grazie a tutti!!