Bi Arduino re rêveberê xweya MIDI-yê çêbikin

MIDI

Heke hûn evîndarê muzîkê ne an rasterast muzîkjenek amator an pispor in, bê guman li mala xwe we berhevokek mezin alavên muzîkê berhev kiriye. Ji bo ku ev tevhev tevlihevî çêbibin, çêtirîn e ku meriv a Controller MIDI. Mixabin, van celeb tiştan bi gelemperî pir biha ne, ji ber vê yekê ji bo kesek bêyî pir çavkaniyan zehmet e ku xwe bigihîne her tiştê ku ew dikarin pêşkêşî bikin.

Ji bo ku hûn pir çêtir fahm bikin ka kontrolkerê MIDI çi ye, ji we re vebêjin ku peyva MIDI ji tê Navrûya Dîjîtal a Amûra Muzîkê, ew e, celebek kontrolker ku alavên muzîkê yên elektronîkî dike ku bi hev re têkilî daynin. Heke li malê we klavyeyek elektronîkî heye, ji bo nimûne, ew ji îhtîmalek mezintir e ku xwediyê navgînek MIDI ye. Berî ku pêşveçûnê bidomînin, digel ku hin hûrguliyên teknîkî hene ku dibe sedem ku meriv bi rengek din bawer bike, divê ew pir eşkere be ku MIDI ne bihîstbar e.

Bi vê tutorial-a sade ji xwe re rêveberê MIDI-yê çêbikin

Gava ku em di vê yekê de zelal bibin, bê guman dê ji we re pir hêsantir were fam kirin ku MIDI tenê hêsan e sazkirina rêwerzê ya ku dikare 16 kanalên serbixwe piştgirî bike, ku tê vê wateyê ku dikare heya 16 cîhazên cûda hebin ku bi serbixwe bi hev re danûstendinê bikin. Divê van alavên hanê bi navgîniya kabloyek 5-pin DIN ve werin girêdan, ku di bingeh de kabloyek bi pênc pin di hundurê konektorê de ye. Wekî hûrgulî, ew gelemperî ye ku li şûna DIN-5-pin USB-yê bikar bînin, di rewşa karanîna USB-ê de divê em navgînek USB-MIDI biafirînin.

Bêyî bêtir dengvedanê, ez girêdana ku hûn dikarin tê de bibînin ji we re dihêlim tutorial gav bi gav bi gelek wêneyên raveker ku em dikarin hemî kiryarên hewce pêk bînin da ku em xweya xweya MIDI çêbikin.

Gotara peywendîdar:
Meriv çawa li ser Raspberry Pi-yê navê bikarhêner û şîfreya xwe biguherîne

Meriv bi Arduino re çawa dikare rêveberiya xweya MIDI çêbike

connector midi

Pir kes in ku ji ber sedemên cûda hem şexsî û hem jî pisporî, hewce ne ku bikar bînin a kontrolker MIDI bi tevahî xwerû Ji ber ku belkî û wekî mînakek, di hin demên jiyana weyê wekî hunermend de, kirîna rêveberiyek MIDI-ya erzan dibe ku hêvî û hewcedariyên we bi cih neyne, dema ku dem tê, bijartina guhertoyek pispor dibe ku di her du çavkaniyên darayî de zêde be. hewceyê, û herweha hejmarek mezin a taybetmendiyên ku ew dikarin pêşkêş bikin.

Ji ber vê yekê, îro ez dixwazim her tiştê ku hûn hewce ne nîşanî we bidim da ku hûn dikarin xweya xweser sazkerê MIDI-yê çêbikin, hem jî her tiştê ku hûn ji bo avakirina wê hewce ne û hem jî nermalava ku hûn ê hewce bikin saz bikin pêşkêşî we dikin. Wekî hûrgulî, ji bo vê projeyê karanîna borda Arduino girîng e, kontrolkirinek ku ji bo bicihanîna vî karî têra xwe hêzdar e.

Gotara peywendîdar:
Meriv çawa robotekê çêdike: 3 vebijarkên cihêreng

Controller MIDI çi ye?

midi

Di bingeh de, birêveberek MIDI, bi firehî axaftin, ji bo girêdana alavên cihêreng ên muzîkê bi hevûdu re berpirsiyar e. Gelek amûrên ku navgîniya MIDI tê de ne, her çend divê ev pir zelal be jî ji ber ku gelek bikarhêner hertim şaş dibin, MIDI ne pelê bihîstwerê ye, lê rêgezek pir hêsan a rêwerz e ku amûrek dikare bistîne. an mîhengên deng.

Di hundurê MIDI de du celeb heneLi aliyek me yê bi navê Kontrol Guharîn heye ku tê de hejmara wê ya kontrolker heye û di navbera 0 û 127.-an de nirxek heye. Bi saya vê, peyam dikarin bêne weşandin ku parametreyên cihêreng ên wekî hejmar an awaz dikare werin guhertin. Amûrên cihêreng ên ku MIDI-yê qebûl dikin divê pirtûkek bi xwe re bîne û diyar bike ka kîjan kanal û peyam ji hêla default ve têne saz kirin û awayê guheztina wan.

Di cîhê duyemîn de Guhertina Bernameyê, rêzeyek peyamên me hene ku di dorê de ji yên ku Kontrola Guherînê pêk tînin pir hêsantir in. Van celeb peyam têne bikar anîn ku pêşdibistanê an pêçek amûrek biguherînin. Çawa ku di Kontrola Guherandinê de, li gel amûrê we pêdivî ye ku hilberîner destûrek diyar bike ka kîjan pêşdest bi peyamek taybetî têne guhertin.

Parçeyên Pêdivî ye ku Ji bo Xwerûya Xweya MIDI Controller-a Xwe Bikin

Idiematîk connector Midi

Ji bo ku hûn karibin xwe kontrolkerê MIDI-yê çêbikin hûn ê hewceyê rêzek perçe ne ji bilî, wek ku me berê jî behs kir, desteyek Arduino. Berî domandinê, tenê ji we re vebêjin ku dibe ku, di pêşerojê de ji ber ku hûn dixwazin projeyê berfireh bikin, ji we re bêtir tişt hewce ne, her çend, di vê demê de bi çend perçe hûn ê pir hebin.

Em ê hewceyê kabloyek DIN-5-pole, 2 berxwedêrên 220 ohm, 2 switches hûrdemî, 2 berxwedana 10k ohm, têlên girêdanê, rêgezek dorpêç, kablo MIDI û amûrek MIDI an pêwendiya USB ne. Tenê bi van perçeyan hûn dikarin dest pê bikin, gavên min bişopînin, da ku hûn rêveberiya xweya MIDI çêbikin.

Gavên yekem

Uematîk Arduino midi

Berî destpêkirinê ez wêneyek ji we re dihêlim ku hûn dikarin pinên kabloya MIDI-ya xwe bibînin, bi vî rengî em dikarin pîneyan rast rast nas bikin û bi taybetî jî cihê ku her yekê pê ve girêdin. Bi firehî axaftinê, di vê nuqteyê de tiştê ku hûn bikin ev e ku hûn pin 5 ya kabloyê bi berxwedanek 220 ohmî ve girêdin û ji wir jî bi Arduino Transmit 1, pin 4 bi berxwedanek 220 ohmî û ji wir jî bi priza 5V ya Arduino ve girêdin Pêdivî ye ku 2 bi girêdana Ground a kontrolkerê we ve were girêdan.

Gava ku ev gav hate qedandin, di wêneya ku tenê li binê van rêzikan de ye, nexşeyek weya berfireh tune, dem dema girêdana bişkokan e. Fikra di vê beşê de ev e ku meriv bi kar bîne, pînê digitalRead (bikaribe kifş bike dema ku voltaja ku digihîje wê diguhere) da ku meriv bikaribe transîstorek bikar bîne, da ku bigihîje, bi tikandina bişkojkê. Ji bo vê yekê em tenê pêdivî ne ku bişkokek bikar bînin da ku, milê çepê wê em wê bi 5V, aliyê rastê bi berxwedanek 220 ohmî ve girêbidin û ji wir jî bi erdê ve girêdin dema ku, di dorê de, em jî aliyê rastê bi pin 6 ve girêdin Bişkoja duyemîn dê bi heman rengî were sazkirin her çend, wekî ku hûn di şemayê de jî dibînin, li şûna pin 6 em wê bi 7 ve girêdidin.

Nermalava ku ji bo rêveberê midi ya malê tê bikar anîn

Gava ku me bi hemî alavên xwe xilas kir, dem ew e ku em amûra xwe girêdin û test bikin. Berî wê divê ku em hebin Navrûya USB-MIDI û kabloyek MIDI da ku panelê, ku daneyê dişîne, bi komputera me ve girêbide. Ji bo gihîştina vê yekê, me pirtûkxaneya MIDI v4.2 ya ku ji hêla zilamên ji Çil Seven Efektan ve hatî afirandin hilbijartin ku divê em li ser Arduino-ya xwe saz bikin û têkevin projeyê.

Di mijara komputerê de, ji me re bernameyek hewce dike ku karibe çavdêriya hemî daneyên MIDI bike ku ji Arduino digihîje wê. Ji bo vê derfetên me yên cihêreng hene wekî MIDI Monitor (OS X), MIDI-OX (Windows) an Kmidimon (Linux)

Ji bo ku ceribandinek piçûk bikin em tenê pêdivî ye ku Arduino bi komputera xwe ve girêbidin û koda jêrîn bicîh bikin:

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

Ger her tişt baş çûbe, hûn dikarin herin testa bişkojkê, di rewşa ku ev test ji bo we nexebitî ye divê hûn pê ewle bine ku hemî têkilî rast in, çerx tam bi şemaya berê, çerx e bi kabloya MIDI ve bi navgînek USB-MIDI ve girêdayî ye, kabloyên bendera MIDI rast hatine girêdan, kabloya MIDI bi têketina navgîniya USB-MIDI ve girêdayî ye, tixûbê Arduino rast bi torê elektrîkê ve girêdayî ye û têra wê hêz heye ...

Testkirina ku bişkok rast dixebitin

Berî ku berdewamkirina xwarina bernameya me bi kargêriyên nû û koda ku em dikarin tê de winda bibin, hêja ye ku hûn bîstek rawestin û test bikin ku bişkok bi rêkûpêk bixebitin. Ji bo wan em neçar in ku kodê jêrîn bar bikin:

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

}

Vê kod tenê pêdivî ye ku were berhev kirin û bicihanîn da ku, bi kabloya USB ve girêdayî, bername ji me re vebêje heke yek ji bişkokan hatibe girtin.

Em rêveberê xweya MIDI ya xwerû diafirînin

Gava ku me van testan bicîh kir, dem ew e ku em ji bo wê rêveberê xweya MIDI bicivin, hûn ê tenê hewce bikin ku koda jêrîn berhev bikin:

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

Wekî hûrgulî, ji we re vebêjin ku hûn vê carê bi encamek MIDI re nikarin ferman Serial.println () bikar bînin, heke hûn dixwazin li ser computerê hin celeb peyaman nîşan bikin, tenê biguherînin:

midiOut.sendControlChange(42,127,1);

ji hêla:

midiOut.sendControlChange(value, channel);

li ku nirx û kanal divê xwedî nirxên xwestin bin ku hûn dixwazin nîşan bikin.

Mînaka operasyonê:


Naveroka gotarê bi prensîbên me ve girêdayî ye etîka edîtoriyê. Ji bo raporkirina çewtiyek bitikîne vir.

4 şîrove, yên xwe bihêlin

Commentîroveya xwe bihêlin

Navnîşana e-peyamê ne, dê bê weşandin. qadên pêwist in bi nîşankirin *

*

*

  1. Berpirsê daneyê: Miguel Ángel Gatón
  2. Armanca daneyê: SPAM-ê kontrol bikin, rêveberiya şîroveyê.
  3. Qanûnîbûn: Destûra we
  4. Ragihandina daneyê: Daneyî dê ji aliyên sêyemîn re neyê ragihandin ji bilî peywira qanûnî.
  5. Tomarkirina daneyê: Databaza ku ji hêla Occentus Networks (EU) ve hatî mazûvan kirin
  6. Maf: Di her demê de hûn dikarin agahdariya xwe bi sînor bikin, vegerînin û jê bibin.

  1.   Alfred dijo

    Arduino gelek imkanan pêşkêşî we dike ku hûn bi serê xwe projeyan bigirin https://www.juguetronica.com/arduino . Yek ji tiştê çêtirîn ev e ku hûn dikarin bêyî pispor dest pê bikin û hînbûnê biçin, bi vî rengî xwe motîve bikin ku xwe-fêr bibin.

  2.   Danel Roman dijo

    Silavên.

    Ez hewl didim ku vê fêrkera fantastîk pêk bînim… lê # tê de ne temam in.

    Hûn dikarin ji min re bibêjin kîjan hewce ne?

    Gelek spas dikim.

  3.   uell dijo

    Hello.
    Ez dixwazim bi şûna bişkokan bi têketinên jack ên ku îşaretek piezoelektrîkî tê de, li şûna bişkokan moduleke elbik elektronîk çêbikim.
    Ma gengaz e ku meriv wiya bike?

  4.   Eduardo Valenzuela dijo

    Ji kerema xwe eger hûn dikarin navnîşên vê kodê bidin, ez bi vê projeyê re eleqedar im.