Vấn đề nghệ thuật được chia làm ba phần: cái mà tác giả muốn thể hiện, cái mà tác giả biết thể hiện, và cái mà anh ta đã thể hiện nhưng lại ngoài ý muốn.
Sergei Dovlatov 
(1941 - 1990)

MIDI — THEO DÒNG LỊCH SỬ

Thuật ngữ MIDI đã xuất hiện từ rất lâu. Đó là một ngôn ngữ được sử dụng rộng rãi trong âm nhạc điện tử. Hiểu biết ngôn ngữ này ở một mức độ nhất định — điều kiện cần cho các nhạc sỹ hoà âm phối khí trong môi trường điện toán.

Gần như ngay lập tức sau khi ra đời, giao thức MIDI (Musical Instrument Digital Interface — giao diện số hoá của các nhạc cụ âm nhạc) đã trở thành một chuẩn mực cho toàn bộ ngành công nghiệp âm nhạc điện tử với mức độ tương thích chưa từng có. Cho đến ngày nay, sự tương thích đó thậm chí còn chưa có ở các bóng bán dẫn, hệ thống mạng và viễn thông. Tình huống hiện thời thật thú vị, nếu xuất hiện một thiết bị âm nhạc điện tử không tương thích với MIDI, nó hiển nhiên sẽ bị lạc lõng và bị tách ra khỏi phần còn lại của thế giới.

Ảnh: Xkey Air kết nối với iPad (harmonycentral.com)

Nguyên nhân tạo nên thành công tuyệt vời của MIDI trong suốt ngót nghét bốn mươi năm qua — «sự đơn giản». Giao thức này đã được chuẩn bị kỹ lưỡng trước khi đưa ra công chúng. Nó không có các «lỗ hổng», còn các đòi hỏi trong triển khai và tương tác thiết bị được xác định một cách rõ ràng, có nghĩa không thể xảy ra tính hai mặt. Hơn nữa, MIDI không phải là tài sản riêng của công ty nào, mà là sản phẩm mang tính hiệp hội của các nhà sản xuất.

Đề xuất cơ bản để MIDI xuất hiện — đó là nhu cầu thiết thực của dân chơi nhạc vào thời chưa xa từ thế kỷ trước — khả năng dùng một bàn phím để điều khiển vài nhạc cụ điện tử cùng một lúc. Khi đó, các nhà sáng chế nhận được yêu cầu, làm thế nào để sự kết nối giữa các nhạc cụ phải là đơn giản, đồng thời có giao diện đáng tin cậy cũng như giá thành không quá đắt. Giờ đây, gần bốn mươi năm đã trôi qua, có thể ngạo nghễ tuyên bố: những điều kiện này đã được các nhà sáng chế thực hiện một cách lý tưởng so với thời gian đó.

Giao thức MIDI được sáng chế như một phương tiện đơn giản, không đắt tiền và đáng tin cậy để điều khiển một nhạc cụ điện tử từ một thiết bị khác.

Điều đó cần luôn luôn nhớ, mỗi lần có ai đó lơ mơ đặt câu hỏi "tại sao trong MIDI, cái này hay cái kia lại được cấu hình như thế?". Hơn nữa, cần nhớ về các tính năng cơ bản của MIDI trước khi muốn chỉ trích giao thức này. Người ta đã chỉ trích MIDI ngay từ lúc nó ra đời và đang chỉ trích nó đến tận ngày hôm nay, đặc biệt là về tốc độ truyền dữ liệu chậm chạp và nhịp điệu không chính xác. Hơn nữa, bây giờ đang là thời đaih của các công nghệ tiên tiến. Ưu điểm và nhược điểm của giao thức, phương pháp thay thế và loại bỏ MIDI — chủ đề quá rộng để tranh cãi, nên cần dành riêng một bài viết cho vấn đề này.

Không tính tới tất cả các nhược điểm, đến tận ngày nay, MIDI vẫn đáp ứng được các nhu cầu khởi định. Và không chỉ có thế — lĩnh vực áp dụng của giao thức đã từ lâu vượt qua khuôn khổ điều khiển các nhạc cụ điện tử. Bằng MIDI, người ta còn điều khiển các bộ vi xử lý hiệu ứng, dàn âm thanh, thậm chí cả các hệ thống ánh sáng, các thiết bị cháy nổ và các máy phun khói. Điều đó nói về khả năng tuyệt vời của máy tính liên quan tới lĩnh vực nghe nhìn! Bây giờ đã có thể kể ra sự có mặt của MIDI trong việc tải chuông điện thoại. Hoàn toàn không ngạc nhiên, sau này có thể tải tập tin MIDI để điều khiển bếp núc…

Thế giới thời chưa có MIDI

Từ giữa những năm 60 — đầu những năm 70 của thế kỷ trước là thời khi phát sinh và thăng hoa bột phát của các nhạc cụ điện tử. Trên sân khấu và trong các phòng thu, ngoài sự thịnh hành của các cây guitar điện và organ điện, đã có một loại nhạc cụ mới mẻ bắt buộc «phải có» — các synthesizer (các thiết bị điện tử tạo ra âm thanh dựa vào một hoặc nhiều bộ phát chỉnh sóng âm). Những synthesizer đầu tiên đã từng là rất phức tạp trong điều chỉnh, vận hành, vận chuyển và bảo trì, nhưng chúng đã cho dân chơi nhạc một thứ không thể nào có được bằng cách khác — những âm thanh mới mẻ.

Tất cả các synthesizer thời đó đều là đơn âm, có nghĩa đã chỉ có thể chơi được một âm duy nhất tại mỗi thời điểm. Để chơi được vài âm hoặc vài bè cùng một lúc, dân chơi đã buộc phải láu cá. Về bản chất, đã chỉ có hai cách để làm điều này: hoặc sử dụng nhiều synthesizer (và trong các trường hợp các synthesizer dạng module, cần mua riêng cho mỗi một bè một máy phát sóng), hoặc ghi âm lại các bè vào một máy ghi âm nhiều rãnh từ.

Các synthesizer lạc hậu này hoàn toàn là dạng analog, tất cả các mảng cụm bên trong (bộ phát sóng âm, bộ biến tiếng, bộ lọc) đều được điều khiển bằng hiệu điện thế. Ví dụ, bộ phát sóng của thiết bị khi được cấp điện thế 1V có thể đưa ra âm thanh ở tần số 100Hz, 2V — 200Hz, 3V — 400Hz và cứ thế. Rõ ràng là, để điều khiển các thiết bị đó từ bên ngoài, chỉ có thể sử dụng giao diện analog. Nó đã có tên gọi là CV/Gate. Lối vào của CV tiếp nhận điện thế điều khiển (Control Voltage), tỷ lệ thuận với cao độ nốt nhạc, lối vào của Gate — xung âm (trigger), dựa vào đó mà nốt nhạc được bật hoặc tắt.

Đã tồn tại nhiều dạng giao diện CV/Gate. Phổ biến nhất là phương án được công ty Roland đề xuất. Ở đó, điện thế CV tăng lên 1V khi thanh âm tăng thêm một quãng tám. Tín hiệu Gate, còn gọi là Voltage Trigger (V-Trigger), được hình dung là xung điện dương với độ rộng đúng bằng thời gian giữ âm ở trạng thái nhấn phím. Song hành cùng Roland, phương án này còn được Sequential Circuits và ARP sử dụng. Trong các synthesizer Moog, người ta đã dùng loại tín hiệu Gate khác, có tên gọi là S-Trigger. Tồn tại các nhạc cụ với những thông số CV/Gate khác. Thường thì điện thế điều khiển đã thay đổi theo quy luật 1,2V cho mỗi quãng tám.

Một loại tín hiệu cũng từng được áp dụng với tên gọi Trigger, là các xung điện ngắn. Nhiều synthesizer có chức năng arpeggio đã có hẳn một lối vào dành riêng cho loại tín hiệu đó (clock input). Khi xung điện xuất hiện ở lối vào, nốt nhạc tiếp theo của arpeggio lập tức được kích hoạt. Tín hiệu Trigger được phát ứng ở nhiều drum-machine và các analog sequancer (thường thấy nhất, các nốt đơn và nốt kép, nhưng đôi khi khoảng cách giữa các xung điện còn có thể đưa vào tuỳ ý). Tín hiệu Trigger có thể được truyền vào Gate input của synthesizer.

Nhược điểm lớn nhất của giao diện CV/Gate nằm ở chỗ, vào mỗi thời điểm nó chỉ có thể giúp điều khiển được một nốt nhạc. Đối với các nhạc cụ đa lớp âm, có bao nhiêu bè thì cần đúng từng đó giao diện CV/Gate. Ngoài ra, thông tin về hành động trong các hệ thống CV/Gate rất buồn tẻ, thực tế — đó chỉ là cao độ của nốt được nhấn và batn thân dữ kiện giữ/thả.

Giữa những năm 70, công ty Oberheim đã phát hành synthesizer đa âm đầu tiên với giá phải chăng, gọi tên là Two Voice. Thiết bị rất đơn giản trong sử dụng, có bàn phím tích hợp, cho phép chơi song âm và có bộ chức năng điều khiển không phức tạp, nhờ đó có thể nhanh chónh chọn ra những âm thanh đa dạng và đẹp. Khác với những tiền nhiệm của mình, thiết bị có kích thước không lớn và phương pháp lập trình đơn giản. Ngay sau đó bắt đầu xuất hiện các thiết bị đa âm của các hãng sản xuất khác: Sequential Circuits, Yamaha, Moog, Roland, ARP. Chúng đã nhanh chóng trở thành rất phổ biến trong giới chơi nhạc điện tử đang rộ lên.

Sau việc đa âm hoá, bước quan trọng nhất tiếp theo là vấn đề bộ nhớ lập trình. Trong synthesizer xuất hiện một dạng computer không lớn, nhờ đó có thể ghi lại vào bộ nhớ vị trí của tất cả các núm nút điều khiển của mặt tiền, cho phép nhạc «sống». Ngoài ra, máy tính tích hợp còn tuần tra theo việc nhấn phím và đưa ra những cao độ âm thanh tương ứng từ bộ phát sóng. Việc này cũng chính là điều kiện tiên phong cho điều khiển số hoá sau này.

Trước thời xuất hiện bộ nhớ, thiết bị cần được lập trình trước, còn khi biểu diễn nó chỉ có thể chơi đúng một âm thanh cùng một lúc. Bởi vậy trong các buổi biểu diễn của những nghệ sỹ như Keith Emerson và Rick Wakeman, khán giả có thể thấy những «giàn» bàn phím khủng của họ. Để chuẩn bị cho tất cả những «đặc sản» này được đưa vào biểu diễn và kết nối vào ban nhạc sống, họ đã phải mất hàng tiếng đồng hồ để thao tác. Khi bộ nhớ có thể tiếp cận, một thiết bị đã có thể được nạp trước vài âm thanh, còn âm thanh mong muốn được tạo ra bằng cách nhấn một phím trực tiếp trong thời gian biểu diễn.


Nhưng, tương ứng với mỗi synthesizer khác nhau — những tính cách khác nhau. Một số cho ra tiếng kèn đẹp, số khác — âm thanh dàn dây, số khác nữa — các hiệu ứng âm thanh. Dân chơi đã mong muốn chọn ra từ từng thiết bị những âm thanh đẹp nhất và nhận được một bộ âm thống nhất của sự ưng ý.

Vào thời đó thịnh hành kỹ thuật chơi đồng thời hai bàn phím, cho phép tạo âm thanh đa lớp. Chẳng hạn, một bè có thể chơi bằng cả hai tay, tay phải chơi dàn dây, tay trái chơi dàn đồng. Điều này là phức tạp vào thời điểm đó, tậm chí mỗi synthesizer có riêng kỹ thuật thể hiện.

Tất cả các thuật pháp này đã từng nhằm đạt được một mục đích duy nhất — tạo ra cực lượng các âm thanh từ số nhiều thiết bị. Việc tạo chồng âm từ các synthesizer khác nhau đã trở thành một trong những kỹ năng biểu diễn, thậm chí còn như một tiêu chí đẳng cấp của nhiều dân chơi nhạc vào thời bấy giờ.

Vào cuối những năm 70 trong các synthesizer bắt đầu xuất hiện việc áp dụng điện tử số hoá, là hệ quả tất yếu của sự hạ giá các bộ siêu điều khiển và sản xuất vi mạch đại trà. Nhiều mảng cụm thiết bị của các synthesizer đã được hưởng lợi thế giá thành khi chúng trở thành nhỏ gọn hơn và đáng tin cậy hơn vào thời số hoá các con chip điện tử. Tất nhiên, vấn đề điều khiển thiết bị cũng trở thành vi diệu hơn hẳn: các giao diện CV/Gate analog đã bị lạc hậu và không còn tương thích với công nghệ số hoá âm thanh. Kết quả là, vào đầu những năm 80 synthesizer đã được tích hợp giao diện digital.

Đã xuất hiện các thiết bị, như Oberheim OB-X (1981) và Rhodes Chroma (1982), có khả năng kết nối với thiết bị khác cùng đời và cùng hãng. Chẳng hạn, Oberheim OB-X có thể kết nối với Oberheim OB-X (nhiều nhất được ba thiết bị đồng thời). Khi nhạc viên chơi trên một thiết bị, cả hai thiết bị còn lại cũng «ăn theo». Đó đã từng là một tiến bộ vượt bậc — bởi vì việc chơi nhạc nhiều tầng lớp đã trở thành khả thi trên chỉ một bàn phím. Tuy nhiên, vấn đề chính, vẫn chưa được giải quyết: làm sao để kết nối các thiết bị khác đời và hơn nữa, khác hãng.

Herbie Hancock, chẳng hạn, đã định tự giải quyết vấn đề này. Ông đã cải tiến các synthesizer của mình bằng cách «thửa» riêng cho chúng các giao diện digital bằng đơn đặt hàng cá nhân. Và chúng đã hoạt động thành công!

Vào thời đó, càng ngày càng có nhiều dân nhạc đề nghị các nhà sản xuất synthesizer làm riêng cho họ giao diện digital cá nhân. Dầu đổ vào lửa, thế là đã xuất hiện những digital sequencer đầu tiên, như Roland MC 4 Micro Composer và Oberheim DSX. Giá như các synthesizer khác hãng đã có thể tương thích với nhau, dân nhạc đã có thể "nạp" bè vào các sequencer (thiết bị soạn nhạc có bộ nhớ tĩnh và động) này, và sau đó «chơi chết» bằng cách sử dụng hàng loạt các bàn phím. Nhưng, tiếc thay...

Không lâu trước khi MIDI ra đời, hãng Roland đã sáng chế ra giao diện số DCB, được áp dụng chỉ trong hai synthesizer (Juno 60 và Jupiter 8) và trong sequencer MSQ 700. Giao diện DCB hỗ trợ những khả năng cơ sở để lôi âm thanh ra qua phương thức câu lệnh giữ/thả.

Cần đánh dấu rẳng, cùng với sự cố gắng kết nối các synthesizer lại với nhau, ngay tử những năm 60, người ta đã có thử nghiệm kết nối synthesizer với máy tính. Nhưng họ không đạt được kết quả thực tế nào đáng kể do giá máy tính thời đó còn cao ngất ngưởng. Vào cuối những năm 70 — đầu những năm 80 đã từng có một vài giao diện không tương thích với nhau, được sản xuất bột phát hoặc bởi các hãng nhỏ. Chỉ có các chuyên gia sáng chế của hệ thống máy tính mới có thể viết phần mềm dành cho nó. Thường thì các hệ thống như thế được tạo ra bằng cách gắn thêm vào bo mạch máy tính các mảng phụ phát sóng âm trực tiếp (hãy so sánh chúng với các nhạc cụ ảo hiện đại!), hoặc tạo ra nhiều kênh điều khiển điện thế cho các synthesizer dạng module.

Sự ra đời của MIDI

Và như vậy, đến đầu những năm 80 của thế kỷ trước, nhu cầu tạo ra một giao diện tổng hợp đã được các hãng sản xuất hàng đầu ghi nhận. Nhiệm vụ đã được đặt ra như sau: sáng chế một chuẩn mực truyền tải các hành động của người biểu diễn trong hình thức số hoá giữa tất cả các dạng nhạc cụ điện tử. Những thảo luận đầu tiên về chủ đề này, với sự tham gia của Ikutaro Kakehashi (chủ tịch Roland), Tom Oberheim (Oberheim) và Dave Smith (chủ tịch Sequential Circuits), đã diễn ra vào tháng sáu năm 1981 tại triển lãm NAMM.

Dave Smith bắt đầu công việc bằng cách nghiên cứu tài liệu về mạng máy tính. Trong kiến trúc quy chuẩn mạng có hai cụm thông số kỹ thuật — kết nối chi tiết thiết bị và định dạng tín hiệu đường truyền. Ở đó, hoạt động bên trong của máy tính vẫn được tách ra, nó được các thành viên khác của hệ thống mạng coi là một thứ giống như «hộp đen» có khả năng phản ứng với các tín hiệu tương ứng với quy chuẩn. Cách đó được lựa chọn để kết nối các nhạc cụ. Trong kết quả, người ta đã tránh được sự phụ thuộc của tin nhắn giữa các nhạc cụ vào thiết bị. Đó là quy tắc cơ bản của MIDI, và nó là không đổi cho đến tận bây giờ. Chính nhờ có nó mà quy chuẩn MIDI vẫn tiếp tục vòng đời dài đến khó tin.

Đến mùa thu năm 1981, Smith đã chuẩn bị xong phiên bản đầu tiên cho quy chuẩn của mình với tên gọi USI (Universal Synthesizer Interface). Vào tháng mười cùng năm, tại triển lãm ở Nhật Bản, đã có cuộc gặp gỡ giữa các đại diện của các hãng Sequential, Roland, Korg, Yamaha và Kawai, ở đó USI đã được giới thiệu đến người Nhật, và vào tháng mười một cũng cùng năm đó, tại họp báo AES ở New-York, Dave Smith đã chính thức công bố bộ mô tả kỹ thuật. Vào lúc đó, các hãng Nhật Bản đang làm việc với chuẩn mực riêng, nhưng phức tạp hơn USI.

Tháng một năm 1982, tại triển lãm NAMM, hãng Sequential Circuits đã tổ chức một cuộc gặp gỡ với sự tham gia của phần lớn các công ty sản xuất synthesizer. Khi trao đổi họ đã nhận ra, các hãng Mỹ còn lại, do những nguyên nhân khác nhau, không muốn tham gia vào việc tạo ra một giao diện chung. Sau cuộc gặp, Sequential Circuits và các hãng Nhật Bản (Roland, Korg, Yamaha, Kawai) vẫn quyết định tiếp tục phát triển công việc hợp tác, không phụ thuộc vào các hãng còn lại. Năm tháng sau, tại triển lãm NAMM đợt tháng sáu, bào thai của phát minh liên quốc gia này đã được giới thiệu. Đã đến lúc phải đặt tên gọi chính thức cho nó. ÚI đã bị loại bỏ, bởi vì từ "universal" (tổng hợp, dùng chung) có thể gặp phải vấn đề pháp lý. Người Nhật đã đề xuất UMII (Universal Music Instrument Interface). Nhưng bởi vì tên gọi này cũng chứa từ "universal", Dave Smith đã đề nghị sửa nó thành MIDI, và tất cả đã đồng ý.

Vào tháng mười năm 1982, bản thuyết minh dự thảo về MIDI đã được hoàn tất. Trong tháng mười hai đã có sự giáng sinh của Sequential Circuits Prophet 600 — synthesizer đầu tiên được tích hợp giao diện MIDI. Và vào tháng một năm 1983, tại triển lãm NAMM, Prophet 600 và Roland Jupiter 6 cũng nhập cuộc với MIDI. Vào tháng ba đã xuất hiện Roland JX 3 P, và vào tháng sáu — Yamaha DX 7.

Ảnh: Yamaha DX7 ad,
nguồn: blog.dubspot.com

Trước khi có MIDI, các synthesizer có hai cấu phần trong một «chiếc hộp». Cấu phần thứ nhất — hệ thống tạo âm, sản xuất ra âm thanh thực tế. Cấu phần thứ hai — bộ điều khiển, thường là bàn phím, chuyển đổi hành động của người biểu diễn thành điện thế và dòng điện, có nghĩa thành ngôn ngữ mà cấu phần thứ nhất hiểu được. Thậm chí, người ta còn nghĩ ra tên gọi cho quá trình này — "tóm bắt những đường nét kỹ nghệ".

Giao thức MIDI đã tạo ra sự khác biệt rõ rệt giữa hai cấu phần, về bản chất — loại bỏ tương tác nội vi giữa chúng. Giờ đây, một controller bất kỳ đều điều khiển được một bộ phát âm bất kỳ. Điều đó có một ý nghĩa tâm lý to lớn — dân nhạc có thể tự do lựa chọn thiết bị thích hợp mà không lo sợ nó sẽ lỗi thời sau nửa năm, điều vẫn đang xảy ra với các thiết bị điện tử khác.

Mặc dù các hãng cùng tích hợp MIDI một cách hợp tác, như trước kia, họ vẫn cạnh tranh trên thị trường. Bởi vậy, một số hãng đã thêm vào MIDI những cải tiến kỹ thuật, trong một số trường hợp đã làm sai đi các thông số đang có (cả vô tình, cả cố ý), trong lúc các hãng không liên quan đến MIDI đang chỉ trích giao diện này. Đồng thời, các hãng liên quan tới MIDI không thể cho các đối thủ cạnh tranh biết hết tất cả các bí mật. Chẳng hạn, với mục đích này, Sequential Circuits đã lập kế hoạch sản xuất một thiết bị đa thanh (Six-Trak) và đã đề xuất đưa vào các khả năng cần thiết trong kê khai kỹ thuật, làm sao để các hãng Nhật Bản không nhận ra điều này.

Tuy nhiên, do nhu cầu phối hợp sáng chế các thiết bị MIDI, nên, vào giữa năm 1983, tại Nhật Bản đã phát sinh hội đồng tiêu chuẩn MIDI (JMSC). Vào tháng tám của chính năm đó, tiêu chuẩn MIDI 1.0 đã được công bố. Cũng trong năm 1983, Nhóm người dùng MIDI quốc tế (IMUG — International MIDI Users Group) đã được khởi lập, sau đó đổi thành IMA — hiệp hội MIDI quốc tế. Tuy nhiên nó dành cho người sử dụng, và không thế tạo ảnh hưởng lớn. Bởi vậy vào tháng sáu năm 1984, người ta đã thành lập hiệp hội các nhà sản xuất MIDI quốc tế (MMA — MIDI Manufacturers Association).

Các tổ chức MMA và JMSC đã hoạt động hợp tác để chuẩn hoá và mở rộng giao thức MIDI. Bất kỳ một thành viên nào đăng ký vào các tổ chức này cũng có thể đề xuất bổ sung cho giao thức trước khi được biểu quyết áp dụng.

1983 — 2003

Giao thức MIDI đã mở ra những khả năng to lớn của tổng hợp điện toán và điều khiển âm thanh. Người ta bắt đầu sử dụng các máy tính như các công cụ điều khiển synthesizer (như các sequencer hay các chương trình soạn nhạc, tạo ra các hành động điều khiển trên nền tảng các thuật toán chuyên dụng).

Vào năm 1984 Jim Miller đã đưa ra phần mềm Personal Composer dành cho IBM PC, là MIDI-sequencer và cho phép in nốt. Các hãng Passport Designs và Sequential Circuits đã giới thiệu phần mềm soạn nhạc bốn và tám đường dành cho các máy tính Apple II và Commodore 64. Hãng Roland đã sản xuất bộ điều khiển guitar MIDI GR 700, cũng như các máy đồng bộ và giao diện SMPTE SBX 80, tạo thành một cuộc cách mạng trong việc đồng bộ drum-machine và các sequencer với các máy thu âm analog. Yamaha đã giới thiệu bộ trễ số hoá D 1500 — vi xử lý hiệu ứng đầu tiên với các bộ nhớ thiết lập sẵn, có thể thay đổi bằng các tin nhắn MIDI Program Change. Trong thiết bị Emulator II của hãng Emu lần đầu tiên có kết hợp MIDI-, SMPTE- và điều khiển vi tính.

Năm 1985 ghi nhận sự chiếm lĩnh thị trường châu âu của các máy tính Âtri có cổng MIDI tích hợp. Các hãng MOTU và Opcode sản xuất các phần mềm MIDI-sequencer cho Macintosh. Cũng chính trong thời gian đó Yamaha sáng chế ra phần cứng sequencer QX 1 với bộ nhớ lên tới 80000 nốt và khả năng chỉnh sửa danh sách sự kiện MIDI. Trong năm tiếp theo các máy tính PC bắt đầu chiếm lĩnh thị trường. Dành cho PC, đã xuất hiện hàng loạt các chương trình sử dụng MIDI. Hãng Lexicon xuất xưởng bộ tạo reverb PCM 70 — bộ hiệu ứng đầu tiên với các bộ nhớ mục mà các thông số của chúng có thể điều khiển theo giao thức MIDI.

Bản thân giao thức cũng không đứng nguyên tại chỗ. Được nghĩ ra trên cơ sở tính đến vấn đề mở rộng sau này, nó được bổ sung những khả năng mới. Vào tháng ba năm 1987 người ta đã thêm vào MIDI Time Code (tín hiệu đồng bộ để tương tác các thiết bị MIDI với các máy thu âm băng từ và với các thiết bị khác sử dụng timecode SMPTE), vào tháng 5 năm 1987 — Sample Dump Standard (giao tức truyền mẫu âm sample MIDI). Vào tháng mười hai năm 1988 xuất hiện tin nhắn Reset all controllers (phục hồi toàn bộ điều chỉnh mặc định), vào tháng tư năm 1990 — tin nhắn Bank Select.

Vào năm 1990 hãng Opcode cho ra đời MIDI-audio sequencer Studio Vision dành cho Macintosh, cũng như phần mềm Galaxy — bộ chỉnh sửa /thư viện các thiết bị MIDI đa chức năng. Vào tháng 5/1991 giao thức được bổ sung tin nhắn All sounds off (loại bỏ toàn bộ âm thanh), vào tháng bẩy năm 1991 — các lệnh điều khiển thiết bị ánh sáng và phun khói MIDI Show Control, và cũng như định dạng các file MIDI tiêu chuẩn (SMF — Standard MIDI Files) dành cho việc ghi nhớ tự chủ và trao đổi thông tin với các sequencer. Vào tháng mười năm 1991 xuất hiện tiêu chuẩn General MIDI, ở đó đưa ra một số yêu cầu tối thiểu cho các thiết bị tương thích GM và tên gọi của các âm thanh được kẹp vào các số patch. Xuất hiện cả module âm thanh tương thích GM đầu tiên: Roland SC 55 Sound Canvas. Hãng Opcode cho ra đời bộ mở rộng MIDI OMS (Opcode Music System) cho hệ điều hành máy tính Macintosh.

Vào tháng 12/1991 đã có MIDI Tuning Specification — phương pháp vi chỉnh cao độ của các nhạc cụ. Vào tháng 1/1992 giao thức MIDI đã hoàn toàn thâm nhập vào phòng thu — xuất hiện tiêu chuẩn MIDI Machine Control, cho phép điều khiển theo MIDI chức năng tăng hay hạ tông các thiết bị phát nhạc.

Cùng với sự ra đời của Microsoft Windows 3.1 người dùng PC đã có thể sử dụng MIDI trên cấp độ hệ điều hành. Xuất hiện phần mềm Cakewalk dành cho Windows, còn Cubase, trước đây chỉ có cho Atari và Macintosh, đã có thể được tiếp cận trong PC. Năm 1993 — Multimedia bắt đầu oanh tạc. Đối với PC, đã có các card tiếng cùng với ngõ vào MIDI. Công nghệ MIDI trở thành phổ biến trong hai mảng thị trường: chuyên nghiệp và không chuyên.

Người ta bắt đầu phát triển phòng thu ảo của mình trên cơ sở máy tính cá nhân. Các synthesizer ảo, các bộ xử lý hiệu ứng và các phần mềm khác liên lạc với thế giới bên ngoài thông qua MIDI (thậm chí tương tác với nhau bên trong máy tính qua kết nối cáp MIDI ảo).

Vào tháng 5/1996 đã ra đời quy cách Downloadable Sounds (DLS) Level 1, cho phép bổ sung những âm thanh cá nhân vào kho patch General MIDI có sẵn trong thiết bị.

Trong suốt 5 năm, tổ chức MMA đã đưa ra hơn mười kê thức mới. Tháng một năm 1998 — SMF Lyrics Specification (lời ca khúc trong file MIDI tiêu chuẩn), tháng một 1999 — MIDI Tuning Bank and Dump Extensions (những thông báo mới để vi chỉnh các nhạc cụ) và kê thức DLS Level 1 phiên bản 1.1, tháng sáu 1999 — SMF Language and Display Extensions (nhớ và thể hiện các ký tự trong file MIDI), các thông báo SMF Device Name and Program Name (chơi file MIDI đồng thời trên vài thiết bị), tháng 11/1999 — General MIDI 2.

Vào tháng 2/2000 định dạng mới RMID, được đề xuất, cho phép thống nhất dữ liệu từ file tiêu chuẩn MIDI và DLS vào thành một file. Vào tháng 10/2000 – MIDI Media Adaptation Layer for IEEE-1394 (phương pháp truyền thông báo MIDI theo giao thức FireWire), vào tháng 8/2001 – kê thức DLS Level 2.1, vào tháng 11/2001 – General MIDI Lite (dành cho các thiết bị mobile và di động), cũng như kê thức XMF (eXtensible Music Format), được đề xuất để thay thế định dạng RMID.

Bổ sung cuối cùng (tính đến hết 2003, tức vào tháng 5/2002) là Scalable Polyphony MIDI Specification — phương pháp cho phép chơi một file MIDI đúng cách nhất ngoài sự phụ thuộc vào khả đa lớp có thể tiếp cận.

Lờ đi tất cả những bổ sung này, kê thức MIDI vẫn giữ nguyên phiên bản 1.0 như trước.

CỐT LÕI

MIDI — đó là giao thức liên hệ giữa thiết bị điều khiển tạo lệnh, và thiết bị phụ thuộc, thực thi những lệnh này. Nếu đào bới sâu vào định nghĩa này, thì có thể đưa ra một ví dụ đặc thù: MIDI cho phép người biểu diễn nhấn phím ở một thiết bị, và khi đó nhận được âm thanh ở một hoặc thậm chí nhiều thiết bị khác. Bất kì hành động nào của diễn viên lên cơ quan điều khiển (nhấn phím, pedal, thay đổi vị trí nút điều khiển, v.v...) đều có thể biến đổi thành các câu lệnh được truyền đi theo cáp MIDI sang các nhạc cụ khác. Những nhạc cụ này, khi nhận được lệnh, sẽ xử lý chúng y hệt như thể nhận tác động từ các cơ quan điều khiển nội vi.

Trên thực diện của sự việc, giao thức MIDI không cụ thể hoá thành phần các thiết bị tương tác và không đòi hỏi biểu diễn «sống». Bản chất của giao thức nằm ở chỗ, trong một hệ thống nào đó từ vài thiết bị, một thiết bị (master) tạo ra câu lệnh, còn tất cả các thiết bị khác (slave) sẽ thực hiện các lệnh này. Nếu như các thiết bị slave là nguồn âm (các synthesizer, hộp tiếng ảo, mẫu âm thu thanh trước (samples), drum-machine, nói bằng một từ, tone-generator), thì chúng được điều khiển bởi các câu lệnh, liên quan đến sự tạo âm: ví dụ, "lấy nốt Đô ở quãng tám thứ nhất" hay "bật đổi âm sắc sang số 5". Nếu các thiết bị slave thực hiện các lệnh khác, chẳng hạn, xử lý tín hiệu audio, thì câu lệnh dành cho chúng sẽ hơi khác. Trong bất kỳ trường hợp nào, thiết bị đó sẽ nhận các câu lệnh điều khiển thông qua lối vào MIDI (MIDI In).

Để làm thiết bị master, có thể lấy ra một thiết bị bất kỳ, có lối ra MIDI (MIDI Out) và có khả năng gửi tới «lối ra» này các câu lệnh điều khiển. Có thể chia các thiết bị master thành hai dạng: các thiết bị mà diễn viên tác động trực tiếp (chẳng hạn, synthesizer) và các thiết bị tạo ra các câu lệnh một cách tự động (không cần người biểu diễn) trên cở sở dữ liệu đã được thiết lập từ trước. Ví dụ thường gặp cho thiết bị dạng cuối cùng chính là sequencer.

Sequencer gợi nhớ đến một chiếc máy thu thanh, chỉ có điều nó không thu thanh, và thu các lệnh điều khiển, và không thu vào băng từ, mà vào bộ nhớ của máy tính (trong nghĩa rộng của từ này, đó có thể là cả máy tính tích hợp bên trong synthesizer). Sequencer cho phép ghi lại hành động của người biểu diễn (bao gồm cả cường độ thể hiện, phong cách, đường nét, v.v...), và sau đó chơi lại trong dạng biến đổi, giống hệt như thể người biểu diễn một lần nữa ngồi vào trước nhạc cụ và chơi lại. Hơn nữa, trong sequencer có thể hiệu chỉnh chất liệu đã ghi bằng các phương pháp không thể có được ở máy thu thanh: nâng tông từng bè hay từng nốt nhạc, thay đổi vị trí nhịp điệu của sự kiện hoặc âm sắc mà synthesizer sẽ chơi bè đó.

Giao thức MIDI được sáng chế ra để điều khiển synthesizer, ở đó, như đã biết, cơ quan điều khiển quan trọng nhất — bàn phím. Bởi vậy, không là đáng ngạc nhiên khi các nhà sáng chế MIDI đã chọn quy luật của nhạc cụ bàn phím để mô tả hành động của người biểu diễn.

MIDI là giao thức được thể hiện theo hơi hướng bàn phím.

Điều đó không có nghĩa rằng, chỉ có thể điều khiển tone-generator bằng bàn phím — có cả hàng loạt các phương pháp đầu vào khác, chẳng hạn, bằng các patch điện tử và nhiều thiết bị bộ gõ, các bộ điều khiển guitar và dàn hơi (chúng ta sẽ nói riêng và kỹ lưỡng hơn về điều đó). Tuy nhiên, dù phương pháp đầu vào được sử dụng là gì, tin nhắn (message) từ đó sẽ được biến đổi thành định hướng kiểu bàn phím.

Phương pháp phân tích âm thanh không theo tính cách của nhạc cụ bàn phím, chỉ có thể được giả lập bằng các phương tiện MIDI với các cấp bậc khác nhau của độ tin cậy.

CHUYỂN ĐỔI

Vậy các thiết bị được kết nối theo MIDI như thế nào? Chúng ta hãy đặt mình vào vị trí của những nhà sáng chế. Chúng ta có hai synthesizer, và muốn, sao cho khi ấn phím tại một thiết bị, thiết bị thứ hai sẽ chơi lại đúng nốt đó, nhưng bằng tiếng của mình. Rõ ràng, để làm được điều đó cần cung cấp cho thiết bị thứ nhất một ngõ ra MIDI, còn ở thiết bị thứ hai — ngõ vào MIDI, và nối chúng lại với nhau bằng cáp. Synthesizer thứ nhất, khi một phím của nó được ấn giữ, thì một tin nhắn bao gồm thông tin về sự ấn giữ này cần được tạo ra và được gửi tới ngõ ra của mình, và chuyển tới ngõ vào của thiết bị thứ hai để tiếp tục biến đổi thành âm thanh (hình 3).

Hình 3.

Vậy điều gì sẽ xảy ra nếu chơi hợp âm? Trong quá khứ, để tạo ra cùng một lúc nhiều âm thanh, cần gắn vào thiết bị nhiều ngõ vào CV/Gate, mỗi CV/Gate tương ứng với một âm trong dải đa lớp. Nhưng MIDI — giao thức số, và cao độ của nốt được mã hoá bằng các con số, chứ không phải bằng điện thế. Các con số được truyền đi theo cáp MIDI dưới dạng những xung điện siêu ngắn. Các nhà sáng chế đã có thể làm ra một giao diện song song, có nghĩa chuyển những xung điện này đi theo nhiều dây dẫn cùng một lúc. Khi đó, cáp MIDI có thể phải có 8 hoặc 16 dây dẫn, và thiết bị nhận được toàn bộ các nốt của hợp âm. Nhưng vì nhiều nguyên nhân khác nhau (chúng ta sẽ nói kỹ về chúng), người ta đã quyết định làm giao diện này ở dạng nối tiếp. Tròng trường hợp này, cáp MIDI chỉ cần đúng hai dây dẫn bện vào nhau.

Giao diện nối tiếp có nghĩa, các xung điện theo cáp MIDI được truyền đi lần lượt, tương tự như đàn kiến bò 🐜🐜🐜🐜🐜🐜🐜🐜. Như vậy vào mỗi thời điểm đầu thứ hai chỉ nhận được đúng một xung điện. Có nghĩa, truyền đồng thời nhiều tin nhắn theo một cặp ngõ MIDI là bất khả thi. Khi chơi hợp âm, các nốt của mỗi hợp âm được truyền đi nối tiếp nhau. Trong thực tế, thay vì chơi hợp âm, thiết bị đầu nhận sẽ thể hiện chỉ một arpeggio rất-rất sát nhau.

Theo một cáp MIDI không thể truyền đồng thời nhiều tin nhắn.

Dữ kiện này đã trở thành cái cớ chỉ trích chủ yếu cho phe chống đối MIDI. Về mặt thính giác, sự trễ âm của từng nốt trong hợp âm là không thể nhận ra được (vì nó nhỏ hơn một nửa mi li giây), và hơn nữa, trong thực tế, không một ai có thể chơi được một hợp âm với các âm vang lên đồng thời một cách tuyệt đối. Tuy nhiên, nhiều người vẫn không đồng ý với lập luận đó — họ vẫn muốn một hệ thống chính xác tuyệt đối về thời gian.

Như vậy, chúng ta đã kết nối hai synthesizer bằng cáp MIDI để truyền tin nhắn về việc ấn/giữ/thả nốt (trong số đó có cả các âm đa tầng, với cả hiệu chỉnh như đã nói ở trên). Bây giờ chúng ta muốn nối thêm hai synthesizer nữa, nhưng vẫn điều khiển chúng bằng một thiết bị. Để làm điều này, có thể tạo ra cho synthesizer thứ nhất nhiều ngõ ra và nối nó với ba cái còn lại bằng ba cáp MIDI, có nghĩa, nói theo ngôn ngữ tin học, tổ chức một hệ thống mạng dạng "sao" (hình 4).

Hình 4.

Điều đó hoàn toàn có thể làm được, nhưng không phải tất cả các thiết bị (vì lý do kinh tế) có thể được lắp đặt vài ngõ ra MIDI. Còn nếu muốn điều khiển thêm vài thiết bị khác nữa, khi đó số lượng các ngõ ra chắc chắn sẽ không bao giờ là đủ. Người ta đã tìm được lối thoát: làm thêm ngõ MIDI Thru (xuyên qua). Nhiệm vụ của synthesizer có ngõ này — nhân bản tất cả các tin nhắn nhận được từ MIDI In. Khi đó chúng ta có thể kết nối hệ thống từ 4 synthesizer bằng một mắt xích (hình 5).

Hình 5.

Theo sơ đồ này, synthesizer thứ nhất chỉ cần một MIDI Out. Tất cả thông tin từ ngõ ra đó sẽ được chuyển sang MIDI In của synthesizer thứ hai, nhân bản thêm một bộ thông tin y hệt như thế qua MIDI Thru và tiếp tục, theo cáp MIDI thứ hai, được chuyển đến MIDI In của nhạc cụ thứ ba, tiếp tục được nhân bản, và cứ như thế cho đến khi nào chưa đi đến tận nhạc cụ cuối cùng của chuỗi.

Như vậy có vẻ ổn, nhưng sẽ như thế nào, nếu chúng ta muốn mỗi nhạc cụ được tách riêng theo tuần tự, chứ không phải hoà nhau vào một lớp? Giả sử, ở synthesizer thứ nhất ta đã chọn sáo flute, cái thứ hai — piano, cái thứ ba — bass, còn cái cuối cùng — bộ gõ. Chúng ta nhấn các phím trên synthesizer thứ nhất và muốn bắt đầu sẽ là piano, sau đó chỉ có bộ gõ. Tất nhiên, có thể chạy đi chạy lại và bật tắt các synthesizer tương ứng (điều này có lợi cho sức khoẻ), nhưng đó không phải là cách, đặc biệt, nếu các thiết bị đang được gắn nối tiếp.

Còn nếu chúng ta chơi bè bass bằng tay trái, còn bè piano — bằng tay phải? Trong trường hợp này bàn phím của synthesizer thứ nhất cần được chia thành hai phần. Các phím của mỗi phần cần gửi đi các tin nhắn về việc giữ nốt cho synthesizer của mình. Phải làm thế nào, nếu thiết bị chỉ có một ngõ ra MIDI?

Và cuối cùng, nếu synthesizer của chúng ta là đa âm sắc (có nghĩa, có thể chơi nhiều bè khác nhau bằng những âm sắc khác nhau), làm sao để kết nối nó với sequencer, nơi mà các bè này đang được ghi?

Với các vấn đề đã đặt ra, về bản chất, có hai câu trả lời: hoặc là dùng rất nhiều MIDI Out, MIDI In và cáp MIDI với số lượng mỗi loại đúng bằng số lượng các bè cần vang lên đồng thời (Hình 6а), hoặc là... Làm thế nào, để tất cả các bè được truyền đi chỉ bằng một cáp MIDI (Hình 6b). Có cần giải thích, tại sao người ta lại chọn phương án thứ hai??!



Các nhà sáng chế đề xuất truyền dữ liệu theo 16 kênh logic. Từ "logic" có nghĩa, tất cả các kênh tồn tại dưới dạng tưởng tượng và được truyền đi theo một cáp MIDI. Đơn giản là mỗi một tin nhắn, chẳng hạn, về giữ nốt, được tích hợp thêm một con số nguyên — số thứ tự của kênh, mà tại đó âm thanh sẽ vang lên. Trong điều này chính là sự khác biệt gốc rễ của MIDI so với kết nối âm thanh dạng analog, khi, ví dụ, bè piano xuất ra từ máy thu thanh chuyển tới mixer theo một cáp riêng mà tay chân có thể động vào. Trong MIDI theo một cáp có thể truyền đồng thời các bè của toàn bộ một giàn nhạc giao hưởng (tất nhiên, dưới dang các câu lệnh điều khiển, chứ không phải âm thanh).

Thấy rõ, khi truyền dữ liệu theo cách nối tiếp, thì vào mỗi thời điểm thiết bị nhận chỉ bắt được tin nhắn cho đúng một kênh. Bởi vậy, sự đồng thời tuyệt đối của nhịp điệu, chẳng hạn, giữa trống bass (kick) và guitar bass khi truyền tín hiệu theo một cáp MIDI là không thể có. Nhưng chúng ta lại lặp lại vấn đề, không có tay bass nào có thể bắt nhịp với «bè bass» của bộ gõ một cách lý tưởng. Nhiều chỉ trích gia không hài lòng với sự trễ pha này của giao diện, mặc dù độ trễ đó hầu như không thể cảm thấy được — đâu đó chỉ vào khoảng một phần mi li giây.

Mỗi một tone-generator có thể điều chỉnh để nhận các tin nhắn theo một hay nhiều kênh MIDI. Dữ liệu của các kênh không được truyền nhận, đơn giản là được bỏ qua. Trong ví dụ của chúng ta, giả sử synthesizer thứ nhất chơi ở kênh MIDI số 3, cái thứ hai được chỉnh để nhận lệnh theo kênh 4, cái thứ ba — theo kênh 8 và cái cuối cùng — theo kênh 10. Khi đó việc chuyển âm sắc cần được thiết lập ở các kênh của synthesizer thứ nhất: nếu chuyển kênh 3 — tiếng flute của chính nó sẽ vang lên, sang kênh 8 — bass từ cái thứ ba, sang kênh 10 — bộ gõ từ cái cuối cùng. Và khi đó hoàn toàn không cần bàn phím ở các synthesizer số hai, ba và bốn. Thực trạng này dẫn đến sự phổ biến của các hộp tiếng — synthesizer không có bàn phím. Mặt khác, synthesizer thứ nhất có thể hoàn toàn không phát tiếng, mà chỉ dùng làm trung tâm điều khiển cho các synthesizer còn lại. Thực trạng này lại dẫn đến sự xuất hiện của các bàn phím MIDI — các thiết bị không chứa âm thanh, mà chỉ được dùng để điều khiển các synthesizer hoặc hộp tiếng khác.

Nếu như synthesizer thứ nhất cho phép chia bàn phím thành hai khu vực, vậy có thể chỉ định khu vực tay trái sẽ truyền theo kênh 8, còn khu tay phải — theo kênh 4. Khi đó chúng ta có thể đồng thời thể hiện bè bass và bè piano. Ở đây, tại synthesizer thứ nhất, chỉ cần một ngõ ra MIDI (hình 7).

Hình 7.

Khả năng chơi sống nhiều bè cùng một lúc là có giới hạn, bởi vậy thường thấy nhất, các bè được ghi vào sequencer theo tuần tự. Khi đó, ta có thể ghi các bè bằng một âm sắc đơn giản mà không cần cân nhắc trước trên nhạc cụ — bởi vì không phải âm thanh sẽ được ghi, mà là hành động của người biểu diễn (thậm chí có thể «gõ» bè trên bàn phím MIDI một cách âm thầm). Còn sau đó, để kiểm chứng, có thể mượn tạm một đôi synthesizer hoặc hộp tiếng thật chất.

Mỗi một synthesizer, khi có ngõ xuyên MIDI Thru, cần nhân bản thông tin được truyền đến nó, kể cả theo các kênh mà riêng nó được chỉ định tiếp nhận. Điều này cho phép tiếp tục phát tán các bè sang những synthesizer khác được gán cũng chính kênh đó, để tạo ra, chẳng hạn, âm vang «đầy đặn» trong quãng unison (quãng 1).

MIDI — Giao thức tức thời

Điều này có nghĩa, toàn bộ hệ thống hoạt động theo nguyên tắc "nhận lệnh — thi hành". Người biểu diễn ấn phím, bàn phím sinh tạo ra tín hiệu "giữ nút" và truyền nó tới ngõ vào của tone-geneator. Thiết bị này ngay lập tức chơi nốt nhạc. Như vậy, không có thông số nào liên quan đên thời điểm đặt lệnh được truyền đi. Thời điểm thực thi được tính là thời điểm nhận lệnh. Bởi vậy, các tin nhắn đại loại như "hãy chơi một nốt sau hai giây nữa" là không tồn tại trong MIDI. Thật kỳ quặc, tin nhắn "hãy chơi một nốt với độ ngân kéo dài hai giây" trong một hệ thống tức thời cũng là bất khả thi.

Hãy tưởng tượng: ngay khi người biểu diễn nhấn phím, tone-generator nhận được lênh "giữ nốt", và nó cần chơi tức thời. Nốt này có trường độ thế nào, tone-generator không hề biết và cũng không thể biết. Tất cả ở đây phụ thuộc vào người biểu diễn — nốt nhạc sẽ được ngân vang cho đến lúc nào anh ta thả phím ra, và khi đó tone-generator mới nhận được lệnh "ngắt nốt". Vậy bây giờ có thể nói — chẳng hạn, nốt nhạc đã vang trong vòng một giây rưỡi. Trong MIDI, tất cả các thông số liên quan đến thời lượng của quá trình này hay quá trình khác đều phản ứng một cách tương tự. Ví dụ, nhịp độ trình diễn «sống» không bao giờ được gán theo tin nhắn nào đó như "120 đập một phút (120bpm)", mà bằng chính tin nhắn về việc giữ nốt, xuất đi từ thiết bị điều khiển trong nhịp độ tương ứng.

Bằng cách đó, bài toán đặt ra cho tone-generator trong MIDI được đơn giản hoá rõ rệt: không cần đoán thời gian của bất kỳ điều gì, chỉ cần tức thời thi hành lệnh. Từ đó — một trong những vấn để phổ biến nhất của MIDI, được gọi là hiện tượng đơ nốt (một hay nhiều âm thanh nào đó vang lên kéo dài mất kiểm soát). Nếu tone-generator nhận được tin nhắn "giữ nốt", còn thông báo "ngắt nốt" bị thất lạc vì một nguyên nhân nào đó (chẳng hạn, do hỏng cáp), nốt nhạc sẽ ngân vang muôn đời. Hì, hoặc là, cho đến khi nào tắt bật lại nguồn của hộp tiếng.

Nhìn tổng thể, thành thử, thời gian ngân nốt, nhịp độ, các thời điểm và thời lượng khác được điều khiển bởi chính người biểu diễn. Nếu chúng ta muốn ghi lại hành động của người biểu diễn, thì, mỗi một tin nhắn MIDI đi tới sequencer cần được gán thêm đánh dấu về thời gian. Ví dụ như sau: tin nhắn "giữ nốt" đã tới ở tick thứ nhất (1 giây = 10 triệu tick). Chúng ta ghi nó vào bộ nhớ cùng với đánh dấu số 1. Tin nhắn "nhả nốt" được gửi đến vào tick thứ 21, chúng ta ghi nó cùng với đánh dấu 21. Như vậy sequencer sẽ tính được độ dài của nốt là 20 tick. Trong khi chơi lại, sequencer lại tính toán số tick một lần nữa. Tick thứ nhất trồi qua, tone-generator lưu giữ thông tin về giữ nốt, tiến đến tick thứ 21 — có tin nhắn về việc "nhả nốt". Như vậy, chúng ta đã ghi, và sau đó chơi lại hành động của người biểu diễn.

Hơn nữa, sequencer cho phép lập trình tất cả các hành động đó, có nghĩa ghi vào bộ nhớ mà không cần phải diễn «sống». Một sự lập trình như thế đã làm nảy sinh nhiều phong cách nhạc điện tử và quá trình sáng tạo bị/được thay đổi đến tận gốc rễ, nhưng đây là — chủ đề của một cuộc tranh cãi riêng.

Các cấu phần của MIDI

Các khái niệm đã được đụng tới ở trên cũng đòi hòi cần thảo luận chi tiết, nhưng bây giờ đã rõ, giao diện cần được cấu tạo từ những gì. Rõ ràng là, để một thiết bị phản ứng được với các hành động diễn ra từ một thiết bị khác, cần chuẩn hóa hai thứ: ngôn ngữ giao tiếp của các thiết bị và phương pháp kết nối vật lý. Đê có thể ghi nhớ được các tin nhắn (để sau đó chơi lại), cũng cần tiêu chuẩn lưu trữ chúng.

Giao thức MIDI được tạo thành từ ba phần: kê thức định dạng dữ liệu, kê thức thiết bị giao diện và kê thức định dạng lưu trữ dữ liệu.

Chúng ta bắt đầu nói tới MIDI từ phần đầu tiên, có nghĩa từ ngôn ngữ giao tiếp của các thiết bị.

Ngôn ngữ MIDI

Để điều khiển một thiết bị từ một thiết bị khác cần nghĩ ra ngôn ngữ của các câu lệnh mà cả hai đều hiểu được. Có nghĩa lập ra danh sách các câu lệnh, ký hiệu mỗi câu lệnh bằng mã hóa của mình và thỏa thuận: nếu thiết bị hiểu câu lệnh, nó cần phản ứng lại bằng một cách nào đó, nếu không hiểu — bỏ qua.

Ngôn ngữ MIDI chỉ được tạo thành từ các câu lệnh và các thông số của các lệnh này. Không có một thứ gì khác được truyền qua cáp MIDI. Các khoảnh khắc đơn giản, thậm chí là cả không đơn giản trong âm nhạc như, chẳng hạn, bè bass chơi «luyến lên» vào mỗi phách mạnh của một nhịp, — đó chỉ là kết quả xử lý các câu lệnh bằng tone-generator. Các câu lệnh trong ngôn ngữ MIDI được gọi là tin nhắn (hoặc, bạn có thể gọi là «thông báo» hoặc gọi thẳng bằng tiếng Anh là «message»).

Các tin nhắn được chia ra thành hai loại logic cơ bản: một loại điều khiển sự tạo âm, có nghĩa chúng nói, chẳng hạn, lấy nốt nào và chơi to nhỏ đến mức nào, loại thứ hai thực hiện các chức năng chung, đại loại như điều chỉnh tone-generator và vấn đề đồng bộ. Bởi vì việc phát âm trong MIDI được thực hiện tạo một kênh xác định, các tin nhắn loại thứ nhất được gọi là tin nhắn kênh (Channel Messages). Các tin nhắn loại thứ hai được gọi là tin nhắn hệ thống (System Messages). Các tin nhắn kênh luôn luôn liên hệ với một kênh MIDI nào đó và được xử lý bởi tone-generator chỉ trong trường hợp, nếu nó được chỉnh để nhận dữ liệu theo kênh này. Ở trên đã nói, việc kết nối vài tone-generator qua ngõ MIDI Thru, cùng với các điều chỉnh tương ứng tại các synthersizer, cho phép phân chia theo kiểu "ai có phần người nấy". Các tin nhắn hệ thống có hiệu lực cho toàn bộ thiết bị trong hệ thống MIDI, không phụ thuộc vào việc nó đang được chỉnh về kênh MIDI nào.


Trong thứ tự của mình, các tin nhắn kênh được chia ra thành tin nhắn giọng (Channel Voice Messages) và tin nhắn chế độ (Channel Mode Messages). Các tin nhắn hệ thống được chia thành tin nhắn hệ thống chung (System Common Messages), tin nhắn thời gian thực (System Real Time Messages) và tin nhắn độc chiếm (System Exclusive Messages).

Các tin nhắn giọng của kênh gửi tới tone-generator thông tin về điều khiển âm thanh. Chúng "báo cáo" với tone-generator, hiện tại người biểu diễn đang làm gì — ấn phím, xoay bánh xa modulation (rung), kéo fader hay đanh nhả pedal. Có nghĩa, các tin nhắn giọng mô tả hành động của người biểu diễn trong dạng số hoá. Tone-generator, nhận được những thông báo này, phân tích chúng và phản ứng với chúng đại loại như sau: "Aha, đây là giữ phím Đô ở quãng tám thứ nhất — cần chơi nốt này; đây là vòng bánh xe cao độ — cần thay đổi độ cao của âm thanh; còn đây — tin nhắn lạ, tôi sẽ không làm gì cả".

Tone-generator có thể làm việc ở nhiều chế độ (chúng ta sẽ bàn sau), và trong mỗi một chế độ, nó phản ứng với các tin nhắn giọng theo những cách khác nhau. Các tin nhắn kênh dạng «mode» được dùng chính là để đổi các chế độ này, nhưng chúng còn thi hành vài hành động có ích khác.

Các tin nhắn hệ thống chung (System Comon Messages) thực hiện các nhiệm vụ đa dạng. Trong số đó — đồng bộ các thiết bị MIDI- và Audio- (chẳng hạn, các máy thu thanh băng từ) bằng phương tiện giao thức MIDI Time Code (MTC), truyền vị trí (position) của bài hát, chọn bản nhạc và thậm chí yêu cầu điều chỉnh bộ phát sóng của synthesizer.

Các tin nhắn hệ thống thời gian thực dùng để đồng bộ các thiết bị MIDI, chẳng hạn, các sequencer và drum-machine, theo giao thức MIDI Clock. Trong đó bao gồm cả các tin nhắn tái thiết lập mặc định ("reset") của thiết bị và ngăn chặn các hành động sai lầm (ngắt hẳn những nốt «đơ»). Các tin nhắn thời gian thực khác với tất cả các loại khác ở chỗ, chúng có mức độ ưu tiên lớn nhất, có nghĩa, ví dụ, dễ dàng len lỏi giữa các phần của một tin nhắn khác. Điều này cũng dễ hiểu — tính nhịp điệu chính xác là quý hơn hết.

Các tin nhắn hệ thống dạng độc quyền (ký hiệu ngắn gọn là SysEx) — đây là một dạng đặc thù dành riêng cho các nhà sản xuất thiết bị. Ngày nay trên thị trường đang tồn tại hàng loạt các thiết bị, và mỗi thiết bị cụ thể lại có những khả năng đặc biệt của mình. Các tổ chức MMA và JMSC đã có thể đi theo con đường cập nhật thường xuyên kê thức MIDI: xuất hiện một chức năng mới nào đó, giả dụ, trong máy phun khói — tạo ra một loại tin nhắn mới và đưa nó vào hệ tiêu chuẩn. Hiển nhiên, đây là ngõ cụt. Không thể nào chạy theo tất cả, trong khi sự tương thích giữa các thiết bị lại không đạt được (vâng, và máy hun khói liên quan gì đến synthesizer?). Bởi vậy, người ta đã dành riêng cho mỗi nhà sản xuất một lối mở để xác lập tin nhắn độc quyền của mình (độc đáo, ngoại lệ), thậm chí chỉ đúng với duy nhất một thiết bị cụ thể.

Hãy tưởng tượng, rằng, chẳng hạn, hãng Roland đưa ra một hộp tiếng mới với một chức năng lạ. Để điều khiển chức năng này, không có một tin nhắn giọng dạng tiêu chuẩn trong kê thức MIDI. Vậy Roland phải làm gì? Hãng này sẽ nghĩ ra một tin nhắn độc quyền của mình để điều khiển chức năng đang nói. Để các tin nhắn độc quyền của một hãng không làm hỏng các tin nhắn tiêu chuẩn khác, mỗi nhà sản xuất sẽ nhận được mã số tổng quát của mình và sử dụng nó trong tựa đề của tin nhắn. Bởi vậy hộp tiếng, nói ví dụ, của hãng Yamaha, khi nhìn thấy trong tiêu đề của tin nhắn SysEx mã số Roland, sẽ tự hiểu: "À, đây không phải thứ dành cho tôi, đằng nào tôi cũng chẳng hiểu được gì, tôi sẽ bỏ qua toàn bộ tin nhắn này".

Một vài tin nhắn SysEx có thể được dùng chung và hỗ trợ các thiết bị của các hãng khác nhau. Chúng dùng để chỉnh một số thông số đơn giản của tone-generator như độ to nhỏ (volume) và panorama (pan), và cũng như để triển khai những kê thức bổ sung trong khuôn khổ MIDI, chẳng hạn, kê thức truyền sample (MIDI Sample Dump Standard), điều khiển ánh sáng sân khấu và các thiết bị phun khói (MIDI Show Control), điều khiển chức năng MMC của thiết bị (MIDI Machine Control).

Như vậy, chúng ta đã biết có những loại tin nhắn nào. Đã đến lúc làm rõ, truyền chúng đi ra sao. Tất nhiên, mỗi tin nhắn cần được gán code của mình, tuy nhiên trước khi đi đến điều đó cần hình dung rõ ràng, thông tin được lưu trữ như thế nào ở các thiết bị số.

Hệ thống tính toán

Ở đây chúng ta sẽ không học lập trình hay học cộng các số nhị phân. Việc thứ nhất thì dân nhạc không nhất thiết phải biết, còn việc thứ hai có thể đơn giản hoá bằng calculator.

Thực ra, để đào sâu vào giao thức MIDI, hoàn toàn không nhất thiết phải có tư duy toán học. Chỉ cần hình dung khái niệm cơ bản về phương pháp lưu trữ số trong máy tính. Nếu một lần nào đó bạn thấy ở sequencer cửa sổ SỹE với một đống chữ cái và con số khó hiểu, và đóng nó lại theo phản xạ, khi đó phần bài viết này là dành cho bạn. Hãy thử thay đổi thái độ của mình với biểu những biểu tượng, và tốt hơn nữa là — đọc kỹ hướng dẫn sử dụng thiết bị nhạc cụ và mầy mò những ký hiệu dod trong thực hành. Bạn sẽ nhận ra, chúng ẩn chứa một sức mạnh vô cùng khủng.

Vậy thông tin được lưu trữ thế nào trong các thiết bị số? Có thể đề xuất một cách logic, nếu "số hoá", vậy sẽ là ở dạng các con số mà chúng ta quen thuộc. Con người sử dụng hệ tính thập phân, xuất hiện tử việc đếm ngón tay — số lượng các ngón tay của hai bàn tay. Chúng ta có mười ký hiệu (con số) khác nhau, nhờ đó có thể thể hiện một số bất kỳ. Nếu bàn tay chúng ta chỉ có ba ngón (thật kinh dị), chúng ta có lẽ đã sử dụng hệ đếm lục phân. Và đã thể hiện một số bất kỳ bằng cách sử dụng sáu chữ số — 0, 1, 2, 3, 4, 5.

Các thiết bị số hoàn toàn không có ngón tay nào cả, mà chỉ có các cấu phần điện tử nằm dưới hai trạng thái: đóng hoặc mở. Có thể hình dung phần tử đó như một cái tụ điện, hoặc đã tích đầy điện, hoặc đã hết điện. Các lập trình viên đã quy ước, rằng mỗi trạng thái của tụ điện sẽ được ký hiệu bằng một con số: 0 hoặc 1. Đã có thể quy ước tương tự là A và B, thì bản chất vẫn không đổi. Vậy, chúng ta chỉ có hai con số, và vì thế hệ tính toán sẽ ở dạng kỹ thuật số — nhị phân. Các con số trong hệ nhị phân thường được gọi là bit (tiếng Anh: bit — binary digit). Người ta còn hiểu bit là một phần tử đơn giản nhất của bộ nhớ không thể chia nhỏ hơn nữa (chính là cái tụ điện), nơi có một con số nào đó được lưu trú trong hệ nhị phân. Về bản chất, bit — đó là đơn vị nhỏ nhất của thông tin. Không được nhầm lẫn cái "bit" này với một thuật ngữ âm nhạc, đọc giống như thế, nhưng lại có nghĩa là «đập» (tiếng Anh: beat).

Vậy, bit chỉ tiếp nhận hai giá trị — thường là 0 và 1, mặc dù hai con số này chỉ là ước lệ. Chẳng hạn, bit có thể chỉ ra trạng thái logic "yes/no", chỉ ra có ổ cứng trong sampler hay không, hay, nói giả dụ, giới tính — nam hoặc nữ. Tất nhiên, có nhiều hiện tượng không thể mô tả chỉ bằng hai trạng thái, và chỉ với hai bit không thể thể hiện tất cả các số. Để đạt được các mục đích đó, người ta sử dụng các bộ bit. Chẳng hạn, chúng ta cùng đếm từ 0 đến 8 trong hệ nhị phân, và xem xét, сần bao nhiêu bit (tế bào đơn giản nhất của bộ nhớ) để thể hiện các số này (hình 9):


Không khó để nhận ra: Số thập phân lớn nhất có thể được thể hiện từ N bit,, là 2ᴺ-1. Thực sự thế, với hai bit có thể đếm đến 3, với ba bit có thể đếm đến 7 và cứ thế.

Để tiện tiếp cận dữ liệu trong kỹ thuật số, các bit được thống nhất lại thành các nhóm. Nhóm bit thông dụng và quen thuộc nhất đố với chúng ta — byte. Byte được tạo thành từ 8 bit. Các bit được đánh số từ phải qua trái — bit 0 luôn nằm từ bên phải và tạm được gọi là ký số cực tiểu (LSD, Least Significant Digit). Bit bên trái nhất được tạm gọi là ký số cực đại (MSD, Most Significant Digit), hình 10. Thành ra, trong một byte bao gồm 8 bit có thể lưu nhớ được các giá trị từ 0 đến 255 (2⁸-1), có nghĩa tất cả 256 giá trị. Nếu cần nhớ một số lớn hơn 255, hai byte sẽ được đem ra sử dụng (word, 16 bit), giải giá trị «đếm» từ 0 đến 2¹⁶-1 (65535), bốn byte (double word, 32 bit) — từ 0 đến 2³²-1 (4294967295), và cứ thế. Bạn hãy để ý, số lượng bit được sử dụng để nhớ số, luôn luôn chia hết cho 8. Thậm chí nếu 9 bit cũng đủ để thể hiện số thì người ta vẫn sử dụng hai byte. Các nhóm byte được thống nhất trong sự tương ứng vào luỹ thừa của 2: 2, 4, 8, 16 và vân vân. Bởi vậy đại lượng 3 byte (24 bit) trong máy tính vẫn chiếm 4 byte, 8 bit ký số cực đại thừa ra đơn giản là được bỏ qua. Sự phát triển nhân bản của tài nguyên theo cách đó liên quan đến kiến trúc đặc biệt của cách mạch vi xử lý điện tử.

Hình 10.

Trong giao thức MIDI giá trị của các thông số thường bị giới hạn trong khuôn khổ một word bao gồm 2 byte. Các bit từ 0 tới hết 7 tạo thành byte bé của word (LSB, Least Significant Byte), từ 8 tới hết 15 — byte lớn (MSB, Most Significant Byte).

Các số nhị phân rất khổng lồ trong ghi chép và tiện lợi, có lẽ, chỉ dành cho các «bộ não» điện tử: chẳng hạn, số 35935 trong hệ nhị phân sẽ là 1000110001011111. Thông dịch số đó sang hệ thập phân mà không có calculator sẽ là vấn đề, cũng giống như, nhận được nó từ số thập phân. Bởi vậy, để đơn giản hoá cuộc sống, các lập trình viên đã nghĩ ra hệ tính thập lục phân. Ở đó các số được thể hiện bằng các con số và các chữ cái: các con số — quen thuộc với chúng ta, từ 0 đến 9, а các chữ cái — từ A đến F. Chẳng hạn, trong hệ thập phân, số «mười» được viết là 10, thì trong hệ thập thục phân — là A. Giá trị F tương ứng với số thập phân 15.

Quan trọng là phải hiểu, máy tính hoàn toàn không quan tâm đến việc chúng ta gọi các số như thế nào — bằng các con số, bằng các chữ cái hay bằng các dấu gạch ngang. Ở cấp độ vật lý chỉ có các cấu phần điện tử có khả năng nằm ở một trong hai trạng thái. Còn việc trong thế giới điện toán và, nói riêng, trong giao thức MIDI, người ta sử dụng các số thập lục phân, chẳng qua vì chúng tiện để thông dịch ra các số nhị phân, có nghĩa, ra ngôn ngữ máy tính, và ngược lại.

Thực ra, số lớn nhất có thể thể hiện được bằng một ký hiệu thập lục phân (F, thập phân là 15), bằng số lớn nhất có thể thể hiện được bằng 4 bit (2⁴-1). Số lớn nhất trong sự thể hiện của hai ký hiệu thập lục phân (FF, thập phân là 255), bằng số có thể thể hiện được bằng 8 bit (2⁸-1). Và cứ thế. Thành thử, cứ 4 bit nhị phân sẽ tương ứng với một bước nhảy thập lục phân (2⁴ = 16). Bảng sau (hình 11) cho thấy sự tương ứng giữa các số nhị phân, thập phân và thập lục phân:

Hình 11.

Dựa vào bảng này có thể biến đổi nhanh các số nhị phân thành thập lục phân và ngược lại một cách nhanh chóng mà không cần calculator. Khi làm việc với MIDI, thậm chí ở cấp độ người dùng, đôi khi buộc phải thực hiện những phép biến đổi đó. Chẳng hạn, chúng ta biến đổi số 35935 từ hệ nhị phân (1000110001011111) sang thập lục phân. Nhóm 4 bit đầu tiên từ bên phải — 1111, tương ứng với số thập lục phân F. Nhóm thứ hai (0101) — 5, thứ ba (1100) — С, cuối cùng (1000) — 8. Và như vậy, số hệ thập phân 35935 trong hệ thập lục phân sẽ có kí hiệu như sau: 8C5F. Tương tự, số D7 khi chuyển sang hệ nhị phân sẽ có dạng 11010111.

Việc chuyển đổi các số nhị phân và thập lục phân sang thập phân và ngược lại, đơn giản nhất vẫn là dùng calculator.

Để phân biệt các số thập lục phân trong văn bản ra khỏi các số thập phân, người ta sử dụng nhiều phương pháp. Chúng ta sẽ sử dụng cú pháp của ngôn ngữ lập trình C và sẽ ký hiệu các số thập lục phân bằng tiền tố "0x". Trong ví dụ của chúng ta 35935 = 1000110001011111 = 0x8C5F.

Nguyên tắc mã hóa tin nhắn

Có thể thấy, một tin nhắn cần được tạo thành từ hai cấu phần: phần thứ nhất mô tả loại tin nhắn, có nghĩa trả lời cho câu hỏi "cần làm gì", phần thứ hai — làm rõ hành động và trả lời cho câu hỏi "cần làm như thế nào". Chẳng hạn, khi ấn phím cấu phần thứ nhất thông báo cho tone-generator "giữ nốt", còn phần thứ hai nói: "Nốt đó là — Đô ở quãng tám nhỏ". Trong một số trường hợp không cần cấu phần hiệu đính, chẳng hạn, trong tin nhắn hệ thống thời gian thực ra lệnh dừng sequencer, chỉ cần một cấu phần nói "stop" đã là đủ.

Các cấu phần tin nhắn trong giao thức MIDI được thể hiện bằng các byte. Cấu phần mô tả loại tin được gọi là status-byte, cấu phần hiệu đính tin — byte dữ liệu (data-byte). Nếu có nhiều thông tin hiệu đính, nó có thể chứa nhiều data-byte. Như vậy, mỗi tin nhắn MIDI được tạo thành từ một status-byte và, nếu cần, cộng thêm sự trợ giúp của một hoặc nhiều data-byte. Các tin nhắn được truyền đi bằng cáp MIDI theo đúng thứ tự đó — đầu tiên là status-byte, sau đó là data-byte. Số lượng các data-byte được kẹp chặt sau mỗi tin nhắn. Vậy, nếu, chẳng hạn, tone-generator đã nhận được status-byte "nhấn phím", nó sẽ chờ đợi sau đó hai data-byte, thứ nhất là chỉ số của phím cần nhấn, thứ hai — vận tốc nhấn (velocity).

Đối với các tin nhắn hệ thống dạng SysEx thì có ngoại lệ — độ dài của chúng không cần được đưa vào một cách cứng nhắc. Nó được xác lập bằng một status-byte chuyên dụng, được ghép vào cuối một tin nhắn nào đó.

Các tin nhắn MIDI — đó là dòng chảy dữ liệu tức thời (real-time). Khi truyền dữ liệu đôi khi có thể xảy ra sự thất lạc và các sự cố ngoài mong đợi. Trong các giao thức mạng điện toán, trong trường hợp nhận được dữ liệu lỗi (được rà soát bằng tổng kiểm tra) sẽ xuất hiện một yêu cầu được gửi tới máy chủ một cách đa tái lập, cho đến khi nào dữ liệu được gửi đến toàn vẹn. Trong giao thức MIDI khả năng đó là không có (ít nhất là, khi truyền các tin nhắn voice), và bộ nhận luôn nằm trong trạng thái bị động trước bộ phát. Cái gì được nhận, thì nhận cái đó.

Từ đó kết luận: cần làm thế nào để bộ nhận có thể phân biệt được status-byte và data-byte trong mọi thời điểm mà không cần bất kỳ báo cáo và nhu cầu nào trong vấn đề đồng bộ với bộ phát. Để làm điều này, trong giao thức MIDI, mỗi một status-byte chứa trong dãy ký số lớn (MSD) một đơn vị, còn mỗi một data-byte — Zero. Như vậy, một bit trong thành phần của byte được chi phí cho công vụ này. Để mã hoá tin nhắn và truyền dữ liệu chỉ còn lại 7 bit. Suy ra — số nền tảng là 128, xuyên thấu toàn giao thức MIDI. Từ 7 bit chỉ có thể tạo ra 128 giá trị khác nhau (từ 0 đến 127, 2⁷-1). Chính vì thế trong MIDI có 128 nốt, 128 cấp độ to nhỏ và vân vân.

Vậy là đã rõ, ngay trong status-byte có thể mã hoá 128 tin nhắn. Các nhà sáng chế giao thức cũng đã có thể làm như vậy, nhưng họ đã không đi theo cách đó, và bằng điều này có thể giải thích trong nhiều thứ có thể giải thích về sự chặt chẽ và sức sống bền bỉ của MIDI. Thứ nhất, 128 tin nhắn, sớm hay muộn cũng sẽ là không đủ, thứ hai, trong mỗi một tin nhắn kênh còn phải truyền đi chỉ số kênh mà tin nhắn được gán. Để phục vụ cho chỉ số kênh buộc phải dành ra một byte dữ liệu, là không hợp lý — các tin nhắn kênh được sử dụng trong MIDI linh động hơn rất nhiều các tin nhắn hệ thống, mà lại gắn vào mỗi tin nhắn đó một byte bổ sung, điều này sẽ làm giảm đi khả năng kiểm soát trạm của MIDI. Hơn nữa có tất cả 16 kênh như thế, và chúng được thể hiện chỉ cần bằng 4 bit. Bởi vậy người ta đã quyết định mã hoá chỉ số kênh trong phần «đàn em» của status-byte (hình 12)

Hình 12.

Thành thử có một bức tranh như sau: bit «anh cả» của status-byte đã bận, bởi luôn luôn phải giữ số 1, bốn bit «đàn em» — cũng vậy, bởi vì chứa thông tin về chỉ số kênh MIDI. Để mã hoá loại tin chỉ còn lại tất cả 3 bit, dựa vào đó có thể mã hoá 8 giá trị. Bẩy trong số đó — người ta đã đưa vào tin nhắn, còn giá trị cuối cùng, cả 3 bit của nó đều là đơn vị (111), người ta đã biến thành dấu hiệu hệ thống. Các tin nhắn hệ thống không đòi hỏi chỉ số kênh, bởi vậy 4 bit «đàn em» của status-byte có thể sử dụng để mã hoá một loại tin cụ thể (như vậy chúng sẽ có tất cả 16 loại).

Tone-generator phân tích byte nhận được đại loại theo sơ đồ sau. Nếu bit «anh cả» bằng zero — đó sẽ là data-byte và 7 bit «đàn em» cần được xem xét như thông số. Nếu bit «anh cả» là 1 — đó sẽ là status-byte, và khi đó 3 bit sau nó thể hiện loại tin. Nếu 3 bit này có giá trị 111, đó là tin nhắn hệ thống, còn loại cụ thể là gì — xem tiếp ở 4 bit đàn em cuối cùng. Trong trường hợp ngược lại — đó là tin nhắn kênh, và khi đó 4 bit «đàn em» nhất sẽ xác định chỉ số kênh. Đối với con người, điều này có vẻ phức tạp, nhưng máy tính phảm ứng với các bit rất «nhàn hạ» và quá trình đã nói ở trên được thực hiện trong vẻn vẹn một phần micro giây.

Tuy nhiên, chúng ta mắc phải vấn đề gì: thay vì 128 tin nhắn có thể có, chúng ta lại mã hoá chỉ có 7 tin nhắn voice và 16 tin nhắn hệ thống? Vâng, chính là như vậy. Các tin nhắn hệ thống, về nguyên tắc, như thế đã là đủ, nhưng còn tất cả các tin nhắn voice thì rõ ràng không thể nào «nhét» vào 7 chỗ. Bởi vậy các nhà sáng chế MIDI đã nghĩ ra phương pháp mã hoá đa cấp. Nhưng chúng ta sẽ bàn tới điều này ở bài sau.


Bạn có muốn sở hữu một bàn phím MIDI di động — CME XKey Air 25 — như thế này không?

MiukaFoto, dịch theo tạp chí Muzoborudovanie, bài viết của Aleksandr Fedorov, 8/2003


18 Jan 2018


Cảm ơn bạn đã đọc. Hãy Đăng ký một tài khoản để nhận tin bài mới từ MiukaFoto. Thank you!




Hashtags:
MIDI
 

Back to List

Bạn muốn để lại lời nhắn? Hãy đăng nhập nhé <3!