Raspberry-Pi-OSA-MIDI-Board-LOGO

Scheda MIDI Raspberry Pi OSA

Raspberry-Pi-OSA-MIDI-Board-PRODOTTO

Configurazione di Raspberry Pi per MIDI

Questa guida mostrerà come prendere un Raspberry Pi appena installato e farlo funzionare come dispositivo I/O MIDI rilevabile dal sistema operativo. Fornirà anche alcuni example di utilizzare varie librerie Python per ottenere dati MIDI dentro e fuori dall'ambiente di programmazione. AGGIORNAMENTO – 11 settembre 2021.: Questa guida è stata aggiornata per risolvere alcuni problemi con l'ultima versione del sistema operativo Raspberry Pi, puoi anche scaricare un'immagine completa con script preinstallati e completamente configurata qui.

Di cosa abbiamo bisogno

  • Raspberry Pi A+/B+/2/3B/3B+/4B
  • Scheda MIDI per Raspberry Pi
  • Una scheda MicroSD•Set di 4 viti in nylon M2.5
  • Set di 4 distanziatori da femmina a femmina in nylon M2.5 * 11 mm
  • Set di 4 distanziatori da maschio a femmina in nylon M2.5 * 5 mm

Assemblea

Usa le viti in nylon e i distanziatori per assemblare il Raspberry Pi insieme alla scheda MIDI, come mostrato nell'immagine qui sotto:

Raspberry-Pi-OSA-MIDI-Board-1

Prima configurazione

Abbiamo testato tutti gli example in questo documento su un Pi 4B che utilizza Rasperry Pi OS, versione maggio 2020). La prima volta, è necessario utilizzare uno schermo e una tastiera per configurare il Pi. Successivamente, usa il tuo metodo preferito per accedere al sistema operativo di Pi. Tutti i passaggi sono obbligatori se non diversamente specificato

Installazione

Aggiorna/Aggiorna
Eseguire l'aggiornamento e l'aggiornamento come descritto qui: https://www.raspberrypi.org/documentation/raspbian/updating.md

Configurazione di rete (opzionale)
Se stai eseguendo SSH da un'altra macchina nel Pi, vale la pena dare al Pi un indirizzo IP fisso: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update È anche una buona idea aggiungere le impostazioni di sicurezza della rete al Pi in modo che si connetta automaticamente alla rete: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

Imposta il Pi Up come gadget USB OTG
Apri un terminale sul Pi e segui questa procedura:

  • Impostare il driver USB su dwc2
    echo “dtoverlay=dwc2” | sudo tee -a /boot/config.txt
  • Abilita il driver dwc2
    eco “dwc2” | sudo tee -a /etc/modules
  • Abilita il driver composito lib
    echo “lib composita” | sudo tee -a /etc/modules
  • Abilita il gadget MIDI 
    eco “g_midi” | sudo tee -a /etc/modules

Crea lo script di configurazione:

  • Crea il file
    sudo touch /usr/bin/midi_over_usb
  • Rendilo eseguibile
    sudo chmod +x /usr/bin/midi_over_usb
  • Modificalo con Nano
    sudo nano /usr/bin/midi_over_usb

Incolla quanto segue nel file, apportando modifiche al prodotto e alle stringhe del produttore come richiesto. cd /sys/kernel/config/usb_gadget/ mkdir -p midi_over_usb cd midi_over_usb echo 0x1d6b > idVendor # Linux Foundation echo 0x0104 > idProduct # Multifunzione Composite Gadget echo 0x0100 > bcdDevice # v1.0.0 echo 0x0200 > bcdUSB # USB2 mkdir -p strings/ 0x409 echo “fedcba9876543210” > strings/0x409/serialnumber echo “OSA Electronics” > strings/0x409/manufacturer echo “MIDI USB Device” > strings/0x409/product ls /sys/class/udc > UDC Esci da Nano e salva il file (Ctrl+X, Y, ritorno). Aggiungi una chiamata allo script a rc.local, in modo che venga eseguito ad ogni avvio. sudo nano /etc/rc.local Aggiungi la seguente riga prima di "exit0" /usr/bin/midi_over_usb Esci da Nano e salva file e riavvia il Pi. sudo reboot Elenca le porte MIDI disponibili. amidi -l Se il MIDI è configurato correttamente, l'ultimo comando dovrebbe produrre qualcosa di simile a: Dir Device Name IO hw:0,0 f_midi IO hw:0,0 f_midi

Installa librerie Python

Questa sezione spiegherà come installare le nostre librerie preferite per Python 2.x.

MIDO

Mido è una libreria facile da usare per la gestione dei dati MIDI. Si basa sul backend rt-midi, sulla libreria asound e su Jack. Immettere i seguenti comandi in sequenza: L'output dovrebbe mostrare una porta 'Midi Through' e una porta aggiuntiva. Se questo è il caso, va tutto bene. *Nota: in Mido, il nome della porta è l'intera stringa racchiusa tra virgolette singole, ma è possibile troncare il nome alla stringa prima dei due punti. Su questa macchina, la stringa è: 'f_midi:f_midi 16:0'. Per esample, questi due comandi sono equivalenti

PIGPIO

Usiamo la libreria pigpio per interfacciarci con i pin GPIO. Abbiamo riscontrato che questa libreria è più stabile e flessibile rispetto al metodo standard di interfacciamento con l'hardware del Pi (RPi.GPIO). Se desideri utilizzare un'altra libreria, modifica il codice di conseguenza. Per installare la libreria pigpio, segui le istruzioni qui: http://abyz.me.uk/rpi/pigpio/download.html Prima di eseguire tutti gli exampdi seguito, dovresti avviare il servizio pigpio se non fatto:

Python esamples

L'exampi le usano anche la funzione di interp della libreria numpy come un modo semplice per mappare tra due intervalli. Abbiamo usato Reaper per inviare e ricevere dati. Il Pi è configurato come uscita MIDI hardware nel menu delle preferenze di Reaper.

Controlla GPIO con i dati delle note (esample_1_key_press.py) Questo esample mostra come:

  • Ascolta 3 specifici eventi di note-on e note-off usando una semplice condizione
  • Cattura le eccezioni che si verificano quando i dati non di nota vengono inviati al Pi (ad es. dati di trasporto da un sequencer)
  • Mappa la velocità della nota sul PWM del pin di uscita

Importa le librerie rilevanti, crea l'oggetto pi dalla libreria pigpio e apri la porta di output: Il blocco try/catch serve a catturare gli errori che derivano da altri tipi di dati MIDI inviati (es. controlli di trasporto ecc.). while True: try: #Questo filtra tutti i dati non di nota per i msg in port.iter_pending(): # se c'è un messaggio in sospeso if(msg.type == 'note_on'): # se è Nota su messaggio in uscita = interp(msg.velocity, [0,127],[0,255]) # scala la velocità da 0-127 a 0-255 #filtra i dati per numero di nota if(msg.note == 53): pi1.set_PWM_dutycycle(2, out ) elif(msg.note == 55): pi1.set_PWM_dutycycle(3, out) elif(msg.note == 57): pi1.set_PWM_dutycycle(4, out) else: # se il messaggio non è Nota su (ad es. Nota Off) if(msg.note == 53): pi1.set_PWM_dutycycle(2, 0) elif(msg.note == 55): pi1.set_PWM_dutycycle(3, 0) elif(msg.note == 57): pi1. set_PWM_dutycycle(4, 0) eccetto AttributeError as error: print(“Errore escluso”) pass

Controlla GPIO con Mod e Pitch Wheels (esample_2_ruote.py)
Questo example mostra come:

  • Ascolta Pitch e Mod Data e filtrali per tipo
  • Mappa i dati sul PWM del pin di uscita

Questo example è simile al precedente, con questi tipi di messaggi:

  • La rotella Pitch è di tipo pitchwheel con un valore di msg.pitch
  • La Mod Wheel è un controller continuo di tipo control_change con un parametro di controllo di msg.control = 1 (il numero CC) e un valore di msg.value

Invia dati MIDI da un evento GPIO (gpio_event.py)

Questo example mostra come:

  • Utilizzare un'interruzione per rilevare la pressione di un pulsante
  • Invia dati MIDI dal Pi a un altro dispositivo

Apri la porta di output, crea due messaggi e imposta il pin GPIO come input. Questo esample presuppone che ci sia un pulsante legato al pin 21, in modo che il pin diventi ALTO quando il pulsante viene premuto: Di seguito sono elencate le funzioni di richiamata chiamate quando il pulsante viene premuto o rilasciato. La funzione send() delle porte di output invia semplicemente il messaggio fuori dalla porta: i listener di callback vengono eseguiti in background e non hanno bisogno di ulteriore attenzione:

Riproduzione di un MIDI File

Questo example mostra come:

  • Carica un MIDI file nell'ambiente di programmazione
  • Riproduzione il file .

Questo examppresuppone che tu abbia un MIDI file chiamato midi_file.mid nella stessa directory del tuo script Python: import mido da mido import MidiFile da mido import MetaMessage port = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') mentre True: per msg in MidiFile('midi_file.mid').play(): port.send(msg)

Documenti / Risorse

Scheda MIDI Raspberry Pi OSA [pdf] Manuale d'uso
OSA MIDI, Consiglio

Riferimenti

Lascia un commento

Il tuo indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *