Cách tạo bộ điều khiển MIDI với Arduino

Cách tạo bộ điều khiển MIDI với Arduino

Là một nhạc sĩ đã tích lũy một bộ sưu tập các nhạc cụ và hộp tiếng ồn, Arduino khiêm tốn là công cụ hoàn hảo để tạo bộ điều khiển MIDI tùy chỉnh. Trong khi Raspberry Pi có thể đã giành vương miện cho các dự án Internet of Things (IoT), một Arduino Uno đơn giản (các loại Arduino khác nhau là gì?) Có quá đủ sức mạnh cho dự án này.





Lần đầu tiên sử dụng Arduino? Đừng lo lắng, chúng tôi đã có một Hướng dẫn cho người mới bắt đầu Arduino để đọc qua trước khi bạn giải quyết dự án này.





MIDI là gì?

MIDI là viết tắt của Musical Instrument Digital Interface. Nó vạch ra một cách tiêu chuẩn để các thiết bị âm nhạc giao tiếp với nhau. Nếu bạn sở hữu một bàn phím điện tử, bạn có thể có giao diện MIDI. Mặc dù có một số chi tiết kỹ thuật liên quan đến việc triển khai MIDI, nhưng điều quan trọng cần nhớ là MIDI không phải là âm thanh! Dữ liệu MIDI là một tập hợp các lệnh đơn giản (một lệnh được gọi là 'thông báo') mà một thiết bị khác có thể triển khai để tạo ra các âm thanh khác nhau hoặc các thông số điều khiển.





MIDI hỗ trợ 16 kênh. Điều này có nghĩa là mỗi cáp có thể hỗ trợ 16 thiết bị khác nhau giao tiếp độc lập với nhau. Các thiết bị được kết nối bằng cáp DIN 5 chân. DIN là viết tắt của 'German Institute for Standardization', và chỉ đơn giản là một loại cáp có năm chân bên trong đầu nối. USB thường được sử dụng thay cho DIN 5 chân hoặc có thể sử dụng giao diện USB-MIDI.

MIDI-Cáp-Nam



Kiểm soát Thay đổi và Thay đổi Chương trình

Có hai loại thông báo MIDI chính: Thay đổi điều khiển và Thay đổi chương trình.

Thông báo Thay đổi Điều khiển (CC) chứa số bộ điều khiển và giá trị từ 0 đến 127. Thông báo CC thường được sử dụng để thay đổi cài đặt như âm lượng hoặc cao độ. Các thiết bị chấp nhận MIDI phải đi kèm với sách hướng dẫn giải thích kênh và thông báo nào được thiết lập theo mặc định và cách thay đổi chúng (được gọi là ánh xạ MIDI).





Thông báo Thay đổi Chương trình (PC) đơn giản hơn thông báo CC. Tin nhắn PC bao gồm một số duy nhất và được sử dụng để thay đổi cài đặt trước hoặc bản vá trên thiết bị. Thông báo trên PC đôi khi được gọi là 'Thay đổi bản vá'. Tương tự như thông báo CC, nhà sản xuất nên cung cấp một tài liệu phác thảo những giá trị đặt trước được thay đổi bởi một thông báo cụ thể.

Những gì bạn sẽ cần

  • Arduino
  • Ổ cắm DIN nữ 5 chân
  • Điện trở 2 x 220 ohm
  • 2 x điện trở 10k ohm
  • 2 x công tắc tạm thời
  • Dây móc
  • Breadboard
  • Cáp MIDI
  • Thiết bị MIDI hoặc giao diện USB
Water & Wood 5 Pcs DIN 5 Pin PCB Gắn ổ cắm nữ cho bàn phím PC MUA NGAY TRÊN AMAZON

Xây dựng kế hoạch

Dự án này sẽ khá đơn giản. Tất nhiên, bạn có thể thêm nhiều nút hoặc phần cứng hơn để phù hợp với nhu cầu của mình. Hầu như bất kỳ Arduino nào cũng sẽ phù hợp - chỉ cần ba chân cho ví dụ này. Dự án này bao gồm hai nút để điều khiển chương trình, một cổng MIDI để gửi dữ liệu và một thiết bị để nhận tin nhắn. Mạch này đã được xây dựng trên một breadboard ở đây, tuy nhiên có thể chuyển nó sang một hộp dự án và các đầu nối hàn để có một giải pháp mạnh mẽ.





Lắp ráp mạch

Arduino-Midi-Controller-Circuit

Kết nối MIDI

MIDI-Pinout

Kết nối ổ cắm MIDI của bạn như sau:

  • MIDI chân 5 đến Arduino Transmit (TX) 1 qua điện trở 220 ohm
  • Chân MIDI 4 đến Arduino + 5V qua điện trở 220 ohm
  • MIDI chân 2 đến mặt đất Arduino

Kết nối nút

Các nút hoạt động bằng cách thay đổi điện trở mà Arduino 'nhìn thấy'. Chân Arduino đi qua công tắc thẳng xuống đất ( THẤP ) thông qua điện trở 10k ohm (điện trở 'kéo xuống', đảm bảo giá trị ở mức thấp). Khi nhấn nút, giá trị mà mạch nhìn thấy sẽ thay đổi thành + 5v mà không có điện trở ( CAO ). Arduino có thể phát hiện sự thay đổi này bằng cách sử dụng digitalRead (pin) chỉ huy. Kết nối các nút với chân 6 và 7 trên đầu vào / ra kỹ thuật số (I / O) của Arduino. Kết nối cả hai nút:

  • Bên trái của nút thành + 5V
  • Bên phải của nút với Arduino Ground thông qua điện trở 10k ohm
  • Bên phải của nút tới chân Arduino (6 hoặc 7)

Kiểm tra MIDI

Bây giờ tất cả phần cứng đã hoàn thành, đã đến lúc kiểm tra nó. Bạn sẽ cần giao diện USB-MIDI (nhiều giao diện âm thanh có thể làm được điều này) và cáp MIDI. Cổng MIDI có dây trên breadboard đang gửi dữ liệu, vì vậy nó là đầu ra. Máy tính của bạn đang nhận dữ liệu, do đó nó là dữ liệu đầu vào. Dự án này sử dụng Arduino tuyệt vời Thư viện MIDI v4.2 bởi Forty Seven Effects. Khi bạn đã cài đặt Thư viện, bạn có thể đưa nó vào mã của mình bằng cách truy cập Phác thảo> Bao gồm Thư viện> MIDI .

Bạn cũng sẽ cần một chương trình để theo dõi dữ liệu MIDI đến:

Kết nối Arduino với máy tính của bạn và tải lên mã kiểm tra sau (đừng quên chọn đúng bảng và cổng từ Công cụ> BảngCông cụ> Cổng menu).

#include
#include
#include
#include
#include
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
Serial.begin(31250); // setup serial for MIDI
}
void loop() {
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(1000); // wait 1 second
midiOut.sendProgramChange(12,1); // send a MIDI PC -- 12 = value, 1 = channel
delay(1000); // wait 1 second
}

Mã này sẽ gửi tin nhắn CC, đợi 1 giây, gửi tin nhắn PC sau đó chờ vô thời hạn 1 giây. Nếu mọi thứ hoạt động bình thường, bạn sẽ thấy một thông báo xuất hiện trong màn hình MIDI.

Nếu không có gì xảy ra, đừng hoảng sợ! Hãy thử khắc phục sự cố:

  • Đảm bảo tất cả các kết nối đều chính xác
  • Kiểm tra xem cổng MIDI có được nối dây chính xác không - phải có 2 chân dự phòng ở các cạnh bên ngoài
  • Kiểm tra kỹ mạch có đúng không
  • Xác minh rằng mạch được kết nối với giao diện USB-MIDI bằng cáp MIDI
  • Kiểm tra xem cáp MIDI của bạn đã được kết nối với đầu vào trên giao diện USB-MIDI của bạn
  • Đảm bảo Arduino có nguồn
  • Cài đặt trình điều khiển chính xác cho giao diện USB-MIDI của bạn

Nếu bạn là vẫn còn có vấn đề, nó có thể đáng để kiểm tra breadboard của bạn. Bảng giá rẻ đôi khi có thể rất không nhất quán và chất lượng thấp - điều đó đã xảy ra với tôi khi làm việc trong dự án này.

Kiểm tra nút

Bây giờ là lúc để kiểm tra các nút đang hoạt động chính xác. Tải lên mã kiểm tra sau. MIDI không cần kết nối để kiểm tra phần này.

