MIDI

Giao diện kỹ thuật số nhạc cụ (MIDI) là giao thức chuẩn để kết nối máy tính với 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.

Bắt đầu từ Android 13, tính năng hỗ trợ MIDI 2.0 được thêm vào truyền tải USB. MIDI 2.0 là tiêu chuẩn MIDI mới hơn được 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, độ phân giải cao hơn và trao đổi thuộc tính. MIDI 2.0 thông qua chế độ máy chủ USB luôn được bật khi hỗ trợ MIDI được bật trên nền tảng.

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

MIDI cho NDK

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

AMidiAPI NDK cung cấp cho nhà phát triển ứng dụng khả năng gửi và nhận dữ liệu MIDI bằng mã C/C++.

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

Vận chuyển

Lớp truyền tải vật lý được chỉ định trong MIDI 1.0 gốc là một vòng lặp hiện tại có đầu nối DIN 5 chân .

Kể từ MIDI 1.0, các phương tiện truyền tải bổ sung đã được xác định, bao gồm MIDI qua USB và MIDI qua Bluetooth Low Energy (BLE) .

MIDI cho Android

Android hỗ trợ USB On-The-Go , cho phép thiết bị Android hoạt động như một máy chủ USB để điều khiển các thiết bị ngoại vi USB. 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 gần đây vẫn chưa có API nền tảng tích hợp sẵn cho MIDI.

Bắt đầu với bản phát hành Android 6.0 (Marshmallow), các nhà sản xuất thiết bị có thể kích hoạt hỗ trợ MIDI tùy chọn trong nền tảng. Android hỗ trợ trực tiếp việc truyền tải USB, BLE và ảo (interapp). Android hỗ trợ MIDI 1.0 thông qua bộ điều hợp bên ngoài.

Để biết chi tiết về lập trình ứng dụng với API MIDI, hãy xem gói android.media.midi .

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

Kích hoạt truyền tải MIDI 1.0

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

Chế độ máy chủ USB

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

Truyền tải MIDI qua USB được xác định chính thức theo Định nghĩa lớp thiết bị bus nối tiếp vạn năng dành cho thiết bị MIDI Phiên bản 1.0 ngày 1 tháng 11 năm 1999 do Diễn đàn triển khai USB, Inc.

Chế độ ngoại vi USB

Để bật MIDI cho chế độ ngoại vi USB, bạn có thể cần áp dụng các bản vá cho nhân Linux của mình để tích hợp drivers/usb/gadget/f_midi.c vào trình điều khiển tiện ích USB. Các bản vá này có sẵn cho nhân Linux phiên bản 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) và chúng cũng chưa được hợp nhất tại kernel.org ngược dòng.

Các bản vá được hiển thị theo thứ tự cam kết cho cây kernel tại kernel/common 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 hai thao tác sau:

  • Đi tới Cài đặt > Tùy chọn nhà phát triển > Kết nối mạng và chọn hộp cho MIDI trong hộp thoại Chọn cấu hình USB.
  • Trong khi kết nối với máy chủ USB, hãy kéo xuống từ trên cùng của màn hình, chọn mục nhập USB cho , sau đó chọn MIDI .

BLE

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

Ảo (tương tác)

Vận chuyển ảo (tương tác) luôn được bật.

Yêu cầu 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 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 Tương thích Android (CDD) để biết thông tin về các yêu cầu để xác nhận tính năng này.

Gỡ lỗi khi ở chế độ máy chủ

Khi ở chế độ máy chủ USB, việc gỡ lỗi Cầu gỡ lỗi Android (adb) qua USB không khả dụng. Xem phần Sử dụng không dây của Cầu gỡ lỗi Android để biết giải pháp thay thế.