Gwnewch eich rheolydd MIDI eich hun gydag Arduino

MIDI

Os ydych chi'n hoff o gerddoriaeth neu'n uniongyrchol yn gerddor amatur neu broffesiynol, siawns nad ydych chi wedi cronni casgliad mawr o offerynnau cerdd yn eich cartref. I wneud y rhain i gyd yn cymysgu'n berffaith, mae'n well cael a Rheolydd MIDI. Yn anffodus, mae'r mathau hyn o wrthrychau fel arfer yn eithaf drud, felly mae'n anodd i berson heb ormod o adnoddau gael gafael ar bopeth y gallant ei gynnig.

Er mwyn deall yn llawer gwell beth yw rheolydd MIDI, dywedwch wrthych fod y gair MIDI yn dod Rhyngwyneb Digidol Offeryn Cerdd, hynny yw, math o reolwr sy'n gwneud dyfeisiau cerddorol electronig yn gallu cyfathrebu â'i gilydd. Os oes gennych fysellfwrdd electronig gartref, er enghraifft, mae'n fwy na thebyg bod ganddo ryngwyneb MIDI. Cyn parhau i symud ymlaen, er gwaethaf y ffaith bod rhai manylion technegol penodol a allai arwain at gredu fel arall, rhaid iddo fod yn glir iawn Nid yw MIDI yn sain.

Creu eich rheolydd MIDI eich hun gyda'r tiwtorial syml hwn

Unwaith y byddwn yn glir am hyn, mae'n sicr y bydd yn llawer haws ichi ddeall mai dim ond syml yw MIDI set gyfarwyddiadau sy'n gallu cefnogi hyd at 16 o sianeli annibynnol, sy'n golygu y gall fod hyd at 16 o wahanol ddyfeisiau yn cyfathrebu'n annibynnol â'i gilydd. Rhaid cysylltu'r dyfeisiau hyn trwy gebl DIN 5-pin, sef cebl yn y bôn gyda phum pin y tu mewn i gysylltydd. Fel manylyn, mae'n eithaf cyffredin defnyddio USB yn lle DIN 5-pin, rhag ofn defnyddio USB mae'n rhaid i ni greu rhyngwyneb USB-MIDI.

Heb ragor o wybodaeth, rwy'n eich gadael gyda'r ddolen lle gallwch ddod o hyd i'r tiwtorial gam wrth gam gyda llawer o delweddau disgrifiadol lle gallwn gyflawni'r holl gamau angenrheidiol i greu ein rheolydd MIDI ein hunain.

Erthygl gysylltiedig:
Sut i newid enw defnyddiwr a chyfrinair Pi ar ein Raspberry Pi

Sut i wneud eich rheolydd MIDI eich hun gydag Arduino

cysylltydd midi

Llawer yw'r bobl sydd angen, am wahanol resymau personol a phroffesiynol, i ddefnyddio a rheolydd MIDI cwbl arferiad Oherwydd efallai ac fel enghraifft, ar ryw adeg yn eich bywyd fel arlunydd, efallai na fydd prynu rheolydd MIDI rhad yn cwrdd â'ch disgwyliadau neu'ch anghenion, ond pan ddaw'r amser, gallai dewis fersiwn broffesiynol fod yn ormodol yn y ddau adnodd ariannol. angen, yn ogystal â'r nifer fawr o nodweddion y gallant eu cynnig.

Oherwydd hyn, heddiw rwyf am ddangos popeth sydd ei angen arnoch fel y gallwch wneud eich rheolydd MIDI eich hun, gan nodi popeth sydd ei angen arnoch ar gyfer ei adeiladu a chynnig y feddalwedd y bydd angen i chi ei gosod i chi. Fel manylyn, ar gyfer y prosiect hwn mae defnyddio bwrdd Arduino yn hanfodol, rheolydd sy'n ddigon pwerus i gyflawni'r dasg hon.

Erthygl gysylltiedig:
Sut i wneud robot: 3 opsiwn gwahanol

Beth yw rheolydd MIDI?

midi

Yn y bôn, mae rheolwr MIDI yn gyfrifol, yn fras, am gysylltu gwahanol ddyfeisiau cerddorol â'i gilydd. Mae llawer o'r offerynnau sy'n ymgorffori rhyngwyneb MIDI, er bod yn rhaid i hyn fod yn glir iawn gan fod yna lawer o ddefnyddwyr sy'n aml yn ddryslyd, nid ffeil sain mo MIDI, ond set syml iawn o gyfarwyddiadau y gall offeryn eu derbyn i wneud rheolaeth wahanol. neu osodiadau sain.

Y tu mewn i MIDI mae dau fath gwahanolAr y naill law mae gennym yr un o'r enw Change Control lle mae ganddo rif y rheolydd a gwerth rhwng 0 a 127. Diolch i hyn, gellir cyhoeddi negeseuon lle gellir newid paramedrau gwahanol fel cyfaint neu dôn. Dylai gwahanol offerynnau sy'n derbyn MIDI ddod â llawlyfr gyda nhw yn egluro pa sianeli a negeseuon sy'n cael eu gosod yn ddiofyn a sut i'w newid.

Yn yr ail safle mae gennym y Newid Rhaglen, cyfres o negeseuon sydd yn eu tro yn llawer symlach na'r rhai sy'n rhan o'r Rheoli Newid. Defnyddir y mathau hyn o negeseuon i newid rhagosodiad neu ddarn dyfais. Fel yn achos Rheoli Newid, ynghyd â'ch offeryn rhaid i'r gwneuthurwr gynnwys llawlyfr sy'n nodi pa ragosodiadau sy'n cael eu newid gan neges benodol.

Rhannau sydd eu hangen i Adeiladu'ch Rheolwr MIDI Cartref Eich Hun

Sgematig cysylltydd Midi

Er mwyn gallu adeiladu eich rheolydd MIDI eich hun bydd angen cyfres o ddarnau yn ychwanegol at, fel yr ydym eisoes wedi crybwyll, bwrdd Arduino. Cyn parhau, dywedwch wrthych efallai, yn y dyfodol oherwydd eich bod am ehangu'r prosiect, bod angen mwy o bethau arnoch, ond ar yr adeg hon gydag ychydig o ddarnau bydd gennych ddigon.

Bydd angen cebl DIN 5-polyn benywaidd arnom, 2 wrthydd 220 ohm, 2 switsh eiliad, 2 wrthydd ohm 10k, gwifrau cysylltiad, bwrdd cylched, cebl MIDI a dyfais MIDI neu ryngwyneb USB. Gyda dim ond y darnau hyn gallwch chi ddechrau, gan ddilyn fy nghamau, i wneud eich rheolydd MIDI eich hun.

Camau cyntaf

Arduino midi sgematig

Cyn cychwyn, rwy'n gadael llun i chi lle gallwch chi weld pinnau eich cebl MIDI, fel hyn gallwn ni adnabod y pinnau yn gywir ac yn enwedig lle mae'n rhaid cysylltu pob un. Yn fras, y cyfan sy'n rhaid i chi ei wneud ar y pwynt hwn yw cysylltu pin 5 y cebl â gwrthydd 220 ohm ac oddi yno i Arduino Transmit 1, pin 4 i wrthydd 220 ohm ac oddi yno i soced 5V Arduino wrth pin Rhaid cysylltu 2 â chysylltiad daear eich rheolydd.

Unwaith y bydd y cam hwn wedi'i wneud, nid oes gennych ddiagram manwl yn y llun sydd wedi'i leoli ychydig o dan y llinellau hyn, mae'n bryd cysylltu'r botymau. Y syniad yn yr adran hon yw cyflawni, gan ddefnyddio'r pin digitalRead (sy'n gallu canfod pan fydd y foltedd sy'n ei gyrraedd yn newid) i allu defnyddio transistor i gyflawni, gyda gwasg botwm. Ar gyfer hyn dim ond botwm sy'n rhaid i ni ei ddefnyddio fel ein bod ni, yr ochr chwith ohono yn ei gysylltu â 5V, yr ochr dde i wrthwynebiad 220 ohm ac oddi yno i'r ddaear tra, yn ein tro, rydyn ni hefyd yn cysylltu'r ochr dde â phin 6 Byddai'r ail botwm yn cael ei osod yn yr un ffordd er, fel y gwelwch yn y diagram, yn lle pin 6 rydym yn ei gysylltu â 7.

Meddalwedd i'w ddefnyddio ar gyfer rheolwr midi cartref

Ar ôl i ni orffen gyda'r holl galedwedd, mae'n bryd cysylltu ein hofferyn a'n profi. Cyn hynny mae angen i ni gael a Rhyngwyneb USB-MIDI a chebl MIDI i gysylltu'r bwrdd, sy'n anfon data, â'n cyfrifiadur. I gyflawni hyn, rydym wedi dewis y llyfrgell MIDI v4.2 a grëwyd gan y dynion o Forty Seven Effects y mae'n rhaid i ni fod wedi'i gosod ar ein Arduino a'i chynnwys yn y prosiect.

