Projekt/MIDI-dragspel

Från MakersLink Wiki
Hoppa till: navigering, sök


Information
{{{Bild}}}
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

https://ccrma.stanford.edu/~craig/articles/linuxmidi/misc/essenmidi.html


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

Läsgaffel TCST1103

3D-Printad knapp för läsgaffel

Test med läsgafflar.png


Kopplingsschema för en transistor med pullup (ej optisk, men illustrerar principen)

Pullup with transistor.gif

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.

En Arduino DUE

Arduino DUE.PNG

Bild på det färdiga och lite dyrare Doepfer alternativet (ca 1600 kr)

Doepfer Midi controller.PNG

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

Inspirationsprojekt

MIDI_Accordion

MIDI Accordion bb.png

Accordion Mega

Wintergatans Modulin

Arduino variant av Modulin