Sử dụng bàn phím piano làm bàn phím máy tính [đóng]


727

Tôi gặp vấn đề về RSI và đã thử 30 bàn phím máy tính khác nhau, tất cả đều khiến tôi đau đớn. Chơi piano không làm tôi đau. Tôi đã chơi piano trong khoảng 20 năm mà không có vấn đề đau đớn. Tôi muốn biết nếu có một cách để ghi MIDI từ bàn phím MIDI và xuất ra các nét bàn phím. Tôi không biết gì về MIDI nhưng tôi muốn có một số hướng dẫn về cách chuyển đổi tín hiệu này thành tổ hợp phím.


Tại sao để chụp midi, nếu bạn có thể sử dụng bàn phím tổng hợp làm bàn phím?
shevski

@I__: Bạn cần hỗ trợ hệ điều hành nào? Nó có thể sẽ quan trọng.
TJ Crowder

5
@shevski: Tôi không cố làm gì cả, @I__ là người đặt câu hỏi. Anh ấy / cô ấy không muốn chuyển đổi âm thanh , mà thay vào đó là tín hiệu sự kiện bàn phím kỹ thuật số được gửi bởi bàn phím điện tử thông qua Giao diện kỹ thuật số Nhạc cụ . Chúng rất giống với các sự kiện bàn phím máy tính: "Ghi chú" tương ứng với phím tắt, "ghi chú" với phím, v.v. Thậm chí bạn có thể sử dụng dữ liệu vận tốc để thực hiện các hành động khác nhau tùy thuộc vào cách "hợp âm" được chơi. Tôi thích ý tưởng.
TJ Crowder

34
Nếu bạn làm điều này hoạt động, bạn có thể mã bằng bất kỳ loại thiết bị midi nào. Có thể cần một số thực hành, nhưng sử dụng một dàn nhạc làm nhóm phát triển sẽ rất vui.
Toon Krijthe

1
@I__: Câu trả lời được đánh giá cao nhất đưa bạn đến hỗ trợ MIDI của API âm thanh Java, điều này sẽ giúp bạn nhận được dữ liệu MIDI và mô tả chi tiết lý thuyết liên quan đến việc biến nó thành chuỗi các lần nhấn phím. Các câu trả lời thứ hai upvoted nhất nói về một cách rất hữu hiệu đối với bạn sau đó có thể kết nối đến một máy tính sử dụng một Arduino, bao gồm ... (tiếp theo)
TJ Crowder

Câu trả lời:


16

Một thư viện tốt trong .NET có hỗ trợ midi đầy đủ (BASS), hãy truy cập http://www.un4seen.com .

Và về phần khác, dịch các ghi chú midi bàn phím sang các phím và hơn thế nữa, tôi sẽ chuyển sang AutoItX, giao diện ActiveX / COM và DLL sang autoIt. Thông tin và tải xuống, hãy truy cập http://www.autoitscript.com/site/autoit/

Không cần phải viết trình điều khiển bàn phím.


430

Tôi đã không thực hiện bất kỳ chương trình MIDI nào trong nhiều năm, nhưng ý tưởng cơ bản của bạn là rất hợp lý (không chơi chữ).

MIDI là một dòng "sự kiện" (hoặc "tin nhắn"), hai trong số những điều cơ bản nhất là "ghi chú trên" và "ghi chú tắt" mang theo số ghi chú (0 = C năm quãng tám dưới giữa C, đến 127 = G năm quãng tám trên G trên giữa C, trong bán âm). Những sự kiện này mang số "vận tốc" trên bàn phím nhạy cảm với vận tốc ("nhạy cảm với cảm ứng"), với một lực (bạn đoán nó) trong khoảng từ 0 đến 127.

Giữa vận tốc, từ ngữ và bàn đạp, tôi nghĩ bạn có thể tạo ra một giao diện "gõ" khá tốt cho bàn phím piano. Nói riêng, từ ngữ có thể là một kỹ thuật rất mạnh mẽ - như tôi đã đề cập trong các bình luận, đó là lý do tại sao các nhà viết tốc ký xếp hạng và tập tin có thể sử dụng một máy in khuôn mẫu để theo kịp những người nói chuyện hàng giờ liền, khi mà ngay cả những người đánh máy hàng đầu cũng không không thể kéo dài thời gian thông qua bàn phím kiểu chữ thông thường. Cũng như viết tốc ký máy, bạn cần có một "từ điển" về ý nghĩa của hợp âm và chuỗi hợp âm. (Bạn có thể nói tôi đã từng làm việc trong phần mềm của tốc độ máy không?)

Để làm điều này, các phần cơ bản là:

  • Nhận đầu vào MIDI. Đừng cố gắng tự làm điều này, hãy sử dụng một thư viện. Chỉnh sửa : Rõ ràng, API âm thanh Java hỗ trợ MIDI , bao gồm nhận các sự kiện từ bộ điều khiển MIDI. Mát mẻ. Trang này cũng có thể hữu ích.
  • Chuyển đổi dữ liệu đó thành tổ hợp phím bạn muốn gửi, ví dụ như qua từ điển tôi đã đề cập ở trên.
  • Xuất các tổ hợp phím cho máy tính.

Để tương thích rộng rãi nhất với phần mềm, bạn phải viết phần này dưới dạng trình điều khiển thiết bị bàn phím. Đây là một bổ trợ cho hệ điều hành đóng vai trò là nguồn cho các sự kiện bàn phím, nói chuyện với phần cứng bên dưới (trong trường hợp của bạn là bàn phím piano). Đối với Windows và Linux, có lẽ bạn sẽ muốn sử dụng C cho điều đó.

Tuy nhiên, vì bạn chỉ tạo ra tổ hợp phím (không cố gắng chặn chúng, điều mà tôi đã cố gắng thực hiện nhiều năm trước), bạn có thể sử dụng bất kỳ tính năng nào mà hệ điều hành có để gửi tổ hợp phím nhân tạo. Windows có một giao diện để thực hiện điều đó (có thể là một số giao diện mà tôi đang nghĩ đến SendInputnhưng tôi biết có một giao diện "nhật ký" nào đó tương tự) và tôi chắc chắn các hệ điều hành khác cũng làm như vậy. Điều đó có thể đủ cho mục đích của bạn - đó là nơi tôi bắt đầu, vì tuyến đường trình điều khiển thiết bị sẽ trở nên khó xử và có lẽ bạn phải sử dụng một ngôn ngữ khác cho ngôn ngữ đó so với Java. (Tôi là một fan hâm mộ lớn của Java, nhưng các giao diện mà các hệ điều hành sử dụng để nói chuyện với trình điều khiển thiết bị có xu hướng dễ dàng sử dụng hơn thông qua C và tương tự.)


Cập nhật : Thông tin thêm về "từ điển" của hợp âm cho tổ hợp phím:

Về cơ bản, từ điển là một Trie (nhờ, @ Adam) mà chúng ta tìm kiếm với kết hợp dài nhất-prefix. Chi tiết:

Trong viết tốc ký máy, người viết tốc ký viết bằng cách nhấn nhiều phím trên máy in khuôn mẫu cùng một lúc, sau đó phát hành tất cả. Họ gọi đây là "đột quỵ" của bàn phím; nó giống như chơi một hợp âm trên piano. Các nét thường xuyên (nhưng không phải luôn luôn) tương ứng với một âm tiết của ngôn ngữ nói. Giống như âm tiết, đôi khi một nét (hợp âm) có ý nghĩa riêng, đôi khi nó chỉ có ý nghĩa kết hợp với các nét sau. (Hãy nghĩ "tốt" so với "tốt" theo sau là "tạm biệt"). Mặc dù họ sẽ bị ảnh hưởng nặng nề bởi ngôi trường nơi họ theo học, mỗi người viết tốc ký sẽ có "từ điển" của riêng họ về những nét mà họ sử dụng để nói về điều gì, một cuốn từ điển họ sẽ tiếp tục trong suốt cuộc đời làm việc của họ. Từ điển sẽ có các mục trong đó phần viết tắt ("steno", viết tắt) là một nét dài hoặc nhiều nét dài. Thông thường, sẽ có một vài mục có cùng một nét bắt đầu được phân biệt bởi độ dài của chúng và bởi các nét tiếp theo. Chẳng hạn (và tôi sẽ không sử dụng steno thật ở đây, chỉ là giữ chỗ), có thể có những mục sau:

A = alpha
A / B = bảng chữ cái
A / B / C = chữ cái
A / C = máy lạnh
B = ong
B / C = vì
C = biển
D = chó
D / D = Dee Dee

(Những chữ cái đó không có nghĩa là những nốt nhạc, chỉ là những dấu hiệu trừu tượng.)

Lưu ý rằng Abắt đầu nhiều mục và cũng lưu ý rằng cách bạn dịch Cđột quỵ tùy thuộc vào việc trước đây bạn đã thấy một A, a Bhoặc bạn đang bắt đầu mới.

Cũng lưu ý rằng (mặc dù không được hiển thị trong mẫu rất nhỏ ở trên), có thể có nhiều cách để "chơi" cùng một từ hoặc cụm từ, thay vì chỉ một. Người viết tốc ký làm điều đó để dễ dàng chuyển từ từ trước sang từ tiếp theo tùy theo vị trí tay. Có một sự tương đồng rõ ràng với âm nhạc ở đó, và bạn có thể sử dụng nó để làm cho việc gõ phím của bạn giống với việc phát nhạc hơn, để ngăn chặn điều này ảnh hưởng tiêu cực đến việc chơi piano của bạn và tối đa hóa khả năng điều này thực sự giúp ích cho RSI.

Khi dịch steno thành văn bản tiêu chuẩn, một lần nữa chúng ta sử dụng tìm kiếm "khớp tiền tố dài nhất": Thuật toán dịch bắt đầu bằng nét đầu tiên được viết và tìm kiếm các mục bắt đầu bằng nét đó. Nếu chỉ có một mục nhập và dài một nét, thì chúng ta có thể nói một cách đáng tin cậy "đó là mục nhập để sử dụng", xuất văn bản tương ứng và sau đó bắt đầu làm mới với nét tiếp theo. Nhưng nhiều khả năng, đột quỵ đó bắt đầu nhiều mục có độ dài khác nhau. Vì vậy, chúng tôi xem xét các nét tiếp theo và xem nếu có các mục bắt đầu với hai nét đó theo thứ tự; và cứ như vậy cho đến khi chúng tôi có được một trận đấu.

Vì vậy, với từ điển ở trên, giả sử chúng ta đã thấy trình tự này:

Ngân hàng ACBBCABCABD

Đây là cách chúng tôi dịch nó:

  1. Alà sự khởi đầu của ba mục có độ dài khác nhau; nhìn vào đột quỵ tiếp theo:C
  2. A/Cchỉ khớp với một mục; đầu ra "điều hòa không khí" và bắt đầu làm mới với cú đánh tiếp theo:B
  3. Bbắt đầu hai mục; nhìn vào đột quỵ tiếp theo:B
  4. B/Bkhông bắt đầu bất cứ điều gì; lấy trận đấu dài nhất trước đó ( B) và xuất ra ("con ong")
  5. Có đầu ra B= "con ong", chúng ta vẫn có một Bnét trong bộ đệm. Nó bắt đầu hai mục, vì vậy hãy nhìn vào nét tiếp theo:C
  6. B/Cphù hợp với một mục; xuất "bởi vì" và bắt đầu mới với đột quỵ tiếp theo:A
  7. Abắt đầu ba mục; nhìn vào cú đánh tiếp theo:B
  8. A/Bbắt đầu hai mục; nhìn vào cú đánh tiếp theo:C
  9. A/B/Cchỉ phù hợp với một mục; xuất "alphabetic" và bắt đầu làm mới với nét tiếp theo:A
  10. Abắt đầu ba mục; nhìn vào đột quỵ tiếp theo:B
  11. A/Bbắt đầu hai mục; nhìn vào đột quỵ tiếp theo:D
  12. A/B/Dkhông khớp với bất cứ thứ gì, vì vậy hãy lấy kết quả khớp dài nhất trước đó ( A/B) và sử dụng nó để xuất "bảng chữ cái". Điều đó khiến chúng ta Dvẫn còn trong bộ đệm.
  13. Dbắt đầu hai mục, vì vậy chúng ta thường nhìn vào nét tiếp theo - nhưng chúng ta đã xử lý tất cả các nét, vì vậy hãy xem xét nó một cách cô lập. Trong sự cô lập, nó dịch là "con chó" vì vậy đầu ra mà.

Các khía cạnh trên cần lưu ý:

  • Bạn có một bộ đệm các nét bạn đã đọc nhưng chưa được dịch.
  • Bạn luôn muốn khớp nhiều nét nhất với một mục mà bạn có thể. A/Bnên được dịch là "bảng chữ cái", không phải "alpha" và "ong".
  • (Không được hiển thị ở trên) Bạn cũng có thể có các chuỗi các nét mà bạn không thể dịch, vì chúng không khớp với bất cứ thứ gì trong từ điển. (Người Steno sử dụng danh từ "chưa dịch" - ví dụ, với từ điển của chúng tôi, các nét Esẽ là "chưa dịch".)
  • (Không được hiển thị ở trên) Một số lý thuyết về steno cho phép cùng một tập hợp các nét có nghĩa nhiều hơn một điều, dựa trên bối cảnh rộng hơn. Người Steno gọi đây là những "xung đột". Bạn có thể muốn không cho phép họ trong dự án của bạn và trên thực tế khi steno được dịch bởi người viết tốc ký, các xung đột vẫn ổn vì họ biết ngay trong câu nào họ là lựa chọn đúng, nhưng với sự gia tăng về dịch máy, các lý thuyết không xung đột về steno nảy sinh đặc biệt để tránh phải thông qua văn bản dịch kết quả và xung đột "sửa chữa".
  • Dịch theo thời gian thực (mà bạn đang thực hiện) có nghĩa là nếu bạn nhận được một phần khớp, bạn sẽ muốn giữ nó trong khi chờ hợp âm tiếp theo - nhưng có lẽ chỉ đến một khoảng thời gian chờ, tại thời điểm đó bạn sẽ dịch những gì bạn có trong bộ đệm tốt nhất có thể. (Hoặc có thể bạn không muốn thời gian chờ; đó là cuộc gọi của bạn.)
  • Có lẽ tốt nhất để có một đột quỵ nói rằng "bỏ qua các đột quỵ trước"
  • Có lẽ tốt nhất để có một đột quỵ nói rằng "hoàn toàn xóa bộ đệm mà không xuất ra bất cứ điều gì"

6
@I__: Một số chương trình cố gắng nói chuyện trực tiếp với thiết bị bàn phím và vì vậy đừng chơi độc đáo với giao diện giống như "sendkey". Hy vọng rằng điều này thậm chí còn ít phổ biến hơn so với một số năm trước khi tôi xử lý vấn đề này lần cuối, và như tôi nói, tôi bắt đầu với "những con lừa" giống như các cơ chế và chỉ lo lắng về vấn đề khác nếu và khi bạn cần. (Có lẽ tốt nhất để thực hiện kiểm tra chương trình nhanh chóng gửi khóa [một mình, không phải bằng cách nhận chúng từ MIDI] - bao gồm các chuỗi khóa đặc biệt - và sau đó kiểm tra điều đó với phần mềm bạn muốn kiểm soát trước khi bạn đi quá xa .)
TJ Crowder

7
Đối với những người chưa bao giờ nghe về điều này, từ điển bạn mô tả về cơ bản là một Trie (phát âm là 'thử')
Adam

14
@I__: Thú vị viết ngay bây giờ để nói rằng. Nhiều hơn những gì bạn muốn? Tôi nghĩ rằng tôi đã giải quyết nhiều khía cạnh quan trọng của những gì bạn cần làm. Tôi đã không làm điều đó, cũng không chỉ cho bất cứ ai có, bởi vì tôi có những việc khác phải làm và không biết về một giải pháp được xây dựng trước. Nhưng về mặt xây dựng giải pháp, tôi nghĩ tôi đã chỉ cho bạn đi đúng hướng.
TJ Crowder

2
Lưu ý rằng bạn có thể kẹt tất cả các hợp âm trong một mảng tuyến tính và thực hiện chuyển động mỗi khi bạn nhận được một sự kiện midi, và vẫn không gặp phải bất kỳ sự chậm lại đáng chú ý nào. Sử dụng một trie có mùi hơi tối ưu hóa sớm.
FeepingCreature

5
@FeepingCreature: Khi tôi làm việc này với các nhà viết tốc ký và phóng viên tòa án, từ điển của họ có thể dễ dàng chạy đến hàng trăm ngàn mục (tôi nhớ một người đã phá vỡ hàng triệu điểm). Không có gì sớm từ xa về việc sử dụng một chiến lược tối ưu hóa, chúng tôi đã xử lý 12 MHz 386 MHz. Trong trường hợp của tôi, nếu anh ấy đi với ý tưởng Arduino (đó là một ý tưởng thực sự tuyệt vời), anh ấy cũng sẽ phải đối phó với phần cứng khá yếu cho thời kỳ hiện đại, mặc dù tất nhiên mọi thứ nhanh hơn nhiều so với những gì chúng ta có. Tôi nghĩ rằng từ điển của anh ấy sẽ có xu hướng nhỏ hơn đáng kể, nhưng ...
TJ Crowder

184

Cân nhắc làm một cái gì đó trong phần cứng mô phỏng bàn phím usb (hoặc ps / 2?). Bạn sẽ không còn phụ thuộc vào một HĐH cụ thể hoặc API hệ điều hành cụ thể. Một giải pháp phần cứng sẽ đứng trước thử thách của thời gian. Đừng bị mắc kẹt khi sử dụng API cũ trong Windows 7 khi mọi người khác đang chạy Windows 11! Arduino khá dễ học.

Có rất nhiều thông tin và trợ giúp cho Arduino. Nó là một nền tảng hack phần cứng được xây dựng cho người mới. Nó sẽ chỉ trở nên lớn hơn khi Google đang đẩy Arduino.

EDIT: Phần mềmphần cứng Bàn phím USB ảo


Tôi thích ý tưởng sử dụng Arduino cho việc này. Bộ nhớ có thể là một vấn đề, mặc dù. Có vẻ như các bảng được thiết kế sẵn lớn nhất có 256k Flash (trong đó 8k được sử dụng bởi bộ tải khởi động). Trước đây, chúng tôi đã nhồi nhét dịch / hiển thị / chỉnh sửa thời gian thực của máy tốc ký thành 1M trong DOS (ví dụ: 640k thông thường cộng với EMS hoặc bộ nhớ mở rộng), nhưng chúng tôi đã viết mã C và lắp ráp chặt chẽ và từ điển (có thể dễ dàng được> 250k một mình) đã có trên đĩa. Ở đây không có hiển thị hoặc chỉnh sửa đồng thời, vì vậy điều đó tốt, nhưng từ điển sẽ phải nhỏ ...
TJ Crowder

Ồ, không có gì. Tôi thường xuyên xử lý các phóng viên tòa án có từ điển rằng, thậm chí được lưu trữ ở dạng rất nhỏ gọn mà chúng tôi sử dụng, có kích thước nhiều megabyte. Cá nhân lớn nhất tôi thấy là 4,5 MB - và một lần nữa, được lưu trữ ở dạng nén cao. Kết hợp với thực tế là có ít phím trên bàn phím steno hơn bàn phím piano ... Tuy nhiên, Arduino có cổng USB, do đó, từ điển có thể nằm trên bộ chuyển đổi flash USB hoặc thậm chí là (được cung cấp năng lượng bên ngoài ) SSD hoặc ổ cứng.
TJ Crowder

2
@you có thể muốn xem xét một thiếu niên thay vì arduino ( pjrc.com/teensy ) bộ nhớ nhiều hơn đáng kể và có thể mô phỏng trực tiếp bàn phím. Nó tương thích với nhiều thư viện arduino đã có và những thư viện không tương thích chỉ yêu cầu phân bổ lại pin. - luân phiên, atmega cũng tạo một bảng demo có 16 MB flash tích hợp và có giá khoảng 30 đô la (at90usbkey)
Marc

8
Thiết kế một giao diện piano hữu ích cho máy tính không phải là một nhiệm vụ dễ dàng. IMHO, OP trước tiên nên tạo nguyên mẫu cho nó trong môi trường hiện tại của mình, sau đó, NẾU nó đáp ứng nhu cầu của anh ấy / cô ấy, lo lắng về tính di động. Trừ khi, tất nhiên, sự thay thế di động không khó hơn đáng kể.
Emilio M Bumachar

111

Tôi nghe có vẻ như bạn đang tìm kiếm ít lời khuyên về cách tự xây dựng cái này và hỏi thêm những tài nguyên nào đã có sẵn để thực hiện những gì bạn muốn. Tùy thuộc vào hệ điều hành của bạn, có nhiều cách để thực hiện việc này mà không phải viết chương trình của riêng bạn từ đầu:

Đột quỵ MIDI

Miễn phí. Dành cho Mac OS X 10.3 trở lên . Điều này đặc biệt đi kèm với "khả năng sử dụng bất kỳ bàn phím MIDI nào như một sự thay thế bàn phím máy tính đầy đủ."

Trình dịch MIDI của Bome

Miễn phí / Bưu thiếp (nó hơi kỳ quặc). Đối với Windows 2000 trở lên, và Mac OS X . Ban đầu nó có vẻ hướng đến việc sử dụng AutoHotkey -type hơn, nhưng nhìn xa hơn tôi nghĩ nó có thể làm những gì bạn muốn một cách độc đáo.

Tối đa và aka.keyboard

Miễn phí. Đối với Mac OS X . Không chính xác là một giải pháp "sẵn sàng", nhưng nếu bạn cảm thấy thoải mái với cấu hình thiết bị cơ bản, thì nó không quá tệ.


49

Bạn có thể truy cập phần cứng với các mẫu mã nguồn bằng .NET trong MIDI DotNet .

Một mẫu làm việc hoàn chỉnh dưới dạng mã nguồn để tạo luồng dữ liệu ghi chú MIDI nằm trong VB 5/6-Tipp 0521: MIDI-Töne erzeugen (Visual Basic 6.0, ở đâu đó cũng là phiên bản .NET)

Một cách để mô phỏng các nét của bàn phím là trong VB 5/6-Tipp 0155: Tastaturereignisse simulieren (Visual Basic 6.0, ở đâu đó cũng là phiên bản .NET)

Và nhận ra các tổ hợp phím được mô tả trong Tipp-Upload: VB.NET 0266: GlobalH KeyHook .

Nhập mô tả hình ảnh ở đây

Sau đó, chỉ cần sử dụng một ma trận làm việc tốt cho một người chơi đàn piano Timo Boehme www.goldengel.ch

Trên piano và khi bạn là một người chơi giỏi, bạn có thể có 10 ngón tay trên bàn phím và nếu ma trận có thể sử dụng được, bạn có thể nhanh hơn nhiều so với bất kỳ người dùng bàn phím máy tính nào tôi nghĩ. :-)

Trong trường hợp đó, nếu tôi hiểu đúng câu hỏi của bạn, thì đó không phải là một vấn đề lớn.


41

Tôi đã học biểu diễn piano ở trường đại học và sau đó tham gia thiết kế tương tác, lập trình và sử dụng Vim , vì vậy tôi thực sự đã dành rất nhiều thời gian để tạo ra những thứ như thế này.

Bạn có thể làm việc này khá nhanh trong Linux bằng cách sử dụng ngôn ngữ lập trình đồ họa cho các nghệ sĩ đa phương tiện, " Pure Data ", cùng với x11key bên ngoài của Alex Andre .

Trên máy Mac, bạn có thể sử dụng MidiStroke . Tôi tin rằng một phương pháp trên Windows liên quan đến các công cụ MidiOxAutoHotKey . Tại một thời điểm khác, tôi đã có một phiên bản sử dụng plugin Java cho Max / MSP . Tôi tin rằng Patrice Colet đã tạo một cửa sổ bên ngoài cho Pure Data cũng hoạt động, nhưng dường như tôi không thể định vị được nó nữa. Ngoài ra, có một bên ngoài cho MaxMSP có thể làm điều này trên Windows. Cuối cùng, Công cụ tạo dao động miễn phí nhưng tuyệt vời có thể làm những gì bạn muốn - xem trang tính năng.

Khi tôi làm cho nó hoạt động, tôi không bao giờ bị mắc kẹt với nó, bởi vì tôi không thể ngừng công cụ với bố cục. Thật tuyệt khi chỉ có màn hình trên bàn phím điện của tôi! Chúc may mắn.


37

Giới thiệu về MIDI

Bạn nói rằng bạn "không biết gì về MIDI". Công nghệ MIDI khá đơn giản một khi bạn nắm bắt được nó, nhưng nó có thể gây nhầm lẫn ngay từ đầu. Một trong những tài nguyên rất hữu ích cho tôi trong việc tìm hiểu nền tảng cho MIDI (chắc chắn là cần thiết nếu bạn muốn lập trình các tương tác MIDI), là một cuốn sách có tên MIDI cho Technophobe . Đó là một cuốn sách dễ đọc và rất hữu ích.


Dữ liệu thuần túy & Tối đa

Theo kinh nghiệm của tôi khi phát triển đa phương tiện tương tác, có hai chương trình rất giống tôi đã gặp phải, tạo điều kiện cho việc kết nối và ánh xạ tín hiệu / đầu vào từ bất kỳ thiết bị nào.

Đây là Max cho môi trường Mac và Pure Data cho môi trường PC. Cả hai đều có rất nhiều tài liệu trực tuyến và hướng dẫn trên YouTube. Video Max / MSP Hướng dẫn 1 - sử dụng bàn phím máy tính của bạn dưới dạng midikeyboard (kiểu ableton) thể hiện một chương trình được xây dựng trong Max ánh xạ bàn phím máy tính sang đầu vào của bàn phím MIDI (về cơ bản hoàn toàn ngược lại với những gì bạn đang cố gắng thực hiện). Bạn có thể nhận được kết quả dự định của mình bằng cách sử dụng cùng một mẫu, nhưng đảo ngược tín hiệu / ánh xạ.


AutoHotKey

AutoHotKey là một tiện ích mã nguồn mở miễn phí cho Windows, cho phép bạn sắp xếp lại các phím và nút trên thiết bị của mình thành macro. Nó thực sự hỗ trợ bàn phím QWERTY, cần điều khiển và macro chuột.

Tuy nhiên, tôi đã có thể tìm thấy một triển khai hỗ trợ ánh xạ cụ thể mà bạn đang tìm kiếm. Hai chủ đề này giải thích quá trình:

  1. Hỗ trợ MIDI IN trong AutoHotkey , cuộc thảo luận về trường hợp sử dụng. Tác giả đang tìm kiếm một chương trình có thể phát hiện đầu vào MIDI IN và dịch nó sang nhấn phím .

  2. Thư viện đầu vào MIDI , giải pháp cho vấn đề của tác giả và mã / bản vá được đăng lên AutoHotKey thực sự thực hiện kết quả dự định của bạn.

Về cơ bản, có vẻ như AutoHotKey, cùng với bản vá tùy chỉnh của người dùng này, sẽ cung cấp chính xác những gì bạn cần để tạo ánh xạ từ bàn phím MIDI sang tín hiệu đầu vào của bàn phím QWERTY. Tất cả bạn phải làm là cài đặt, cấu hình và xác định ánh xạ của bạn.


Còn gì nữa không?

Nói chung, một số câu trả lời khác đã cung cấp cho bạn nhiều thông tin sâu rộng hơn về lập trình MIDI và MIDI, nhưng như bài đăng của bạn nói rằng dường như không giống như những gì bạn đang tìm kiếm. Tôi muốn giúp bạn nhiều hơn nếu có thể, nhưng sẽ dễ dàng hơn nếu bạn có thể cụ thể hơn về loại thông tin bạn đang tìm kiếm. Ví dụ, bạn có nhiều quan tâm đến việc làm thế nào để chuyển đổi tín hiệu đầu vào một bàn phím MIDI của một QWERTY tín hiệu bàn phím của , hoặc là quan tâm chính của bạn tìm kiếm một trong số các giải pháp hộp cho vấn đề cụ thể của bạn? Bạn đang tìm kiếm cái gì chưa được giải quyết?


27

Bạn có thể hack bàn phím USB của riêng mình khá nhanh bằng bộ điều khiển vi mô Teenys.

Trên thực tế, họ có mã ví dụ về cách tạo bàn phím USB .

Bạn có thể tiếp cận hai cách này:

  1. Nhận một cây đàn piano cũ và nối dây trực tiếp với thanh thiếu niên

  2. Thêm logic bổ sung để kết nối với cổng MIDI và giải mã cần thiết.


Đây là câu trả lời hứa hẹn nhất vì một khi bạn hoàn thành các thiết bị, nó sẽ hoạt động trên mọi máy tính và bất kỳ HĐH nào. Mang nó vào để làm việc hoặc vui mừng rằng bạn có thể nâng cấp máy tính của mình mà không phải lo lắng về bàn phím. Tôi sẽ sử dụng hai thiết bị Teensy và kết nối chúng với nhau bằng các chân I / O của chúng. Vì Teensy đã hỗ trợ USB MIDI pjrc.com/teensy/td_midi.html mã của bạn chỉ cần chăm sóc các tín hiệu di chuyển giữa thanh thiếu niên bàn phím và thanh thiếu niên midi.
Michael Dillon

24

Trên thực tế, tôi đã làm việc này cách đây một thời gian, cố gắng ghi lại các đầu vào trống Rock Band vào máy tính của tôi (tạo một trình giả lập trống tự chế Java nhỏ) Dù sao, tôi đã hỏi một câu hỏi ở đây về vấn đề trì hoãn thời gian (có mã bỏ phiếu trong đó , cùng với những gì tôi đã cố gắng làm.). Và nếu tôi có thể tìm thấy chương trình của mình, tôi có thể cung cấp cho bạn mã, nó sử dụng API của bên thứ ba ( JInput ).

Chúc may mắn bằng một trong hai cách.


23

Hãy thử trình dịch MIDI của Bome .

Nó hoạt động đa nền tảng, có thể chuyển đổi bất kỳ đầu vào MIDI nào thành một tổ hợp phím một cách dễ dàng, nhanh chóng để thiết lập và định cấu hình, cộng với nó miễn phí cho sử dụng cá nhân.

Có một hướng dẫn, Mẹo nhanh: Dịch MIDI - MIDI sang tổ hợp phím , về cách dễ dàng thiết lập:

Về cơ bản, có những khả năng vô hạn về những gì bạn có thể làm, bao gồm các phím theo dõi và phím bổ trợ. Tôi sử dụng nó cho dàn âm thanh trực tiếp của mình để điều khiển DAW của mình bằng piano và chưa bao giờ gặp sự cố.


18

Trong Java, bạn có thể sử dụng JMF (khung phương tiện Java) để chuyển đổi tín hiệu MIDI. Cơ bản của thiết kế bàn phím rất dễ sử dụng, đó là giao diện người dùng; và nơi thường xuyên sử dụng charcter / biểu tượng tiện dụng.

Mã mẫu và API trong Tài nguyên âm thanh Java: Ví dụ: Xử lý tín hiệu số (DSP) giúp hiểu cách xử lý tín hiệu.

Một số tài liệu tham khảo thêm:


15

Có một chương trình gọi là Găng tay . Bạn có thể lập trình nó bằng ngôn ngữ kịch bản đơn giản và tôi tin rằng nó hỗ trợ MIDI. Tôi không chắc điều này có phù hợp với danh mục "Java" hay không, nhưng vẫn là một chương trình tuyệt vời. Tôi đã sử dụng nó để điều khiển robot bằng bộ điều khiển PS3 . Nó rất mạnh mẽ.


15

Nhiều bàn phím có đầu nối cổng nối tiếp ( RS-232 ) để gửi tín hiệu MIDI đến máy tính. Tôi sử dụng một chương trình có tên Girder để chuyển đổi giao tiếp cổng nối tiếp thành các nét bàn phím.

Girder có tính năng "ánh xạ" cho phép bạn ánh xạ từng phím, từng phím một, đến tổ hợp phím tương ứng.

Đây có thể là giải pháp đơn giản mà bạn đang tìm kiếm!


12

Chỉ cần học viết tốc ký!

Rõ ràng từ tất cả các cuộc thảo luận về phía bạn. Bạn không muốn phát minh lại bất kỳ bánh xe nào, từ quan điểm kỹ thuật. Nhưng một khi bạn có một kết nối được thực hiện (những gì câu hỏi này đang hỏi) và tiếp tục hoạt động, bạn vẫn có hầu hết các công việc trước mắt: Bạn phải đào tạo bộ não của mình. Bạn cũng phải phát minh ra cách thông minh nhất, hiệu quả nhất để làm điều đó - một vấn đề thiết kế hoàn toàn vượt ra khỏi sự khoa trương của các kỹ thuật viên máy tính. Bạn hoặc bất kỳ ai trong chúng ta sẽ bị hụt hẫng.

May mắn thay, vấn đề đã được giải quyết và mài giũa qua nhiều thế kỷ trưởng thành ...

Học viết tốc ký!

Vâng, điều này sẽ đặt lại cho bạn một số jack. Nhưng hàng trăm giờ thời gian của bạn có giá trị là bao nhiêu, cuối cùng, một kết quả kém thuận lợi là gì? Bên cạnh đó, bài viết trên Wikipedia viết , 'nó trông giống bàn phím piano'.

Trừ khi, tất nhiên, bạn muốn có một hiệu ứng trình diễn đi. Tôi sẽ phải thừa nhận, tôi chưa bao giờ nghĩ về khả năng này, nó sẽ thực sự thú vị khi thấy ai đó bật ra một văn bản từ bàn phím piano!

Bạn có thể bắt đầu với bàn phím USB bằng bàn di chuột (hoặc thanh trỏ sẽ tiện dụng hơn?), Sử dụng Plover để dịch nó (Tôi chắc chắn rằng nó có thể được cấu hình để cho phép các phím không chữ giữ nguyên chức năng của chúng vì chúng rất quan trọng đối với lập trình), hoặc, theo chủ đề Re: Plover keyboard để cuộn bàn phím ghi chú USB của riêng bạn, hoặc, mua một bản mẫu .

Chúc may mắn!


{Và} trên bàn phím ghi chú ở đâu? Làm thế nào bạn sẽ gõ tên mà không phải là từ, như thế pthreadnào?
bobobobo

Liên kết wikipedia là sai và phải là en.wikipedia.org/wiki/Stenography
joelhoro

11

Hãy xem chơi game MAME . Họ đã xây dựng các thiết bị phần cứng để cho phép đầu vào từ bất kỳ số lượng các mặt hàng khác nhau. Các IPAC , ví dụ, chuyển đổi tín hiệu từ các thiết bị đầu vào USB mà máy tính có thể sau đó sử dụng các phím thi đua. Bạn có thể sử dụng bất kỳ sự kết hợp nào của các thiết bị đầu vào được sắp xếp theo bất kỳ cách nào có vẻ thoải mái mà không cần logic lập trình điên rồ - bởi vì phần mềm để giải thích đầu vào đã được thực hiện và được kiểm tra tốt.

Tôi đã thấy đầu vào buồng lái giả lập chuyến bay, kiốt tùy chỉnh và hệ thống bỏ phiếu được xây dựng theo phương pháp này ..... và giá cả phù hợp!


10

Để giải quyết điều này, bạn sẽ cần một vài điều:

  1. Một cách để thu thập dữ liệu MIDI từ bàn phím của bạn. Tùy thuộc vào giao diện: Giao diện MIDI (cổ điển) hoặc giao diện USB MIDI (hiện đại) giao diện rất có thể là máy tính vì nó cung cấp nhiều tùy chọn nhất. Bộ vi điều khiển máy chủ lưu trữ USB không đơn giản như chỉ sử dụng máy tính.

  2. Một kế hoạch để chuyển đổi dữ liệu MIDI thành tổ hợp phím. Giống như một người dùng đã chỉ ra, hợp âm là cách để đi vì số lượng phím sẽ không phụ thuộc vào số lượng phím đàn piano.

  3. Một cách để đưa một khóa vào hệ điều hành. Điều này sẽ yêu cầu một trình điều khiển cấp thấp là chính xác. Tôi đã chơi xung quanh với các ứng dụng đưa dữ liệu bàn phím và chuột vào các ứng dụng trong Windows 7, và nó có thể bị rung và phụ thuộc vào việc ứng dụng hiện đang được tập trung hay không. Đây là phần khó nhất của giao diện. Những gì có thể làm việc là tạo ra một vi điều khiển bàn phím HID USB cũng có giao diện nối tiếp.

Giao diện nối tiếp sẽ tạo ra một cổng nối tiếp ảo. Phần mềm đọc dữ liệu MIDI và tạo ra tổ hợp phím có thể gửi tin nhắn nối tiếp đến cổng nối tiếp ảo. Bộ vi điều khiển sẽ gửi một tổ hợp phím để nó trông giống như một đầu vào bàn phím tiêu chuẩn. Điều này sẽ cho phép giao tiếp cả cổng MIDI và bàn phím USB MIDI.

Hmmm, với loại giao diện này, bạn cũng có thể mô phỏng chuột và sử dụng một số thiết lập phím đàn piano cho trục và nút chuột. Áp suất có thể được sử dụng để xác định vận tốc con trỏ chuột. Vì vậy, bạn có thể loại bỏ chuột là tốt. Một lợi ích khác của phương pháp này là bất kỳ loại thiết bị đầu vào nào bạn kết nối có thể nói chuyện với cổng nối tiếp ảo để tạo ra các sự kiện bàn phím và chuột. Vì vậy, nếu bạn muốn thêm phần cứng khác như bàn đạp trống hoặc cần điều khiển, đó sẽ là vấn đề điều chỉnh chương trình nói chuyện với giao diện nối tiếp.

Một cách khác ở trên giống như một số được đăng ở trên để sử dụng Arduino, nhưng cũng bao gồm USB Host Shield từ Sparkfun để xử lý bàn phím nhạc dựa trên USB. Điều này cho phép Arduino được lập trình như một tổ hợp chuột bàn phím hoặc bàn phím trong chip bộ tải khởi động và cho phép thiết bị hoạt động một máy chủ USB cho bàn phím nhạc dựa trên USB. Sau đó, bạn được bảo hiểm cho cả hai loại. Mặc dù, tôi vẫn nghĩ rằng phương thức cổng nối tiếp ảo linh hoạt hơn và sẽ dễ lập trình hơn trong thời gian dài. Thiết bị Arduino sẽ khó thay đổi hơn so với chương trình hoặc dịch vụ trên máy tính để bàn.

Có một khả năng khác: Bàn phím hợp âm đã tồn tại. Tôi đã xem các video về chúng, nhưng bạn sẽ phải xác định xem chúng có làm tổn thương tay bạn hay không.


7

Nó khá dễ sử dụng giao diện .NET DirectSound để kết nối với thiết bị MIDI. Bạn sẽ cần xác định thiết bị MIDI mục tiêu của mình và sau đó lấy mã để nghe trong các tin nhắn đến (có bài viết về cách thực hiện điều này thông qua Google).

Vì bạn đang sử dụng MIDI trong bàn phím, về cơ bản chỉ có hai thông điệp MIDI mà bạn cần phát hiện, cụ thể là ghi chú và tắt ghi chú. Thông điệp MIDI là ba byte dữ liệu chỉ định lệnh, ghi chú và vận tốc. Ghi chú tắt chỉ là số ghi chú (đôi khi các ngăn xếp MIDI 'xấu' gửi ghi chú với vận tốc bằng không mà bạn cũng phải mong đợi).

Khi bạn có các thông báo dịch chúng, đầu ra bàn phím sẽ khá đơn giản từ .NET.

Có rất nhiều lời khuyên trong các câu trả lời khác về các kỹ thuật; Tôi chỉ muốn cho bạn một ý tưởng về các thông điệp MIDI thực tế. Chúc may mắn!


Như một lưu ý phụ, tài liệu 'Định nghĩa lớp thiết bị bus nối tiếp vạn năng
Simon Inns

7

Bạn sẽ nhận được kết quả tốt hơn và hạnh phúc hơn (bất kể hệ điều hành và / hoặc chương trình DAW nào bạn muốn sử dụng) bằng cách phát bất kỳ bàn phím MIDI bên ngoài nào dưới dạng bộ điều khiển thông qua thẻ âm thanh của bạn. Sau đó định tuyến vào phần mềm GB của bạn (hoặc bất cứ điều gì) và âm thanh tạo ra nhiều âm thanh họ đã cung cấp cho bạn theo cách đó trong thời gian thực.

Nếu card âm thanh của bạn không hỗ trợ MIDI I / O (in / outs / thrus), thì đó không phải là vấn đề. Bạn có thể xem xét nghiên cứu và đầu tư vào một công cụ chuyển đổi đầu bảng MIDI bên ngoài. Nhiều người được trang bị để chuyển đổi thêm MIDI out sang USB 2.0 (bằng cách chuyển hoàn toàn một card âm thanh hiện có).

Ví dụ: khá khó khăn để có được kết quả ghi chú ân sủng "giống người" thông qua tùy chọn phím thay đổi Z và X bằng bàn phím máy tính và công cụ bút chì. Thay vào đó, khi, thay vào đó, ngón tay của chính bạn chỉ có thể chơi với bàn phím MIDI từ thanh ghi quãng tám vật lý của chính nó ngay lập tức phạm vi!

Tôi nhận ra những hạn chế về ngân sách có thể liên quan. Tuy nhiên, một số bàn phím octave loại 5 "Casio" dường như rẻ tiền được bán tại Radio Shack với giá dưới 100 đô la Mỹ (* hoặc ít hơn) là tất cả những gì bạn cần (cộng với một số bản vá âm thanh trên bo mạch và mô-đun trình phát âm thanh và xử lý tuyệt vời tốt cho những thứ khác quá).

Tùy chọn bàn phím RadioShack MIDI .

Đối với các bộ chuyển đổi MIDI bên ngoài cho các card âm thanh hiện có, tôi đã chạy một số tìm kiếm Google cho bạn như sau với các nền tảng Mac cụ thể:

Rất nhiều thông tin chuyển đổi MIDI bên ngoài này ban đầu có thể gây khó chịu cho bạn, vì vậy tôi đã chia nhỏ những thứ như "thân thiện với người dùng" để cân nhắc và ngân sách của bạn:

Không có gì sai khi tạo điều kiện cho bàn phím ảo là VST khi sử dụng DAW . Họ có vị trí của họ.

Nhưng, bạn có vẻ như một bàn phím hoàn thành. Vì vậy, tại sao không xem xét các tùy chọn chuyển đổi / bàn phím MIDI bên ngoài mà tôi vừa đề cập cho chính mình?

Chúc may mắn và tôi hy vọng điều này đã cho bạn một số ý tưởng có thể và sẽ làm việc cho bạn!


6

Nếu bạn không muốn tự mình lập trình mà chỉ muốn giải quyết vấn đề, bạn có thể mua bàn phím USB-MIDI nơi bạn có thể gán lại bất kỳ phím nào để gửi tín hiệu đầu ra bàn phím QWERTY thay vì đầu ra MIDI, cho ví dụ M-Audio Axiom Pro

Phương pháp này sẽ hoạt động với mọi HĐH và mọi máy tính hỗ trợ bàn phím USB tiêu chuẩn do bàn phím MIDI sẽ tự nhận là bàn phím QWERTY tiêu chuẩn.


Bạn có biết nếu có thể gán hợp âm cho các tổ hợp phím cụ thể không? ví dụ: nếu tôi chơi hợp âm C MAJOR, tôi có thể dịch nó thành "con cáo nhảy"
l --''''''--------- '' '' '' '' '' ' '

Xin lỗi vì đã không trả lời quá nhanh, tôi đã nghỉ 4 ngày;) Không, rất tiếc, bạn chỉ có thể gán một mã QWERTY cho mỗi phím, vì vậy nó hoạt động khá nhiều như một bàn phím tiêu chuẩn.
Martin Odhelius

Btw, nếu bạn mua một cái, chỉ cần nhớ mua PRO-one, vì tôi không nghĩ phiên bản không phải PRO có chức năng gán QWERTY.
Martin Odhelius

Tôi không nghĩ có thể gán hợp âm cho mã ASCII, chỉ một phím cho mỗi mã, nhưng tôi sẽ kiểm tra điều này trên Axiom của riêng tôi tối nay khi tôi đi làm về.
Martin Odhelius

