Salve a tutti. Sono alle prese con un progetto di un midi controller. Per farlo mi servo di una schedina ESP8266, molto pratica viste le ridotte dimensioni e la comodità di sfruttare la wifi direct generata per potermi interfacciare con una applicazione android per cambiare i settaggi dei controlli. Il progetto funziona molto bene ma purtroppo per poter sfruttare la comunicazione di cui bisogno devo avvalermi dei sofware loopMIDI che genera un'interfaccia midi virtuale all'interno del pc e di Hairless MIDI che non è altro che un ponte che connette la porta seriale di Arduino con la porta midi virtuale creata precedentemente. La mia domanda è la seguente; Esiste un modo per rendere questo controller midi artigianale "plug&play" ovvero senza la necessità di utilizzare i due software aggiuntivi? di creare una porta midi virtuale e di collegare la seriale a questa ? Non farlo non è possibile è ovvio ma magari poterlo fare da codice?
Informo inoltre che mi sto interfacciando al pc utilizzando la porta usb della schedina, per caso se io utilizzassi un connettore femmina usb tipo B (quella quadrata a 4 pin) sfruttando la rx della scheda potrei attraverso una libreria usb/midi fare a meno di hairless midi e rendere Arduino sufficiente per farsi vedere come una porta midi?
Sperodi essermi spiegato, nella speranza che qualcuno possa darmi una dritta o un consiglio vi posto il codice attuale.
Grazie.
//MIDICONTROL_V1.0
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <MIDI.h>
#include <midi_Defs.h>
#include <midi_Message.h>
#include <midi_Namespace.h>
#include <midi_RingBuffer.h>
#include <midi_Settings.h>
#include <midi_UsbDefs.h>
//#include <midi_UsbTransport.h>
const int buttonOne = 9; // assegna il pulsante al pin
const int buttonTwo = 4; // assegna il pulsante al pin
const int buttonThree = 0; // assegna il pulsante al pin
const int buttonFour = 12; // assegna il pulsante al pin
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // pongo l'uscita come segnale MIDI
void setup() {
pinMode(buttonOne,INPUT); // setto il pulsante come ingresso
pinMode(buttonTwo,INPUT); // setto il pulsante come ingresso
pinMode(buttonThree,INPUT); // setto il pulsante come ingresso
pinMode(buttonFour,INPUT); // setto il pulsante come ingresso
Serial.begin(115200); // seriale di comunicazione MIDI
}
void loop() {
if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
midiOut.sendControlChange(21,127,8); // send a MIDI CC -- 21 = note, 127 = velocity, 8 = channel
delay(250);
}
}
if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
midiOut.sendControlChange(22,127,8); // send a MIDI CC -- 22 = note, 127 = velocity, 8 = channel
delay(250);
}
}
if(digitalRead(buttonThree) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonThree) == HIGH) { // check button state again
midiOut.sendControlChange(23,127,8); // send a MIDI CC -- 23 = note, 127 = velocity, 8 = channel
delay(250);
}
}
if(digitalRead(buttonFour) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonFour) == HIGH) { // check button state again
midiOut.sendControlChange(24,127,8); // send a MIDI CC -- 24 = note, 127 = velocity, 8 = channel
delay(250);
}
}
}