MIDI

Kỹ thuật số cho nhạc cụ Giao diện (MIDI) là một giao thức tiêu chuẩn để các máy tính kết nối với nhau có hỗ trợ âm nhạc nhạc cụ, ánh sáng sân khấu và các phương tiện định hướng thời gian khác.

Kể từ Android 13, phương thức truyền tải USB hỗ trợ MIDI 2.0. MIDI 2.0 là một phiên bản MIDI mới tiêu chuẩn xác định vào năm 2020. Giao thức này bổ sung các tính năng như giao tiếp hai chiều, quá trình phân giải và trao đổi tài sản. Chế độ hỗ trợ MIDI 2.0 qua USB luôn được bật khi hỗ trợ MIDI đã được bật trên nền tảng.

Nói một cách chính xác, MIDI không liên quan đến âm thanh. Nhưng vì MIDI thường được sử dụng với âm nhạc, bài viết này được đặt trong phần âm thanh.

MIDI cho NDK

Android 10 giúp bạn dễ dàng chuyển các ứng dụng âm thanh chuyên nghiệp sử dụng MIDI sang nền tảng Android.

AMidi là một API NDK cung cấp cho ứng dụng các nhà phát triển có thể gửi và nhận dữ liệu MIDI có mã C/C++.

Các ứng dụng MIDI trên Android thường dùng API midi để giao tiếp với dịch vụ MIDI trên Android. MIDI các ứng dụng chủ yếu dựa vào lớp MidiManager để khám phá, mở và đóng một hoặc nhiều MidiDevice truyền dữ liệu đến và đi từ từng thiết bị qua cổng đầu vào và đầu ra MIDI của thiết bị.

Phương tiện giao thông

Phương tiện vận tải thực lớp quy định trong MIDI 1.0 ban đầu là một vòng lặp hiện tại với Đầu nối DIN 5 chân.

Kể từ MIDI 1.0, chúng tôi đã xác định thêm các phương thức truyền tải khác, bao gồm cả giao thức MIDI qua USB và MIDI qua Bluetooth năng lượng thấp (BLE).

MIDI dành cho Android

Hỗ trợ Android USB khi di chuyển, cho phép thiết bị Android hoạt động như một máy chủ USB để điều khiển USB thiết bị ngoại vi. API chế độ máy chủ USB cho phép các nhà phát triển triển khai MIDI qua USB ở cấp ứng dụng, nhưng cho đến khi gần đây, chưa có API nền tảng tích hợp sẵn nào cho MIDI.

Kể từ bản phát hành Android 6.0 (Marshmallow), nhà sản xuất thiết bị có thể bật MIDI (không bắt buộc) trong nền tảng. Android hỗ trợ trực tiếp công cụ truyền tải USB, BLE và các phương thức truyền tải (liên ứng dụng) ảo. Android hỗ trợ MIDI 1.0 thông qua bộ chuyển đổi bên ngoài.

Để biết thông tin chi tiết về cách lập trình ứng dụng bằng API MIDI, hãy xem android.media.midi .

Phần còn lại của bài viết này thảo luận cách nhà sản xuất thiết bị Android có thể bật chế độ hỗ trợ MIDI trong nền tảng.

Bật tính năng truyền tải MIDI 1.0

Việc triển khai MIDI 1.0 phụ thuộc vào ALSA đối với chế độ máy chủ USB và việc truyền tải chế độ thiết bị ngoại vi USB. ALSA không được dùng cho BLE và các phương thức truyền tải ảo.

Chế độ hỗ trợ USB

Để bật MIDI cho chế độ hỗ trợ USB, trước tiên hãy hỗ trợ chế độ hỗ trợ USB nói chung và sau đó bật CONFIG_SND_RAWMIDICONFIG_SND_USB_MIDI trong nhân của bạn . Xem phần Cấu hình hạt nhân Android.

Phương thức truyền tải MIDI qua USB được xác định chính thức theo Định nghĩa lớp thiết bị cổng nối tiếp phổ quát cho thiết bị MIDI Bản phát hành 1.0 ngày 1 tháng 11 năm 1999 tiêu chuẩn được xuất bản bởi USB Implementers Forum, Inc.

Chế độ thiết bị ngoại vi USB

Để bật MIDI cho chế độ thiết bị ngoại vi USB, có thể bạn cần áp dụng bản vá vào nhân hệ điều hành Linux của bạn để tích hợp drivers/usb/gadget/f_midi.c vào tiện ích USB trình điều khiển. Các bản vá này có cho phiên bản kernel của Linux 3,10. Các bản vá này chưa được cập nhật cho ConfigF (kiến trúc mới cho trình điều khiển tiện ích USB) cũng như không được hợp nhất ở thượng nguồn kernel.org.

Các bản vá được hiển thị theo thứ tự cam kết cho cây hạt nhân tại dự án kernel/common nhánh android-3.10:

  1. https://android-review.googlesource.com/#/c/127450/
  2. https://android-review.googlesource.com/#/c/127452/
  3. https://android-review.googlesource.com/#/c/143714/

Bạn cũng cần thực hiện một trong những việc sau:

  • Chuyển đến phần Cài đặt > Tuỳ chọn cho nhà phát triển > Kết nối mạng và hãy đánh dấu vào hộp MIDI trong hộp thoại Select USB Configuration (Chọn cấu hình USB).
  • Khi đã cắm vào máy chủ USB, hãy kéo xuống từ đầu màn hình, chọn mục nhập USB cho rồi chọn MIDI.

BLE

Luôn bật MIDI qua BLE, miễn là thiết bị hỗ trợ BLE.

Ảo (tương tác)

Quá trình truyền tải (liên ứng dụng) ảo luôn được bật.

Xác nhận tính năng

Các ứng dụng có thể sàng lọc sự hiện diện của hỗ trợ MIDI bằng cách sử dụng Tính năng android.software.midi.

Để yêu cầu hỗ trợ MIDI, hãy thêm dòng này vào device.mk của bạn:

PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software.
midi.xml

Xem Tài liệu định nghĩa về khả năng tương thích (CDD) với Android để biết thông tin về các yêu cầu để xác nhận quyền sở hữu tính năng.

Gỡ lỗi khi ở chế độ máy chủ lưu trữ

Khi ở chế độ máy chủ USB, bạn không thể sử dụng tính năng gỡ lỗi qua Cầu gỡ lỗi Android (adb) qua USB. Hãy xem Phần Sử dụng không dây trong Cầu gỡ lỗi Android để tìm giải pháp thay thế.