LMMS e Arduino

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso

LMMS e Arduino

Messaggio Da lucaventimiglia il 3/5/2015, 03:05

Salve a tutti,
sto realizzando un'arpa laser; sono riuscito ad interfacciare Arduino come periferica MIDI e sono riuscito anche a far emettere dei suoni al pc tramite LMMS selezionando gli INPUT e gli OUTPUT ecc... Il problema è che Arduino oltre ad emettere la nota indicata (0-127) emette la nota in modo ripetitivo e a scatti (fastidiosissimo!) anche nelle ottave precedenti a quella designata. Per esempio, gli dico di suonare la nota 48 della terza ottava; lui la suona bene senza scatti ( quindi se tipo è un violino va liscio senza problemi); però suona anche la nota 48 nella seconda e nella prima ottava a scatti come se altre due dita invisibili piggiassero ripetutamente i tasti della tastiera... Questo è stranissimo perché grazie al cursore verde io dovrei scegliere l'ottava in cui posizionarmi o sbaglio? Cosa centrano ora le ottave precedenti? Sto uscendo pazzo perché è davvero una cosa fastidiosissima sentire che una nota suona bene però viene interrotta dalle altre che suonano a scatti. Vi prego aiutatemi! Sono disperato! Vi posto anche il codice sorgente su Arduino... possibile che sia sbagliato il codice? Ho inserito anche un ritardo senza delay per migliorare ancora di più la reattività dell'arpa: con il delay faceva schifo.

int velocity=100;
int noteON = 144;//144 = 10010000 in binary, note on command
int noteOFF = 128;//128 = 10000000 in binary, note off command
int note=50;

long previousMillis = 0;
long interval = 1000;


int fotoDO;
int fotoRE;
int fotoMI;
int fotoFA;
int fotoSOL;
int fotoLA;
int fotoSI;
int fotoDO8;


int DO= 48 ;
int RE= 50 ;
int MI= 52 ;
int FA= 53;
int SOL= 55;
int LA= 57;
int SI= 59;
int DO8= 60 ;

void setup() {
Serial.begin(9600);
pinMode(11,INPUT);
pinMode(10,INPUT);
pinMode(9,INPUT);
pinMode(8,INPUT);
pinMode(7,INPUT);
pinMode(6,INPUT);
pinMode(5,INPUT);
pinMode(4,INPUT);

}

void loop () {
fotoDO=analogRead(A0);
fotoRE=analogRead(A1);
fotoMI=analogRead(A2);
fotoFA=analogRead(A3);
fotoSOL=analogRead(A4);
fotoLA=analogRead(A5);
fotoSI=analogRead(A6);
fotoDO8=analogRead(A7);
Serial.println(fotoSOL);

if (fotoDO<50) {
MIDImessage(noteON, DO, velocity);
pausa();

}
else MIDImessage(noteOFF, DO, velocity);

if (fotoRE<50) {
MIDImessage(noteON, RE, velocity);
pausa();
}
else MIDImessage(noteOFF, RE, velocity);


if (fotoMI<50) {
MIDImessage(noteON, MI, velocity);
pausa();
}
else MIDImessage(noteOFF, MI, velocity);

if (fotoFA<50) {
MIDImessage(noteON, FA, velocity);
pausa();
}
else MIDImessage(noteOFF, FA, velocity);

if (fotoSOL<50) {
MIDImessage(noteON, SOL, velocity);
pausa();
}
else MIDImessage(noteOFF, SOL, velocity);

if (fotoLA<50) {
MIDImessage(noteON, LA, velocity);
pausa();
}
else MIDImessage(noteOFF, LA, velocity);

if (fotoSI<50) {
MIDImessage(noteON, SI, velocity);
pausa();
}
else MIDImessage(noteOFF, SI ,velocity);

if (fotoDO8<50) {
MIDImessage(noteON, DO8, velocity);
pausa();
}
else MIDImessage(noteOFF, DO8, velocity);

}
void MIDImessage(int command, int MIDInote, int MIDIvelocity) {
Serial.write(command);//send note on or note off command
Serial.write(MIDInote);//send pitch data
Serial.write(MIDIvelocity);//send velocity data
}

void pausa() {
unsigned long currentMillis = millis();

if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
}
}

lucaventimiglia
Ospite


Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da DeRobyJ il 3/5/2015, 14:26

Hey ciao!
innanzitutto grazie per star condividendo questo tuo esperimento qui, mi fa molto piacere e sono sbalordito già per il fatto che funzioni xD

Ma andando al problema. Se ho capito bene quello che succede è che la nota che invii come MIDI viene suonata correttamente, ma durante il suo suono vengono sentite anche le stesse note ma di ottave precedenti e successive a scatti.

Non conosco una funzionalità di LMMS che permette di suonare una nota fissa e altre a scatti, nè una che suoni ottave sia precedenti che successive.

Quindi ci dev'essere qualcosa con l'invio di note midi.

Comprendo, dalla lettura del codice, che hai scritto le informazioni MIDI di una sola ottava (da DO a DO8). Non mi è chiaro se è possibile suonare diverse ottave delle note. Ossia note fuori dall'intervallo 48-60 di note MIDI.
Se non hai gestito input per quelle note, vuol dire che esse vengono generate, che quindi il problema sta dopo la lettura analogico-digitale.

Puoi illustrarmi un po' meglio le parti del codice?
Puoi anche dirmi che strumento usi su LMMS e quali sono le impostazioni MIDI?


Edit:

Nota anche che le note midi vanno da 0 a 127, e non sono riferite ad una ottava.
da 48 a 60 hai una ottava, ma le ottave precedenti saranno ad esempio da 36 a 48, o da 24 a 36 (sempre considerando da un DO al DO successivo)
avatar
DeRobyJ

Posts : 38
Join date : 19.12.14

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da lucaventimiglia il 3/5/2015, 15:31

si scusa hai perfettamente ragione riguardo le ottave! Mi sono n attimo confuso xD ! Comunque vengono registrate le note anche delle ottave precedenti non di quelle che vengono dopo. Ora ti illustro il codice, partiamo dalla fine:
-----------------------gli ultimi due void--------------------------
1) void MIDImessage(): è la funzione che io richiamerò nel loop principale per inviare messaggi MIDI ad LMMS; ora ti spiego ogni singola variabile:
-int command= è la variabile su cui scrivere in seriale NOTE ON (suona la nota) NOTE OFF ( non suonarla) svolge quindi una funzione binaria ACCESO -SPENTO;
-int MIDInote = la nota scelta che è identificata con i numeri MIDI 50-52-54 ecc....
-int MIDIvelocity = la velocità con cui viene schiacciato il tasto, una sorta di volume per la nota (se vogliamo), che io ho indicato all'inizio del programma essere uguale a 100( se non erro 127 è il massimo);
2) void pausa() = questa è una funzione che mi permette di sostituire il delay(),fastidiosissimo perché blocca il programma; ora l'arpa è molto più reattiva con l'introduzione di questa funzione! L'unico vero ritardo adesso è il ciclo di scansione di Arduino: 20 ms! Pochissimo per la mia applicazione. Nel loop principale, quando lo richiamo, faccio in modo che la nota suoni per quanto tempo desidero e appena rilascio subito smette di suonare: reattività 100%!
---------------void loop()-------------
3) void loop() = ti spiego tutte le variabili:

int fotoR1;
int fotoR2;
int fotoR3;
int fotoR4;
int fotoR5; Queste sono le variabili legate al valore analogico letto dalle fotoresistenze
int fotoR6;
int fotoR7;
int fotoR8;

La logica è questa: il flusso laser colpisce una fotoresistenza; questa mi darà in analogico un certo valore; se [if] questo valore scende sotto un certo intervallo[fotoR1<50] , ovvero metto io la mano davanti al laser interrompendo il flusso, mando il messaggio MIDI a LMMS [ MIDI messages(note ON, note, velocity) ] altrimenti [else] gli dico di non riprodurre la nota [ MIDI messages(note OFF, note, velocity) ].
Questo ragionamento si ripete per tutte le fotoresistenze; l'unica cosa che cambia è la nota suonata [ note ] che io ho comodamente indicato con DO RE MI FA SOL LA SI DO8 associando a queste variabili il corrispondente numero MIDI.

lucaventimiglia
Ospite


Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da DeRobyJ il 3/5/2015, 15:43

Hey,
Sì il codice ora l'ho capito meglio.

Mi risulta chiaro che il problema è dentro LMMS, perchè i passaggi mi sembrano fatti correttamente.
Potresti inviarmi il progetto che stai usando?
Quanti strumenti sono connessi ad LMMS?

Prova anche a registrare una sessione sul pianoroll e riascoltarla per vedere il risultato.

Song Editor > Clicca in uno spazio della traccia dello strumento connesso MIDI > Doppio click sul blocco per aprire il Piano Roll > Premi sul pulsante Rec (dovresti sentire anche un metronomo) > Suona con il tuo strumento

E poi riascolta.
avatar
DeRobyJ

Posts : 38
Join date : 19.12.14

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da lucaventimiglia il 3/5/2015, 15:45

Ho dimenticato di dirti che il problema me lo dà con qualsiasi vst plugin: quello che suono è Kicker, armonica ,saxophone, cello(gli ultimi tre li ho scaricati; cello penso si sia danneggiato infatti devo provare a riscaricarlo perché amo il suono che fa). Comunque se non ti è chiaro come mi sono espresso chiedi pure; considera che non sono programmatore e conosco pochissimo riguardo i linguaggi, però ne comprendo la logica ( almeno la maggior parte della logica...) Per quanto riguarda le impostazioni MIDI sono quelle di default, ovvero non ho messo le mani dove non ne capivo il significato; altre funzioni sono più intuitive ( tipo nella sezione func dove ci sono gli accordi e le ottave; stanno disattivate ovviamente... xD )
DA NOTARE: il problema non è solo di LMMS, ovviamente ne ho provati altri di vst host ma mi danno tutti lo stesso problema tranne Max 7 ( su cui non so cambiare il suono delle note però xD), anche se non sono sicuro che quest'ultimo sia un vst host. Il problema sta quindi nell'invio dei messaggi MIDI, ci saranno dei falsi positivi BHO!

lucaventimiglia
Ospite


Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da lucaventimiglia il 3/5/2015, 15:58

Ok adesso provo e ti faccio sapere come si comporta.
Perdona l'ignoranza ma come posto il file sul forum, vedo opzioni per postare immagini, link, ma non una per postare il file (non sono praticodei forum xD).
Se il progetto riuscirà scriverò una guida su questo sito[url=domenicogaldiero.altervista.org]elettronicaOpenSource[/url] con lo scopo di fare una grande pubblicità ad LMMS. Cool

lucaventimiglia
Ospite


Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da DeRobyJ il 3/5/2015, 16:09

Perfetto, sarò contento di riferire del tuo esperimento anche al team di sviluppatori xD

In ogni caso, prova questa cosa della registrazione.

Se su ogni vst host ti fa così c'è veramente qualcosa di strano.

Su Max che oggetti usi? Immagino mtof per convertire a frequenza e poi un cycle o un saw o qualcosa di simile.
C'è sfplay, apli l'help e dovresti trovare info. Permette di suonare un campione.
avatar
DeRobyJ

Posts : 38
Join date : 19.12.14

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da lucaventimiglia il 3/5/2015, 16:30

Ecco ti posto l'immagine; sono completamente nuovo del MIDI (un mesetto circa) quindi non sono ancora pratico nell'utilizzare questi strumenti ma anche in questo campo capisco la logica ahahhahahah xD
Ora ti posto anche l'immagine del progetto su LMMS



lucaventimiglia
Ospite


Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da DeRobyJ il 3/5/2015, 16:50

Max lasciamolo stare che è più complicato da vedere.

Tornando a LMMS, apri un nuovo progetto, prendi il TriploOscillatore di default e attaccagli il midi IN.
Fai solo questo, vedi se c'è ancora il problema, e se dovesse esserci fai la registrazione come ti ho detto.

Per inviare un progetto lo devi caricare su un altro sito (come mega.co.nz) e poi postare il link.
avatar
DeRobyJ

Posts : 38
Join date : 19.12.14

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da lucaventimiglia il 3/5/2015, 20:28

Benissimo... ho notato una cosa... credo che la cosa dipenda dai vst plugin... Quando apro LMMS metto il sassofono e l armonica ( fa un suono bellissimo perché il sassofono a C3 sembra un violino Very Happy ) . Appena cambio vst plugin e metto i drums tipo ritorniamo di nuovo a quel problema(ovvero note interrotte ripetute eccetera... Attenzione però premetto che anche quando all'inizio tengo solo sassofono e armonica le note delle ottave precedenti vengono suonate, solo senza interruzioni creando un bellissimo effetto orchestra ( ci sta tutto! MI PIACE!); quando poi metto i drums mi rifa il problema (forse sono suoni troppo forti? BHO!) e me lo rifa anche se dopo rimetto sassofono e armonica... Per ritornare alla situazione iniziale devo chiudere LMMS e riaprirlo ; non devo però salvare nessun progetto altrimenti lui mi salva anche il bug! Però sono felicissimo perché suona in maniera eccelsa raga :')

lucaventimiglia
Ospite


Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da lucaventimiglia il 3/5/2015, 20:37

Comunque il triplo oscillotore è uno di quelli che non mi dà problemi ! Va una bellezza! Soprattutto quando mentre tengo premuta una corda laser gli cambio velocemente col mouse l'ottava ahahahhaahah bellissimo !

lucaventimiglia
Ospite


Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da DeRobyJ il 3/5/2015, 23:12

Ok il comportamento è abbastanza anomalo. Il fatto che ti suoni altre ottave è già di per se strano. Soprattuto perchè, come dici, con il triplo oscillatore va bene.

Quindi questo problema occorre quando usi più VST insieme? O se colleghi al midi solo l'armonica o solo il sassofono funziona tutto bene?
Hai provato a fare l'esperimento con una tastiera midi? Giusto per provare.
avatar
DeRobyJ

Posts : 38
Join date : 19.12.14

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da lucaventimiglia il 5/5/2015, 03:39

Scusa, allora mi sono espresso male.
L'oscillatore va bene nel senso che suona le note senza interruzioni, ma le note delle ottave precedenti le suona comunque. Ti ripeto che l'effetto non mi dispiace perché fa un bell'effetto orchestra soprattutto con gli archi. Il problema non c'è solo quando ci sono più vst insieme, dipende: kicker e drums sono due di quelli che a volte mi danno il problema e a volte no. Non possiedo una tastiera MIDI purtroppo :'(
Comunque il problema è dei vst plugin, se chiudo e riapro il programma ritorna a funzionare tutto bene. Vabbé dai intanto mi esercito a suonare l' Inverno di Vivaldi sulla mia arpa laser con una sezione di archi *.* Appena posso vi mando il video Cool Grazie per l'aiuto e la disponibilità che mi avete dato Smile

lucaventimiglia
Ospite


Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da lucaventimiglia il 5/5/2015, 03:47

Intendevo il triplo oscillatore*

lucaventimiglia
Ospite


Tornare in alto Andare in basso

Re: LMMS e Arduino

Messaggio Da Contenuto sponsorizzato


Contenuto sponsorizzato


Tornare in alto Andare in basso

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto

- Argomenti simili

 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum