DIY gulvstående midi-kontroller. Dynamisk MIDI-keyboard på PIC16F84

I lang tid nå, for produsenter og lydteknikere, har en MIDI-kontroller blitt en viktig egenskap som bidrar til å skape vakker musikk. Virtuelle instrumenter høres alltid spesielt ut, så de er dekorasjonen av enhver melodi.

På grunn av det faktum at mange musikere er veldig opptatt av kvaliteten på produktene deres, oppstår spørsmålet: hvordan velge en MIDI-kontroller? Denne artikkelen vil beskrive tips og grunnleggende utvalgskriterier.

Hva er en MIDI-kontroller?

Tilbake på 1980-tallet ble en enhet kalt en kontroller brukt for å tillate en musiker å kontrollere driften av flere synthesizere samtidig ved hjelp av ett tastatur. Denne ideen var en suksess, så enheter av denne typen ble umiddelbart utbredt. Hvis da ikke alle kunne kjøpe dem, så har kontrollerene for øyeblikket gått kraftig ned i pris. Musikere, lydteknikere, låtskrivere, artister, DJ-er – alle bruker slike enheter.

Hva er en enhet som har et tastatur? Det ligner på piano- og synthesizer-tangenter. Den har lagt til knotter, forskjellige knapper og skyveknapper. Når du samhandler med dem, overføres melodien til lydmoduler, som har en ekstern type. Vi snakker om bærbare datamaskiner og andre enheter. Med andre ord, kontrollere (de fleste av dem) er ikke i stand til å produsere lyd på egen hånd. De er designet for å regulere biter, noter og andre parametere som er gjengitt fra en ekstern enhet (lydmodul).

Hva er fordelene med en MIDI-kontroller? Den mest åpenbare: den er allsidig og bærbar. Takket være det kan du bruke alle virtuelle effekter og kontrollere moderne programvare. Den kan enkelt bæres med for eksempel en bærbar bag.

Hva skal du se etter når du kjøper?

Før du kjøper en kontroller, må du tenke på hva den er for. Det ville være nyttig å svare på følgende spørsmål; de vil gi en nøyaktig ide om hvilket alternativ fra det enorme utvalget som passer.

Hva skal kontrolleren brukes til? Et apparat beregnet for sceneforestillinger skal ha materiale som er motstandsdyktig mot mekanisk påkjenning. Tatt i betraktning at de fleste kontrollere er laget av plast, må du ta hensyn til metallalternativer. Du må også bestemme type mekanisme og antall nøkler. Hvis det er for mange av dem, er det en mulighet for å forvirre formålet med noen av dem under en liveopptreden.

En liten MIDI-kontroller vil gjøre det bra for en DJ. Det er slett ikke vanskelig å lage det med egne hender hvis en person forstår elektronikk. Dette gjør at DJ-er ofte bruker hjemmelaget utstyr. Du kan lese mer om dette nedenfor. Du må kjøpe en slik enhet med tanke på det faktum at du også trenger håndtak og glidere. Uten dem vil ikke programmet (MIDI-kontrolleren fungerer bare sammen med det) utføre de ønskede funksjonene.

Hvis en musiker redigerer spor i sengen, på et fly, i en bil eller et annet sted, vil hovedhensynet ved valg være portabilitet. Tatt i betraktning at enheten er drevet, må du ta hensyn til de som kan lades fra USB-bussen.

MIDI-kontrollere fra Pioneer

Pioneer MIDI-kontrolleren er en enhet som alltid har vært etterspurt. Denne produsenten har lenge vært blant de tre beste lederne på markedet for slikt utstyr. Hva skiller de "relaterte" Pioneer-modellene fra hverandre? Bare tilstedeværelsen av tilleggsfunksjoner som ser ut som vanlige mekaniske knapper på kontrollpanelet. Enhver kontroller av dette merket har utmerkede joggehjul. Utseendet er seriøst og elegant. Den imponerende størrelsen på enheten kompenseres av dens maksimale funksjonalitet.

Det er ingen grunn til å lure på hvilken modell du skal velge. Du bør umiddelbart ta en nærmere titt på DDJ-T1. Enheten anbefales av mange. Pris-kvalitetsforholdet er ganske bra. Kontrollpanelet er praktisk, knappene kan trykkes inn uten problemer, og enheten er lett å bære.

Novation Launchpad-kontroller

Novation Launchpad MIDI-kontrolleren er designet spesielt for å fungere med Ableton Live. Enheten er egnet for både scene- og hjemmestudioaktiviteter. Det blir også enkelt å holde diskotek med den. Enhetsnettet består av 64 knapper. Den er utstyrt med tilleggseffekter, samt funksjoner for arbeid med programvare. Enheten kan kobles til en datamaskin og fungerer med både Windows-familien og enkelte andre operativsystemer.

DIY MIDI-kontroller - virkelighet eller myte?

Hjemmelagde MIDI-kontrollere har vært etterspurt i lang tid. Hva skal til for å bringe ideen din ut i livet? Du trenger et diagram i henhold til hvilket enheten skal loddes og settes sammen, et budsjett, en fysiker eller en elektriker som er bevandret i dette feltet.

