Faru vian propran MIDI-regilon per Arduino

MIDI

Se vi estas muzikamanto aŭ rekte amatora aŭ profesia muzikisto, certe en via hejmo vi amasigis grandan kolekton de muzikaj instrumentoj. Por perfekte miksi ĉiujn ĉi tiujn, plej bone estas akiri MIDI-regilo. Bedaŭrinde ĉi tiuj specoj de objektoj kutime estas sufiĉe multekostaj, tiel ke persono sen tro multaj rimedoj havas malfacilan aliron al ĉio, kion ili povas oferti.

Por multe pli bone kompreni, kio estas MIDI-regilo, diru al vi, ke la vorto MIDI devenas Cifereca Interfaco de Muzika Instrumento, tio estas, speco de regilo, kiu produktas elektronikajn muzikajn aparatojn, povas komuniki inter si. Se vi havas elektronikan klavaron hejme, ekzemple, pli ol probable ĝi havas MIDI-interfacon. Antaŭ ol antaŭeniri, malgraŭ la fakto, ke ekzistas iuj teknikaj detaloj, kiuj povas igi onin kredi alie, devas esti tre klare MIDI ne sonas.

Kreu vian propran MIDI-regilon per ĉi tiu simpla lernilo

Post kiam ni klaros pri tio, certe estos multe pli facile por vi kompreni, ke MIDI estas nur simpla instrukciaĵo kapabla subteni ĝis 16 sendependajn kanalojn, kio signifas, ke povas ekzisti ĝis 16 malsamaj aparatoj komunikantaj sendepende inter si. Ĉi tiuj aparatoj devas esti konektitaj per 5-pingla DIN-kablo, kiu esence estas kablo kun kvin pingloj ene de konektilo. Kiel detalo, estas sufiĉe ofte uzi USB anstataŭ 5-stiftan DIN, en kazo de uzi USB ni devas krei USB-MIDI-interfacon.

Sen plue, mi lasas vin kun la ligilo, kie vi povas trovi la lernilo paŝo post paŝo kun multe da priskribaj bildoj kie ni povas plenumi ĉiujn necesajn agojn por krei nian propran MIDI-regilon.

Rilata artikolo:
Kiel ŝanĝi la uzantnomon kaj pasvorton de Pi en nia Raspberry Pi

Kiel krei vian propran MIDI-regilon per Arduino

midi-konektilo

Multaj estas la homoj, kiuj bezonas, pro diversaj personaj kaj profesiaj kialoj, uzi tute laŭmenda MIDI-regilo Ĉar eble kaj ekzemple, iam en via vivo kiel artisto, aĉeti malmultekostan MIDI-regilon eble ne plenumas viajn atendojn aŭ bezonojn dum, kiam venos la tempo, elekti profesian version povas esti troa en ambaŭ financaj rimedoj. Vi bezono, kaj ankaŭ la grandan nombron da trajtoj, kiujn ili povas proponi.

Pro ĉi tio, hodiaŭ mi volas montri al vi ĉion, kion vi bezonas, por ke vi povu krei vian propran MIDI-regilon, kiu indikas kaj ĉion, kion vi bezonas por ĝia konstruo, kaj proponi al vi la programon, kiun vi bezonos instali. Kiel detalo, por ĉi tiu projekto la uzo de Arduino-tabulo estas esenca, regilo sufiĉe potenca por plenumi ĉi tiun taskon.

Rilata artikolo:
Kiel krei roboton: 3 malsamaj ebloj

Kio estas MIDI-regilo?

midi

Esence MIDI-regilo respondecas, larĝe parolante, pri konektado de diversaj muzikaj aparatoj unu al la alia. Multaj estas la instrumentoj, kiuj inkluzivas interfacon MIDI, kvankam ĉi tio devas esti tre klara, ĉar ekzistas multaj uzantoj ofte konfuzitaj, MIDI ne estas sondosiero, sed tre simpla aro da instrukcioj, kiujn instrumento povas ricevi. aŭ sonaj agordoj.

Ene de MIDI ekzistas du malsamaj specojUnuflanke ni havas tiun nomitan Ŝanĝkontrolo, kie ĝi havas la regilan numeron kaj valoron inter 0 kaj 127. Danke al tio, mesaĝoj povas esti eldonitaj, kie malsamaj parametroj kiel volumo aŭ tono povas esti ŝanĝitaj. Malsamaj instrumentoj, kiuj akceptas MIDI, devas kunporti manlibron, kiu klarigas, kiuj kanaloj kaj mesaĝoj estas difinitaj kaj kiel ŝanĝi ilin.

En dua loko ni havas la Programan Ŝanĝon, serio de mesaĝoj, kiuj siavice estas multe pli simplaj ol tiuj, kiuj formas la Ŝanĝan Kontrolon. Ĉi tiuj specoj de mesaĝoj estas uzataj por ŝanĝi la antaŭdifinitan aŭ flikaĵon de aparato. Kiel en Ŝanĝkontrolo, kune kun via instrumento la fabrikanto devas inkluzivi manlibron indikantan, kiujn antaŭselektojn ŝanĝas specifa mesaĝo.

Partoj Bezonataj Por Konstrui Vian Propran Memfaritan MIDI-Regilon

Midi-konektilo skeme

Por povi konstrui vian propran MIDI-regilon, vi bezonos serion da pecoj aldone, kiel ni jam menciis, al Arduino-tabulo. Antaŭ ol daŭrigi, nur diru al vi, ke eble, estonte, ĉar vi volas plivastigi la projekton, vi bezonas pli da aferoj, kvankam nuntempe kun kelkaj pecoj vi havos multe.

