Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

MIDI

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

Bắt đầu từ Android 13, hỗ trợ MIDI 2.0 được thêm vào truyền tải USB. MIDI 2.0 là một tiêu chuẩn MIDI mới hơn được định nghĩa 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 tài sản. 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 một cách chính xác, MIDI không liên quan đến âm thanh. Nhưng vì MIDI được sử dụng phổ biến với â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 chuyển các ứng dụng âm thanh chuyên nghiệp sử dụng MIDI sang nền tảng Android dễ dàng hơn.

AMidi là một API NDK cung cấp cho các nhà phát triển ứng dụng khả năng gửi và nhận dữ liệu MIDI với 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. Các ứ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 và truyền dữ liệu đến và đi từ mỗi thiết bị thông qua các cổng đầu vào và đầu ra MIDI của thiết bị.

Phương tiện giao thông

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 với đầ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 thiết bị ngoại vi USB. Các 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 nào 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ể bật hỗ trợ MIDI tùy chọn trong nền tảng. Android hỗ trợ trực tiếp USB, BLE và truyền tải ả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 các 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 một 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 vận chuyển MIDI 1.0

Việc triển khai MIDI 1.0 phụ thuộc vào ALSA cho chế độ máy chủ USB và truyền tải chế độ ngoại vi USB. ALSA không được sử dụng cho BLE và vận chuyển ả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 hạt nhân của bạn. Xem Cấu hình hạt nhân Android.

Truyền tải MIDI qua USB được định nghĩa chính thức bởi Định nghĩa loại thiết bị bus nối tiếp chung cho thiết bị MIDI phiên bản 1.0 ngày 1 tháng 11 năm 1999 được xuất bản bởi 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 vẫn chưa được cập nhật cho ConfigFs (một kiến ​​trúc mới cho trình điều khiển tiện ích USB), cũng như chúng chưa được hợp nhất tại ngược dòng kernel.org .

Các bản vá được hiển thị theo thứ tự cam kết cho cây nhân 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 những điều sau:

  • Đi tới Cài đặt> Tùy chọn nhà phát triển> Mạng và chọn hộp cho MIDI trong hộp thoại Chọn cấu hình USB.
  • Trong khi được gắn vào máy chủ USB, hãy kéo xuống từ phía 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 (interapp)

Truyền tải ảo (interapp) 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 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 thiết bị của device.mk :

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 để yêu cầu tính năng này.

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

Khi ở chế độ máy chủ USB, gỡ lỗi Android Debug Bridge (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ế.