I tillegg til å kunne den tekniske siden, må du også spørre deg selv hvor mye skaperen kan om kontrollere. For å montere en enhet som oppfyller alle forventninger riktig, må du forstå hvilken base som er best å bruke, hvorfor modellen skal settes sammen, og også hvor du skal installere kontrollpanelet. Problemstillingen er ganske kompleks, men fullstendig løsbar. I dag er det mange ferdige kretser som kan brukes til å sette sammen en kontroller. Det viktigste er tillit til planene dine og tålmodighet.

Akai merkemodell

Akai ga nylig ut en ny kontroller kalt MPC Touch. I motsetning til relaterte enheter, har denne en 7-tommers skjerm. Dette gjør arbeidet med det mye enklere. Basert på omtalene må det sies at det er den beskrevne modellen som brukes som eksempel når det gjelder profesjonelle kontroller. Når man ser på det og vurderer funksjonaliteten, forsvinner spørsmålet om hvordan man velger en slik enhet umiddelbart. Programvaren fungerer ganske raskt og effektivt, problemer oppstår ikke, og feil er ekstremt sjeldne.

Den eneste ulempen er at kontrolleren ikke er i stand til å fungere uten en strømkilde, siden den ikke har batteri. Akai-merket har vært kjent på markedet i lang tid. MIDI-kontrolleren er en kraftig enhet av høy kvalitet som tåler store belastninger. Ofte brukes noen modeller på scenen.

Nok en gang, mens jeg spilte gitar og kontrollerte lyden gjennom Peavey ReValver og andre Amplitubes, tenkte jeg på å kjøpe en MIDI-kontroller. Merkede enheter, som Guitar Rig Kontrol 3, koster omtrent 13 000 rubler, og er bare gulvstående. Det vil si at det å raskt endre posisjonene til flere regulatorer er svært problematisk.

Ulike DJ-retningskontrollere så mer interessante ut på grunn av overfloden av fadere og kodere. Det ble bestemt å kombinere forretning med fornøyelse og lage en MIDI-kontroller selv.

Startkrav: 2-7 fadere, samme antall roterende potensiometre/kodere, ca. 10 knapper, USB-tilkobling.

Deretter begynte jeg å velge komponenter. Jeg valgte Arduino på grunn av tilgjengeligheten; i prinsippet kan du bruke den samme ATmega32u4, STM eller en annen kontroller. Jeg fant fadere og knapper i en lokal radiobutikk. Enkoderen og potensiometrene var allerede kjøpt på et tidspunkt. Jeg fant vippebryterne i garasjen. Jeg bestemte meg for å lage etuiet fra toppdekselet på en DVD-spiller.

Tilbehør:

  • Arduino UNO R3 1 stk.
  • Fadere sp3-25a 5 stk.
  • Munn. potensiometre 3 stk.
  • Enkoder 1 stk.
  • Knapper pbs-26b 16 stk.
  • DVD-omslag 1 stk.
  • Vippebrytere 2 stk.

Først bøyde jeg kroppen og saget hull i den med en drill for fadere:

Så boret jeg hullene til vippebryterne og munnen. potensiometre, markerte plasseringen av knappene. Siden jeg ikke hadde et 19 mm bor (eller til og med en tilsvarende borchuck), boret jeg hullene for knappene til 13 mm og forstørret dem deretter med en rømmer.

Basen er klar, nå kan du tenke på hvordan du kobler alle disse tingene til Arduino. Mens jeg studerte dette problemet, kom jeg over et fantastisk prosjekt HIDUINO. Dette er fastvaren for ATmega16u2 ombord på Arduino, takket være hvilken enheten er definert som en USB-HID MIDI-enhet. Alt vi kan gjøre er å sende MIDI-data via UART ved 31250 baud. For ikke å rote opp kildekoden med definisjoner med MIDI-hendelseskoder, brukte jeg dette biblioteket.

Siden jeg brukte Arduino, bestemte jeg meg for å lage et skjold som alle periferiutstyret skulle kobles til.
Skjoldskjema:

Som du kan se av diagrammet, er knappene koblet til ved hjelp av en matrisekrets. De innebygde pull-up-motstandene til ATmega328 brukes, så logikken er omvendt.

Initialiseringsknapper

for(byte i = 0; i< COLS; i++){ //--Конфигурируем строки мтрчн клвтр как выходы pinMode(colPins[i], OUTPUT); //--подаём на них лог. 1 digitalWrite(colPins[i], HIGH); } for(byte i = 0; i < ROWS; i++){ //--Конфигурируем столбцы мтрчн клвтр как входы--------- pinMode(rowPins[i], INPUT); //--включаем встроенные в мк подтягивающие резисторы-- digitalWrite(rowPins[i], HIGH); }

Lese verdier

for(byte i = 0; i< COLS; i++) //-Цикл чтения матричной клавиатуры----- { digitalWrite(colPins[i], LOW); //--На считываемый столбец выставляем 0--- for(byte j = 0; j < ROWS; j++) //--Построчно считываем каждый столбец-- { //--И при нажатой кнопке передаём ноту-- dval=digitalRead(rowPins[j]); if (dval == LOW && buttonState[i][j] == HIGH) MIDI.sendNoteOn(kpdNote[j][i],127,1); if (dval == HIGH && buttonState[i][j] == LOW) MIDI.sendNoteOff(kpdNote[j][i],127,1); buttonState[i][j] = dval; } digitalWrite(colPins[i], HIGH); }




Jeg glemte å plassere dioder på signet, jeg måtte lodde dem til knappene.

Potensiometrene er koblet via en 4052b multiplekser til ADC-inngangene.

Leser potensiometerposisjoner

for(byte chn = 0; chn< 4; chn++) //-Цикл чтения значений потенциометров { set_mp_chn(chn); //--Задаём параметры мультиплексора val=analogRead(0) / 8; //--Считываем значение с канала X if (abs(val-PrVal) >5) //--Hvis gjeldende verdi er eks. fra fortiden ( //-- mer enn 5, send deretter en ny verdi MIDI.sendControlChange(chn,val,1); PrVal=val; ) val=analogRead(1) / 8; //--Les verdien fra kanal Y på samme måte som X if (abs(val-PrVal) > 5) ( MIDI.sendControlChange(chn+4,val,1); PrVal=val; ) )


Koderen ble satt til et maskinvareavbrudd.

Leser koderen

void enc() // Encoder-behandling ( currenttime=millis(); if (abs(ltime-currenttime)>50) // anti-bounce ( b=digitalRead(4); if (b == HØY && eval<=122) eval=eval+5; else if (b == LOW && eval>=5) eval=eval-5; MIDI.sendControlChange(9,eval,1); ltid = millis(); ) )


Jeg la ut det trykte kretskortet i Sprint-layout, så laget det med den gode gamle LUT-en ved å bruke selvklebende film og jernklorid. Loddingkvaliteten lider av forferdelig loddetinn.

Klart skjold:



For å laste opp fastvare til ATmega32u4, kortsluttet jeg 2 ICSP-pinner, og brukte deretter Flip. Senere koblet jeg en knapp til disse pinnene.

Firmwaren fungerer, det gjenstår bare å skru på veggene og frontpanelet. Siden jeg merket alt på plass, tok det mer tid å tegne panelet enn alt annet. Det så slik ut:

  • 1. Grafpapir ble brukt som bakgrunn på bildet
  • 2. Hull ble merket
  • 3. Resultatet ble skrevet ut
  • 4. Alle hull ble skåret ut
  • 5. Alle elementer ble skrudd av og fjernet
  • 6. Panelet ble montert, alle knapper/potensiometer ble satt på plass
  • 7. Det var uoverensstemmelser mellom malen og kroppen
  • 8. Gå til trinn 2 til alle hullene stemmer overens
Panelet er laget av millimeter PET, dekket med en trykt og laminert film, hullene ble laserkuttet fra en CDR-fil. Fra Irkutsk-annonsører kostet alt dette meg bare 240 rubler.

Sideveggene var skåret ut av kryssfiner.

Gjeldende enhetstype:

Kostnader for komponenter:

  • Arduino UNO R3 RUR 320
  • Fadere sp3-25a 5x9=45 r.
  • Munn. potensiometre + knotter 85 gni.
  • Enkoder 15 rub.
  • Knapper pbs-26b 16x19=304 rub.
  • Panel 240 gni.
  • Multiplekser 16 gni.
  • Kryssfiner, textolite, vippebrytere, DVD-etui - i mitt tilfelle gratis.
Totalt: 1025 gni.

Kontrolleren takler oppgavene som er tildelt den og kontrollerer lyden i nesten alle lydbehandlingsprogram.

Planene er å dekke kryssfineren med beis og skjære ut bunndekselet av plexiglass. Legg også til en utvidelsesport for å koble til en gulvkontroller.

Kode for Arduino og signet på Github.

MIDI-kontroller er en enhet som konverterer en viss fysisk prosess til et sett med digitale kommandoer i MIDI-format. Den fysiske prosessen kan være alt fra å trykke på en tast med en finger til å vri på volumknappen. Den resulterende kommandostrømmen overføres via MIDI-protokollen til andre enheter - en datamaskin, maskinvaresamplere, synthesizere eller eksterne sequencere og dekrypteres der på en bestemt måte. Den vanligste typen MIDI-kontroller er MIDI-keyboard - den elektroniske ekvivalenten til et piano-keyboard. Det finnes også mange andre typer kontrollere, inkludert elektroniske trommesett.

Det moderne markedet tilbyr et stort antall forskjellige MIDI-kontrollere for elektroniske installasjoner, forskjellig i ulike kriterier, som pris, kvalitet, tekniske egenskaper, etc. Det er også flere ferdige brukerenheter som er implementert som kommersielle prosjekter (eDrum, megaDrum). Men til tross for alt dette, lever ønsket om å lage en slik enhet med egne hender fortsatt i hodet til moderne Kulibins.

Så, for noen år siden, litt forsinket, ble jeg interessert i å lage en slik enhet, da jeg deltok i en tung musikkgruppe. Vi spilte hard rock, eller rettere sagt noe som brutaldeath, goregrind, grindcore. Jeg spilte elektrisk gitar. Litt tidligere kjøpte vi et Sonor trommesett og bråket om kveldene i garasjen. Senere stilte garasjen oss, og spørsmålet dukket opp om lokalene. Etter å ikke ha funnet noe verdt, bestemte vi oss for å øve hjemme, noe som umiddelbart førte til en konflikt med naboene. Det var her spørsmålet om elektroniske trommer dukket opp.

Parallelt med å spille live-instrumenter skrev jeg elektronisk musikk og brukte VST-instrumenter og plug-ins; spesielt for å lage trommepartier foretrakk jeg vanedannende trommer og ezDrums, som har muligheten til å fungere med et MIDI-grensesnitt. Uten engang å google dette emnet, kastet jeg meg over hodet på å utvikle min egen MIDI-kontroller på en rimelig ATMega32 mikrokontroller i en DIP-pakke, som hadde 8 ADC-kanaler om bord. Jeg ønsket ikke å gjerde kretsen, og jeg bestemte meg for å begrense meg til 8 innganger. Siden ATMega32 ikke har maskinvare-USB, brukte jeg en standard tilkobling til datamaskinen via virtuell usb. Etter å ha tuslet rundt med programmering i flere dager, klarte jeg å få i gang enheten. Se for deg overraskelsen min da jeg på Internett oppdaget en ferdig enhet med kretsskjema og fastvare (MegaDrum). Men alt som ikke blir gjort er til det bedre.


Full USB

Av yrke er jeg programmerer, men av yrke er jeg en elektronikkprogrammerer, en kandidat for tekniske vitenskaper, og som min tidligere veileder pleide å si, jeg er en sveitser, en reaper og en trompetist. Som ofte ble jeg fiksert på AVR-er, ikke fordi jeg hadde følelser for dem, men fordi jeg var helt fornøyd med ytelsen deres med deres tekniske egenskaper. Men tiden kom da de ikke lenger var nok. Og så kom stm32 til å erstatte den, blant annet med et fullverdig usb-grensesnitt om bord. Det var her ideen kom om å lage en fullverdig MIDI-kontroller. I tillegg hadde jeg allerede erfaring med å jobbe med MIDI-grensesnittet.

Hvor skal jeg begynne? Vi hadde ikke stm32 i DIP-pakker (hvis de i det hele tatt finnes i naturen), så ideen om å lodde på kretskortet forsvant umiddelbart. Akkurat da begynte det å dukke opp billige utviklingskort basert på stm32 mikrokontrollere, som DISCOVERY. Og nå er jeg den lykkelige eieren av STM32F407DISCOVERY feilsøkingskortet, som også inkluderer en ST-Link-programmerer. STM32F407-prosessoren har 16 ADC-kanaler, selv om 4 kanaler er okkupert av periferiutstyr, som feilsøkingskortet ganske enkelt er fylt med. Men for mine formål var 12 kanaler nok.


Etter å ha brukt litt tid på å studere Keil-programmeringsmiljøet, arkitekturen til STM32F407-mikroprosessoren, samt standard perifere biblioteker for arbeid med USB, opprettet jeg et program for polling av alle ADC-kanaler ved hjelp av en direkte minnetilgangskanal, samt en sammensatt USB enhet som inkluderer MIDI Audio Device og HID for å endre enhetsinnstillinger.

Som sensorer for trommene brukte jeg en ZP-1 piezoklokke, som kunne kjøpes i en butikk for en rimelig penge.


Jeg tok koblingsskjemaet fra MegaDrum.


Jeg skrev kontrollprogrammet i Delphi med en reserve på 16 kanaler. I prinsippet kan antallet kanaler til enheten økes i det uendelige ved å legge til analoge multipleksere til kretsen, slik det gjøres i Megadrum, men for våre formål er 16 kanaler nok, siden vi ikke er så avanserte musikere. Og for en nybegynnertrommeslager vil dette antallet trommer være en lek.


Enheten ble testet på både Windows og Linux ved hjelp av Renoise-trackeren. Det ble ikke funnet spesielle problemer i arbeidet.
Men jeg bestemte meg for å ikke stoppe ved dette resultatet. STM32F407 er en ganske sofistikert prosessor, så den er relativt dyr. Det var billigere å lage en enhet med STM32F103. eBay kom til unnsetning. Jeg kjøpte et utviklingskort med STM32F103RBT6 om bord.


Riktignok har den ikke en innebygd programmerer. Jeg var heldig fordi jeg fortsatt hadde en ST-Link-programmerer fra forrige jobb.


Jeg måtte skrive om fastvaren fullstendig, siden driftsprinsippene til 407- og 103-prosessorene, selv om de ikke er radikalt, er forskjellige.
Så kom jeg over et feilsøkingstavle på Internett, som faktisk kostet en krone, og bestemte meg for at jeg på denne måten kunne redusere kostnadene for komponenter til et minimum.

De fleste artiklene på Internett handler om å lage MIDI-keyboards, kontrollere, fjernkontroller osv. er basert på bruk av MIDI-kontakter, tilkobling som til en moderne datamaskin kan være problematisk. Eldre lydkort hadde en spillport som du kunne koble til en joystick eller MIDI-enhet:

Alle nye hovedkort kommer imidlertid med en innebygd lydkontroller, og lydkort mangler ofte muligheten til å koble til MIDI-enheter.
Alt som gjenstår er enten å kjøpe et moderne MIDI-keyboard, DJ-konsoll osv. med en USB-utgang for å koble til en datamaskin, eller kjøp/lodd en adapter, eller kjøp et spesielt lydkort med mulighet for å koble til MIDI-enheter. Å kjøpe er selvfølgelig ikke et problem, men det er ikke derfor vi kom til denne siden, ikke sant?

I denne artikkelen vil jeg vise hvordan du kan bruke en rimelig Arduino-kontroller til å lage et enkelt MIDI-keyboard med en USB-tilkobling for 8 taster og et rullehjul.

Så jeg brukte:
Arduino UNO kontroller
8 stk. knapper
8 motstander 10 kOhm
rotasjonsgiver 25LB22-Q
brødbrett og gensere

Tilkoblingsskjemaet er som følger:

For å koble til brukte jeg det enkleste alternativet: 1 tast - 1 inngang. Men med et større antall nøkler, forskjellige kontrollere osv. Det kan hende det ikke er nok innganger, så du må bruke datalesing enten gjennom analoge innganger (ved å legge til motstander med forskjellige verdier) eller gjennom multipleksing. Men hvis du kobler flere taster til den analoge inngangen, kan det oppstå problemer med å lese tilstanden når flere taster trykkes samtidig. Derfor, etter min mening, er multipleksing et mer akseptabelt alternativ.

Arduino programvare

Jeg vil ikke vurdere strukturen til MIDI-data, fordi... dette er beskrevet i artikkelen:

Koderen er koblet til maskinvareavbruddsinngangene; jeg vil ikke vurdere en beskrivelse av å jobbe med den, fordi Programmet er enkelt og hentet fra den offisielle Arduino-nettsiden.

I dette prosjektet brukes koderen som et rullehjul for å endre modulasjonshjulet, men det kan omdisponeres til andre formål (pitch bend, etc.).

MIDI-data fra koderen, fra Arduino, sendes med følgende linje:
noteOn(0xB0, 0x01, encoder0Pos);
hvor 0xB0 er kontrollermeldingen (kontrollendring)
0x01 - kontrollerkode (i vårt tilfelle Modulasjon)
encoder0Pos - kontrollerverdi (i vårt tilfelle 0-127).
Ved å endre kontrollerkoder kan du bruke rullehjulet (koderen) for en rekke kontroller.

Pitch Bend er også verdt å nevne. Fra MIDI-spesifikasjonen følger det at det er nødvendig å sende en melding på tre byte: 0xE0 (Pitch Bend-kode), MSB (high byte), LSB (low byte).

De to ytre bytene lagrer en 14-bits pitch-verdi som kan variere fra 0...16383 (0x3FFF). Midten er 0x2000, alt over denne verdien fører til at tonehøyden endres oppover, hvis lavere, endres tonehøyden nedover.
I programkoden kommenterte jeg linjene hvis du plutselig vil bruke Pitch Bend i stedet for modulering (midt av verdien, dekomponering til 2 byte, etc.)

Tastetrykkdeteksjonskoden inkluderer tre tilstander: en tast trykkes, en tast holdes nede og en tast slippes. Dette ble gjort for at verdien av varigheten av et tastetrykk kunne overføres. Hvis dette ikke er nødvendig, kan du bare forlate en tilstand (tastetrykk), programmet vil i dette tilfellet bli betydelig forenklet.
For å håndtere tilstanden til hver av de åtte nøklene, brukes følgende kode:

If (buttonState_C == HIGH && note_C_send_on == false) // Tast trykket ( noteOn(0x90, note_C, 0x7F); note_C_send_on = true; // Note On-kommando sendt note_C_send_off = false; // Note Off-kommando hvis ikke sendt ) else (buttonState_C == HIGH && note_C_send_on == true) // Hvis nøkkelen holdes nede ( noteOn(0x00, note_C, 0x7F); note_C_send_on = true; note_C_send_off = false; ) else if (buttonState_Cend¬ =_C LOW_ false & not =_C LOW_ // Hvis nøkkelen slippes ( noteOn(0x90, note_C, 0x00); note_C_send_on = false; note_C_send_off = true; encoder0Pos = 0; // Returner hjulposisjonen til null ) ....... ..... .. ... .... // Funksjon for å sende en MIDI-melding til serieporten void noteOn(int cmd, int pitch, int velocity) ( Serial.write(cmd); Serial.write(pitch); Serial. skrive(hastighet); forsinkelse(20); )

Vær oppmerksom på at hvis pitch bend brukes, må encoder0Pos ikke returneres til null, men til 0x2000 (eller det er bedre å sette definere i begynnelsen av programmet).

Så, kretsen er satt sammen, skissen lastes opp til kontrolleren, vi starter Serial Monitor, endrer overføringshastigheten til 115200 og trykker på tastene eller snur på koderen og ser på verdiene.
Hvis alt er bra, gå videre til neste del. Jeg vil si med en gang at for meg viste det seg å være det mest problematiske, og hvis jeg ikke hadde funnet en virtuell USB -> Midi-omformer, ville denne artikkelen ikke eksistert.

PC-programvare (Windows)

For å motta data via en USB virtuell COM-port fra Arduino og overføre dem til et hvilket som helst MIDI-sequencer-program, trenger du et spesielt verktøy: Serial MIDI Converter V2D (kontorside)

Programmet er multi-plattform, det fungerte for meg under Windows 7 x64, men med noen problemer.

Vi lanserer den, velg USB-port, overføringshastighet (115200) og MIDI-inngangsport og MIDI-utgangsport.

Nå blir alle MIDI-dataene som kommer til den virtuelle USB-COM-porten 12 omdirigert til MIDI Yoke 6-porten (jeg brukte MIDI Yoke-programmet til å lage virtuelle MIDI-porter). Du kan omdirigere dem til Microsoft GS Wavetable Synth og andre porter.
Programmet må være slått på til enhver tid. Når du trykker på tastene eller vrir på kodebryteren, skal Serial RX-indikatoren nederst blinke.

For å visuelt vise innkommende MIDI-data fra porten, fant jeg MIDI-OX-programmet (kontorside) veldig nyttig:

Vær oppmerksom på at i innstillingene for MIDI-enheter må du angi MIDI-inngangsporten.

Nå, når du trykker på notetastene eller vrir på hjulet, vil du se MIDI-data i Monitor-Output.

At. Ved hjelp av programvare og maskinvare kunne vi lage et enkelt MIDI-keyboard på Arduino-kontrolleren med dataoverføring til en datamaskin for etterfølgende prosessering, for eksempel i Cubase osv. inkl. i virkeligheten.
Basert på dette prosjektet kan du lage en DJ-konsoll, et fullverdig MIDI-keyboard, etc.

Nedenfor kan du laste ned INO-skissen, Serial MIDI Converter V2D, MIDI-OX og MIDI Yoke

Jeg har lenge ønsket å vekke komponisten i meg og begynne å lage min egen elektroniske musikk. Imidlertid ble jeg (mildt sagt) motløs av de høye prisene på MIDI-kontrollere. Men etter å ha gjennomsøkt Internett, fikk jeg ideen om å lage min egen kontroller ved å bruke Arduino Uno og ledende maling!

La oss begynne)