Tôi chỉ nhận thấy rằng chỉ có thể gán mã qwerty cho các nút điều khiển (phím chức năng, phím trống, phím số, v.v.), chứ không phải cho các phím đàn piano thực tế trên bàn phím. Tôi sở hữu bàn phím này và chắc chắn có thể gán mã ascii cho bất kỳ phím nào, nhưng bây giờ khi tôi dùng thử, tôi nhận thấy đó là sai! Tôi rất xin lỗi vì điều này, liệu có thể hoàn nguyên phần thưởng theo một cách nào đó?
Martin Odhelius

6

Bạn có thể sử dụng tập lệnh AutoIt đơn giản để đọc cả các sự kiện MIDI, xem Đầu vào MIDI .

Bạn cũng sẽ cần MIDI UDFmô phỏng các phím bấm .

Đọc các sự kiện MIDI phải dễ dàng, nhưng các bộ điều khiển MIDI (nhạc cụ) khác nhau có các tính năng khác nhau. Hãy thử tìm hiểu những gì đàn piano MIDI của bạn có thể làm trước tiên, sau đó xem cách bạn có thể ánh xạ tốt nhất các tính năng đó đến các lần nhấn bảng điều khiển QWERTY .

Nếu bạn muốn, bạn có thể có một cái gì đó trên màn hình hoặc trong khay để giúp bạn xem những gì bạn đang làm (có nghĩa là, cho Shift, CtrlAltmô phỏng).


5

Bạn có thể nhìn vào bàn phím hợp âm . Họ có lợi thế là bạn không cần phải viết trình điều khiển cho họ trước khi bạn có thể sử dụng chúng, và một số tương tự như cách bố trí bàn phím piano.


5

Nếu bạn biết mã hóa bằng Java, bạn có thể sử dụng cách này:

Thứ nhất, thực hiện một javax.sound.midi.Receivervới một send(..)phương pháp được lập bản đồ 'Lưu ý về' sự kiện để tổ hợp phím như bạn muốn.

Bạn sẽ cần lấy nội dung của MidiMessage bằng getMessagephương pháp của nó và giao tiếp nội dung đó theo cách của bạn. Ý nghĩa của các byte thông báo có thể được tìm thấy trong Tin nhắn MIDI .

Sau khi nhận được 'ghi chú trên' hoặc 'ghi chú' cho một phím bàn phím nhất định, bạn có thể ánh xạ nó tới một phím bạn thích bằng cách gán cho nó một hằng số của lớp KeyEvent, như C # 4 -> KeyEvent.VK_A, v.v. . Mã khóa này sau đó có thể được sử dụng bởi java.awt.Robotcác phương thức keyPress và keyRelease của thực tế để gửi tổ hợp phím đến HĐH và do đó cho các ứng dụng khác.


4

Tôi đồng ý với câu trả lời của Brian O'Dell - nếu đây là dự án của tôi, tôi sẽ thực hiện nó trong phần cứng. Nó có lợi thế là độc lập với nền tảng và phần cứng - hộp của bạn thay thế cho nhu cầu về giao diện MIDI-USB và API PC.

mbed là một nền tảng tạo mẫu nhanh, rất dễ học và có nhiều ưu điểm so với Arduino IMHO (trình biên dịch trực tuyến, flash 512 KB, 96 MHz, ngôn ngữ C ++). Nó có giao diện bàn phím USBgiao diện USB Midi được viết sẵn cho bạn.

Cộng đồng rất thân thiện và sẵn sàng giúp đỡ, và có rất nhiều dự án hiện có sử dụng cả giả lập MIDI và USB - tìm kiếm Youtube cho "mbed MIDI" hoặc tương tự.


4

Nếu bạn sử dụng Linux, hãy dùng Footware .

Nó phải chính xác là những gì bạn đang tìm kiếm - nếu bạn điều chỉnh cao độ MIDI thành sơ đồ phím theo ý thích của bạn ...

Tôi chưa bao giờ nghĩ rằng điều này có thể hữu ích cho bất cứ ai trừ tôi; o)


2
Ở công việc trước đây là quản trị viên, tôi có một bộ điều khiển chân dưới bàn làm việc - để giảm thiểu việc rời khỏi nhà trong vim
FlashKorten


1

Điều này sẽ không quá khó khăn.

Tôi cho rằng bạn đang ở trên Windows , mặc dù không chắc chắn về điều đó. Tôi đã viết một trình sắp xếp MIDI , http://pianocheetah.com , bằng C ++ cũ và nó cho phép bạn sử dụng bàn phím piano để chạy các lệnh. Không có lý do gì bạn không thể làm điều tương tự để đẩy các phím vào luồng nhập bàn phím.

Nhưng đến bây giờ. Bạn nhớ bạn mất bao lâu để học bàn phím ở nơi đầu tiên, phải không? Bạn có sẵn sàng để đi qua điều đó một lần nữa? Và bạn có sẵn sàng làm ô nhiễm bàn phím may mắn của mình với một loạt các biểu tượng phím trông ngu ngốc trên tất cả không?

Bạn sẽ cần sử dụng ít nhất 26 alpha, 10 số, 11 dấu chấm câu và ít nhất 12 phím chức năng VÀ trạng thái thay đổi của chúng. Vì vậy, đó là 60 phím cộng với các trạng thái thay đổi. Điều đó sẽ đốt cháy hết 5 quãng tám phím. Bạn sẽ làm piano "hops" = all = thời gian. Nói lời tạm biệt để chạm vào gõ.

Bạn có thể tự cứu mình khỏi RSI , nhưng bạn đã tạo ra một loại ác mộng khác cho chính mình.

Và chúc may mắn khi sếp mua cho bạn bàn phím MIDI tại nơi làm việc.

Nếu bạn đã học cách chơi piano thực sự, bạn đã học cách chơi căng thẳng miễn phí. Làm điều đó trên bàn phím QWERTY . Không căng thẳng. Bắt đầu chậm.


Cảm ơn những lời tốt đẹp, nhưng tôi đã làm việc hết mình vì điều này và không có kế hoạch biến nó thành nguồn mở - xin lỗi. Nhưng những gì bạn sẽ làm là sử dụng midiInOpen (); cung cấp cho nó một cuộc gọi lại để xử lý đầu vào midi; bỏ qua tất cả mọi thứ trừ các sự kiện được chú ý, ánh xạ nốt midi vào một số phím bàn phím và chèn nó vào luồng nhập bàn phím (tôi quên api cho điều đó, nhưng tôi chắc chắn có ít nhất một cái).
Stephen Hazel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.