Mam problemy z RSI i wypróbowałem 30 różnych klawiatur komputerowych, co sprawiło mi ból. Gra na pianinie nie sprawia mi bólu. Gram na fortepianie od około 20 lat bez żadnych problemów z bólem. Chciałbym wiedzieć, czy istnieje sposób na przechwycenie MIDI z klawiatury MIDI i generowanie uderzeń klawiatury. Nic nie wiem o MIDI, ale chciałbym uzyskać wskazówki, jak przekonwertować ten sygnał na naciśnięcie klawisza.
727
Odpowiedzi:
Dobra biblioteka w .NET z pełnym wsparciem midi (BASS), przejdź do http://www.un4seen.com .
Z drugiej strony, tłumacząc notatki midi z klawiatury na klawisze i więcej, wybrałbym AutoItX, interfejs ActiveX / COM i DLL do autoIt. Informacje i pobieranie, przejdź do http://www.autoitscript.com/site/autoit/
Nie trzeba pisać sterownika klawiatury.
źródło
Nie robiłem żadnego programowania MIDI od lat, ale twoja podstawowa idea jest bardzo dobra (bez gry słów).
MIDI to strumień „zdarzeń” (lub „komunikatów”), z których dwa najbardziej podstawowe to „uwaga włączona” i „uwaga wyłączona”, które niosą ze sobą numer nuty (0 = C pięć oktaw poniżej środkowego C, przez 127 = G pięć oktaw powyżej G powyżej środkowego C, w półtonach). Te zdarzenia niosą liczbę „prędkości” na klawiaturach wrażliwych na prędkość („wrażliwych na dotyk”), z siłą (zgadłeś) między 0 a 127.
Pomiędzy prędkością, akordowaniem i pedałami, pomyślałem, że możesz wymyślić całkiem niezły interfejs do pisania na klawiaturze fortepianu. W szczególności nagrywanie może być bardzo potężną techniką - jak wspomniałem w komentarzach, dlatego stenografowie szeregowi mogą używać maszyny do stenotypii, aby nadążać za rozmowami przez wiele godzin z rzędu, nawet jeśli maszyniści z najwyższej półki nie chcieli być w stanie przez dowolny czas za pomocą zwykłych klawiatur w stylu maszyny do pisania. Podobnie jak w przypadku stenografii maszynowej, potrzebny byłby „słownik” znaczeń akordów i ich sekwencji. (Czy możesz powiedzieć, że pracowałem po stronie oprogramowania do stenografii maszynowej?)
Aby to zrobić, podstawowe elementy to:
Aby być jak najbardziej kompatybilnym z oprogramowaniem, musisz napisać to jako sterownik urządzenia klawiatury. Jest to wtyczka do systemu operacyjnego, która służy jako źródło zdarzeń na klawiaturze, rozmawiając z podstawowym sprzętem (w twoim przypadku z klawiaturą fortepianu). W systemach Windows i Linux prawdopodobnie będziesz chciał użyć do tego C.
Ponieważ jednak generujesz tylko naciśnięcia klawiszy (nie próbując ich przechwytywać, co próbowałem zrobić lata temu), możesz być w stanie korzystać z wszystkich funkcji systemu operacyjnego do wysyłania sztucznych naciśnięć klawiszy. Windows ma do tego interfejs (prawdopodobnie kilka, myślę o tym,
SendInput
ale wiem, że jest jakiś interfejs „dziennika”, który robi coś podobnego), i jestem pewien, że robią to również inne systemy operacyjne. To może być wystarczające dla twoich celów - od tego chciałbym zacząć, ponieważ trasa sterownika urządzenia będzie niezręczna i prawdopodobnie będziesz musiał użyć innego języka niż Java. (Jestem wielkim fanem Javy, ale interfejsy używane przez systemy operacyjne do komunikowania się ze sterownikami urządzeń są zwykle łatwiejsze do użycia przez C i podobne).Aktualizacja : Więcej informacji na temat „słownika” akordów po naciśnięciu klawisza:
Zasadniczo słownik jest trie (dzięki, @Adam), który wyszukujemy z najdłuższym dopasowaniem prefiksu. Detale:
W stenografii maszynowej stenograf pisze przez jednoczesne naciśnięcie wielu klawiszy na maszynie stenotypowej, a następnie zwolnienie ich wszystkich. Nazywają to „uderzeniem” klawiatury; to jak grać akord na pianinie. Pociągnięcia często (ale nie zawsze) odpowiadają sylabie języka mówionego. Podobnie jak sylaby, czasami jedno uderzenie (akord) ma znaczenie samo w sobie, innym razem ma znaczenie jedynie w połączeniu z kolejnymi pociągnięciami. (Pomyśl „dobry” vs. „dobry”, a następnie „pa”). Chociaż będzie pod dużym wpływem szkoły, w której studiowali, każdy stenograf będzie miał własny „słownik”, jakich uderzeń używają, co znaczy, słownik, który będą stale doskonalili w ciągu życia zawodowego. Słownik będzie zawierał wpisy, w których część stenograficzna (w skrócie „steno”) ma długość jednego pociągnięcia lub wiele pociągnięć. Często będzie kilka wpisów o tym samym skoku początkowym, które różnią się długością i kolejnymi pociągnięciami. Na przykład (i nie użyję tutaj prawdziwego steno, tylko symbole zastępcze), mogą występować następujące wpisy:
(Te litery nie mają być nutami, a jedynie abstrakcyjnymi znacznikami).
Pamiętaj, że
A
rozpoczyna się wiele wpisów, a także, jak tłumaczyszC
obrys, zależy od tego, czy wcześniej widziałeśA
, aB
, czy zaczynasz od nowa.Zauważ też, że (chociaż nie pokazano tego w bardzo małej próbce powyżej), może istnieć wiele sposobów „odtwarzania” tego samego słowa lub frazy, a nie tylko jednego. Stenografowie robią to, aby ułatwić przejście od poprzedniego słowa do następnego, w zależności od pozycji ręki. Istnieje oczywista analogia do muzyki i możesz jej użyć, aby Twój przepływ pisania był bardziej zbliżony do grania muzyki, aby zarówno zapobiec negatywnemu wpływowi na grę na pianinie, jak i zmaksymalizować prawdopodobieństwo, że rzeczywiście pomoże to w RSI.
Podczas tłumaczenia steno na tekst standardowy ponownie używamy wyszukiwania „dopasowanie najdłuższego prefiksu”: algorytm tłumaczenia rozpoczyna się od pierwszego napisanego skoku i szuka wpisów zaczynających się od tego skoku. Jeśli jest tylko jeden wpis i jego długość jest jednym pociągnięciem, możemy rzetelnie powiedzieć „to jest wpis do użycia”, wypisać odpowiedni tekst, a następnie zacząć od nowa od następnego pociągnięcia. Ale bardziej prawdopodobne, że obrys rozpoczyna wiele wpisów o różnej długości. Więc patrzymy na następny skok i sprawdzamy, czy są wpisy, które zaczynają się od tych dwóch pociągnięć w kolejności; i tak dalej, aż dostaniemy dopasowanie.
Załóżmy, że w powyższym słowniku widzimy następującą sekwencję:
Oto jak byśmy to przetłumaczyli:
A
jest początkiem trzech wpisów o różnej długości; spójrz na następny skok:C
A/C
dopasowuje tylko jeden wpis; wyjdź „klimatyzacja” i zacznij od nowa od następnego skoku:B
B
rozpoczyna dwa wpisy; spójrz na następny skok:B
B/B
nic nie uruchamia; weź najdłuższy poprzedni match (B
) i wypisz, że („bee”)B
= „bee”, nadal mamyB
uderzenie w buforze. Rozpoczyna dwa wpisy, więc spójrz na następny skok:C
B/C
pasuje do jednego wpisu; wypisz „ponieważ” i zacznij od nowa od następnego pociągnięcia:A
A
rozpoczyna trzy wpisy; spójrz na następny skok:B
A/B
rozpoczyna dwa wpisy; spójrz na następny skok:C
A/B/C
pasuje tylko do jednego wpisu; wypisz „alfabetycznie” i zacznij od nowa od następnego pociągnięcia:A
A
rozpoczyna trzy wpisy; spójrz na następny skok:B
A/B
rozpoczyna dwa wpisy; spójrz na następny skok:D
A/B/D
nic nie pasuje, więc weź najdłuższy poprzedni match (A/B
) i użyj go do wypisania „alfabetu”. Pozostaje nam toD
nadal w buforze.D
rozpoczyna dwa wpisy, więc normalnie patrzymy na następny skok - ale przetworzyliśmy wszystkie uderzenia, więc rozważ to osobno. W izolacji tłumaczy się to jako „pies”, więc wyprowadza to.Aspekty powyższego, na które należy zwrócić uwagę:
A/B
należy tłumaczyć jako „alfabet”, a nie „alfa” i „pszczoła”.E
byłyby „nieprzetłumaczone”.)źródło
Zastanów się nad zrobieniem czegoś, co emuluje klawiaturę USB (lub PS / 2?). Nie będziesz już zależny od konkretnego systemu operacyjnego lub konkretnego interfejsu API systemu operacyjnego. Rozwiązanie sprzętowe wytrzyma próbę czasu. Nie utknij przy użyciu starego interfejsu API w systemie Windows 7, gdy wszyscy inni korzystają z systemu Windows 11! Arduino jest dość łatwy do nauczenia.
Istnieje mnóstwo informacji i pomocy dla Arduino. Jest to platforma do hakowania sprzętu stworzona dla początkujących. Stanie się większy tylko teraz, gdy Google naciska na Arduino.
EDYCJA: Oprogramowanie i sprzęt wirtualnej klawiatury USB
źródło
Wydaje mi się, że mniej szukasz porady na temat tego, jak to zbudować, a więcej pytasz, jakie zasoby są już dostępne, aby osiągnąć to, czego chcesz. W zależności od systemu operacyjnego istnieje wiele sposobów na osiągnięcie tego bez konieczności pisania własnego programu od zera:
MIDI Stroke
Wolny. W systemie Mac OS X 10.3 i nowszych . Ta w szczególności ma „możliwość używania dowolnej klawiatury MIDI jako zamiennika pełnej klawiatury komputerowej”.
Bome's MIDI Translator
Free / Postcardware (to trochę dziwne). Dla Windows 2000 i do góry i Mac OS X . Początkowo wydaje się, że jest bardziej ukierunkowany na użycie typu AutoHotkey , ale przy dalszym patrzeniu myślę, że mógłby zrobić to, co chcesz.
Max i aka. Klawiatura
Wolny. Dla systemu Mac OS X . Nie do końca gotowe rozwiązanie, ale jeśli nie masz nic przeciwko podstawowej konfiguracji urządzenia, nie powinno być źle.
źródło
Dostęp do sprzętu można uzyskać za pomocą próbek kodu źródłowego w .NET w MIDI DotNet .
Kompletny przykładowy kod źródłowy do tworzenia strumienia danych notatek MIDI znajduje się w VB 5/6-Tipp 0521: MIDI-Töne erzeugen (Visual Basic 6.0, gdzieś też jest wersja .NET)
Sposób symulowania uderzeń klawiatury jest w VB 5/6-Tipp 0155: Tastaturereignisse simulieren (Visual Basic 6.0, gdzieś też jest wersja .NET)
Rozpoznawanie naciśnięć klawiszy opisano w Tipp-Upload: VB.NET 0266: Globaler KeyHook .
Następnie użyj dobrej matrycy roboczej dla pianisty
Na fortepianie i gdy jesteś dobrym graczem, możesz mieć 10 palców na klawiaturze, a jeśli matryca jest użyteczna, możesz być znacznie szybszy niż jakikolwiek użytkownik klawiatury komputera. :-)
W takim przypadku, jeśli dobrze rozumiem twoje pytanie, nie powinno to być duże.
źródło
Studiowałem grę na fortepianie na studiach, a potem zająłem się projektowaniem interakcji, programowaniem i używaniem Vima , więc spędziłem dużo czasu na prototypowaniu takich rzeczy.
Możesz sprawić, by działało to dość szybko w systemie Linux, używając graficznego języka programowania dla artystów multimedialnych „ Pure Data ” wraz z zewnętrznym x11key autorstwa Alexa Andre .
Na Macu możesz użyć MidiStroke . Wierzę, że metoda w systemie Windows obejmowała narzędzia MidiOx i AutoHotKey . Innym razem miałem wersję korzystającą z wtyczki Java dla Max / MSP . Uważam, że Patrice Colet stworzył okno zewnętrzne dla Pure Data, które również działało, ale nie mogę już tego zlokalizować. Istnieje również zewnętrzny dla MaxMSP, który może to zrobić w systemie Windows. Wreszcie niewolny, ale niesamowity Osculator może robić, co chcesz - patrz strona funkcji.
Kiedy go uruchomiłem, nigdy się z tym nie utknąłem, ponieważ nie mogłem przestać używać narzędzi z układem. Fajnie było mieć monitor na klawiaturze elektrycznej! Powodzenia.
źródło
O MIDI
Stwierdziłeś, że „nic nie wiesz o MIDI”. Po opanowaniu technologia MIDI jest dość prosta, ale na początku może być myląca. Jednym z zasobów, który był dla mnie niezwykle pomocny w zrozumieniu podstaw MIDI (które są z pewnością konieczne, jeśli chcesz zaprogramować interakcje MIDI), jest książka o nazwie MIDI dla Technophobe . Jest to łatwa do przeczytania książka i bardzo pomocna.
Pure Data & Max
Z mojego doświadczenia w tworzeniu interaktywnych multimediów wiążę dwa bardzo podobne programy, które ułatwiają podłączanie i mapowanie sygnałów / sygnałów wejściowych z dowolnego urządzenia.
Są to Max dla środowiska Mac i Pure Data dla środowiska PC. Oba mają mnóstwo dokumentacji online i samouczków na YouTube. Samouczek wideo Max / MSP 1 - używanie klawiatury komputera jako midikeyboard (styl ableton) pokazuje program wbudowany w Max, który mapuje klawiaturę komputera na wejścia klawiatury MIDI (co jest w zasadzie dokładnym przeciwieństwem tego, co próbujesz zrobić). Możesz uzyskać zamierzone wyniki, stosując ten sam wzór, ale odwracając sygnały / odwzorowania.
AutoHotKey
AutoHotKey to bezpłatne narzędzie typu open source dla systemu Windows, które umożliwia mapowanie klawiszy i przycisków urządzeń na makra. Natywnie obsługuje klawiatury, joysticki i makra myszy QWERTY.
Udało mi się jednak znaleźć implementację obsługującą konkretne mapowanie, którego szukasz. Te dwa wątki wyjaśniają proces:
Obsługa MIDI IN w AutoHotkey , omówienie przypadku użycia. Autor szukał programu, który mógłby wykryć wejście MIDI IN i przetłumaczyć to na naciśnięcia klawiszy .
Biblioteka wejściowa MIDI , rozwiązanie problemu autora i wysłany kod / łatka do AutoHotKey, który faktycznie realizuje zamierzony wynik.
Zasadniczo wygląda na to, że AutoHotKey wraz z niestandardową łatką tego użytkownika zapewni dokładnie to, czego potrzebujesz, aby utworzyć mapowanie z klawiatury MIDI na sygnał wejściowy klawiatury QWERTY. Wszystko, co musisz zrobić, to zainstalować, skonfigurować i zdefiniować swoje mapowania.
Coś jeszcze?
Niektóre z pozostałych odpowiedzi dały ci znacznie więcej informacji na temat MIDI i programowania MIDI, ale jak pisze Twój post, nie wydaje się to, czego szukasz. Chciałbym ci pomóc, jeśli to możliwe, ale byłoby łatwiej, gdybyś mógł bardziej szczegółowo określić rodzaj informacji, której szukasz. Na przykład, czy bardziej interesuje Cię konwersja sygnałów wejściowych klawiatury MIDI na sygnały klawiatury QWERTY , czy może Twoim głównym zainteresowaniem jest znalezienie gotowego rozwiązania konkretnego problemu? Czego szukasz, że nie zostało jeszcze rozwiązane?
źródło
Możesz szybko zhakować własną klawiaturę USB za pomocą mikrokontrolera Teenys.
W rzeczywistości mają przykładowy kod, jak zrobić klawiaturę USB .
Możesz podejść do tego na dwa sposoby:
Zdobądź stary fortepian i podłącz przewody bezpośrednio do nastolatka
Dodaj dodatkową logikę, aby połączyć się z portem MIDI i niezbędne dekodowanie.
źródło
Właściwie, pracowałem nad tym jakiś czas temu, próbując przechwycić dane wejściowe perkusji Rock Band do mojego komputera (tworząc mały domowy emulator perkusyjny Java) W każdym razie zadałem tutaj pytanie o problem z opóźnieniem czasowym (tam jest kod odpytywania , wraz z tym, co próbowałem zrobić). A jeśli mogę znaleźć mój program, mogę dać ci kod, używa interfejsu API innej firmy ( JInput ).
Powodzenia w każdym razie.
źródło
Wypróbuj translator MIDI firmy Bome .
Działa na wielu platformach, może łatwo konwertować dowolne wejście MIDI na naciśnięcie klawisza, szybko konfigurować i konfigurować, a ponadto jest bezpłatny do użytku osobistego.
Istnieje samouczek, Szybka wskazówka: Tłumaczenie MIDI - MIDI na naciśnięcia klawiszy , jak łatwo to skonfigurować:
Zasadniczo istnieją nieskończone możliwości tego, co możesz zrobić, w tym klawisze akordowania i modyfikatora. Używam go do mojego zestawu audio na żywo do sterowania moim DAW za pomocą pianina i nigdy nie miałem problemu.
źródło
W Javie możesz używać JMF (Java Media Framework) do konwersji sygnałów MIDI. Podstawowa konstrukcja klawiatury jest łatwa w użyciu, to znaczy interfejs użytkownika; i umieść często używany znak / symbol pod ręką.
Przykładowy kod i API w Java Sound Resources: Przykłady: Cyfrowe przetwarzanie sygnału (DSP) pomaga zrozumieć, jak przetwarzać sygnał.
Kilka innych referencji:
źródło
Istnieje program o nazwie GlovePIE . Możesz go zaprogramować w prostym języku skryptowym i uważam, że obsługuje MIDI. Nie jestem pewien, czy pasuje to do kategorii „Java”, ale mimo to jest to świetny program. Użyłem go do sterowania robotami za pomocą kontrolerów PS3 . Jest bardzo potężny.
źródło
Wiele klawiatur ma złącze portu szeregowego ( RS-232 ) do wysyłania sygnałów MIDI do komputera. Korzystam z programu o nazwie Girder, aby przekształcić komunikację portu szeregowego w pociągnięcia klawiatury.
Girder ma funkcję „mapowania”, która umożliwia mapowanie każdego klawisza, jeden po drugim, na odpowiadające mu naciśnięcie klawisza.
To może być proste rozwiązanie, którego szukasz!
źródło
Po prostu naucz się stenografii!
Wynika to z całej dyskusji z twojej strony. Z technicznego punktu widzenia nie chcesz na nowo wymyślać żadnych kół. Ale kiedy już nawiążesz połączenie (o co pyta to pytanie) i zaczniesz działać, nadal masz przed sobą większość pracy: musisz wytrenować swój mózg. Musisz także wymyślić najmądrzejszy i najbardziej efektywny sposób, aby to zrobić - zagadnienie projektowe zupełnie poza realiami technologii komputerowych. Ty lub ktokolwiek z nas nie zda się.
Na szczęście problem został rozwiązany i dopracowany przez wieki dojrzewania ...
Dowiedz się stenografii!
Tak, to przywróci ci trochę jack. Ale ile warte są setki godzin własnego czasu, a na koniec mniej korzystny wynik? Poza tym artykuł Wikipedii o stenografii mówi: „wygląda bardziej jak klawiatura fortepianu”.
Chyba że oczywiście chcesz uzyskać efekt pokazu slajdów. Muszę przyznać, że nigdy nie myślałem o tej możliwości, byłoby naprawdę zabawnie, gdyby ktoś wybił tekst z klawiatury fortepianu!
Możesz zacząć od klawiatury USB z touchpadem (lub bardziej ergonomicznym urządzeniem wskazującym ?), Użyj Plover do przetłumaczenia (jestem pewien, że można go skonfigurować tak, aby klawisze nieliterowe zachowywały swoją funkcjonalność, ponieważ są krytyczne dla programowanie), lub postępuj zgodnie z wątkiem Re: Plover keyboard, aby zrolować własną klawiaturę stenograficzną USB lub kup stenotypię .
Powodzenia!
źródło
pthread
?Zobacz gry zręcznościowe MAME . Zbudowali urządzenia sprzętowe, które umożliwiają wprowadzanie danych z dowolnej liczby różnych elementów. Na przykład iPac konwertuje sygnały z urządzeń wejściowych na USB, które komputer może następnie wykorzystać do emulacji kluczy. Możesz użyć dowolnej kombinacji urządzeń wejściowych ułożonych w dowolny sposób, który wydaje się wygodny, bez szalonej logiki programowania - ponieważ oprogramowanie do interpretacji danych wejściowych jest już gotowe i dobrze przetestowane.
Widziałem dane wejściowe kokpitu symulatora lotu, niestandardowe kioski i systemy głosowania wbudowane w tę metodę ..... a cena jest odpowiednia!
źródło
Aby rozwiązać ten problem, potrzebujesz kilku rzeczy:
Sposób na przechwytywanie danych MIDI z klawiatury. W zależności od interfejsu: interfejs MIDI (klasyczny) lub interfejs USB MIDI (nowoczesny) najprawdopodobniej interfejs znajduje się na komputerze, ponieważ zapewnia najwięcej opcji. Mikrokontrolery hosta USB nie są tak proste, jak zwykły komputer.
Schemat konwersji danych MIDI na naciśnięcia klawiszy. Jak zauważył jeden użytkownik, akordy są właściwą drogą, ponieważ liczba klawiszy nie będzie zależała od liczby klawiszy fortepianu.
Sposób na wstrzyknięcie klucza do systemu operacyjnego. Będzie to wymagać dokładności sterownika niskiego poziomu. Bawiłem się aplikacjami, które wstrzykują dane z klawiatury i myszy do aplikacji w systemie Windows 7, i mogą być niestabilne i zależą od tego, czy aplikacja jest aktualnie w centrum uwagi. To najtrudniejsza część interfejsu. To, co może działać, to stworzenie mikrokontrolera klawiatury USB HID, który również ma interfejs szeregowy.
Interfejs szeregowy utworzyłby wirtualny port szeregowy. Oprogramowanie, które odczytuje dane MIDI i generuje naciśnięcia klawiszy, może wysłać komunikat szeregowy do wirtualnego portu szeregowego. Mikrokontroler wysyła naciśnięcie klawisza, aby wyglądało jak standardowe wejście klawiatury. Umożliwiłoby to połączenie zarówno portów MIDI, jak i klawiatur USB MIDI.
Hmmm, z tego rodzaju interfejsem można również symulować mysz i użyć ustawień klawiszy fortepianu dla osi myszy i przycisków. Nacisk można wykorzystać do określenia prędkości wskaźnika myszy. Możesz także wyeliminować mysz. Inną zaletą tego podejścia jest to, że dowolne urządzenie wejściowe, które podłączasz, może komunikować się z wirtualnym portem szeregowym w celu wygenerowania zdarzeń klawiatury i myszy. Więc jeśli chcesz dodać inny sprzęt, taki jak pedały perkusyjne lub joystick, byłoby kwestią dostosowania programu, który komunikuje się z interfejsem szeregowym.
Inne podejście do powyższego jest podobne do niektórych zamieszczonych powyżej w celu korzystania z Arduino, ale obejmuje również USB Host Shield od Sparkfun do obsługi klawiatur muzycznych opartych na USB. Dzięki temu Arduino można zaprogramować jako kombinację klawiatury lub myszy w układzie modułu ładującego i pozwala urządzeniu działać jako host USB dla klawiatury muzycznej opartej na USB. Jesteś objęty ubezpieczeniem dla obu typów. Chociaż nadal uważam, że metoda wirtualnego portu szeregowego jest bardziej elastyczna i na dłuższą metę byłaby łatwiejsza do zaprogramowania. Urządzenie Arduino będzie trudniejsze do zmiany niż program komputerowy lub usługa.
Jest jeszcze jedna możliwość: już istnieją akordowe klawiatury jednoręczne. Widziałem na nich filmy, ale musisz ustalić, czy zranią cię w ręce, czy nie.
źródło
Podłączenie do urządzenia MIDI powinno być dość łatwe przy użyciu czegoś takiego jak interfejs .NET DirectSound. Musisz zidentyfikować docelowe urządzenie MIDI, a następnie uzyskać kod do nasłuchiwania wiadomości przychodzących (są artykuły na ten temat za pośrednictwem Google).
Ponieważ używasz MIDI jako klawiatury, w zasadzie są tylko dwa komunikaty MIDI, które musisz wykryć, a mianowicie włączanie i wyłączanie notatek. Komunikat MIDI to trzy bajty danych określające polecenie, nutę i prędkość. Uwaga jest tylko numerem nuty (czasami „złe” stosy MIDI wysyłają nutę z zerową prędkością, której również należy się spodziewać).
Po przetłumaczeniu komunikatów, wyjście klawiatury powinno być dość proste z .NET.
W innych odpowiedziach na temat szczegółów technicznych jest mnóstwo porad; Chciałem tylko dać ci wyobrażenie o rzeczywistych komunikatach MIDI. Powodzenia!
źródło
Otrzymasz lepsze i szczęśliwsze wyniki (bez względu na to, jakiego systemu operacyjnego i / lub programu DAW chcesz używać), grając na dowolnej zewnętrznej klawiaturze MIDI jako kontroler za pomocą karty dźwiękowej. Następnie przekieruj to do oprogramowania GB (lub cokolwiek innego), a dźwięk wygeneruje wiele dźwięków, które dostarczyły w ten sposób w czasie rzeczywistym.
Jeśli twoja karta dźwiękowa nie obsługuje wejść / wyjść MIDI (wejścia / wyjścia / thrus), nie stanowi to problemu. Możesz rozważyć zbadanie i zainwestowanie w zewnętrzny konwerter stołowy MIDI. Wiele z nich jest przystosowanych do dalszej konwersji MIDI na USB 2.0 (omijając istniejącą kartę dźwiękową).
Na przykład: bardzo trudno jest uzyskać wyniki „przypominające człowieka” za pomocą klawiszy zmiany Z i X za pomocą klawiatury komputera i ołówka. Kiedy zamiast tego, twoje własne palce mogą po prostu grać na klawiaturze MIDI z własnego zakresu rejestrów fizycznych oktaw - natychmiast!
Zdaję sobie sprawę, że mogą być w to zaangażowane ograniczenia budżetowe. Ale niektóre z tych pozornie tanich klawiatur oktawowych typu „Casio” 5 sprzedawanych w Radio Shack za mniej niż 100,00 USD (* lub mniej) to wszystko, czego potrzebujesz (plus niektóre z ich wbudowanych łatek dźwiękowych i modułów sekwencera brzmią i obsługują zadziwiająco dobrze również w przypadku innych rzeczy).
Opcje klawiatury RadioShack MIDI .
Jeśli chodzi o zewnętrzne konwertery MIDI dla istniejących kart dźwiękowych, przeprowadziłem kilka wyszukiwań w Google w następujący sposób, szczególnie na platformach Mac:
Wiele z tych zewnętrznych informacji o konwersji MIDI może być na początku uciążliwe, dlatego podzieliłem się bardziej jako „przyjazny dla użytkownika” do rozważań i budżetu:
Nie ma nic złego w ułatwianiu wirtualnych klawiatur jako VST podczas korzystania z DAW . Mają swoje miejsce.
Ale brzmisz jak utalentowany klawiszowiec. Dlaczego więc nie rozważyć zewnętrznych opcji konwersji / klawiatury MIDI, o których właśnie wspomniałem?
Powodzenia i mam nadzieję, że to dało ci kilka pomysłów, które mogą i będą działać dla Ciebie!
źródło
Jeśli nie chcesz samodzielnie programować, ale po prostu chcesz rozwiązać problem, możesz po prostu kupić klawiaturę USB-MIDI, w której możesz ponownie przypisać dowolny klawisz, aby wysłać sygnał wyjściowy klawiatury QWERTY zamiast wyjścia MIDI, dla przykład M-Audio Axiom Pro
Ta metoda będzie działać z dowolnym systemem operacyjnym i dowolnym komputerem obsługującym standardowe klawiatury USB, ponieważ klawiatura MIDI rozpozna się jako standardowa klawiatura QWERTY.
źródło
Możesz użyć prostego skryptu AutoIt do obu odczytów zdarzeń MIDI, patrz Wejście MIDI .
Będziesz także potrzebował MIDI UDF i symulować naciśnięcia klawiszy .
Odczytywanie zdarzeń MIDI powinno być łatwe, ale różne kontrolery (instrumenty) MIDI mają różne funkcje. Spróbuj najpierw dowiedzieć się, co potrafi pianino MIDI, a następnie zobacz, jak najlepiej zmapować te funkcje do symulowanych naciśnięć klawiszy QWERTY .
Jeśli chcesz, możesz mieć coś na ekranie lub w podajniku, które pomogą Ci zobaczyć, co robisz (czyli, dla Shift, Ctrli Altsymulacja).
źródło
Możesz rzucić okiem na klawiatury akordowe . Mają tę zaletę, że nie trzeba pisać dla nich sterownika, zanim będzie można z nich korzystać, a niektóre są podobne do układu klawiatury fortepianu.
źródło
Jeśli znasz kodowanie w Javie, możesz użyć tego w następujący sposób:
Po pierwsze, zaimplementować
javax.sound.midi.Receiver
za pomocąsend(..)
metody, która jest odwzorowywać tę „Uwaga na” zdarzeń klawiszy jak chcesz.Musisz zdobyć treść MidiMessage za pomocą tej
getMessage
metody i zinterpretować ją na swój sposób. Znaczenie bajtów wiadomości można znaleźć w Wiadomościach MIDI .Po otrzymaniu „przypisania włączonego” lub „przypisania wyłączonego” dla określonego klawisza klawiatury, możesz zamapować go na klucz, który ci się podoba, przypisując mu stałą klasy KeyEvent, na przykład C # 4 -> KeyEvent.VK_A i tak dalej . Ten kod klucza może być następnie wykorzystany za
java.awt.Robot
pomocą metod keyPress i keyRelease do faktycznego wysłania naciśnięcia klawisza do systemu operacyjnego, a tym samym do innych aplikacji.źródło
Zgadzam się z odpowiedzią Briana O'Della - gdyby to był mój projekt, zrobiłbym to sprzętowo. Ma tę zaletę, że jest niezależny od platformy i sprzętu - Twoje urządzenie zastępuje interfejs MIDI-USB i interfejs API komputera.
mbed to platforma szybkiego prototypowania, która jest bardzo łatwa do nauczenia i ma wiele zalet w porównaniu z Arduino IMHO (kompilator online, 512 KB flash, 96 MHz, język C ++). Ma interfejs klawiatury USB i interfejs USB Midi wstępnie napisany dla Ciebie.
Społeczność jest bardzo przyjazna i chętna do pomocy, a istnieje wiele istniejących projektów korzystających zarówno z emulacji MIDI, jak i USB - poszukaj w YouTube „mbed MIDI” lub podobnego.
źródło
Jeśli używasz Linuksa, wypróbuj Footware .
Powinno być dokładnie tym, czego szukasz - jeśli dostosujesz wysokości MIDI do mapowania swoich upodobań ...
Nigdy nie myślałem, że może to być przydatne dla kogokolwiek oprócz mnie; o)
źródło
Spróbuj użyć systemu opartego na mikrokontrolerze, takiego jak Arduino .
źródło
To nie byłoby zbyt trudne.
Zakładam, że korzystasz z systemu Windows , ale nie jestem tego pewien. Napisałem sekwencer MIDI , http://pianocheetah.com , w zwykłym starym języku C ++ i pozwala on używać klawiatury fortepianu do uruchamiania poleceń. Nie ma żadnego powodu, dla którego nie można zrobić tego samego, aby wepchnąć klawisze do strumienia wejściowego klawiatury.
Ale chodź teraz. Pamiętasz, jak długo zajęło ci nauczenie się klawiatury, prawda? Czy chcesz przejść przez to jeszcze raz? I czy chcesz zepsuć swoją błogosławioną klawiaturę bandą głupio wyglądających kluczowych symboli?
Musisz użyć co najmniej 26 znaków alfanumerycznych, 10 numerycznych, 11 interpunkcyjnych i co najmniej 12 klawiszy funkcyjnych ORAZ ich przesuniętych stanów. To 60 klawiszy plus przesunięte stany. Spali pełne 5 oktaw kluczy. Będziesz robił fortepian „chmiel” = wszystko = czas. Pożegnaj się z pisaniem na klawiaturze.
Możesz uratować się przed RSI , ale stworzyłeś dla siebie inny rodzaj koszmaru.
Powodzenia w zachęcaniu szefa do zakupu klawiatury MIDI w pracy.
Jeśli naprawdę nauczyłeś się grać na pianinie, nauczyłeś się grać bez stresu. Zrób to na klawiaturze QWERTY . Bez napięcia. Zacznij powoli.
źródło