Trinn 1: Valg av deler

Du kan avvike litt fra materialet som presenteres og MIDI-kontrolleren du satte sammen vil fortsatt fungere (med "avvike litt" mener jeg at du kan installere en motstand med en litt annen verdi eller la en av pinnene være frakoblet).

Fra elektronikk trenger vi:

  • 1 Arduino Uno med USB-kabel;

  • 1 krukke med ledende maling;

  • 1 monteringsplate som måler 5x7 cm;

  • 3 knapper;

  • motstander med en motstand på 2,2 kOhm;

  • 1 LED;

  • motstander med en motstand på 10 kOhm;

  • 1 LDR-sensor;

  • motstander med en motstand på 4,7 kOhm;

  • 1 genser;

  • 12 stk 2,7 MΩ motstander;

  • 30 rette pinner;

  • 12 bøyde pinner;

  • 12 adaptere;

  • 12 binders.

I tillegg til elektronikk trenger du også følgende verktøy:

  • Loddebolt og loddetinn;
  • Avbitertang;
  • Stativ for lodding av deler (tredje hånd);
  • Multimeter;
  • Flere ledninger og/eller tynn metalltråd.

Trinn 2: Lodd pinnene

La oss begynne å lage brettet ved å lodde pinnene. La oss legge ut bøyde pinner i midten av den første raden på brettet. De vil deretter tjene som "sensitive" pinner som tastaturet skal kobles til.

