2009-04-21 9 views
5

Tôi có một cây đàn guitar MIDI của Yamaha, khi tôi phát một tệp MIDI được mã hóa bằng tiêu chuẩn XG MIDI, gây ra một số đèn trên cây đàn guitar để bật và tắt. Tôi đang cố gắng để xác định sự kiện MIDI gây ra điều này để tôi có thể lập trình gửi cùng một sự kiện mà không cần sử dụng tệp MIDI (giống như cách tôi có thể gửi lệnh Lưu ý (144) hoặc Ghi chú Tắt (128)).Định dạng tệp MIDI XG

Tuy nhiên, trong khi tôi đã có thể định vị bản sao của giao thức MIDI, tôi không thể định vị giao thức MIDI XG. Có cách nào, ngoài việc cố gắng gửi tất cả các lệnh có thể đến thiết bị cho đến khi tôi tìm được lệnh thích hợp, để xác định sự kiện MIDI đang gây ra ánh sáng thay đổi trạng thái? Hoặc là có một nơi nào đó mà tôi có thể nhận được một bản sao của giao thức MIDI XG?

+0

Câu hỏi này không liên quan đến lập trình và không thuộc về SO. Tôi khuyên bạn nên đọc hướng dẫn sử dụng thiết bị của bạn. –

+1

Điều đó không đúng. Tôi đang nói về việc tự động gửi các thông tin như vậy, đó sẽ là một câu hỏi lập trình. – Elie

Trả lời

3

Wikipedia: "Năm 1999, các tiêu chuẩn chính thức GM [General MIDI] đã được cập nhật để bao gồm nhiều bộ điều khiển, bản vá lỗi, RPNs và tin nhắn SysEx, trong một nỗ lực để hòa giải Roland GS và Yamaha XG bổ sung mâu thuẫn nhau và độc quyền" Điều này được gọi là General MIDI 2.

Tôi khuyên bạn nên xem xét những gì Java (javax.sound.midi) phải cung cấp (C# có vẻ thiếu một thư viện MIDI vững chắc). Đọc trên MetaMessage, ShortMessage, SysexMessagePatch. Từ những gì tôi hiểu, thông điệp hệ thống đặc biệt được gửi qua SysexMessage (dữ liệu ánh sáng có thể ở đây).

Nếu bạn cần một số mã mẫu, hãy xem Java Sound Resources.

liên kết khác tôi thấy:

4

Sổ tay Yamaha cho sản phẩm của họ chi tiết các thông tin bạn đang tìm kiếm. Các lệnh XG là thiết bị cụ thể. Một số lệnh XG cho phép truy cập trực tiếp vào bộ nhớ thiết bị và hướng dẫn sử dụng cho bộ tạo tín hiệu MU2000 cảnh báo rằng "bạn có thể làm hỏng thiết bị bằng cách gửi dữ liệu không chính xác"

1

Đối với Thư viện .NET Midi được quản lý cho Bộ công cụ C# Midi trên codeproject .com.

1

Tôi đang sử dụng bộ công cụ mã hóa midi của Leslie Sanford để giao tiếp với cây đàn guitar. http://www.codeproject.com/KB/audio-video/MIDIToolkit.aspx

Mọi thứ bạn cần biết về thông tin liên lạc của guitars đều nằm trong sách hướng dẫn trên một trang gần mặt sau.

Đây là video của trình chỉnh sửa tôi đã tạo - nó có tính năng liên lạc đầy đủ với cây đàn guitar.

YouTube Video of Guitar Program

4

Hai điều:

  1. XG là phần mở rộng ngữ nghĩa của giao thức MIDI. Nó không thay đổi bất cứ điều gì trong cấu trúc của tập tin MIDI. Điều duy nhất là, nếu bạn sử dụng một công cụ tương thích XG để ghi lại, nói rằng, những thay đổi của cộng hưởng của bộ lọc, nó sẽ gây ra tác dụng tương tự trên bất kỳ công cụ XG nào khác. Nhưng ở cấp độ procotol MIDI, bạn sẽ vẫn có thông báo CC (Control Change) # 71 (IIRC).

  2. Giao thức MIDI rất dễ mở rộng và dành nhiều không gian cho nhà sản xuất. Không chỉ bạn có thể sử dụng tin nhắn CC, mà còn đăng ký số tham số (RPNs) và NRPNs (những người không đăng ký). Trên đầu trang của nó, bạn có các thông điệp System Exclusive (SysEx) và tôi sẽ đặt cược rằng một thông điệp SysEx được thiết kế phù hợp có thể thay đổi ánh sáng trên cây đàn guitar. Hãy thử để có được cái gọi là "Danh sách dữ liệu" cho nhạc cụ của bạn, nó nên bao gồm tất cả các thông tin về các tin nhắn MIDI đang được gửi/nhận bởi cây đàn guitar của bạn.

0

Cuối cùng, bạn sẽ cần tìm thông tin đó từ nhà sản xuất. Nó có thể là một thông điệp sysex, mặc dù nó cũng có thể là một bộ điều khiển.

Đi bộ qua tất cả các bộ điều khiển khá đơn giản trong phần mềm để bạn có thể thử điều đó nếu bạn muốn. Nhưng cơ hội vấp phải tin nhắn sysex đúng do tai nạn hoặc tìm kiếm đầy đủ là gần với thiên văn.

Khám phá mặt sau của sổ tay của bạn. Nó có thể ở trong đó. Nếu không, google cho sysex cho thiết bị của bạn. Nếu không, bạn sẽ cần hỏi Yamaha để biết thông tin.