Lav din egen MIDI-controller med Arduino

MIDI

Hvis du er en musikelsker eller direkte en amatør eller professionel musiker, har du helt sikkert i dit hjem samlet en stor samling musikinstrumenter. For at få alle disse til at blande perfekt, er det bedst at få en MIDI-controller. Desværre er disse typer objekter normalt ret dyre, så en person uden for mange ressourcer har vanskelig adgang til alt, hvad de kan tilbyde.

For at forstå meget bedre, hvad en MIDI-controller er, skal du fortælle dig, at ordet MIDI kommer fra Musikinstrument Digital interface, det vil sige en slags controller, der gør elektroniske musikalske enheder, der kan kommunikere med hinanden. Hvis du f.eks. Har et elektronisk tastatur derhjemme, er det mere end sandsynligt, at det har et MIDI-interface. Før det går videre, på trods af at der er visse tekniske detaljer, der kan få en til at tro andet, skal det være meget klart, at MIDI er ikke lyd.

Opret din egen MIDI-controller med denne enkle vejledning

Når vi først er klar over dette, vil det helt sikkert være meget lettere for dig at forstå, at MIDI bare er en simpel instruktionssæt, der kan understøtte op til 16 uafhængige kanaler, hvilket betyder, at der kan være op til 16 forskellige enheder, der kommunikerer uafhængigt af hinanden. Disse enheder skal tilsluttes via et 5-polet DIN-kabel, som stort set er et kabel med fem ben inde i et stik. Som en detalje er det ret almindeligt at bruge en USB i stedet for en 5-polet DIN. I tilfælde af brug af en USB skal vi oprette en USB-MIDI-grænseflade.

Uden yderligere ado efterlader jeg dig med linket, hvor du kan finde tutorial trin for trin med en masse beskrivende billeder hvor vi kan udføre alle de nødvendige handlinger for at oprette vores egen MIDI-controller.

relateret artikel:
Sådan ændres Pi-brugernavnet og adgangskoden på vores Raspberry Pi

Sådan oprettes din egen MIDI-controller med Arduino

midi-stik

Mange er de mennesker, der af forskellige grunde både personlige og professionelle har brug for en fuldt tilpasset MIDI-controller Fordi måske og som et eksempel på et tidspunkt i dit liv som kunstner, at købe en billig MIDI-controller muligvis ikke imødekomme dine forventninger eller behov, mens valg af en professionel version, når det kommer, kan være overdreven i begge økonomiske ressourcer. behov samt det store antal funktioner, de kan tilbyde.

På grund af dette vil jeg i dag vise dig alt, hvad du har brug for, så du kan lave din egen MIDI-controller, der angiver både alt, hvad du har brug for til konstruktionen, og tilbyder dig den software, du skal installere. Som en detalje er brugen af ​​et Arduino-kort vigtigt for dette projekt, en controller, der er stærk nok til at udføre denne opgave.

Hvordan man laver en robot
relateret artikel:
Sådan oprettes en robot: 3 forskellige muligheder

Hvad er en MIDI-controller?

midi

Dybest set er en MIDI-controller, generelt set, ansvarlig for at forbinde forskellige musikalske enheder til hinanden. Mange er de instrumenter, der indeholder en MIDI-grænseflade, selvom dette skal være meget klart, da der er mange brugere, der ofte er forvirrede, MIDI er ikke en lydfil, men et meget simpelt sæt instruktioner, som et instrument kan modtage for at foretage anden kontrol eller lydindstillinger.

Inde i MIDI der er to forskellige typerPå den ene side har vi den, der hedder Change Control, hvor den har controller-nummeret og en værdi mellem 0 og 127. Takket være dette kan der udstedes meddelelser, hvor forskellige parametre som volumen eller tone kan ændres. Forskellige instrumenter, der accepterer MIDI, bør medbringe en manual, der forklarer, hvilke kanaler og meddelelser der er indstillet som standard, og hvordan man ændrer dem.

For det andet har vi Program Change, en række meddelelser, der igen er meget enklere end dem, der udgør Change Control. Disse typer meddelelser bruges til at ændre en enheds forudindstilling eller patch. Som i Change Control skal producenten sammen med dit instrument indeholde en manual, der angiver, hvilke forudindstillinger der ændres af en bestemt meddelelse.

Dele, der er nødvendige for at opbygge din egen hjemmelavede MIDI-controller

Midi-stik skematisk

For at være i stand til at bygge din egen MIDI-controller har du brug for en række stykker derudover, som vi allerede har nævnt, til et Arduino-kort. Før du fortsætter, skal du bare fortælle dig, at du måske i fremtiden, fordi du vil udvide projektet, har brug for flere ting, selvom du på dette tidspunkt med et par stykker har masser.

