Lag din egen MIDI-kontroller med Arduino

MIDI

Hvis du er en musikkelsker eller direkte en amatør eller profesjonell musiker, har du sikkert samlet et stort utvalg av musikkinstrumenter i hjemmet ditt. For å få alle disse til å blande seg perfekt, er det best å få en MIDI-kontroller. Dessverre er disse typene objekter vanligvis ganske dyre, slik at en person uten for mange ressurser har vanskelig tilgang til alt de kan tilby.

For å forstå mye bedre hva en MIDI-kontroller er, fortell deg at ordet MIDI kommer fra Musikkinstrument Digital grensesnitt, det vil si en slags kontroller som gjør at elektroniske musikalske enheter kan kommunisere med hverandre. Hvis du for eksempel har et elektronisk tastatur hjemme, er det mer enn sannsynlig at det har et MIDI-grensesnitt. Før det går videre, til tross for at det er visse tekniske detaljer som kan føre til at man tror noe annet, må det være veldig klart at MIDI er ikke lyd.

Lag din egen MIDI-kontroller med denne enkle opplæringen

Når vi er klare over dette, vil det sikkert være mye lettere for deg å forstå at MIDI bare er enkelt instruksjonssett som kan støtte opptil 16 uavhengige kanaler, noe som betyr at det kan være opptil 16 forskjellige enheter som kommuniserer uavhengig av hverandre. Disse enhetene må kobles til via en 5-pinners DIN-kabel, som i utgangspunktet er en kabel med fem pinner inne i en kontakt. Som en detalj er det ganske vanlig å bruke en USB i stedet for en 5-pinners DIN. Hvis du bruker en USB, må vi opprette et USB-MIDI-grensesnitt.

Uten videre, forlater jeg deg med lenken der du kan finne tutorial trinn for trinn med mye beskrivende bilder der vi kan utføre alle nødvendige handlinger for å lage vår egen MIDI-kontroller.

Relatert artikkel:
Hvordan endre Pi brukernavn og passord på Raspberry Pi

Hvordan lage din egen MIDI-kontroller med Arduino

midi-kontakt

Mange er menneskene som av forskjellige grunner både personlige og profesjonelle trenger å bruke en fullt tilpasset MIDI-kontroller Fordi kanskje og som et eksempel, på et tidspunkt i livet ditt som kunstner, kan det hende at det å kjøpe en billig MIDI-kontroller ikke oppfyller dine forventninger eller behov, mens det når det kommer til å velge en profesjonell versjon kan være overdreven i begge økonomiske ressurser. behov, samt det store antallet funksjoner de kan tilby.

På grunn av dette vil jeg i dag vise deg alt du trenger, slik at du kan lage din egen MIDI-kontroller, som både viser alt du trenger for konstruksjonen og tilbyr programvaren du trenger å installere. Som en detalj, for dette prosjektet er det viktig å bruke et Arduino-kort, en kontroller som er kraftig nok til å utføre denne oppgaven.

Relatert artikkel:
Hvordan lage en robot: 3 forskjellige alternativer

Hva er en MIDI-kontroller?

midi

I utgangspunktet er en MIDI-kontroller, generelt sett, ansvarlig for å koble forskjellige musikalske enheter til hverandre. Mange er instrumentene som har et MIDI-grensesnitt, men dette må være veldig klart siden det er mange brukere som ofte er forvirrede, MIDI er ikke en lydfil, men et veldig enkelt sett med instruksjoner som et instrument kan motta for å gjøre annen kontroll eller lydinnstillinger.

Inne i MIDI det er to forskjellige typerPå den ene siden har vi den som heter Endringskontroll der den har kontrollernummeret og en verdi mellom 0 og 127. Takket være dette kan det gis meldinger der forskjellige parametere som volum eller tone kan endres. Ulike instrumenter som godtar MIDI, bør ta med en manual som forklarer hvilke kanaler og meldinger som er angitt som standard, og hvordan du endrer dem.