Yn achos y cyfrifiadur, bydd angen rhaglen arnom sy'n gallu goruchwylio'r holl ddata MIDI sy'n cyrraedd Arduino. Ar gyfer hyn mae gennym wahanol bosibiliadau fel MIDI Monitor (OS X), MIDI-OX (Windows) neu Kmidimon (Linux)

I wneud ychydig o brawf mae'n rhaid i ni gysylltu'r Arduino â'n cyfrifiadur a gweithredu'r cod canlynol:

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

Os yw popeth wedi mynd yn dda, gallwch fynd i'r prawf botwm, rhag ofn nad yw'r prawf hwn wedi gweithio i chi rhaid i chi sicrhau bod yr holl gysylltiadau'n gywir, mae'r gylched yn union yr un fath â'r diagram blaenorol, y gylched wedi'i gysylltu â rhyngwyneb USB-MIDI gyda chebl MIDI, mae'r ceblau porthladd MIDI wedi'u cysylltu'n gywir, mae'r cebl MIDI wedi'i gysylltu â mewnbwn y rhyngwyneb USB-MIDI, mae'r bwrdd Arduino wedi'i gysylltu'n gywir â'r rhwydwaith trydanol ac mae ganddo ddigon o bŵer ...

Profi bod y botymau'n gweithio'n gywir

Cyn parhau i fwydo ein rhaglen gyda swyddogaethau a chod newydd y gallwn fynd ar goll ynddynt, mae'n werth stopio am eiliad a profi bod y botymau'n gweithio'n iawn. Ar eu cyfer mae'n rhaid i ni lwytho'r cod canlynol:

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

}

Mae'n rhaid llunio a gweithredu'r cod hwn fel bod y rhaglen, gyda'r cebl USB wedi'i chysylltu, yn dweud wrthym a yw unrhyw un o'r botymau wedi'u pwyso.

Rydym yn creu ein rheolydd MIDI cartref

Ar ôl i ni gynnal y profion hyn, mae'n bryd ymgynnull ein rheolydd MIDI ein hunain ar gyfer hynny, dim ond llunio'r cod canlynol y bydd yn rhaid i chi ei lunio:

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

Fel manylyn, dywedwch wrthych na allwch ddefnyddio'r gorchymyn Serial.println () gydag allbwn MIDI y tro hwn, os ydych chi am ddangos rhyw fath o neges ar y cyfrifiadur, dim ond newid:

midiOut.sendControlChange(42,127,1);

drwy:

midiOut.sendControlChange(value, channel);

lle mae'n rhaid i werth a sianel fod â'r gwerthoedd dymunol rydych chi am eu harddangos.

Enghraifft gweithredu:


Mae cynnwys yr erthygl yn cadw at ein hegwyddorion moeseg olygyddol. I riportio gwall cliciwch yma.

4 sylw, gadewch eich un chi

Gadewch eich sylw

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. Meysydd gofynnol yn cael eu marcio â *

*

*

  1. Yn gyfrifol am y data: Miguel Ángel Gatón
  2. Pwrpas y data: Rheoli SPAM, rheoli sylwadau.
  3. Cyfreithlondeb: Eich caniatâd
  4. Cyfathrebu'r data: Ni fydd y data'n cael ei gyfleu i drydydd partïon ac eithrio trwy rwymedigaeth gyfreithiol.
  5. Storio data: Cronfa ddata wedi'i chynnal gan Occentus Networks (EU)
  6. Hawliau: Ar unrhyw adeg gallwch gyfyngu, adfer a dileu eich gwybodaeth.

  1.   Alfred meddai

    Mae Arduino yn cynnig llawer o bosibiliadau i chi ymgymryd â phrosiectau ar eich pen eich hun https://www.juguetronica.com/arduino . Un o'r pethau gorau yw y gallwch chi ddechrau heb fod yn arbenigwr a mynd ymlaen i ddysgu, a thrwy hynny ysgogi eich hun i fod yn hunan-ddysgedig.

  2.   Danel Rhufeinig meddai

    Cyfarchion.

    Rwy’n ceisio cynnal y tiwtorial gwych hwn… ond nid yw’r #includes yn gyflawn….

    A allech ddweud wrthyf pa rai sy'n angenrheidiol?

    Diolch yn fawr iawn.

  3.   Uell meddai

    Helo.
    Hoffwn wneud modiwl drwm electronig trwy ddisodli'r botymau â mewnbynnau jack y bydd signal piezoelectric yn cyrraedd iddynt.
    A fyddai'n bosibl ei wneud?

  4.   Eduardo Valenzuela meddai

    Os gwelwch yn dda pe gallech chi gynnwys y cod hwn, mae gen i ddiddordeb yn y prosiect hwn.