Etter å ha installert pinnene, legg merke til at de korte pinnene stikker ut fra brettet. Vi trykker på dem slik at alt blir flush. Nå lodder vi dem og sjekker umiddelbart koblingene for kortslutninger.

Merk: Ikke lodd pinnene for lenge, ellers vil de varme opp og smelte plasten.

For neste trinn, plasser de rette kammene i sporene Arduino. La oss installere brettet på toppen av pinnene som er satt inn i Arduino. Denne handlingen krevde litt kraft fordi pinnene ikke er perfekt på linje med hullene på brettet.

Når du har installert brettet på pinnene, sørg for at pinnene er i flukt med den øvre kanten av brettet. Deretter kan de loddes.

Trinn 3: Lodd jumperne

La oss nå fjerne brettet fra Arduino og snu det til baksiden. La oss lodde jumperne som komponentene senere skal festes på. Det er to måter å gjøre dette på:

  • Fyll alle nødvendige hull med loddetinn, og koble dem deretter til hverandre.
  • Bruk tynn ledning.

Jeg anbefaler deg å bruke den andre metoden fordi den er enklere og raskere. Hvis du velger denne metoden, plasser ledningen på brettet som vist på bildet.

  • Den røde prikken betyr å lodde ledningen inn i hullet.
  • Gul prikk - koble den tynne ledningen til pinnen på den andre siden av brettet (som i det tredje bildet).

