Arduino ile kendi MIDI kontrol cihazınızı yapın

MIDI

Bir müzik aşığıysanız veya doğrudan amatör veya profesyonel bir müzisyenseniz, kesinlikle evinizde geniş bir müzik enstrümanı koleksiyonu biriktirmişsinizdir. Tüm bu karışımları mükemmel bir şekilde yapmak için en iyisi bir MIDI denetleyicisi. Ne yazık ki, bu tür nesneler genellikle oldukça pahalıdır, bu nedenle çok fazla kaynağa sahip olmayan bir kişinin sunabileceği her şeye erişmesi zordur.

Bir MIDI denetleyicisinin ne olduğunu daha iyi anlamak için, size MIDI kelimesinin nereden geldiğini söyleyin. dijital arayüzlü müzik aletiyani elektronik müzik aletlerinin birbirleriyle haberleşmesini sağlayan bir tür kontrolör. Örneğin, evde bir elektronik klavyeniz varsa, MIDI arayüzüne sahip olma olasılığı çok yüksektir. İlerlemeye devam etmeden önce, insanı aksini düşünmeye sevk edebilecek bazı teknik detaylar olmasına rağmen, çok açık olmalı ki, MIDI ses değil.

Bu basit öğreticiyle kendi MIDI denetleyicinizi oluşturun

Bu konuda netleştiğimizde, MIDI'nin yalnızca basit bir işlem olduğunu anlamanız kesinlikle çok daha kolay olacaktır. 16 bağımsız kanalı destekleyebilen komut setiBu, birbiriyle bağımsız olarak iletişim kuran 16'ya kadar farklı cihaz olabileceği anlamına gelir. Bu cihazlar, temelde bir konektör içinde beş pimli bir kablo olan 5 pimli bir DIN kablosuyla bağlanmalıdır. Ayrıntı olarak, 5 pinli DIN yerine bir USB kullanmak oldukça yaygındır, bir USB kullanılması durumunda bir USB-MIDI arayüzü oluşturmamız gerekir.

Daha fazla uzatmadan, sizi bulabileceğiniz bağlantıyla baş başa bırakıyorum öğretici adım adım açıklayıcı resimler Kendi MIDI denetleyicimizi oluşturmak için gerekli tüm eylemleri gerçekleştirebileceğimiz yer.

İlgili makale:
Raspberry Pi'mizdeki Pi kullanıcı adı ve şifresi nasıl değiştirilir

Arduino ile kendi MIDI denetleyicinizi nasıl yapabilirsiniz?

midi konektörü

Hem kişisel hem de profesyonel olarak farklı nedenlerle bir tamamen özel MIDI denetleyicisi Çünkü belki ve bir örnek olarak, bir sanatçı olarak hayatınızın bir noktasında, ucuz bir MIDI denetleyicisi satın almak beklentilerinizi veya ihtiyaçlarınızı karşılamayabilirken, zamanı geldiğinde profesyonel bir sürümü seçmek her iki finansal kaynakta da aşırı olabilir. ihtiyaç ve sunabilecekleri çok sayıda özellik.

Bu nedenle, bugün size ihtiyacınız olan her şeyi göstermek istiyorum, böylece kendi MIDI denetleyicinizi yapabilirsiniz, hem yapımı için ihtiyacınız olan her şeyi belirtir hem de yüklemeniz gereken yazılımı size sunar. Bir detay olarak, bu proje için bir Arduino kartının kullanılması önemlidir, bu görevi yerine getirecek kadar güçlü bir kontrolör.

Bir robot nasıl yapılır
İlgili makale:
Bir robot nasıl yapılır: 3 farklı seçenek

MIDI denetleyicisi nedir?

midi

Temel olarak, farklı müzik cihazlarını birbirine bağlamaktan genel olarak bir MIDI kontrolörü sorumludur. Birçoğu MIDI arayüzü içeren enstrümanlardır, ancak çoğu zaman kafası karışan birçok kullanıcı olduğu için bu çok açık olmalıdır, MIDI bir ses dosyası değil, bir enstrümanın alabileceği çok basit bir talimatlar dizisidir. Farklı kontroller yapmak için veya ses ayarları.

MIDI'nin içinde iki farklı tür varBir yandan Kontrolör numarası ve 0 ile 127 arasında bir değere sahip olan Değişim Kontrolü adlı bir sistemimiz var. Bu sayede ses seviyesi veya ton gibi farklı parametrelerin değiştirilebildiği mesajlar verilebiliyor. MIDI'yi kabul eden farklı enstrümanlar yanlarında hangi kanalların ve mesajların varsayılan olarak ayarlandığını ve bunların nasıl değiştirileceğini açıklayan bir kılavuz getirmelidir.

İkinci olarak, Değişiklik Kontrolünü oluşturanlardan çok daha basit olan bir dizi mesaj olan Program Değişikliğine sahibiz. Bu tür mesajlar, bir cihazın ön ayarını veya yamasını değiştirmek için kullanılır. Değişim Kontrolünde olduğu gibi, cihazınızla birlikte üretici, hangi ön ayarların belirli bir mesajla değiştirildiğini gösteren bir kılavuz eklemelidir.

Kendi Ev Yapımı MIDI Denetleyicinizi Oluşturmak İçin Gereken Parçalar

Midi konektör şematik

Kendi MIDI denetleyicinizi oluşturabilmek için, daha önce bahsettiğimiz gibi bir Arduino kartına ek olarak bir dizi parçaya ihtiyacınız olacak. Devam etmeden önce, sadece ileride projeyi genişletmek istediğiniz için daha fazla şeye ihtiyacınız olduğunu söyleyin, ancak şu anda birkaç parça ile bol miktarda sahip olacaksınız.

5 kutuplu dişi DIN kablosu, 2 220 ohm direnç, 2 anlık anahtar, 2 10k ohm direnç, bağlantı kablosu, devre kartı, MIDI kablosu ve bir MIDI cihazına veya USB arayüzüne ihtiyacımız olacak. Sadece bu parçalarla, kendi MIDI denetleyicinizi yapmak için adımlarımı izleyerek başlayabilirsiniz.

Primeros pasos

Arduino midi şematik

Başlamadan önce size MIDI kablonuzun pinlerini görebileceğiniz bir resim bırakıyorum, bu şekilde pinleri doğru bir şekilde tanımlayabiliriz ve özellikle her birinin nereye bağlanması gerektiğini. Genel olarak konuşursak, bu noktada yapmanız gereken tek şey, kablonun 5. pimini 220 ohm'luk bir dirence ve oradan Arduino Transmit 1'e, pim 4'ü 220 ohm'luk bir dirence ve oradan da Arduino'nun 5V soketine bağlamaktır. 2, kontrol cihazınızın Toprak bağlantısına bağlanmalıdır.

Bu adım yapıldıktan sonra bu çizgilerin hemen altında yer alan fotoğrafta detaylı bir şema kalmaz, düğmeleri bağlama zamanı gelmiştir. Bu bölümdeki fikir, bir düğmeye basarak elde etmek için bir transistörü kullanabilmek için digitalRead pinini (kendisine ulaşan voltajın değiştiğini tespit edebilen) kullanarak elde etmektir. Bunun için sol tarafını 5V'a, sağ tarafını 220 ohm'luk bir dirence ve oradan toprağa bağlayacak şekilde sadece bir düğme kullanmalıyız, sırayla sağ tarafı da pin 6'ya bağlarız İkinci buton da aynı şekilde kurulacaktır, ancak şemada da görebileceğiniz gibi biz onu 6. pin yerine 7'ye bağlarız.

Ev tipi midi denetleyicisi için kullanılacak yazılım

Tüm donanımı bitirdikten sonra, cihazımızı bağlamanın ve test etmenin zamanı geldi. Bundan önce sahip olmalıyız USB-MIDI arayüzü ve bir MIDI kablosu Veri gönderen panoyu bilgisayarımıza bağlamak için. Bunu başarmak için, Arduino'muza yüklememiz ve projeye dahil etmemiz gereken Forty Seven Effects'teki adamlar tarafından oluşturulan MIDI v4.2 kitaplığını seçtik.

Bilgisayar söz konusu olduğunda, ona Arduino'dan gelen tüm MIDI verilerini denetleyebilecek bir programa ihtiyacımız olacak. Bunun için MIDI Monitor (OS X), MIDI-OX (Windows) veya Kmidimon (Linux) gibi farklı olasılıklarımız var.

Küçük bir test yapmak için Arduino'yu bilgisayarımıza bağlamamız ve aşağıdaki kodu çalıştırmamız yeterlidir:

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

Her şey yolunda gittiyse, düğme testine gidebilirsiniz, bu test sizin için işe yaramadıysa, tüm bağlantıların doğru olduğundan emin olmalısınız, devrenin önceki diyagramla, devre ile tamamen aynı olduğundan emin olmalısınız. MIDI kablosuyla bir USB-MIDI arayüzüne bağlıMIDI bağlantı noktasının kabloları doğru şekilde bağlanmış, MIDI kablosu USB-MIDI arabiriminin girişine bağlanmış, Arduino kartı elektrik ağına doğru şekilde bağlanmış ve yeterli güce sahip ...

Düğmelerin düzgün çalışıp çalışmadığını test etme

Programımızı içinde kaybolabileceğimiz yeni işlevler ve kodlarla beslemeye devam etmeden önce, bir an için durmaya değer ve düğmelerin düzgün çalışıp çalışmadığını test edin. Onlar için aşağıdaki kodu yüklemeliyiz:

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

}

Bu kodun derlenmesi ve yürütülmesi gerekir, böylece USB kablosu bağlıyken program bize düğmelerden herhangi birine basılıp basılmadığını söyler.

Ev yapımı MIDI denetleyicimizi yaratıyoruz

Bu testleri yaptıktan sonra, bunun için kendi MIDI denetleyicimizi bir araya getirmenin zamanı geldi, yalnızca aşağıdaki kodu derlemeniz gerekecek:

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

Ayrıntı olarak, Serial.println () komutunu bu sefer bir MIDI çıkışı ile kullanamayacağınızı söyleyin, bilgisayarda bir tür mesaj göstermek istiyorsanız, sadece değiştirin:

midiOut.sendControlChange(42,127,1);

by:

midiOut.sendControlChange(value, channel);

Burada değer ve kanal, görüntülemek istediğiniz istenen değerlere sahip olmalıdır.

İşlem örneği:


4 yorum, sizinkini bırakın

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Alfred dijo

    Arduino, projeleri kendi başınıza üstlenmeniz için size birçok olanak sunar https://www.juguetronica.com/arduino . En iyi şeylerden biri, bir uzman olmadan başlayıp öğrenmeye devam edebilmeniz, böylece kendinizi kendi kendine öğretmek için motive etmenizdir.

  2.   Danel Roman dijo

    Selamlar.

    Bu harika öğreticiyi yapmaya çalışıyorum… ama #includes tamamlanmadı….

    Bana hangilerinin gerekli olduğunu söyleyebilir misiniz?

    Çok teşekkür ederim.

  3.   uell dijo

    Merhaba.
    Düğmeleri piezoelektrik sinyalin geleceği jack girişleri ile değiştirerek bir elektronik bateri modülü yapmak istiyorum.
    Bunu yapmak mümkün mü?

  4.   Eduardo Valenzuela dijo

    Lütfen bu kodun içeriğini verebilirseniz bu proje ile ilgileniyorum.