Cách nói MIDI

Dec 04 2022
Ban đầu tôi viết bài viết này vào tháng 5 năm 2019, nhưng đã chuyển nó đến đây sau khi trang web cũ của tôi không dùng nữa. Vui thích! Nội dung Phụ lục I: Thông báo chế độ kênh Phụ lục II: Biểu đồ cao độ MIDI Phụ lục III: Bài tập CC tiêu chuẩn Phụ lục IV: Thông báo thay đổi ngân hàng Phụ lục V: Tài nguyên bổ sung MIDI là cổ xưa, nhưng rất hữu ích.

Ban đầu tôi viết bài viết này vào tháng 5 năm 2019, nhưng đã chuyển nó đến đây sau khi trang web cũ của tôi không dùng nữa. Vui thích!

nội dung

  1. MIDI là gì
    1.1 MIDI không phải là gì
  2. Cách thức hoạt động
    2.1 Phân tách các tin nhắn
    2.2 Byte trạng thái và byte dữ liệu
  3. Loại thông báo
    3.1 Tắt/Bật nốt (0x8n, 0x9n)
    → 3.1.1 Giới thiệu về số cao độ MIDI
    3.2 Thay đổi điều khiển (0xBn)
    3.3 Bẻ cong cao độ (0xEn)
    3.4 Áp suất phím đa âm và Áp suất kênh (0xAn, 0xDn)
    3.5 Thay đổi chương trình (0xCn) )
    Hệ thống 3.6 (0xFn)
  4. Về thập lục phân
  5. Ví dụ áp dụng: Bản giao hưởng số 5 của Beethoven
  6. Bài học thưởng: Trạng thái đang chạy

Phụ lục I: Thông báo chế độ kênh
Phụ lục II: Biểu đồ cao độ MIDI
Phụ lục III: Chỉ định CC tiêu chuẩn
Phụ lục IV: Thông báo thay đổi ngân hàng
Phụ lục V: Tài nguyên bổ sung

MIDI là cổ xưa, nhưng rất hữu ích. Nó điều khiển bàn phím mà bạn thấy ở Trung tâm Guitar, điều khiển những thứ như ánh sáng và pháo hoa tại các buổi hòa nhạc¹ và đã được sử dụng để chấm điểm hầu như mọi bộ phim trong vài thập kỷ qua.

Nếu bạn là một nhạc sĩ hiện đại, kiến ​​thức về MIDI là điều cần thiết. Nếu bạn là kiểu người hay đọc các bài đăng trên blog như thế này, rất có thể bạn đã có một số kinh nghiệm làm việc với nó; tuy nhiên, tôi nghĩ sẽ hữu ích nếu biết không chỉ cách sử dụng mà còn cách đọc nó, ở mức độ từng chút một. Việc dịch và lắp ráp các thông điệp MIDI của riêng bạn thoạt nghe có vẻ khó khăn, nhưng nó thực sự rất dễ dàng và tôi nghĩ đó là một kỹ năng quan trọng mà bất kỳ nhà soạn nhạc hiện đại nào cũng cần phải có. Nó giống như việc biết cách hoạt động của micrô với tư cách là một kỹ sư thu âm.

Bài viết này sẽ đóng vai trò là phần giới thiệu và hướng dẫn toàn diện về thông điệp MIDI khi chúng áp dụng cho sản xuất âm nhạc. Hướng dẫn này không phải là hướng dẫn về sáng tác MIDI hoặc cách sử dụng trình chỉnh sửa MIDI trong DAW của bạn. Tuy nhiên, hướng dẫn này hoàn toàn dành cho các nhà soạn nhạc, vì bạn sẽ thấy rằng kiến ​​thức cơ bản về MIDI sẽ giúp ích rất nhiều khi tìm ra các công cụ MIDI nâng cao (và phức tạp) hơn của bạn. Bắt đầu nào.

Tiên tri 600 là một trong những synth đầu tiên hỗ trợ MIDI.

1. MIDI là gì

Tôi thích bắt đầu dạy mọi thứ từ đầu. Tuy nhiên, nếu bạn đã hiểu rõ MIDI là gì và nó làm gì, vui lòng bỏ qua phần Cách thức hoạt động , nơi chúng ta sẽ đi sâu vào chi tiết. Nếu không, chúng ta hãy xem xét.

MIDI là từ viết tắt của “Giao diện kỹ thuật số nhạc cụ”. Về cơ bản, đó là cách để các máy tính mô tả và truyền các màn trình diễn âm nhạc cho nhau. Trên thực tế, đó là cách . Nếu bạn sinh sau những năm 80, thì có lẽ mọi bàn phím hoặc máy trống bạn từng thấy đều sử dụng MIDI. Trong khi nhiều nỗ lực đã được thực hiện để đại tu hoặc thay thế MIDI trong những năm qua, các nhà sản xuất và nhà phát triển nhạc cụ thực sự dường như không quan tâm đến việc sử dụng bất kỳ thứ gì khác.

Với MIDI, bạn có thể:

  • Ghi lại các buổi biểu diễn âm nhạc và chỉnh sửa chúng với độ chính xác phẫu thuật
  • “Vá” một màn trình diễn cho bất kỳ nhạc cụ nào mà không cần phải thực hiện
  • Tạo hoặc sắp xếp lại các buổi biểu diễn theo thủ tục
  • Sắp xếp các buổi biểu diễn hòa tấu với một kết nối duy nhất
  • Thực hiện pha trộn thô sơ, hoàn thành với “tự động hóa”

Và đó là nếu điểm thậm chí được thực hiện. Trong khi các dàn nhạc ảo của thập niên 80 nghe có vẻ giả tạo đến buồn cười, thì các nhạc cụ hiện đại lại cho âm thanh hay đến mức người nghe bình thường thậm chí không thể phân biệt được. Và điều đó đã thay đổi mọi thứ. Trong các bộ phim và chương trình truyền hình kinh phí thấp hơn, nhạc nền thường sẽ sử dụng dàn nhạc MIDI trong phiên bản cuối cùng và khán giả không phải là người khôn ngoan hơn. Và thật ngạc nhiên, những công cụ như vậy có sẵn cho các nhạc sĩ ở hầu hết mọi mức thu nhập.

1.1 MIDI không phải là gì

Trước khi tiếp tục, tôi muốn xua tan một vài quan niệm sai lầm mà những người mới đôi khi mắc phải. Nó sẽ không mất nhiều thời gian.

Đầu tiên, MIDI không tạo nhạc: nó chỉ cho các thiết bị khác biết cách tạo nhạc. Nhưng nó cũng có thể làm những thứ khác. Ví dụ: trong phần mềm video chuyên nghiệp, thông báo MIDI được sử dụng để kiểm soát những thứ như thông số hoạt ảnh. Nhiều bề mặt điều khiển phòng thu sử dụng MIDI để điều khiển phần mềm hòa âm và cây đàn piano dành cho người chơi ưa thích này sử dụng nó để kích hoạt bộ truyền động rô-bốt. Điểm mà tôi đang cố gắng đưa ra là mặc dù dữ liệu MIDI chủ yếu được sử dụng để điều khiển các nhạc cụ ảo, nhưng nó thực sự có thể được sử dụng cho bất kỳ thứ gì và không “có âm thanh” giống như bất kỳ thứ gì riêng lẻ.

Các công cụ mà nhà soạn nhạc MIDI sử dụng trừu tượng hóa mã máy tính thành thứ gì đó dễ hình dung hơn. (Ảnh chụp màn hình Nuendo 8)

Thứ hai, dữ liệu MIDI không chỉ là “bản nhạc dành cho máy tính”, tuy nhiên sự tương tự có thể hữu ích. Mặc dù bản nhạc phương Tây là phương tiện đã mã hóa tất cả các bản nhạc biểu cảm nhất trong lịch sử, nhưng sự thật là nó để lại nhiều chỗ cho việc giải thích — và máy tính không xử lý tốt sự mơ hồ.

Thay vào đó, MIDI có lẽ được coi là ngôn ngữ lập trình tốt nhất và trình chỉnh sửa MIDI của bạn là môi trường lập trình trực quan. Trình chỉnh sửa MIDI thể hiện các lệnh MIDI dưới dạng hình dạng trên cuộn đàn piano, thay vì bản chất thực của chúng: hướng dẫn kỹ thuật số được tôn vinh. Và giống như tất cả các ngôn ngữ lập trình, MIDI có đủ loại lỗi và trục trặc. Ví dụ: nếu thông báo “bật ghi chú” không được ghép nối đúng cách với thông báo “tắt ghi chú”, thì ghi chú đó sẽ tiếp tục phát mãi vì máy tính không có ý thức chung để dừng.

Dù sao, tôi mệt mỏi khi viết phần giới thiệu này. Hãy bóc tách tất cả các lớp trừu tượng đó và tìm hiểu, ở cấp độ cơ bản, Cách nói MIDI.

2. Cách thức hoạt động

Giống như hầu hết mọi thứ trong máy tính, MIDI rút gọn thành một loạt các số 1 và 0. Mỗi chữ số được gọi là một bit (viết tắt của “chữ số nhị phân”) và tám trong số chúng tạo thành một byte . Khi bạn chơi đàn piano kỹ thuật số, các thông báo MIDI được tạo bên trong và gửi đến bộ tạo âm của nhạc cụ, nơi chúng được diễn giải và chuyển đổi thành âm thanh nghe được. Nếu bạn xem qua tín hiệu, các thông báo được tạo có thể giống như sau:

Đây là dạng nhị phân của một màn trình diễn MIDI đơn giản: bốn nốt đầu tiên của bản thứ năm của Beethoven. Nếu bạn ghi lại trình tự này và lặp lại nó với một nhạc cụ MIDI khác chính xác như khi nó được phân phối, thì kết quả sẽ là một bản sao giống hệt của màn trình diễn. Nếu bạn nhầm lẫn với thời gian, bạn sẽ thay đổi tốc độ của màn trình diễn. Mọi thứ khác về hiệu suất được mã hóa trong chính dữ liệu.

Thật thú vị khi nhận ra rằng các nhà soạn nhạc ngày nay về cơ bản dành thời gian của họ để tạo ra, chỉnh sửa và điều chỉnh những gì tổng hợp lại để phân phối các con số theo thời gian. Dù sao đi nữa, hãy chia nhỏ nhiệm vụ diễn giải mớ hỗn độn này, từng bước một.

2.1 Tách Tin nhắn

Điều đầu tiên cần biết về tin nhắn MIDI là chúng hầu như luôn kéo dài hơn một byte. Điều này hợp lý nếu bạn cho rằng chỉ có 256 số 8-bit duy nhất và có lẽ chúng ta cần mã hóa nhiều thông tin hơn thế để mô tả một thứ gì đó mang tính biểu cảm như một sự kiện âm nhạc.

Vì vậy, nếu bạn đang nhận được một tin nhắn trong nhiều gói nhỏ, có thể là tất cả cùng một lúc, làm thế nào để bạn biết nơi một tin nhắn kết thúc và tin nhắn tiếp theo bắt đầu ở đâu? Trên thực tế, nếu bạn biết cần bao nhiêu byte cho mỗi thông báo và bạn bắt đầu từ đầu, bạn sẽ có thể phân biệt chúng, miễn là không có byte nào bị thất lạc trong quá trình truyền. Tuy nhiên, MIDI cung cấp cho chúng tôi một cách chắc chắn để phân tích mọi thông báo: bằng cách dành bit đầu tiên của mỗi byte cho nguyên nhân.

QUY TẮC 1: Nếu bit đầu tiên của byte MIDI là 1 thì byte đó là byte trạng thái , đánh dấu phần đầu tiên của thông báo MIDI. Nếu bit đầu tiên là 0 thì đó là byte dữ liệu , là phần thân của thông báo.

Dễ. Mỗi khi một byte dẫn đầu bằng 1 , chúng tôi biết rằng chúng tôi đang đọc phần đầu của một tin nhắn mới và chúng tôi có thể diễn giải các byte sau cùng với byte đầu tiên. Hãy sử dụng quy tắc đó để chia hiệu suất MIDI ở trên thành các thông báo rời rạc.

Bây giờ chúng ta đang xem thứ gì đó có trật tự hơn một chút, bạn có thể nhận thấy một số mẫu xuất hiện. Đối với một điều, chỉ có hai phiên bản duy nhất của mỗi byte. Biết rằng những thông điệp này đại diện cho bốn nốt nhạc đầu tiên của Bản giao hưởng số 5 của Beethoven, bạn có đoán được ý nghĩa của chúng không?

2.2 Byte trạng thái và byte dữ liệu

Byte trạng thái của thông báo MIDI đóng vai trò là tiêu đề của nó và đó là phần quan trọng nhất. Nó cho chúng ta biết thông báo làm gì và cách diễn giải các byte dữ liệu sau. Nội dung mà byte dữ liệu mã hóa phụ thuộc vào thông báo, nhưng thông thường chúng sẽ cung cấp thông tin quan trọng để thực hiện thông báo. Nếu byte trạng thái nói, "nhảy", thì byte dữ liệu có thể cho bạn biết mức độ cao.

Bởi vì bit đầu tiên của mỗi byte được dành riêng để phân biệt hai loại byte, nên chỉ có bảy bit có thể sử dụng được. Đây là cách chúng được sử dụng:

QUY TẮC 2: Các bit 2, 3 4 của byte trạng thái xác định loại thông báo của nó . Bit 5–8 xác định kênh MIDI mà nó đang xử lý. Các byte dữ liệu phục vụ các chức năng khác nhau tùy thuộc vào loại thông báo.

Ba bit để xác định loại thông báo và bốn bit cho số kênh có nghĩa là có tám loại thông báo riêng biệt và 16 kênh có thể. Các byte dữ liệu có thể chứa bất kỳ giá trị nào từ 0 đến 127 . Mặc dù phần lớn các tin nhắn sử dụng hai byte dữ liệu, nhưng con số đó thực sự có thể khác nhau tùy thuộc vào nhu cầu của tin nhắn. Ví dụ: thông báo “thay đổi chương trình” chỉ cần một byte dữ liệu và thông báo “độc quyền hệ thống” có thể có số tùy ý.

Nếu bạn đã từng làm việc với MIDI, thì có thể bạn đã quen thuộc với các kênh MIDI. Nhưng trong trường hợp bạn không, mọi kết nối MIDI có thể ra lệnh cho tối đa 16 giọng nói. Byte trạng thái chỉ định trong bốn bit ít quan trọng nhất của nó, kênh nào trong số các kênh này mà thông báo đang xử lý.³

3. Các loại tin nhắn

Bảng sau đây xác định các loại thông báo MIDI khác nhau và cách chúng sử dụng byte dữ liệu. Chúng ta sẽ khám phá từng phần trong các tiểu mục sau.

3.1 Tắt ghi chú / Bật ghi chú (0x8n, 0x9n)

Đây là những thông báo MIDI cơ bản nhất và dễ hiểu nhất. Khi bạn muốn chơi một nốt nhạc, hãy gửi tin nhắn “bật nốt nhạc”, và khi bạn muốn kết thúc nó, hãy gửi tin nhắn “tắt nốt nhạc”. Các thông báo này sử dụng hai byte dữ liệu: byte đầu tiên xác định cao độ bạn muốn kiểm soát và byte thứ hai xác định vận tốc. ⁴ “Nốt nhạc bật” với vận tốc bằng 0 không tạo ra âm thanh và tương đương với thông báo “tắt nốt nhạc”.

Cân nhắc:

  • Sự tồn tại của các tin nhắn “bật ghi chú” với tốc độ bằng không có nghĩa là các tin nhắn “tắt ghi chú” là hoàn toàn không cần thiết. Tiêu chuẩn MIDI quy định cụ thể rằng các thông báo “tắt ghi chú” và “bật ghi chú” tốc độ bằng không là tương đương và phải được xử lý giống hệt nhau. Do đó, một thiết bị có thể hủy kích hoạt ghi chú khác với thiết bị khác.
  • Trong khi máy phát chỉ cần sử dụng một phương pháp hủy kích hoạt ghi chú, thì máy thu cần có khả năng xử lý cả hai.
  • Mặc dù giá trị vận tốc không có nhiều ý nghĩa trong thông báo "tắt ghi chú", nhưng nó vẫn là một phần của thông báo và nên được gửi đi. Giá trị không được sử dụng và bị loại bỏ.

Các số cao độ được ánh xạ tới các phím đàn piano về cơ bản là một đối một. Tuy nhiên, vì có 128 giá trị có thể và chỉ có 88 phím đàn piano, MIDI thực sự hỗ trợ 40 nửa cung không tìm thấy trên đàn piano. 19 trong số đó nằm trên nốt cao nhất, C7 và 21 nốt còn lại nằm dưới nốt thấp nhất, A-1. Phạm vi cao độ MIDI ít nhiều tập trung vào Trung C, là nốt số 60.

Xin lưu ý rằng các nhà sản xuất không đồng ý về số quãng tám. Ký hiệu cao độ khoa học, được sử dụng bởi các nhạc sĩ tương tự, xác định C thấp nhất trên đàn piano là C1 , tạo nên C trung C4 . Mặt khác, các lập trình viên thường bắt đầu đếm bằng 0, vì vậy đối với họ, C thấp nhất là C0 và C giữa là C3 . Đây là ký hiệu tôi thường sử dụng, vì đó là ký hiệu mà tất cả các công cụ MIDI của tôi sử dụng. Tuy nhiên, dù bạn sử dụng hệ thống nào, Trung C luôn là nốt số 60.

Trong Phụ lục II , tôi cung cấp một biểu đồ để chuyển đổi sang và từ các số cao độ MIDI.

3.2 Thay đổi kiểm soát (0xBn)

Thông báo “Thay đổi điều khiển” được sử dụng để sửa đổi bộ điều khiển liên tục của kênh . Bộ điều khiển liên tục tương tự như làn tự động hóa; nó cho phép kiểm soát liên tục các khía cạnh khác nhau trong hiệu suất của kênh.

Byte dữ liệu đầu tiên xác định số CC (0–119) và byte thứ hai gán cho nó một giá trị (0–127) .

Cân nhắc:

  • Không giống như tên ngụ ý, dữ liệu bộ điều khiển liên tục không liên tục. Thay vì nội suy trơn tru giữa các giá trị theo cách tự động hóa thực hiện, giá trị hiện tại của làn CC chỉ có thể thay đổi theo các bước riêng biệt. Để chuyển sang giá trị khác một cách suôn sẻ, bạn phải gửi một số lượng lớn thông báo "thay đổi kiểm soát", tăng hoặc giảm giá trị theo tốc độ được kiểm soát.
  • Thông số kỹ thuật MIDI xác định mục đích sử dụng của hầu hết 120 CC, mặc dù rất ít thiết bị quan sát được nhiều hơn một số ít. Tôi cung cấp một bảng của tất cả các CC trong Phụ lục III .
  • Tám số CC cuối cùng (120–127) hoàn toàn không đại diện cho CC. Thay vào đó, chúng đại diện cho một loại tin nhắn đặc biệt được gọi là tin nhắn chế độ kênh . Thông báo chế độ kênh là các lệnh chuyên biệt có ảnh hưởng đến toàn bộ thiết bị nhận nó. Trên thực tế, bạn sẽ không phải lo lắng quá nhiều về chúng, nhưng tôi cung cấp thêm thông tin về chúng trong Phụ lục I .
  • Số CC 032 được rất nhiều thiết bị sử dụng cho mục đích lựa chọn bản vá. Đọc thêm về nó trong Phụ lục IV .

Bẻ cong cao độ lên hoặc xuống. Tât nhiên.

Pitch bend hoạt động hơi giống với CC. Trên thực tế, hầu hết các trình chỉnh sửa MIDI coi Pitch Bend giống như nó chỉ là một phụ đề khác. Tuy nhiên, giá trị CC 7 bit, với 128 giá trị có thể, không cung cấp đủ độ phân giải để bán hiệu ứng uốn cong cao độ. Đôi tai của chúng ta rất tuyệt vời trong việc phân giải độ cao của cao độ, và vì vậy ngay cả khi chúng ta tiếp cận cao độ mới bằng 1/128 quãng đường tại một thời điểm, âm thanh đó cũng không được mượt mà và tự nhiên.

Để có được độ phân giải tốt hơn, các thông báo "bẻ cong cao độ" sử dụng hai byte dữ liệu để truyền một giá trị lớn duy nhất. Về cơ bản, nếu bạn gộp bảy bit của một tin nhắn này và bảy bit của một tin nhắn khác, bạn có thể tập hợp một giá trị 14 bit duy nhất, tăng độ phân giải của bạn lên hệ số 2⁷ hoặc 128.

Bây giờ, thay vì 128 giá trị có thể có cho độ cong cao độ của chúng tôi, chúng tôi có con số khổng lồ 16.384 — quá đủ các bước để tạo hiệu ứng uốn cong cao độ mượt mà. Nửa bên phải được cung cấp bởi byte dữ liệu đầu tiên (Byte quan trọng nhất hoặc LSB) và nửa bên trái được cung cấp bởi byte thứ hai (Byte quan trọng nhất hoặc MSB).

Cân nhắc:

  • Cường độ của độ cong cao độ (có bao nhiêu nửa cung lên hoặc xuống mà độ cong cao độ tối đa thể hiện) khác nhau giữa các nhạc cụ. Nó thường có thể cấu hình được.
  • Độ cong của cao độ được “chính giữa” tại 8192 (nơi không có thay đổi cao độ).
  • Độ cong cao độ ảnh hưởng đến tất cả các nốt đang phát trên một kênh, giống như cách của CC.
  • Lập trình với MSB và LSB được thực hiện tốt nhất với toán tử bitwise. Tôi sẽ không đi qua những thứ đó ở đây, nhưng tôi đã cung cấp một số tài nguyên trong Phụ lục V nếu bạn muốn tìm hiểu thêm.

Một số bộ điều khiển MIDI, chẳng hạn như Akai MPK225 , có tính năng gọi là cảm ứng sau . Bộ điều khiển cảm ứng sau không chỉ nhạy cảm với tốc độ của mỗi lần nhấn phím mà còn nhạy cảm liên tục với lực nhấn của các phím được giữ.

Aftertouch có hai loại: aftertouch kênhaftertouch đa âm . Hậu vị kênh, còn được gọi là đơn âm , đo áp suất trên toàn bộ bàn phím, trong khi hậu mãi đa âm đo áp suất một cách độc lập cho từng phím. Do chi phí phần cứng thấp hơn, cảm ứng sau kênh phổ biến hơn trong số hai loại này. Thông báo áp suất kênh chỉ sử dụng một byte dữ liệu, đại diện cho mức áp suất tổng thể. Thông báo áp suất của phím đa âm sử dụng hai: thông báo đầu tiên báo cáo cao độ (sử dụng số cao độ tiêu chuẩn) và thông báo thứ hai báo cáo áp suất của nó.

Cân nhắc:

  • Polyphonic aftertouch là điều khiển duy nhất có thể được đặt độc lập cho từng cao độ. Mọi điều khiển khác (ngoài bật hoặc tắt nốt) đều ảnh hưởng đến toàn bộ kênh.
  • Một phần mở rộng cho MIDI, được gọi là “Biểu thức đa âm MIDI” (MPE), được thiết kế để cho phép CC và độ cong cao độ cũng được áp dụng đa âm. MPE không phổ biến lắm, nhưng đã được phổ biến bởi các thiết bị như ROLI Seaboard . Tôi đã cung cấp các liên kết đến các tài nguyên bao gồm nó trong Phụ lục V.

Nếu bạn không sử dụng nhiều phần cứng MIDI bên ngoài, có thể bạn sẽ không sử dụng loại thông báo này quá thường xuyên. Thông báo “thay đổi chương trình” yêu cầu thiết bị tải chương trình mới (bản vá mới hoặc cài đặt trước). Nó chỉ sử dụng một byte dữ liệu, chỉ định chỉ mục của bản vá.

Loại thông báo này cực kỳ hữu ích khi soạn thảo với các thiết bị MIDI bên ngoài. Miễn là phần cứng của bạn hỗ trợ các cài đặt trước, dự án hoặc phiên của bạn có thể xử lý việc chọn và tải chúng: chỉ cần trình tự các thông báo “thay đổi chương trình” thích hợp khi bắt đầu.

Cân nhắc:

  • Các công cụ có hơn 128 cài đặt trước thường lưu trữ các bản vá của chúng trên nhiều ngân hàng . Để gọi lại các chương trình được lưu trữ trong các ngân hàng khác, 032 của CC được tái sử dụng thành thông báo "chọn ngân hàng". Trong Phụ lục IV , tôi sẽ giới thiệu cách thức hoạt động của nó.
  • Với việc lên lịch thông minh cho các thông báo thay đổi chương trình, một thiết bị có thể sử dụng hơn 16 bản vá lỗi khác nhau trong một phần, miễn là chúng không phát đồng thời. Mặc dù là có thật, nhưng có lẽ bạn nên chia mọi thứ thành các bản chụp riêng biệt nếu bạn cần loại bỏ nhiều giọng nói đó ra khỏi một thiết bị.
  • Cubase và Nuendo cung cấp hỗ trợ riêng cho thông báo thay đổi chương trình trong trình kiểm tra rãnh MIDI. Tôi không chắc có bao nhiêu DAW khác hỗ trợ điều này.

Thông báo hệ thống là một chủ đề nâng cao mà tôi sẽ không trình bày ở đây. Họ thực sự xứng đáng có một bài viết của riêng mình. Chúng được sử dụng cho mọi thứ; truyền dữ liệu khổng lồ (gọi là “ dumps ”), đồng bộ hóa đồng hồ, truyền mã thời gian, v.v.

Trong tương lai, tôi có thể viết một hướng dẫn về tin nhắn hệ thống, nhưng bây giờ, đừng lo lắng về chúng. Chỉ cần lưu ý rằng chúng tồn tại và thường không được sử dụng trong sáng tác MIDI.

4. Về hệ thập lục phân

Trước khi tiếp tục, chúng ta nên nói về tất cả những 0x mà tôi đã sử dụng trong phần trước. Tiền tố 0x cho bạn biết rằng một số ở dạng thập lục phân.⁵ Khi bạn tìm hiểu kỹ hướng dẫn sử dụng thiết bị và công cụ MIDI nâng cao, bạn sẽ nhận thấy rằng thông báo MIDI hầu như luôn được biểu thị ở dạng thập lục phân thay vì nhị phân hoặc cơ số mười. Điều này thoạt nghe có vẻ phản trực giác - ý tôi là, nếu bạn định chuyển đổi một số nhị phân, tại sao không chỉ chuyển đổi sang cơ số mười mà con người có thể đọc được?

Câu trả lời là nó thực tế hơn. Mặc dù tôi nghĩ rằng hệ nhị phân là cách tốt nhất để bắt đầu học MIDI, nhưng nó thực sự khá cồng kềnh để làm việc với nó. Việc trải ra mỗi byte trên tám chữ số làm cho việc đọc và viết trở thành một việc vặt và vì mọi thứ ở dạng nhị phân chỉ là các số 1 và 0, nên bạn rất dễ bị mất vị trí khi đọc các chuỗi dài.

Lật một chút trong số nhị phân chỉ có thể ảnh hưởng đến một chữ số trong biểu diễn thập lục phân của nó.

Vì vậy, các lập trình viên bitwise thường làm việc ở hệ thập lục phân. Nó giảm mỗi byte xuống chỉ còn hai chữ số và vì 16 là lũy thừa của 2 nên mỗi bit bạn thay đổi chỉ ảnh hưởng đến một chữ số ở dạng hex. Điều đó cho phép bạn coi mỗi chữ số thập lục phân là số bốn bit của chính nó. Nếu bạn muốn làm việc theo chiều bit trên biểu diễn thập phân, bạn phải chuyển đổi toàn bộ byte thành nhị phân và ngược lại.

Chỉ có một số điều cần lưu ý khi làm việc với MIDI ở dạng thập lục phân.

  • Do cách các bit được nhóm theo hệ thập lục phân, bạn có thể biết byte trạng thái đang xử lý kênh MIDI nào bằng cách không nhìn gì khác ngoài chữ số thập lục phân bên phải.
  • Nếu chữ số bên trái của byte bằng 0x7hoặc nhỏ hơn, bạn biết đó là byte dữ liệu và tương tự như vậy, bạn biết byte bắt đầu bằng 0x8hoặc lớn hơn là byte trạng thái.
  • Giá trị byte dữ liệu tối đa, 127, 0x7F ở dạng thập lục phân.

5. Ví dụ áp dụng: Bản giao hưởng số 5 của Beethoven

Khi chúng ta kết thúc với ví dụ này lần cuối, chúng ta vừa chia nhỏ nhị phân thô thành các thông báo riêng biệt. Điều đó trông như thế này:

Để làm cho điều này dễ sắp xếp hơn, hãy chuyển đổi nó thành hệ thập lục phân. Tôi sẽ để các byte trạng thái màu đỏ và các byte dữ liệu màu xanh lam.

Biết những gì chúng tôi biết bây giờ, chúng tôi nhận ra rằng các byte dẫn đầu trạng thái của 0x9 và 0x8 xác định các thông báo là “ghi chú trên” và “tắt ghi chú” tương ứng. Chữ số bên phải của byte cho chúng tôi biết rằng họ đang nhắm mục tiêu Kênh MIDI 1.⁶

Đây là hiệu suất trông như thế nào với các byte trạng thái đã dịch.

Trong các loại thông báo “bật ghi chú” và “tắt ghi chú”, byte dữ liệu đầu tiên mã hóa cao độ và byte thứ hai mã hóa vận tốc. Giá trị vận tốc chỉ là một con số. Để tìm ra cao độ, chúng ta cần tham khảo bảng nốt MIDI . Và hãy nhớ rằng, vận tốc "tắt ghi chú" không được sử dụng.

Hãy kết thúc bản dịch:

Đó là nó! Đó là những hướng dẫn MIDI được dịch mã hóa bốn nốt đầu tiên của bản thứ năm của Beethoven. Dum dum dum duuum!

Biết những gì bạn biết bây giờ, bạn có thể tạo và giải mã các thông báo MIDI phổ biến bằng tay. Các công cụ nâng cao hơn, chẳng hạn như bộ biến áp MIDI và trình chỉnh sửa logic, hiện có sẵn cho bạn. Tuy nhiên, luôn có nhiều điều để học hỏi. Nếu bạn là người ham học hỏi, tôi đã cung cấp một số tài nguyên mà bạn có thể sử dụng để nghiên cứu sâu hơn về MIDI trong Phụ lục V .

6. Bài học thưởng: Trạng thái đang chạy

Có một phím tắt tiện dụng mà MIDI cung cấp mà tôi chưa đề cập đến cho đến bây giờ vì mục đích đơn giản hóa mọi thứ. Đây là cách nó hoạt động: một khi bạn gửi một byte trạng thái, bạn không phải gửi một byte khác cho đến khi nó khác với byte trước. Byte trạng thái cuối cùng nhận được sắp xếp vẫn ở trạng thái “bật” và được sử dụng để diễn giải tất cả các byte dữ liệu tiếp theo. Điều này được gọi là Trạng thái đang chạy .

Xét chuỗi byte sau:

Những gì bạn đang xem là màn trình diễn chính xác tương tự như Bản thứ năm của Beethoven mà chúng tôi đã dịch trong ví dụ được áp dụng, nhưng thiếu hầu hết tất cả các byte trạng thái. Tuy nhiên, do Trạng thái Đang chạy, hiệu suất này chỉ có giá trị như lần đầu tiên. Sau khi chúng tôi gửi byte trạng thái 0x90, nó sẽ trở thành Trạng thái đang chạy và mọi cặp byte theo sau có thể được xử lý như thể chúng được đặt trước bởi “ 0x90” của chính chúng.

Điều này cho phép chúng tôi cắt bỏ rất nhiều byte trạng thái lặp lại, điều này có thể rút ngắn đáng kể các luồng MIDI của chúng tôi. Quay trở lại khi máy tính chậm hơn và tốc độ truyền bị hạn chế hơn, điều này cực kỳ hữu ích. Tuy nhiên, ngày nay, máy tính quá nhanh nên việc sử dụng Running Status không thực sự cải thiện hiệu suất đáng kể. Tuy nhiên, tôi vẫn đề cập đến nó, bởi vì nếu bạn thấy mình đang thực hiện bất kỳ chương trình MIDI nào, bạn nên chuẩn bị tinh thần để thấy các byte trạng thái bị bỏ qua ở đây và ở đó.

Lưu ý rằng vì vận tốc bằng không “nốt bật” được tính là “nốt tắt”, nên chúng ta có thể bắt đầu và kết thúc nốt mà không làm gián đoạn trạng thái chạy; ít nhất, cho đến khi chúng tôi cần gửi một thay đổi điều khiển hoặc một tin nhắn đến một kênh khác.

  1. Điều này được thực hiện với một phần mở rộng cho MIDI được gọi là MIDI Show Control.
  2. "Những gì bạn thấy là những gì bạn nhận được".
  3. Số kênh MIDI bắt đầu bằng 1, trong khi đại diện của chúng ở đây bắt đầu bằng 0. Giá trị 0 nghĩa là Kênh 1 và giá trị 15 nghĩa là Kênh 16.
  4. Vận tốc có thể được coi là mức độ "mạnh" của một nốt nhạc.
  5. Một ký hiệu phổ biến khác là theo sau số có chữ in hoa “H”, như trong “78H”.
  6. Hãy nhớ rằng, mặc dù số trong tin nhắn là số 0, nhưng nó tương ứng với Kênh 1 vì chúng tôi bắt đầu đếm số ở 0 và các kênh ở 1.

Phụ lục I: Thông báo Chế độ Kênh

Thông báo “Chế độ kênh” là các lệnh đặc biệt làm thay đổi hành vi của toàn bộ thiết bị bằng cách thay đổi chế độ MIDI của thiết bị đó . Vâng, loại.

Trong thực tế, thông báo “chế độ kênh” chỉ được sử dụng để bật hoặc tắt một số tính năng nhất định và gửi một số lệnh nhất định. Những gì MIDI liệt kê là “chế độ” về cơ bản chỉ là các cấu hình khác nhau của các nút chuyển đổi Omni và Poly. Thành thật mà nói, tôi không nghĩ rằng “các chế độ” là một cách siêu thích hợp để suy nghĩ về các lệnh này; nhưng ít nhất tôi sẽ giải thích những gì các lệnh làm.

Tin nhắn chế độ kênh không có loại tin nhắn riêng. Thay vào đó, tám số bộ điều khiển liên tục cuối cùng (CC's 120–127) được sử dụng lại. Các thông báo chế độ kênh như sau:

Để một thiết bị phản hồi các tin nhắn ở chế độ kênh, thiết bị cần nhận chúng trên kênh cơ bản của nó . Kênh cơ bản của thiết bị là kênh MIDI duy nhất trên đó các thông báo về chế độ kênh được coi là hợp lệ. Đối với nhiều thiết bị, kênh này có thể định cấu hình được. Bằng cách đó, các thông báo chế độ kênh có thể nhắm mục tiêu các thiết bị cụ thể trong chuỗi kết nối.

Phần tiếp theo là tóm tắt nhanh về từng thông báo chế độ kênh. Phụ lục V chứa các tài nguyên để nghiên cứu thêm.

  • Tắt toàn bộ âm thanh (“CC” 120): Tắt tất cả âm thanh mà nhạc cụ hiện đang tạo ra, bao gồm cả hiệu ứng phân rã nốt và hồi âm.
  • Reset All Controllers (“CC” 121): Đặt tất cả các CC, bộ điều khiển công tắc, hiệu ứng pitch bend và aftertouch về mặc định. Giá trị mà mỗi bộ điều khiển trả về phụ thuộc vào bộ điều khiển và được xác định trong thông số MIDI.
  • Điều khiển cục bộ (“CC” 122): Ngắt kết nối bàn phím trên bộ tổng hợp khỏi bộ tạo âm của nó. Điều này cho phép bạn sử dụng bộ tổng hợp làm bộ điều khiển MIDI đồng thời sắp xếp trình tự cho nó. Đặt thành 0x00tắt điều khiển cục bộ và 0x7Fbật lại.
  • Tắt tất cả ghi chú (“CC” 123): “Nút báo động”. Tắt tất cả các ghi chú tương đương với việc gửi tin nhắn "tắt ghi chú" cho mọi quảng cáo chiêu hàng trên mọi kênh. Thật tiện lợi để giải quyết các ghi chú bị kẹt. Ghi chú được kích hoạt cục bộ không bị ảnh hưởng.
  • Tắt/Bật Chế độ Omni (“CC's” 124, 125): Khi bật chế độ Omni, mọi kênh sẽ phản hồi mọi tin nhắn gửi đến, bất kể kênh nào được chỉ định trong byte trạng thái.
  • Mono Mode / Poly Mode (“CC's” 126, 127): Buộc giọng nói hoặc nhiều giọng nói trở thành hành vi đơn âm hoặc hành vi đa âm. Nếu giá trị “bật chế độ đơn âm” được đặt thành 0x00, thì kênh cơ bản và mọi kênh phía trên kênh đó sẽ được đặt thành chế độ đơn âm. Đối với bất kỳ giá trị nào khác n , các kênh từ n đến n+m-1 sẽ được đặt ở chế độ đơn âm (trong đó m là giá trị của byte dữ liệu thứ hai). Thông báo “bật chế độ đa hình” sẽ đặt tất cả các kênh trở lại chế độ đa hình.

Phụ lục III: Bài tập CC tiêu chuẩn

Thông số kỹ thuật MIDI xác định cách sử dụng tiêu chuẩn của CC, mà tôi đã sao chép ở đây. Tất cả các số CC được xác định, ngoại trừ: 3, 9, 14, 15, 20–31, 85–90102–119 . Các CC được hỗ trợ rộng rãi nhất là Điều chế ( 0x01), Bộ điều khiển chân ( 0x04), Âm lượng kênh ( 0x07), Xoay ( 0x0A), Biểu thức ( 0x0B) và Duy trì ( 0x40).

Kiểm tra các tài nguyên trong Phụ lục V nếu bạn muốn tìm hiểu thêm về các CC này.

Phụ lục IV: Thông báo Thay đổi Ngân hàng

Các bộ tổng hợp hiện đại có thể lưu trữ và gọi lại nhiều, nhiều cài đặt trước hơn mức có thể được giải quyết bằng một thông báo thay đổi chương trình. Để giải quyết vấn đề này, các nhà sản xuất thường sắp xếp các chương trình của họ vào các ngân hàng . Mỗi ngân hàng có tối đa 128 giá trị đặt trước và một địa chỉ 7 bit hoặc 14 bit duy nhất.

Để gọi lại một bản vá lỗi từ một ngân hàng khác, trước tiên bạn phải gửi một tin nhắn “chọn ngân hàng” kèm theo địa chỉ của ngân hàng đó. Sau đó, gửi thông báo thay đổi chương trình như bình thường và bản vá được tải sẽ đến từ ngân hàng mới.

Như bạn có thể nhận thấy, đây thực sự là những thông báo “thay đổi điều khiển” cho CC 032 . Đối với địa chỉ 7 bit, chỉ CC 0 được sử dụng. Đối với địa chỉ 14 bit, CC 0 đại diện cho MSB và 32 đại diện cho LSB. Nếu bạn cần thông tin sơ lược về MSB và LSB, thì có một thông tin trong phần Pitch Bend của bài viết chính.

Việc thiết bị sử dụng địa chỉ 7 bit hay 14 bit là tùy ý và bạn sẽ cần kiểm tra hướng dẫn sử dụng để biết nên sử dụng địa chỉ nào khi giao tiếp với thiết bị của mình.

Phụ lục V: Tài nguyên bổ sung

  • Hiệp hội MIDI : Hiệp hội MIDI là kho lưu trữ thông tin chính về hoặc liên quan đến công nghệ MIDI. Đăng ký miễn phí và sau khi đăng ký, bạn có thể tải xuống Thông số kỹ thuật chi tiết MIDI 1.0 hoàn chỉnh tại đây .
  • Bitwise Operation (Wikipedia) : Tôi biết, tôi biết, Wikipedia không phải là nguồn tài nguyên chính tốt, nhưng tôi thích bài viết này vì nó trung lập về ngôn ngữ và không có quảng cáo. Nghiên cứu về dịch chuyển bit số học và OR theo bit, rất hữu ích khi làm việc với MSB và LSB.
  • MPE là gì? : Một bài viết trong cơ sở dữ liệu hỗ trợ của ROLI đề cập đến Biểu thức đa âm MIDI, được sử dụng trong các bộ điều khiển đa chiều như sản phẩm Seaboard. MPE đã được Hiệp hội các nhà sản xuất MIDI chính thức thông qua vào tháng 1 năm 2018 và liên kết tải xuống thông số kỹ thuật có sẵn tại đây .
  • Chế độ MIDI (Tương tác âm nhạc điện tử v2, Đại học Oregon): Trang này cung cấp một cái nhìn tổng quan tốt, ngắn gọn về bốn chế độ MIDI tiêu chuẩn. Đó là một phần của khóa học trực tuyến dài hơn về nhạc điện tử.
  • Danh sách MIDI CC (Nick Fever) : Danh sách các CC tiêu chuẩn với các giải thích chi tiết hơn. Nếu bạn vẫn cần thêm thông tin sau khi xem qua danh sách của Nick, hãy tham khảo Thông số kỹ thuật chi tiết MIDI 1.0 hoàn chỉnh mà bạn có thể tải xuống tại đây .
  • Thông điệp chung của hệ thống MIDI , Thông báo thời gian thực của hệ thống MIDI và Thông báo dành riêng cho hệ thống MIDI (RecordingBlogs Wiki): Phần giới thiệu tuyệt vời cho từng loại thông báo hệ thống.
  • Số tham số đã đăng ký MIDI (RecordingBlogs Wiki): Tổng quan về các số tham số đã đăng ký, có thể được coi là phần mở rộng của CC. Sau khi bạn hiểu RPN, bạn cũng có thể truy cập NRPN (Số tham số không đăng ký).