Mục lục:

Xây dựng bộ điều khiển Arduino MIDI: 9 bước (có hình ảnh)
Xây dựng bộ điều khiển Arduino MIDI: 9 bước (có hình ảnh)

Video: Xây dựng bộ điều khiển Arduino MIDI: 9 bước (có hình ảnh)

Video: Xây dựng bộ điều khiển Arduino MIDI: 9 bước (có hình ảnh)
Video: 1.2 - The DIY Midi Controller workshop - What is an Arduino? 2024, Tháng mười một
Anonim

Hướng dẫn này ban đầu được xuất bản trên blog của tôi vào ngày 28 tháng 6 năm 2020

Tôi thích xây dựng những thứ bao gồm thiết bị điện tử và tôi luôn muốn xây dựng thứ gì đó bằng Arduino.

Một trong những bản dựng phổ biến nhất cho người mới bắt đầu mà tôi tìm thấy là bộ điều khiển MIDI. Bộ điều khiển MIDI là bất kỳ phần cứng nào gửi dữ liệu MIDI (Giao diện kỹ thuật số của nhạc cụ) đến một thiết bị để kích hoạt âm thanh và tạo nhạc.

Tôi thấy rằng nhiều cách triển khai rất phức tạp, ngay cả những cách dành cho người mới bắt đầu. Thật khó chịu khi thấy tôi cần phải sử dụng hàng trăm dòng mã không thể đọc được. Hoặc tôi cần hàn một điện trở trong một số trường hợp, trong số các ví dụ khác.

Dự án

Bằng cách xây dựng Bộ điều khiển Arduino MIDI của riêng mình, mục đích của tôi là tạo ra một dự án thú vị, giữ cho tiếng ồn ở mức thấp nhất. Một cái gì đó mà bất kỳ người mới bắt đầu nào cũng có thể làm theo. Để đạt được điều đó, tôi đã sử dụng MIDI Fighter 3D làm nguồn cảm hứng cơ bản và loại bỏ mọi tính năng không cần thiết.

Tổng chi phí cho dự án của tôi dưới 30 đô la và danh sách tài liệu thực sự ngắn (liên kết liên kết):

  • Arduino Leonardo (hoặc bản sao): từ $ 10 đến $ 20.
  • 16 x nút Sanwa 24mm (hoặc sao chép): từ $ 1 đến $ 2,50 cho mỗi nút.
  • Sắt hàn
  • Dây điện 22 AWG

Bảng Arduino

Khi tôi bắt đầu dự án này, tôi thấy có một loạt các mô hình Arduino mới (không bao gồm hàng trăm bảng tương thích). Và tất cả chúng đều cung cấp các khả năng hơi khác nhau.

Tôi cần gửi tín hiệu MIDI đến máy tính và cách đơn giản nhất để làm điều đó là qua USB. Bất kỳ bo mạch Arduino nào dựa trên vi điều khiển ATmega32u4 đều có giao tiếp USB tích hợp.

Các bảng Arduino chính thức có hỗ trợ USB gốc là Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Các bo mạch này có hỗ trợ USB tích hợp có nghĩa là chúng có thể hoạt động như một thiết bị USB MIDI.

Tôi quyết định chọn một bản sao của Arduino Leonardo. Nó có đủ đầu vào cho dự án này và nó cũng bao gồm các tiêu đề, giúp việc cắm / rút dây dễ dàng hơn.

Những bước đầu tiên

Mặc dù tôi sẽ giải thích từng bước cách tôi triển khai mã cho dự án này, nhưng bạn có thể tải xuống phiên bản cuối cùng.

Để tải mã lên bảng, bạn cần sử dụng Arduino IDE. Họ cũng có một trình soạn thảo Web rất hữu ích nhưng họ có một hạn ngạch giới hạn về số lần mỗi ngày mà bạn có thể biên dịch mã.

Bước 1: Nhấp nháy đèn LED tích hợp

Thật buồn cười khi "Hello World" trong thế giới phần cứng lại nhấp nháy đèn LED.

Thật là một bất ngờ thú vị đối với tôi khi phát hiện ra rằng Arduino Leonardo có một đèn LED tích hợp mà bạn có thể nhấp nháy để kiểm tra mã của mình. Bằng cách đó, bạn không cần phải xây dựng một mạch bên ngoài trên bảng mạch với đèn LED và điện trở.

Mã:

Bước 2: Nhấp nháy đèn LED trên Nhập thủ công

Bước hợp lý tiếp theo là nhấp nháy cùng một đèn LED bất cứ khi nào tôi gửi tín hiệu. Tôi đã tháo nắp nhựa của một đầu của 2 dây Dupont và kết nối đầu kia với bảng:

  • Chân số 2: Một trong các đầu vào kỹ thuật số (tích cực). Nó có thể là bất kỳ mã pin kỹ thuật số nào.
  • Pin GND: Bất kỳ chân nối đất nào (âm).

Bây giờ, mỗi khi tôi nối các đầu dây tiếp xúc với nhau, tôi đang đóng mạch và do đó tôi có thể thực thi mã do đó

Mỗi chân trong số 20 chân kỹ thuật số trên Leonardo có một điện trở bên trong (được ngắt kết nối theo mặc định) có thể được bật bằng INPUT_PULLUP. Hãy nhớ rằng đầu vào kéo lên có nghĩa là trạng thái nút bị đảo ngược:

  • CAO khi mạch mở (nút KHÔNG được nhấn).
  • THẤP khi đóng mạch (nút được nhấn).

Mã:

Bước 3: Cài đặt Thư viện MIDIUSB

Thư viện này cho phép bảng Arduino có khả năng USB hoạt động như một công cụ MIDI qua USB. Kiểm tra tài liệu chính thức để biết thêm thông tin.

Sử dụng Arduino IDE, bạn có thể cài đặt thêm các Thư viện Arduino bằng Trình quản lý Thư viện:

  1. Mở IDE và nhấp vào menu "Phác thảo", sau đó "Bao gồm Thư viện", sau đó "Quản lý Thư viện".
  2. Tìm kiếm MIDIUSB và nhấp vào Cài đặt.
  3. Sau khi hoàn tất, thẻ Đã cài đặt sẽ xuất hiện bên cạnh thư viện MIDIUSB.
  4. Đóng Trình quản lý Thư viện.

Bây giờ Leonardo có thể gửi tin nhắn MIDI qua USB! Nhưng trước tiên, cần có một số thông tin chi tiết về cách thức hoạt động của MIDI.

Cách thức hoạt động của MIDI

"MIDI (Giao diện Kỹ thuật số Nhạc cụ) là một giao thức truyền thông tiêu chuẩn kết nối các nhạc cụ điện tử, máy tính và các thiết bị âm thanh liên quan để chơi nhạc." - Wikipedia

Nó xử lý các thông báo sự kiện với dữ liệu về cao độ và vận tốc của nốt nhạc được phát, trong số các hướng dẫn khác

Trong dự án cụ thể này, đầu vào từ 16 nút sẽ gửi các thông điệp khác nhau qua USB. Những thông báo này có thể được chuyển đổi thành âm thanh trên máy tính bằng bất kỳ phần mềm thích hợp nào như GarageBand hoặc Ableton Live.

Giải phẫu thông báo MIDI

Để gửi tin nhắn MIDI, tôi đã sử dụng phương thức sendMIDI () từ Thư viện MIDIUSB mà tôi đã cài đặt ở bước 3.

Phương thức này có thể nhận 4 tham số:

  • Loại sự kiện: Nó có thể là 0x09 cho nốt Bật (phát nốt) hoặc 0x08 cho nốt Tắt (dừng phát nốt).
  • Lưu ý Bật / Tắt: Loại sự kiện kết hợp với kênh MIDI (1-16). Tôi chỉ sử dụng kênh 1 nên nó là 0x90 cho ghi chú Bật hoặc 0x80 cho ghi chú Tắt.
  • Số nốt: Mỗi nốt có một cao độ số liên quan (thang tần số).
  • Vận tốc: Từ 0 (không vận tốc) đến 127 (nhanh nhất).

Bước 4: Gửi tin nhắn MIDI

Tôi đã bao gồm Thư viện MIDIUSB và thay vì nhấp nháy đèn LED tích hợp, tôi đã gửi một ghi chú.

Mã:

⚠ Quan trọng: Từ bước này trở đi, Arduino biến thành Bộ điều khiển USB MIDI và nó ngừng nhận mã qua USB.

Khi bạn gặp khó khăn ở vị trí mà Arduino không thể lập trình được nữa, hãy làm theo các bước sau:

  1. Nhấn giữ nút đặt lại được làm tròn trên bảng Arduino.
  2. Nhấp vào Tải lên trên Arduino IDE.
  3. Thả nút đặt lại.
  4. Mã cập nhật sẽ được tải lên bảng.

Bước 5: Gửi tin nhắn MIDI từ mỗi nút

Gửi tin nhắn MIDI từ mỗi nút
Gửi tin nhắn MIDI từ mỗi nút

Bước cuối cùng là ánh xạ mọi quảng cáo chiêu hàng thành một nút. Đối với 16 nút, tôi đã xác định thang điểm từ C2 đến E3b, là các cao độ từ 36 đến 51 theo thứ tự từ dưới lên trên và từ trái sang phải. Kiểm tra tệp này từ Hướng dẫn Arduino để xem cao độ nào tương ứng với mỗi nốt.

Tôi đã sử dụng chân kỹ thuật số từ 2 đến 12 và chân tương tự (sử dụng chúng làm chữ số) từ A0 đến A4.

Và đây là cách mã cuối cùng trông như thế nào

Bước 6: Thiết lập kênh hoặc ngân hàng (tùy chọn)

Thiết lập kênh hoặc ngân hàng (tùy chọn)
Thiết lập kênh hoặc ngân hàng (tùy chọn)

Trong trường hợp bạn muốn thêm nhiều nút hơn với khả năng chuyển kênh hoặc ngân hàng, như trong MIDI Fighter 3D (xem hình ảnh), Arduino Leonardo có thêm bốn chân mà bạn có thể sử dụng. Arduino Leonardo có 20 chân đầu vào / đầu ra kỹ thuật số, trong đó chỉ có 16 chân được sử dụng để chơi các nốt.

Bạn có thể sử dụng các nút bổ sung đó để cập nhật một biến trong mã và gửi giá trị của nó dưới dạng tham số đến phương thức MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Bước 7: Trường hợp

Trường hợp
Trường hợp
Trường hợp
Trường hợp

Để giữ cho dự án này đơn giản, tôi đã vô cùng cầu kỳ trong việc chọn các tính năng bao gồm.

  • Chỉ các nút: 16 nút arcade giống như Sanwa, trong lưới 4x4. Không có nút bấm, không có thanh trượt, không có bộ chỉnh âm hoặc bất kỳ đầu vào analog nào khác.
  • Vỏ Unibody: Không sử dụng vít, đai ốc, bu lông hoặc keo dán cho vỏ hoặc để giữ bảng Arduino.
  • Dụng cụ hàng ngày: Ví dụ: tôi hàn dây thay vì mua một dụng cụ cắt dây cụ thể cho các nút arcade.

Thiết kế Unibody

Một trong những thách thức mà tôi phải đối mặt là thiết kế một chiếc vỏ đơn giản đến mức không cần lắp ráp và có thể in 3d chỉ trong một lần chạy.

