2012-02-01 33 views
5

Tôi muốn tạo một ứng dụng trên Android gửi tin nhắn MIDI qua USB tới máy tính để có thể điều khiển các phần mềm âm nhạc như Cubase, FL, Reason, ...Gửi tin nhắn MIDI qua USB trên Android

Bộ điều khiển MIDI phần cứng (ví dụ: Bàn phím) được tự động nhận dạng trong phần mềm nhạc trên Windows. Tôi đoán đó là bởi vì họ sử dụng giao thức MIDI phổ quát được phần mềm nghe nhạc trực tiếp nhận ra. Họ không cần tài xế riêng.

Tôi muốn có thể sử dụng điện thoại/máy tính bảng làm bộ điều khiển midi mà không phải cài đặt nhân viên trên máy tính (như với bộ điều khiển phần cứng).

Có một mã trình diễn trên các nhà phát triển Android để điều khiển đồ chơi tên lửa Launcher thông qua USB. Nếu tôi gửi, sử dụng cùng một kỹ thuật, các thông điệp theo giao thức MIDI sẽ hoạt động giống như vậy?

Cảm ơn trước sự giúp đỡ của bạn

Trả lời

3

Không, nó không hoạt động từ xa như thế.

Thiết bị MIDI USB sử dụng trình điều khiển ... chỉ là chúng thường "tuân thủ lớp" và tất cả có thể sử dụng cùng một trình điều khiển chứng khoán đi kèm với hệ điều hành.

Để thực hiện những gì bạn đang đề xuất, bạn sẽ cần mô phỏng thiết bị qua USB ... hoàn chỉnh với ID PnP thích hợp và những gì không. Điều này là bên cạnh không thể. Mã bạn tìm thấy là sử dụng USB ở chế độ máy chủ, không phải theo cách khác.

Bạn sẽ thấy dễ dàng hơn khi gửi MIDI qua mạng và sử dụng một trong nhiều trình điều khiển MIDI mạng có sẵn.

+0

Cảm ơn câu trả lời của bạn, vì vậy giải pháp duy nhất là gửi tin nhắn qua Wifi hoặc Bluetooth và có phần mềm ở phía máy tính dịch và gửi chúng tới phần mềm nghe nhạc?Tuy nhiên bạn có bất kỳ ý tưởng làm thế nào TouchDaw có thể làm việc trực tiếp với trình điều khiển midi bản địa và có thể gửi tin nhắn thông qua usb? Cảm ơn – Jecimi

+1

Rất tiếc, TouchDAW sử dụng trình điều khiển. Vâng, nếu nó thực sự không thể hoạt động như một thiết bị qua USB, tôi sẽ đi theo cách đó. Cảm ơn ! – Jecimi

7

Tôi đã viết Trình điều khiển MIDI USB cho Android.
Hữu ích khi tạo bộ điều khiển/bộ thu MIDI của riêng bạn.

https://github.com/kshoji/USB-MIDI-Driver

Các khác lái xe midi là thư viện 'nmj'.
Thư viện này cũng hỗ trợ USB MIDI. Hơn nữa, nó hỗ trợ một số giao thức mạng-MIDI, MIDI qua bluetooth và MIDI qua ADB (gỡ lỗi kết nối).

http://www.humatic.de/htools/nmj/

+1

bạn có thể mở rộng câu trả lời của bạn và viết một mã mẫu để gửi một tin nhắn MIDI bằng cách sử dụng lib của bạn? Có vẻ như gần đây bạn đã xóa tài liệu triển khai javax.sound của mình. Có bất kỳ vấn đề với lib này hoặc là nó vẫn hoạt động? – gaborous

+0

@kshoji: Có mã nguồn cho Eclipse? –

+0

@kshoji bạn biết liệu tính năng này có được đưa vào thư viện hỗ trợ Android hay không (đối với tính tương thích với các thiết bị cũ hơn) ??? – Billyjoker

10

Với Android 6.0 (API 23) này bây giờ là có thể - thiết bị Android có thể đóng vai trò như lớp phù hợp (không điều khiển cần thiết) các thiết bị MIDI.

Để chuyển sang chế độ USB-MIDI, người dùng có thể vuốt xuống từ phía trên cùng của màn hình để truy cập màn hình lựa chọn chế độ USB (bên dưới).

Screenshot showing USB selection menu

Ứng dụng có thể gửi tin nhắn MIDI sử dụng new MIDI API. Dưới đây là một số mã để gửi tin nhắn MIDI NoteOn:

byte[] buffer = new buffer[3]; 
buffer[0] = (byte)0x90 + (byte)0x01; // Note On - Channel 1 
buffer[1] = (byte)0x3C; // pitch (Note C3) 
buffer[2] = (byte)127; // velocity 
int offset = 0; 
inputPort.send(buffer, offset, numBytes); 

Để gửi các loại tin nhắn khác tham khảo MIDI message specification. Lưu ý rằng các byte được ký bằng Java như vậy this post might be helpful.

+0

Như đã nói @kshoji, vì vậy, bạn có thể gửi midi từ Android 2.2 trở đi, không thực sự cần thiết Android 6.0? – Billyjoker

Các vấn đề liên quan