På andreplass har vi Program Change, en serie meldinger som igjen er mye enklere enn de som utgjør Change Control. Denne typen meldinger brukes til å endre forhåndsinnstillingen eller oppdateringen av en enhet. Som i Change Control, må produsenten sammen med instrumentet inneholde en manual som angir hvilke forhåndsinnstillinger som endres av en bestemt melding.

Deler som trengs for å bygge din egen hjemmelagde MIDI-kontroller

Skjematisk Midi-kontakt

For å kunne bygge din egen MIDI-kontroller, trenger du en serie stykker i tillegg, som vi allerede har nevnt, til et Arduino-kort. Før du fortsetter, er det bare å fortelle deg at du kanskje trenger flere ting i fremtiden fordi du vil utvide prosjektet, selv om du på dette tidspunktet vil ha nok av noen få stykker.

Vi trenger en 5-polet DIN-kabel, 2 ohm motstander, 220 momentbrytere, 2 2k ohm motstander, tilkoblingskabler, et kretskort, MIDI-kabel og en MIDI-enhet eller USB-grensesnitt. Med bare disse delene kan du starte, etter mine trinn, å lage din egen MIDI-kontroller.

Første trinn

Arduino midi skjematisk

Før du begynner, lar jeg deg et bilde hvor du kan se pinnene på MIDI-kabelen, på denne måten kan vi identifisere pinnene riktig og spesielt hvor hver og en må være koblet til. I det store og hele er alt du trenger å gjøre på dette punktet å koble pin 5 på kabelen til en 220 ohm motstand og derfra til Arduino Transmit 1, pin 4 til en 220 ohm motstand og derfra til 5V-kontakten på Arduino mens pin 2 må være koblet til bakkekontakten til kontrolleren din.

Når dette trinnet er gjort, har du ikke et detaljert diagram på bildet som ligger rett under disse linjene, det er på tide å koble til knappene. Ideen i dette avsnittet er å oppnå, ved hjelp av digitalRead-pinnen (som kan oppdage når spenningen som når den endres) for å kunne bruke en transistor for å oppnå, med et trykk på en knapp. For dette trenger vi bare bruke en knapp slik at vi på venstre side kobler den til 5V, høyre side til en 220 ohm motstand og derfra til bakken mens vi i sin tur også kobler høyre side til pin 6 Den andre knappen vil bli installert på samme måte, men som du kan se i diagrammet, kobler vi den til 6 i stedet for pin 7.

Programvare for bruk for hjemmemidi-kontroller

Når vi er ferdig med all maskinvaren, er det på tide å koble instrumentet vårt og teste. Før det må vi ha en USB-MIDI-grensesnitt og en MIDI-kabel for å koble kortet, som sender data, til datamaskinen vår. For å oppnå dette har vi valgt MIDI v4.2-biblioteket opprettet av gutta fra Forty Seven Effects som vi må ha installert på Arduino og inkludert i prosjektet.

Når det gjelder datamaskinen, trenger vi et program som er i stand til å overvåke alle MIDI-dataene som kommer til den fra Arduino. For dette har vi forskjellige muligheter som MIDI Monitor (OS X), MIDI-OX (Windows) eller Kmidimon (Linux)

For å gjøre en liten test må vi bare koble Arduino til datamaskinen vår og utføre følgende kode:

#include
#include
#include
#include
#include

MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // crear objeto de salida MIDI llamado midiOut

void setup() {
Serial.begin(31250); // configuracion de serial para MIDI
}

void loop() {
midiOut.sendControlChange(56,127,1); // envío de señal MIDI CC -- 56 = nota, 127 = velocidad, 1 = canal
delay(1000); // retraso
midiOut.sendProgramChange(12,1); // envío de una señal MIDI PC -- 12 = valor, 1 = canal
delay(1000); // retraso de 1 segundo
}

Hvis alt har gått bra, kan du gå til knappetesten, hvis denne testen ikke har fungert for deg, må du sørge for at alle tilkoblingene er riktige, kretsen er nøyaktig den samme som forrige diagram, kretsen er koblet til et USB-MIDI-grensesnitt med en MIDI-kabel, er kablene til MIDI-porten riktig tilkoblet, MIDI-kabelen er koblet til inngangen til USB-MIDI-grensesnittet, Arduino-kortet er riktig koblet til det elektriske nettverket og det har nok strøm ...

Tester at knappene fungerer som de skal

Før du fortsetter å mate programmet vårt med nye funksjoner og kode som vi kan gå oss vill i, er det verdt å stoppe et øyeblikk og test at knappene fungerer som de skal. For dem må vi laste inn følgende kode:

const int boton1 = 6; // asignacion del boton a una variable
const int boton2 = 7; // asignacion del boton a una variable

void setup() {
Serial.begin(9600); // configuracion del serial
pinMode(boton1,INPUT); // configuracion del boton1 como entrada
pinMode(boton2,INPUT); // configuracion del boton2 como entrada
}

void loop() {

if(digitalRead(boton1) == HIGH) { // prueba de estado del boton1
delay(10); // retraso
if(digitalRead(boton1) == HIGH) { // prueba de estado de nuevo
Serial.println("Boton 1 funciona correctamente!"); // log
delay(250);
}
}

if(digitalRead(boton2) == HIGH) { // prueba de boton 2
delay(10); // retraso
if(digitalRead(boton2) == HIGH) { // prueba de estado de nuevo
Serial.println("Boton 2 funciona correctamente!"); // log
delay(250);
}
}

}

Denne koden må bare kompileres og utføres slik at programmet, med USB-kabelen tilkoblet, forteller oss om noen av knappene har blitt trykket.

Vi lager vår hjemmelagde MIDI-kontroller

Når vi har utført disse testene, er det på tide å sette sammen vår egen MIDI-kontroller for det, du trenger bare å kompilere følgende kode:

#include
#include
#include
#include
#include

const int boton1 = 6; // asignamos boton a la variable
const int boton2 = 7; // asignamos boton a la variable

MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut

void setup() {
pinMode(boton1,INPUT); // configuracion del boton1 como una entrada
pinMode(boton2,INPUT); // configuracion del boton2 como una entrada
Serial.begin(31250); // configuracion MIDI de salida
}

void loop() {
if(digitalRead(buttonOne) == HIGH) { // comprobacion de estado
delay(10); // retraso
if(digitalRead(buttonOne) == HIGH) { // comprobacion de estado de nuevo
midiOut.sendControlChange(56,127,1); // envío un MIDI CC -- 56 = nota, 127 = velocidad, 1 = canal
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // comprobacion de estado
delay(10); // retraso
if(digitalRead(buttonTwo) == HIGH) { // nueva comprobacion de estado
midiOut.sendControlChange(42,127,1); // envío un MIDI CC -- 42 = nota, 127 = velocidad, 1 = canal
delay(250);
}
}
}

Som en detalj, fortell deg at du ikke kan bruke kommandoen Serial.println () med en MIDI-utgang denne gangen. Hvis du vil vise noen type meldinger på datamaskinen, er det bare å endre:

midiOut.sendControlChange(42,127,1);

by:

midiOut.sendControlChange(value, channel);

der verdi og kanal må ha de ønskede verdiene du vil vise.

Driftseksempel:


Innholdet i artikkelen følger våre prinsipper for redaksjonell etikk. Klikk på for å rapportere en feil her.

4 kommentarer, legg igjen dine

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Alfred sa

    Arduino gir deg mange muligheter til å gjennomføre prosjekter på egen hånd https://www.juguetronica.com/arduino . Noe av det beste er at du kan begynne uten å være ekspert og fortsette å lære, og dermed motivere deg selv til å være selvlært.

  2.   Danel Roman sa

    Hilsener.

    Jeg prøver å gjennomføre denne fantastiske opplæringen ... men # inkluderer ikke er fullført ...

    Kan du fortelle meg hvilke som er nødvendige?

    Tusen takk.

  3.   Uell sa

    Hei.
    Jeg vil lage en elektronisk trommelmodul ved å erstatte knappene med jackinnganger som et piezoelektrisk signal kommer til.
    Ville det være mulig å gjøre det?

  4.   Eduardo Valenzuela sa

    Vennligst hvis du kan gi inkluderer av denne koden, er jeg interessert i dette prosjektet.