const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
void setup() {
Serial.begin(9600); // setup serial for text
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
}
void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
Serial.println('Button One Works!'); // log result
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
Serial.println('Button Two Works!'); // log result
delay(250);
}
}

}

Chạy mã này (nhưng giữ kết nối cáp USB) và mở Serial Monitor ( Trên cùng bên phải> Màn hình nối tiếp ). Khi bạn nhấn một nút, bạn sẽ thấy 'Nút Một Hoạt động!' hoặc 'Nút Hai hoạt động!' tùy thuộc vào nút bạn đã nhấn.

Có một lưu ý quan trọng cần bỏ qua trong ví dụ này - phần mềm khử thoát. Đây là khoảng thời gian trễ 10 mili giây (mili giây) đơn giản giữa việc kiểm tra nút và sau đó kiểm tra lại nút. Điều này làm tăng độ chính xác của việc nhấn nút và giúp ngăn chặn tiếng ồn kích hoạt Arduino. Bạn không cần phải làm điều này, mặc dù nó được khuyến khích.

Tạo bộ điều khiển

Bây giờ mọi thứ đã có dây và hoạt động, đã đến lúc lắp ráp bộ điều khiển đầy đủ.

Ví dụ này sẽ gửi một thông báo CC khác nhau cho mỗi nút được nhấn. Tôi đang sử dụng cái này để điều khiển Ableton Live 9.6 trên OS X. Mã này tương tự như cả hai mẫu thử nghiệm ở trên.

#include
#include
#include
#include
#include
const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
midiOut.sendControlChange(42,127,1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel
delay(250);
}
}
}

Lưu ý - bạn sẽ không thể sử dụng Serial.println () với đầu ra MIDI.

Nếu bạn muốn gửi tin nhắn trên PC thay vì CC, chỉ cần thay thế:

midiOut.sendControlChange(42,127,1);

Với:

midiOut.sendProgramChange(value, channel);

Đang hành động

Dưới đây là một minh chứng như một bộ điều khiển cho Ableton Trực tiếp ( Phần mềm DJ tốt nhất cho mọi ngân sách ). Trên cùng bên phải hiển thị đồng hồ đo âm thanh và trên cùng ở giữa hiển thị thông báo midi đến (qua Màn hình MIDI trên OS X).

cách sử dụng mã netflix

Bạn đã tạo bộ điều khiển MIDI chưa?

Có rất nhiều cách sử dụng thực tế cho bộ điều khiển MIDI tùy chỉnh. Bạn có thể xây dựng một thiết bị điều khiển bằng chân rộng lớn hoặc một bộ điều khiển studio kiểu dáng đẹp. Và nếu bạn quan tâm đến việc mua một cái, đây là bộ điều khiển USB MIDI tốt nhất mà bạn có thể mua.

Tín dụng hình ảnh: Keith Gentry qua Shutterstock.com

Chúng tôi hy vọng bạn thích các mặt hàng chúng tôi giới thiệu và thảo luận! MUO có quan hệ đối tác liên kết và được tài trợ, vì vậy chúng tôi nhận được một phần doanh thu từ một số giao dịch mua của bạn. Điều này sẽ không ảnh hưởng đến giá bạn phải trả và giúp chúng tôi đưa ra các đề xuất sản phẩm tốt nhất.

Đăng lại Đăng lại tiếng riu ríu E-mail Nâng cấp lên Windows 11 có đáng không?

Windows đã được thiết kế lại. Nhưng điều đó có đủ thuyết phục bạn chuyển từ Windows 10 sang Windows 11?

Đọc tiếp
Chủ đề liên quan
  • DIY
  • Phần mềm DJ
  • Arduino
  • Thiết bị điện tử
  • MIDDAY
Giới thiệu về tác giả Joe Coburn(136 bài báo đã xuất bản)

Joe tốt nghiệp ngành Khoa học Máy tính tại Đại học Lincoln, Vương quốc Anh. Anh ấy là một nhà phát triển phần mềm chuyên nghiệp và khi anh ấy không lái máy bay không người lái hay viết nhạc, anh ấy thường có thể bị bắt gặp chụp ảnh hoặc sản xuất video.

Xem thêm từ Joe Coburn

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký
Thể LoạI Diy