Som du ser, rotet jeg litt til nederst i venstre hjørne da jeg brukte for mye loddetinn, så vær forsiktig!

Tips: Hvis du ikke har tynn ledning, bruk rester av ledningene til motstandene du bruker.

Trinn 4: Lodd de berøringskapasitive motstandene

Vi installerer komponentene, nemlig 2.7 MOhmmotstander, som vil utføre sensorisk-kapasitive funksjoner.

Merk: Hvis du vil lære mer om det teoretiske grunnlaget og praktiske anvendelser av kapasitive berøringssensorer, anbefaler jeg deg å sjekke ut følgende lenker:

La oss plassere en 2.7 MOhmmotstand fra bunnen av den bøyde pinnen lengst til høyre og skyv bena gjennom hullene (som på det første bildet). La oss nå snu brettet og skyve en motstandsledning tilbake i det neste hullet (som vist på det andre bildet). Lodd det nedre benet av motstanden til hullet, og det øvre benet av motstanden til pin-terminalen. Så legger vi ved 7 cm ledning på denne pinnen (sett fra det tredje bildet).

La oss gjenta prosessen med alle motstandene og ledningene, lodde dem på plass. De nederste bena på motstandene skal danne én lang forbindelse.

Råd: Velg vekslende farger for ledningene - dette vil gjøre tilkoblinger enklere i senere trinn.