Vi har brug for et 5-polet DIN-kabel, 2 ohm modstande, 220 øjeblikkelige afbrydere, 2 2k ohm modstande, tilslutningsledninger, et kredsløbskort, MIDI-kabel og en MIDI-enhed eller USB-interface. Med netop disse stykker kan du starte, ved at følge mine trin, at lave din egen MIDI-controller.

Første trin

Arduino midi skematisk

Før jeg starter, efterlader jeg dig et billede, hvor du kan se stifterne på dit MIDI-kabel, på denne måde kan vi korrekt identificere stifterne og især hvor hver enkelt skal være tilsluttet. Generelt er alt hvad du skal gøre på dette tidspunkt at forbinde pin 5 på kablet til en 220 ohm modstand og derfra til Arduino transmitter 1, pin 4 til en 220 ohm modstand og derfra til 5V-stikket på Arduino mens pin 2 skal tilsluttes jordforbindelsen på din controller.

Når dette trin er udført, har du ikke et detaljeret diagram på billedet, der er placeret lige under disse linjer, det er på tide at forbinde knapperne. Ideen i dette afsnit er at opnå ved hjælp af digitalRead-stiften (der er i stand til at detektere, når spændingen, der når den, ændres) for at være i stand til at bruge en transistor til at opnå med et tryk på en knap. Til dette behøver vi kun bruge en knap, så vi til venstre forbinder den med 5V, højre side til en 220 ohm modstand og derfra til jorden, mens vi igen også forbinder højre side til pin 6 Den anden knap installeres på samme måde, selvom vi, som du kan se i diagrammet, forbinder den til 6 i stedet for pin 7.

Software, der skal bruges til hjemmemidi-controller

Når vi er færdige med al hardware, er det tid til at forbinde vores instrument og teste. Før det skal vi have en USB-MIDI-interface og et MIDI-kabel at forbinde tavlen, som sender data, med vores computer. For at opnå dette har vi valgt MIDI v4.2-biblioteket oprettet af fyrene fra Forty Seven Effects, som vi skal have installeret på vores Arduino og inkluderet i projektet.

I tilfælde af computeren har vi brug for et program, der er i stand til at overvåge alle de MIDI-data, der ankommer til det fra Arduino. Til dette har vi forskellige muligheder såsom MIDI Monitor (OS X), MIDI-OX (Windows) eller Kmidimon (Linux)

For at lave en lille test skal vi bare forbinde Arduino til vores computer og udfø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 er gået godt, kan du gå til knaptesten, hvis denne test ikke har fungeret for dig, skal du sørge for, at alle forbindelser er korrekte, kredsløbet er nøjagtigt det samme som det foregående diagram, kredsløbet er tilsluttet en USB-MIDI-grænseflade med et MIDI-kabel, MIDI-portkablerne er korrekt tilsluttet, MIDI-kablet er forbundet til indgangen på USB-MIDI-grænsefladen, Arduino-kortet er korrekt tilsluttet det elektriske netværk, og det har tilstrækkelig strøm ...

Test af at knapperne fungerer korrekt

Før vi fortsætter med at fodre vores program med nye funktioner og kode, som vi kan gå vild i, er det værd at stoppe et øjeblik og test, at knapperne fungerer korrekt. For dem skal vi indlæse 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 kode skal bare kompileres og udføres, så programmet med USB-kablet tilsluttet fortæller os, om der er trykket på nogen af ​​knapperne.

Vi opretter vores hjemmelavede MIDI-controller

Når vi har udført disse tests, er det tid til at samle vores egen MIDI-controller til det, du bliver kun nødt til at 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 detalje skal du fortælle dig, at du ikke kan bruge kommandoen Serial.println () med en MIDI-udgang denne gang. Hvis du vil vise en eller anden type besked på computeren, skal du bare ændre:

midiOut.sendControlChange(42,127,1);

ved:

midiOut.sendControlChange(value, channel);

hvor værdi og kanal skal have de ønskede værdier, som du vil vise.

Driftseksempel:


4 kommentarer, lad dine

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Alfred sagde han

    Arduino giver dig mange muligheder for at gennemføre projekter på egen hånd https://www.juguetronica.com/arduino . En af de bedste ting er, at du kan starte uden at være ekspert og fortsætte med at lære og dermed motivere dig selv til at være selvlært.

  2.   Danel Roman sagde han

    Greetings.

    Jeg prøver at udføre denne fantastiske tutorial ... men # inkluderer inkluderer ikke….

    Kan du fortælle mig, hvilke der er nødvendige?

    Mange tak.

  3.   uell sagde han

    Hej.
    Jeg vil gerne lave et elektronisk trommemodul ved at erstatte knapperne med jackindgange, hvortil der kommer et piezoelektrisk signal.
    Ville det være muligt at gøre det?

  4.   Eduardo Valenzuela sagde han

    Hvis du kunne give inkluderer denne kode, er jeg interesseret i dette projekt.