midi controller con arduino nano (progetto impossibile ;D)

buongiorno a tutti!
chiunque abbia letto la mia presentazione sarà al corrente che non so una cippa di programmazione. Ho usato arduino solamente con qualche esempio senza scrivere nulla di mio (e senza,come detto prima,capirci una cippa) e con s4a, un bebè uscito male tra scratch e arduino. Due grandi problemi di quel programma sono il fatto di non poter importare schetches sulla scheda e che il riconoscimento dei bottoni è limitato ai pin digitali 2 e 3. il mio progetto è quello di creare un piccolo midi controller. Notare che ho già un launchpad,volevo solo un robino leggibile in midi con tre bottoni collegati ai pin 2-3-4 e tre led che si accendono alla pressione di questi tasti
(non programmabili come le luci del launchpad,solo "se premi bottone 1 accendi luce e poi spegni luce"))
collegati a 13-12-11. Ho comprato un arduino nano e se per caso i pin non andassero bene posso benissimo cambiarli,per la bredboard non c'è problema. Unico fatto è: potreste per caso aiutarmi a scrivere questo codice e per caso spiegarmi le singole righe cosa fanno? (ad esempio "pincopallino:2=92 vuol dire questo"

grazie in anticipo per l'attenzione e la pazienza :smiley:

p.s. per eventuali "upgrade" vi scrivo il materiale disponibile per il progetto:
-arduino nano
-breadboard piccola
-breadboard grande
-tre tasti neri piccoli e un tasto rosso obbrobbioso che non funziona bene
-9 led,due mini led e le eventuali resistenza
-buzzer o piezo ,motori e ciarpame nero come cilindri strani simili alle resistenze di cui non conosco l'utilità
-uno schermino 2x16
-cavi in abbondanza
-specie di pulsante che dà elettricità in base a quanto viene girato
-un rgb led (il mio tessorrro da 2.50$)
-arduino uno (preferisco usare il nano)
-servo motore

so che buona parte delle cose non serve,se però vi veniste qualche idea scrivete pure :smiley:

non tanto perchè mi serve una periferica nuova,solo per testare arduino :wink:

luiggio:
... potreste per caso aiutarmi a scrivere questo codice e per caso spiegarmi le singole righe cosa fanno? (ad esempio "pincopallino:2=92 vuol dire questo" ....

Emmm ... sarebbe il caso che rilegga con MOLTA attenzione il REGOLAMENTO ed in particolare il punto 16.1 ... :confused:

Ovvero, il codice DEVI scrivelo TU, noi qui ti aiutiamo a capire gli errori ed a correggerlo :slight_smile:

Guglielmo

... allo stesso modo rammento ai vari "commentatori" (... che ho cancellato), il punto 16.2 e 16.4.

Su, su, fate i bravi :wink:

Guglielmo

sono cosciente di questo:non ho chiesto un codice già fatto,ma sto cercando il modo per trasformare un nano in "midi". per il resto sto leggendo qualche guida di arduino,così per potermi "arrangiare da solo" per il resto.

Grazie comunque dell'attenzione

Se vuoi giocare con il midi allora usa una Teensy 3.2, tra le varie interfacce USB c'è anche la midi, inoltre possiede molta più ram e flash di una UNO, non ultimo usa un processore a 32 bit che la rende molto, ma molto, più performante della UNO e/o qualunque altro modello di Arduino a 8 bit.

grazie per il consiglio! era solo un pretesto per provare arduino. Non tanto per avere altri midi

comunque è vero:ho espresso molto male il concetto,scusate ancora per il disturbo

luiggio:
comunque è vero:ho espresso molto male il concetto,scusate ancora per il disturbo

Non occorrono “scuse” e non c’è stato nessun “disturbo” :slight_smile: … piuttosto, un suggerimento …

… se non hai mai sviluppato su Arduino, o hai sviluppato molto poco, puoi cominciare con studiare QUESTO proseguire con QUESTO e acquistare un buon libro (es. QUESTO) … dopo di che puoi cominciare a scrivere il tuo programma, metterlo qui (… mi raccomando, sempre racchiuso tra i tag CODE che, in fase di edit, ti inserisce il bottone </> … primo a sinistra) e chiedere aiuto sui punti che non ti funzionano o che non capisci.

Guglielmo

grazie infinite! seguirò appena possibile il corso del pdf :wink:
per quanto riguarda il fattore "midi" lascierò perdere il progetto per dedicare lo studio ai vari esempi del libro e aspettando che nella nostra scuola arrivi il prof di informatica!

ho provato qualche esempio,anche se non so ancora scrivere di mio.
per quanto riguarda il fattore “midi” ho trovato qualche programma per “simulare” il linguaggio con arduino. ho preso un progetto per arduino uno con 4 pulsanti e potenziometri per poi smanettare con le variabili e cambiare il numero di tasti e il tipo di imput (da notare che per fare sta’ mezza cosa con tre pulsanti togliendo i potenziometri e semplificando per nano ci ho impiegato un pomeriggio intero :D) eliminando e sintetizzando le righe sui potenziometri (sono andato sul sicuro eliminando ogni segno di analog nel codice). il robino funziona bene :grinning: . il prossimo passo sarà aggiungerci tre led funzionanti con i pulsanti :wink:

ecco il codice per chi volesse scopiazz…ehm intendevo “modificarlo secondo la lincenza blablabla” :slight_smile:

#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();



const int NButtons = 3; // modificare la variabile secondo il numero di pulsanti
const int button[NButtons] = {2, 3, 4}; // numeri dei pins digitali dei pulsanti
int buttonCState[NButtons] = {0}; // NON TOCCARE SE NON VUOI MODIFICARE IL CODICE
int buttonPState[NButtons] = {0}; // NON TOCCARE SE NON VUOI MODIFICARE IL CODICE



byte midiCh = 1; // canale midi
byte note = 36; // *la nota più bassa usata (le altre invece saranno (Nota + 1)




void setup () {

  //iniziare con la libreria midi
  MIDI.begin();
  
  Serial.begin(115200); // Usare questo numero per il programma "hairless midi" 31250 per una porta midi fisica
  
  for (int i=0; i<NButtons; i++){
    pinMode(button[i], INPUT_PULLUP);
  }
  
  
 
  

}

void loop () {

  
  for (int i=0; i<NButtons; i++) {
    buttonCState[i] = digitalRead(button[i]);
  }
    
  //in base al bottone premuto suona una nota
  for (int i=0; i<NButtons; i++) {

    if (buttonCState[i] != buttonPState[i]) {

      if(buttonCState[i] == LOW) {     
        MIDI.sendNoteOn(note+i, 127, midiCh); // nota,velocità e canale midi 
        buttonPState[i] = buttonCState[i];
      }
      else {
        MIDI.sendNoteOn(note+i, 0, midiCh); 
        buttonPState[i] = buttonCState[i];
      }
    }
    
  }

  
}

la maggior parte del codice la ho compresa,nonostante non sappia ancora modificarlo totalmente ma anzi semplificandolo molto (ho messo vari aiuti per le modifiche in italiano e diminuendo notevolmente le righe di codice). ho usato un programma chiamato loopmidi per creare un cavo midi “virtuale” (per far funzionare arduino senza una porta midi adatta) e hairless midi per la conversione dei dati. Funziona perfettamente su un qualsiasi arduino nano appena creato il cavo con qualche ritoccata a ableton

Spero sia stato chiaro come voi lo siete stati con me :smiley:

finalmente ho capito come parlare le basi di arduinese