Để tránh sử dụng vít hoặc keo dán, tôi cần thiết kế một vỏ bọc cung cấp khả năng tiếp cận thiết bị điện tử nhỏ nhất. Nguồn cảm hứng lớn nhất của tôi đối với vỏ máy là Mac Mini, có một lỗ hình tròn ở phía dưới. Tôi cũng muốn thiết kế một cái nắp có thể vặn được cho nó, nhưng tôi quyết định để nó mở ra để lộ các thiết bị điện tử.

Tải xuống hộp đựng có thể in 3d (322 KB). Các cài đặt được đề xuất: PLA, lớp 0,15mm, chèn 20%, hỗ trợ bộ thực thi ít nhất cho lỗ tròn dưới cùng, giá đỡ Arduino và micro USB.

Giữ Arduino không có vít

Leonardo có 4 lỗ để vặn tấm bảng vào bất kỳ trường hợp phù hợp nào, nhưng ý tưởng của tôi là giúp dễ dàng thêm và tháo tấm bảng khỏi hộp.

Tìm một giá đỡ kẹp cho Arduino trên Thingiverse thật dễ dàng và tôi đã mất 5 lần lặp lại để tích hợp bộ giữ đó với thiết bị unibody. Phần khó nhất là làm chân của nó để tránh các lỗ cho các nút và làm cho micro USB được căn giữa với vỏ máy.

Bước 8: Hội đồng

Hội
Hội
Hội
Hội
Hội
Hội

Sau khi chèn tất cả các nút vào vị trí, tôi hàn các dây ngắn màu đen nối tất cả các chân âm của các nút giữa chúng.

Sau đó, tôi hàn dây dài màu đỏ từ mỗi chân dương để kết nối trực tiếp với bo mạch.

Để kết nối dây với Arduino, tôi đã cắt và hàn một số đầu của Dupont và phủ chúng bằng ống co nhiệt.

Tôi kết nối dây với bảng theo thứ tự tương tự như trong MIDI Fighter. Từ dưới lên trên và từ trái sang phải

Bước 9: Sử dụng Bộ điều khiển MIDI

Sử dụng Bộ điều khiển MIDI
Sử dụng Bộ điều khiển MIDI

Bất kỳ phần mềm âm nhạc nào (hoặc phần cứng phù hợp) đều có thể được sử dụng để nhận MIDI và tạo một số bản nhạc. Những ứng dụng được đề xuất nhiều nhất là Garage Band, Ableton Live và tôi biết có rất nhiều ứng dụng để cài đặt trên điện thoại.

Tất cả những công cụ đó đều hữu ích để tải các âm thanh được xác định trước để đánh trống ngón tay, nhưng chúng được tạo ra cho các mục đích lớn hơn. Những công cụ này có thể gây khó khăn cho người mới bắt đầu thiết lập.

MIDI trong trình duyệt Web

Để làm cho thứ gì đó phù hợp hơn với dự án này và sự đơn giản của nó, tôi đã xây dựng một công cụ Web hoàn toàn tập trung vào bộ điều khiển MIDI.

Punchy: Triển khai WebMIDI và WebAudio cho bộ điều khiển MIDI.

Nó có thể đọc thông báo MIDI trên bất kỳ trình duyệt nào hỗ trợ API WebMIDI JavaScript. Sau đó, nó phát âm thanh trong bộ tổng hợp (sử dụng API WebAudio) hoặc trong bộ lấy mẫu, tải âm thanh tùy chỉnh từ bất kỳ gói âm thanh nào.

Thiết lập Ableton Live

Để làm cho Bộ điều khiển MIDI hoạt động với Ableton Live, hãy làm theo các bước đơn giản sau từ tài liệu chính thức của họ.

Đi tới Tùy chọn → Liên kết MIDI và đảm bảo rằng "Đầu vào" đã BẬT "Theo dõi" và "Từ xa" và đầu ra đã BẬT "Từ xa" cũng như được đề cập trong hướng dẫn:

Đề xuất: