Projekt/MIDI-dragspel
| Information | |
|---|---|
| Namn | MIDI-dragspel |
| Syfte | Digitaliserat DIY-Dragspel |
| Kontaktpersoner | @kristofer |
| Önskas hjälp? | Fritt fram att bidra med kunskap och experiment |
Ett litet projekt att försöka utforska hur dragspelet skulle se ut om det uppfunnits 2018. Genom att nyttja den nya digitala tekniken och använda MIDI för att spela in fingrarnas rörelser borde en hel del förändringar kunna göras på detta klassiska och analoga instrument.
MIDI
MIDI (Musical Instrument Digital Interface) är ett gränssnitt för att beskriva musikens innehåll digitalt. MIDI är således bara information om vilken ton och vilket instrument som är anslagen och innehåller ingen ljudinformation. Musik uppstår först när informationen översättas till musik med hjälp av lämplig mjukvara/hårdvara (tex en synth).
Essentials of the MIDI protocol
Exempel på Paket
Hur paketet på kod som skickar ett paket:
Definiera en ton att använda i kod:
#define C3 48
Skickat att ton C är påslagen:
midiEventPacket_t noteOn = {0x09, 0x90 | 0, C3, 64}; MidiUSB.sendMIDI(noteOn);
Mottaget av synth som: (Type=144 (0x90) Chan=00 Key=048 (0x30) Val=064 (0x40))
Skickat att ton C är avslagen:
midiEventPacket_t noteOff = {0x08, 0x80 | 0, C3, 0}; MidiUSB.sendMIDI(noteOff);
Mottaget av synth som: (Type=128 (0x80) Chan=00 Key=048 (0x30) Val=000 (0x00))
Hårdvara
Knappar
Test med Optisk Läsgaffel
3D-Printad knapp för läsgaffel
Kopplingsschema för en transistor med pullup (ej optisk, men illustrerar principen)
Mjukvara
MIDI Controller
Övervägde det programmeringsfria alternativet med en 64 kanalers MIDI controller från Doepfer för att göra om knapptryckningar till MIDI-event för datorn att spela upp. Men valde istället en Arduino Due tillammans med Arduino MIDI Library för att få ett billigare och flexiblare kort som man kan programmera själv till att börja med.
Arduino MIDI Library kräver ett kort med ARM-processor och klarar inte en vanlig Arduino UN0 exempelvis.
Bild på det färdiga och lite dyrare Doepfer alternativet (ca 1600 kr)
Ljuduppspelning
Linux operativsystem -Ubuntu Mate
Synth - qSynth (UI för FluidSynth)
Ljudrouter - JACK
Startupsekvens med Linux som ljuduppspelare
I väntan på att allt startas automagiskt som services i bakgrunden så använder jag följande startsekvens
1. Kör qsynth i terminal (ctrl + t)
2. Kör qjackctl i terminal (ctrl + t)
3. Anslut Arduino via USB
4. Dra koppling i JACK->Connect mellan Arduino Due och FLUID Synth
5. Se till att qsynth har instrument inlästa och är kopplade till ljudkortet. Testa med virtuellt keyboard VMPK (måste kopplas in i JACK också) om inget ljud kommer från Arduino