Trinn 5: Lodd knappene

La oss starte med å plassere knappene og motstandene på brettet, som i det første og andre bildet. I mitt tilfelle brukte jeg 2.2 kOhm motstander, men du kan bruke hvilken som helst motstand med en verdi mellom 2kOhm og 10KOhm.

La oss snu brettet og lodde alt på plass. Bilde 3 forklarer de forskjellige forbindelsene du må gjøre:

  • blå prikk - indikerer knappebenet som må loddes til brettet;
  • rosa prikk - indikerer motstandsbenet, som må loddes til brettet;
  • den røde linjen betyr at du bør lodde to punkter inn i en forbindelse;
  • den svarte linjen indikerer ledningen som vil gå fra det ene benet på knappen gjennom hullet i brettet, som deretter kobles til pinnen på den andre siden.

Hvis alt er loddet riktig, vil de to knappene lengst til venstre tillate deg å bytte oktav, mens knappen lengst til høyre vil aktivereLDR sensor.

Trinn 6: Lodd LDR og LED

Etter at knappene er loddet, fortsetter vi å installere LDR, LED og tilsvarende motstander. Før du gjør dette, ville det være lurt å eksperimentere med verdiene til motstandene som vil gå til LED. Kanskje rangeringen min er for høy til å slå på LED-en din. Eksperimenter litt for å finne riktig motstandsverdi.

Tips: Enhver motstand mellom 330Ohm og 5kOhmville være en god løsning for 5mmLED.

Nå skal vi ordne LED, LDR og motstander ( 4.7 K forLDR) på de riktige stedene. La oss snu brettet og lodde alt. Det tredje bildet vil forklare de forskjellige forbindelsene som må gjøres:

  • brune prikker er LDR-stifter som skal loddes til brettet;
  • den rosa prikken er motstandsbenet som skal loddes til brettet;
  • oransje prikker er LED-pinner som må loddes på brettet;
  • rød stripe - du må lodde to punkter i en tilkobling;
  • den svarte stripen er ledningen som vil gå fra motstandsutgangen gjennom bretthullet, som deretter kobles til pinnen.

Merk: Før du lodder LED-en, sørg for at polariteten til LED-en er riktig. Den positive terminalen til LED-en skal kobles til en motstand og den negative terminalen til jord.

Trinn 7: Test alle tilkoblinger

Nå er et godt tidspunkt å teste om tilkoblingene til knappene, LDR og LED er vellykket loddet. Dette er siste mulighet til å fikse feilene, jeg anbefaler deg å laste ned den vedlagte koden og kjøre programmet. og last ned Arduino_Test_Fixture_Code til Arduino-styret.

Hvis alt er vellykket og testen er fullført, kan du gå videre til neste trinn. Hvis ikke, dobbeltsjekk de loddede forbindelsene på brettet. Det er bedre å ha et multimeter for hånden, jeg sier dette fra min egen bitre erfaring.

Trinn 8: Fullføre brettet

La oss starte med å installere ledningene i hullene, som vist på det første bildet. Det er praktisk å bruke to ledninger i forskjellige farger for dette trinnet.

La oss snu brettet og kutte ledningene til ønsket lengde. Lodd dem til pinnene som går inn i Arduino-kontaktene. Før du begynner å bruke MIDI-kontroller, først må du teste tilkoblingene ved hjelp av en testskisse. Last opp skissen, åpne serieporten og trykk på de "sensitive" pinnene på brettet. Hvis du ser teksten "Merk x er aktiv" for hver pinne når du berører den, fungerer alle pinner som de skal.

Trinn 9: Konverter Arduino til MIDI-enhet

Når brettet er klart, er det på tide å konvertere Arduino til en MIDI-kontroller som vil bli gjenkjent av musikkprogrammer som Ableton og Fl Studio eller til og med andre MIDI-enheter. Prosessen består av to trinn:

  1. Endre gjeldende firmware på Arduino Uno til MIDI-kompatible programmer;
  2. Last opp MIDI-skisse til Arduino.

La oss starte fra det første punktet. Lastet inn i Arduino etter tilstand fastvareUSB-seriell port, som lar Arduino utveksle meldinger med PC-en og Arduino IDE. Med nytt program DualMoco, vil en andre modus bli lagt til, som lar Arduino fungere som MIDI-enheter.

Vi vil bruke FLIP-programmet og følge instruksjonene for å endre Arduino-fastvaren. Du finner en arbeidsfil i arkivet i Firmware-mappen - DualMoco.hex-filen.

Etter å ha lastet ned den nye fastvaren, koble Arduino til PC-en på nytt. Hvis alt går bra, bør ikke Arduino bli oppdaget av Arduino IDE fordi det nye programmet er i ( MIDImodus). Åpne et musikkprogram som er i stand til å ta opp MIDI og sjekk at Arduinoen er navngitt MIDI/ MOCOtilLUFA ble vist over MIDI-innstillingene, som du kan se på det første bildet.

Trinn 10: Gjør siste forberedelser

Egenhet DualMoco er at den har en andre modus - USB-seriell port, som lar deg laste opp skisser fra Arduino IDE, akkurat som med vanlig fastvare. For å sette Arduino i den andre modusen, koble to ISCP-pinner sammen som vist på bilde 1 og 2. Du kan enten bruke et stykke wire eller en liten jumper wire som vist på bildene. Koble nå USB-kabelen fra Arduino i noen sekunder og koble den til igjen, Arduino skal vises i Arduino IDE.

Merk: Når du vil bytte fra modususb-seriell portVMIDI-modus, fjern jumperen fraISCP-pinner som vist i det tredje bildet og koble til igjenArduino til PC.

Det er på tide å laste opp den nåværende skissen til Arduino, Arduino_Endelig_Kode. Last den ned, konverter Arduino til usbseriell port modus og last ned koden. Hvis du trenger å finjustere terskelen, eksperimenter med verdiene TERSKEL Og RES. Når alt fungerer som forventet, endre gjeldende linje 17, fra:

boolsk midiMode = falsk; // hvis midiMode = false, vil Arduino fungere som en usb-til-seriell enhet

boolsk midiMode = sann;// hvis midiMode = true, vil Arduino fungere som en innebygd MIDI-enhet.

Etter at de siste endringene er gjort i koden, er det på tide å teste et musikkprogram som kan støtte MIDI-enheter. Først, la oss bytte Arduino til MIDI-modus, for dette:

  1. La oss laste opp den endelige koden til Arduino.
  2. La oss fjerne USB-kabelen fra Arduino.
  3. Bytt Arduino til MIDI-modus ved å fjerne jumperen fra ISCP-pinnene.
  4. La oss installere USB-kabelen i Arduino.

Hvis alt gikk bra, åpne musikkprogrammet og begynn å berøre pinnene. Magiske lyder må høres ut...

Trinn 11: Lodd binders på jumperne

Når Arduino-brettet er helt ferdig, er det på tide å fokusere på tastaturet og hvordan du kobler det til brettet. Det er en million måter å gjøre dette på, men jeg valgte binders som skulle festes til malt papir (de er enkle å sikre og kan gjenbrukes).

Prosessen med å lodde binders til ledninger er ganske enkel:

  1. Klipp av støpselet på den ene siden av ledningen;
  2. Vi striper ledningen av isolasjon med 5 mm;
  3. Lodd den strippede ledningen til en binders;
  4. Gjenta for alle 12 binders.

Merk: Stiftene må ikke belegges med belegg (maling eller plast).

Trinn 12: Maling av malen

Selv om det er mulig å spille Arduino MIDI-keyboard ved å bare berøre bindersene, er det mye morsommere å lage din egen sjablong og bruke den. Fargelagt den trykte malen. Malen ligger i prosjektarkivet.

Det er ganske enkelt å fargelegge malen, bare pass på at du har plass mellom linjene og bruk passende farger, ellers vil det ikke fungere. Etter at malingen har tørket, fester du binders til "nøklene", og du kan begynne å lage musikk.

Takk for din oppmerksomhet!)