Ni bezonos 5-polan inan DIN-kablon, 2 220 ohm-rezistilojn, 2 momentajn ŝaltilojn, 2 10k-ohm-rezistilojn, ligajn dratojn, cirkviton, MIDI-kablon kaj MIDI-aparaton aŭ USB-interfacon. Kun nur ĉi tiuj pecoj vi povas komenci, sekvante miajn paŝojn, krei vian propran MIDI-regilon.

Unuaj paŝoj

Arduino midi skema

Antaŭ ol komenci mi lasas al vi bildon, kie vi povas vidi la pinglojn de via MIDI-kablo, tiamaniere ni povas ĝuste identigi la pinglojn kaj precipe kie ĉiu devas esti konektita. Ĝenerale dirite, nur ĉi-momente vi devas fari: konekti pin 5 de la kablo al 220 ohm-rezistilo kaj de tie al la Arduino Transmit 1, pin 4 al 220 ohm-rezistilo kaj de tie al la 5V-ingo de Arduino dum pin 2 devas esti konektita al la Tera konekto de via regilo.

Post kiam ĉi tiu paŝo estas farita, vi ne havas detalan diagramon en la foto situanta tuj sub ĉi tiuj linioj, estas tempo por konekti la butonojn. La ideo en ĉi tiu sekcio estas atingi, uzante la ciferecan pinglon (kapablan detekti kiam la tensio, kiu atingas ĝin, ŝanĝiĝas), por povi uzi transistoron por atingi, premante butonon. Por tio ni nur devas uzi butonon por ke, maldekstre de ĝi ni konektu ĝin al 5V, la dekstran flankon al rezisto de 220 ohmoj kaj de tie al tero dum, siavice, ni ankaŭ konektas la dekstran flankon al la pinglo 6 La dua butono estus instalita sammaniere kvankam, kiel vi povas vidi en la diagramo, anstataŭ la pinglo 6 ni konektas ĝin al 7.

Programaro por hejma midi-regilo

Post kiam ni finos la tutan aparataron, estas tempo konekti nian instrumenton kaj testi. Antaŭ tio ni bezonas havi Interfaco USB-MIDI kaj kablo MIDI konekti la tabulon, kiu sendas datumojn, al nia komputilo. Por atingi tion, ni elektis la bibliotekon MIDI v4.2 kreitan de la uloj de Kvardek Sep Efektoj, kiun ni devas esti instalita en nia Arduino kaj inkluzivita en la projekto.

En la kazo de la komputilo, ni bezonos programon, kiu kapablas kontroli ĉiujn MIDI-datumojn, kiuj alvenas al ĝi de Arduino. Por ĉi tio ni havas malsamajn eblojn kiel MIDI-Monitoro (OS X), MIDI-OX (Vindozo) aŭ Kmidimon (Linukso)

Por fari iom da testo ni nur devas konekti la Arduinon al nia komputilo kaj ekzekuti la jenan kodon:

#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
}

Se ĉio funkciis, vi povas iri al la butona testo, se ĉi tiu testo ne funkciis por vi, vi devas certigi, ke ĉiuj konektoj estas ĝustaj, la cirkvito estas egale kiel la antaŭa diagramo, la cirkvito. estas konektita al USB-MIDI-interfaco per MIDI-kablo, la kabloj de la MIDI-haveno estas ĝuste konektitaj, la MIDI-kablo estas konektita al la eniro de la interfaco USB-MIDI, la tabulo Arduino estas ĝuste konektita al la elektra reto kaj ĝi havas sufiĉe da potenco ...

Provante, ke la butonoj funkcias ĝuste

Antaŭ ol plu nutri nian programon per novaj funkcioj kaj kodo, en kiuj ni povas perdiĝi, indas halti momenton kaj provu, ke la butonoj funkcias ĝuste. Por ili ni devas ŝarĝi la jenan kodon:

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);
}
}

}

Ĉi tiu kodo nur devas esti kompilita kaj ekzekutita tiel ke, kun la USBa kablo konektita, la programo informas nin, ĉu iu el la butonoj estis premita.

Ni kreas nian memfaritan MIDI-regilon

Post kiam ni plenumos ĉi tiujn provojn, estas tempo kunveni nian propran MIDI-regilon por tio, vi nur devos kompili la jenan kodon:

#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);
}
}
}

Kiel detalo, diru al vi, ke vi ne povas uzi la komandon Serial.println () kun MIDI-eliro ĉi-foje, se vi volas montri ian mesaĝon en la komputilo, simple ŝanĝu:

midiOut.sendControlChange(42,127,1);

per:

midiOut.sendControlChange(value, channel);

kie valoro kaj kanalo devas havi la deziratajn valorojn, kiujn vi volas montri.

Funkcia ekzemplo:


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

4 komentoj, lasu la viajn

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   Alfred diris

    Arduino ofertas al vi multajn eblojn mem entrepreni projektojn https://www.juguetronica.com/arduino . Unu el la plej bonaj aferoj estas, ke vi povas komenci sen esti sperta kaj plu lerni, tiel motivante vin memlernanto.

  2.   Danel Roman diris

    Salutojn.

    Mi provas plenumi ĉi tiun mirindan lernilon ... sed la #inkludoj ne estas kompletaj ...

    Ĉu vi povus diri al mi, kiuj necesas?

    Multan dankon

  3.   Uell diris

    Saluton.
    Mi ŝatus fari elektronikan tamburan modulon anstataŭigante la butonojn per fekaj enigoj al kiuj piezoelektra signalo alvenos.
    Ĉu eblus fari ĝin?

  4.   Eduardo Valenzuela diris

    Bonvolu se vi povus doni la inkluzivojn de ĉi tiu kodo, mi interesiĝas pri ĉi tiu projekto.