Bộ điều khiển Arduino MIDI cơ bản: 5 bước
Bộ điều khiển Arduino MIDI cơ bản: 5 bước
Anonim
Bộ điều khiển MIDI Arduino cơ bản
Bộ điều khiển MIDI Arduino cơ bản

Giới thiệu:

Tôi mới làm việc với Arduino nhưng tôi hy vọng sẽ mở rộng kiến thức của mình bằng cách dạy những người khác và nhận được phản hồi. Đây là một bộ điều khiển MIDI rất cơ bản với 4 nút và một chiết áp. Phác thảo cho dự án này trông như thế này:

1. Xây dựng breadboard

2. Tải Sketch lên Arduino

3. Hiểu MIDI không có lông và vòng lặp MIDI nội bộ (loopbe1)

4. định tuyến MIDI của bạn đến DAW (Ableton)

Quân nhu

1 x Arduino Mega 2560

1 x bảng bánh mì

1 x cáp USB

1 x chiết áp

4 x Nút Tact

Điện trở 4 x 120Ohm

14 x cáp jumper cho breadboard

Bước 1: Xây dựng Breadboard

Xây dựng bảng mạch
Xây dựng bảng mạch
Xây dựng bảng mạch
Xây dựng bảng mạch

Kết nối breadboard của bạn để tất cả các thành phần khớp với hình ảnh 1 ở trên. Mỗi nút phải giống như hình 2. Đầu vào của nút là 2, 3, 4 và 5 trên Arduino và chân giữa của chiết áp được kết nối với đầu vào ANALOG A0.

Bước 2: Tải lên bản phác thảo

Tải lên bản phác thảo
Tải lên bản phác thảo

Sao chép và dán mã bên dưới vào Arduino IDE. Chọn đúng bảng trong "công cụ" và tải bản phác thảo lên Arduino.

byte noteON = 144; // ghi chú trên ghi chú commandbyte; // lưu trữ cho ghi chú hiện đang phát int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolean currentState = LOW; // nét cho trạng thái nút hiện tại boolean lastState = LOW; // bộ nhớ cho trạng thái nút cuối cùng void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // lần này chúng ta sẽ đặt chân là INPUT Serial.begin (9600); // khởi tạo kết nối Serial} void loop () {int PotVal = analogRead (potPin); byte tốc độ = bản đồ (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, speed); // bật note 60 với độ trễ 127 vận tốc (200); // dạng thô của nút debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // tắt độ trễ của note 60 (2); // dạng thô của nút debouncing} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// nếu nút vừa được nhấn MIDImessage (noteON, 61, vận tốc); // bật note 60 với độ trễ 127 vận tốc (200); // dạng thô của nút debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // tắt độ trễ của note 60 (2); // dạng thô của nút debouncing} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// nếu nút vừa được nhấn MIDImessage (noteON, 62, vận tốc); // bật note 60 với độ trễ 127 vận tốc (200); // dạng thô của nút debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // tắt độ trễ của note 60 (2); // dạng thô của nút debouncing} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// nếu nút vừa được nhấn MIDImessage (noteON, 63, vận tốc); // bật note 60 với độ trễ 127 vận tốc (200); // dạng thô của nút debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // tắt độ trễ của note 60 (2); // dạng thô của nút debouncing} lastState = currentState; } // gửi thông báo MIDI void MIDImessage (byte command, byte data1, byte data2) {Serial.write (command); Serial.write (data1); Serial.write (data2); }

Tôi vẫn còn rất mới đối với việc viết mã nói chung….. những người có thêm một chút kinh nghiệm có thể làm sạch điều này…

Bước 3: Hiểu MIDI không có lông và các vòng MIDI nội bộ

Hiểu MIDI không có lông và Vòng lặp MIDI nội bộ
Hiểu MIDI không có lông và Vòng lặp MIDI nội bộ
Hiểu MIDI không có lông và Vòng lặp MIDI nội bộ
Hiểu MIDI không có lông và Vòng lặp MIDI nội bộ
Hiểu MIDI không có lông và vòng lặp MIDI nội bộ
Hiểu MIDI không có lông và vòng lặp MIDI nội bộ

Arduino cần chạy qua một cầu nối tiếp như MIDI không có lông sau đó thông qua một vòng lặp MIDI nội bộ như loopbe1 (hoặc bus IAC cho Mac).

Lưu ý: bạn không thể tải bản phác thảo lên Arduino khi nó được kết nối với cầu nối tiếp MIDI không có lông.

Chọn Arduino của bạn trong cổng nối tiếp MIDI không có lông và loopbe1 hoặc IAC Bus trong MIDI out.

Lưu ý: hãy chắc chắn rằng tắt tiếng không được bật khi sử dụng loopbe1.

Bước 4: Kết nối với DAW của bạn

Kết nối với DAW của bạn
Kết nối với DAW của bạn

Nếu bạn nhận được tín hiệu đến ứng dụng MIDI không có lông khi bạn nhấn một nút trên bảng mạch (đèn sẽ nhấp nháy), bạn sẽ có thể gửi dữ liệu MIDI tới DAW. Tôi đã sử dụng Ableton nhưng bất kỳ DAW nào cũng nên hoạt động. Đảm bảo rằng vòng lặp MIDI nội bộ của bạn (loopbe1) được bật trong tùy chọn DAW của bạn (trong Ableton, bạn muốn "theo dõi" được bật). Tiếp theo, chọn một trong các đầu vào bản nhạc MIDI của bạn vào vòng lặp MIDI (loopbe1) như thể hiện trong hình trên.

Bước 5: Chơi

Image
Image

Các nút bây giờ sẽ hoạt động giống như bất kỳ bộ điều khiển MIDI nào khác! Chiết áp sẽ thay đổi vận tốc của các ghi chú được gửi đến DAW. Đoạn video (rất tối…) ở trên cho thấy âm thanh đại dương cầm đang hoạt động!

Đề xuất: