У меня проблемы с RSI, и я пробовал 30 разных компьютерных клавиатур, которые причиняли мне боль. Игра на пианино не причиняет мне боли. Я играл на пианино около 20 лет без каких-либо проблем с болью. Я хотел бы знать, есть ли способ захвата MIDI с клавиатуры MIDI и вывода ударов клавиатуры. Я вообще ничего не знаю о MIDI, но мне хотелось бы получить несколько советов о том, как преобразовать этот сигнал в нажатие клавиши.
727
Ответы:
Хорошая библиотека в .NET с полной поддержкой midi (BASS), перейдите на http://www.un4seen.com .
Что касается другой части, переводя нотные заметки на клавиатуре в клавиши и многое другое, я бы выбрал AutoItX, интерфейс ActiveX / COM и DLL для autoIt. Информация и загрузка, перейдите на http://www.autoitscript.com/site/autoit/
Не нужно писать драйвер клавиатуры.
источник
Я не занимался программированием MIDI годами, но ваша фундаментальная идея очень здравая (без каламбура).
MIDI - это поток «событий» (или «сообщений»), два из самых фундаментальных из которых - «примечание включено» и «примечание выключено», которые несут с собой номер ноты (0 = C на пять октав ниже среднего C, через 127 = G на пять октав выше G над серединой C, в полутонах). Эти события несут число «скорость» на клавиатурах, которые чувствительны к скорости («чувствительны к прикосновению»), с силой (как вы уже догадались) между 0 и 127.
Между скоростью, звуком и педалями, я думаю, вы могли бы придумать довольно неплохой «набор текста» для клавиатуры пианино. В частности, запись может быть очень мощной техникой - как я уже упоминал в комментариях, именно поэтому рядовые стенографисты могут использовать машину с использованием стенотипа, чтобы не отставать от людей, разговаривающих часами подряд, даже если машинистки высшего звена этого не сделают. не может быть в течение любого промежутка времени с помощью обычных клавиатур в стиле пишущей машинки. Как и в случае с машинной стенографией, вам понадобится «словарь» значений аккордов и последовательностей аккордов. (Можете ли вы сказать, что я работал в программной части машинной стенографии?)
Чтобы сделать это, основные части:
Чтобы быть наиболее совместимым с программным обеспечением, вы должны написать это как драйвер устройства клавиатуры. Это плагин для операционной системы, который служит источником событий клавиатуры, общаясь с базовым оборудованием (в вашем случае, клавиатурой пианино). Для Windows и Linux вы, вероятно, захотите использовать C для этого.
Однако, поскольку вы просто генерируете нажатия клавиш (не пытаясь перехватить их, что я пытался сделать несколько лет назад), вы можете использовать любые функции операционной системы для отправки искусственных нажатий клавиш. В Windows есть интерфейс для этого (возможно, несколько, тот, о котором я думаю,
SendInput
но я знаю, что есть какой-то «журнальный» интерфейс, который делает нечто подобное), и я уверен, что другие операционные системы делают то же самое. Этого вполне может быть достаточно для ваших целей - это то, с чего я начну, потому что маршрут драйвера устройства будет неудобным, и вам, вероятно, придется использовать для него другой язык, чем Java. (Я большой поклонник Java, но интерфейсы, которые операционные системы используют для общения с драйверами устройств, как правило, легче использовать через C и тому подобное.)Обновление : Подробнее о «словаре» аккордов для нажатия клавиш:
По сути, словарь - это три (спасибо, @Adam), который мы ищем с соответствием по длинному префиксу. Подробности:
В машинной стенографии стенографист пишет, нажимая одновременно несколько клавиш на машине стенотипа, затем выпуская их все. Они называют это «ударом» клавиатуры; это как играть аккорд на пианино. Удары часто (но не всегда) соответствуют слогу разговорной речи. Подобно слогам, иногда один удар (аккорд) имеет значение само по себе, в других случаях он имеет значение только в сочетании с последующими штрихами. (Думайте «хорошо» против «хорошо», а затем «пока»). Хотя они будут находиться под сильным влиянием школы, в которой они учились, у каждого стенографа будет свой «словарь» того, какие штрихи они используют для обозначения чего, словарь, который они будут постоянно оттачивать в течение своей трудовой жизни. В словаре будут записи, в которых стенографическая часть (сокращенно «steno») имеет длину одного хода или длину нескольких ходов. Часто будет несколько записей с одинаковым начальным ходом, которые различаются по длине и последующим ударам. Например (и я не буду использовать реальное стено здесь, только заполнители), могут быть эти записи:
(Эти буквы не предназначены для музыкальных нот, просто абстрактные маркеры.)
Обратите внимание, что
A
начинается несколько записей, а также обратите внимание, что способ переводаC
штриха зависит от того, видели ли вы ранее aA
, aB
или вы начинаете заново.Также обратите внимание, что (хотя это не показано в очень небольшом примере выше), может быть несколько способов «воспроизвести» одно и то же слово или фразу, а не только один. Стенографы делают это, чтобы облегчить переход от предыдущего слова к следующему в зависимости от положения руки. Там есть очевидная аналогия с музыкой, и вы можете использовать ее, чтобы сделать процесс набора текста более похожим на воспроизведение музыки, чтобы не допустить, чтобы это отрицательно сказалось на игре на пианино, и максимально увеличить вероятность того, что это действительно поможет с RSI.
При переводе steno в стандартный текст мы снова используем поиск «поиск по самому длинному префиксу»: алгоритм перевода начинается с первого написанного штриха и ищет записи, начинающиеся с этого штриха. Если есть только одна запись длиной в один штрих, то мы можем с уверенностью сказать «это запись, которую нужно использовать», вывести соответствующий текст, а затем начать заново со следующего удара. Но, скорее всего, этот штрих запускает несколько записей разной длины. Итак, мы смотрим на следующий штрих и видим, есть ли записи, начинающиеся с этих двух штрихов по порядку; и так до тех пор, пока мы не получим совпадение.
Итак, со словарем выше, предположим, что мы видели эту последовательность:
Вот как мы могли бы перевести это:
A
является началом трех записей различной длины; посмотрите на следующий штрих:C
A/C
соответствует только одной записи; Выведите «кондиционер» и начните заново со следующего хода:B
B
начинается две записи; посмотрите на следующий штрих:B
B/B
ничего не запускается; возьмите самый длинный предыдущий match (B
) и выведите это ("пчела")B
= "bee", у нас все еще естьB
штрих в нашем буфере. Он запускает две записи, поэтому посмотрите на следующий штрих:C
B/C
соответствует одной записи; выведите «потому что» и начните заново со следующего удара:A
A
начинается три записи; посмотрим на следующий штрих:B
A/B
начинается две записи; посмотрите на следующий штрих:C
A/B/C
соответствует только одной записи; выведите «буквенный» и начните заново со следующего удара:A
A
начинается три записи; посмотрите на следующий штрих:B
A/B
начинается две записи; посмотрите на следующий штрих:D
A/B/D
ничего не совпадает, поэтому возьмите самый длинный предыдущий match (A/B
) и используйте его для вывода «алфавита». Это оставляет насD
в буфере.D
запускает две записи, поэтому мы обычно просматриваем следующий штрих - но мы обработали все штрихи, поэтому рассмотрим его изолированно. В отдельности это переводится как "собака", поэтому вывод, что.Аспекты вышесказанного отметить:
A/B
следует переводить как «алфавит», а не «альфа» и «пчела».E
будут «непереведенными».)источник
Подумайте о том, чтобы сделать что-то на оборудовании, которое эмулирует USB (или PS / 2?) Клавиатуру. Вы больше не будете зависеть от конкретной ОС или API конкретной ОС. Аппаратное решение выдержит испытание временем. Не зацикливайтесь на использовании старого API в Windows 7, когда все остальные работают под управлением Windows 11! Arduino довольно прост в освоении.
Существует масса информации и помощи для Arduino. Это аппаратная платформа для взлома, созданная для новичков. Он станет больше только сейчас, когда Google продвигает Arduino.
РЕДАКТИРОВАТЬ: Виртуальная клавиатура USB программного и аппаратного обеспечения
источник
Для меня это звучит так, будто вы меньше ищите советов о том, как создать это самостоятельно, и больше спрашиваете, какие ресурсы уже существуют для достижения того, чего вы хотите. В зависимости от вашей ОС, есть много способов сделать это без необходимости писать собственную программу с нуля:
MIDI Stroke
Бесплатно. Для Mac OS X 10.3 и выше . Этот, в частности, поставляется с «возможностью использовать любую MIDI- клавиатуру в качестве полноценной замены компьютерной клавиатуры».
MIDI переводчик Bome
Бесплатно / Открытка (это немного странно). Для Windows 2000 и выше, а также Mac OS X . Изначально он кажется более ориентированным на использование типа AutoHotkey , но если посмотреть дальше, я думаю, что он может делать то, что вы хотите, приятно.
Макс и aka.keyboard
Бесплатно. Для Mac OS X . Не совсем готовое решение, но если вам удобна базовая конфигурация устройства, оно не должно быть слишком плохим.
источник
Вы можете получить доступ к оборудованию с примерами исходного кода в .NET в MIDI DotNet .
Полный рабочий пример исходного кода для создания потока данных MIDI-нот приведен в VB 5/6-Tipp 0521: MIDI-Töne erzeugen (Visual Basic 6.0, где-то тоже версия .NET)
Способ имитировать нажатия клавиш в VB 5/6-Tipp 0155: Tastaturereignisse simulieren (Visual Basic 6.0, где-то тоже версия .NET)
А распознавание нажатий клавиш описано в Tipp-Upload: VB.NET 0266: Globaler KeyHook .
Тогда просто используйте хорошую рабочую матрицу для пианиста
На пианино и когда вы хороший игрок, у вас может быть 10 пальцев на клавиатуре, и если матрица пригодна для использования, вы можете быть намного быстрее, чем любой пользователь компьютерной клавиатуры, я думаю. :-)
В том случае, если я правильно понимаю ваш вопрос, это не должно быть большой вещью.
источник
Я изучал игру на фортепиано в колледже, а затем занялся интерактивным дизайном, программированием и использованием Vim , поэтому я потратил много времени на создание прототипов подобных вещей.
Вы можете довольно быстро добиться этого в Linux, используя графический язык программирования для мультимедийных исполнителей " Pure Data " вместе с x11key external от Alex Andre .
На Mac вы можете использовать MidiStroke . Я полагаю, что метод в Windows задействовал инструменты MidiOx и AutoHotKey . В другой раз у меня была версия, использующая плагин Java для Max / MSP . Я полагаю, что Патрис Коле сделал окна для Pure Data внешними, которые также сработали, но я не могу найти их больше. Кроме того, есть внешний MaxMSP, который может сделать это в Windows. Наконец, несвободный, но потрясающий Osculator может делать то, что вы хотите - см. Страницу функций.
Когда я работал, я никогда не зацикливался на этом, потому что не мог перестать работать с макетом. Было здорово, если бы у меня был электрический монитор на электрической клавиатуре! Удачи.
источник
О MIDI
Вы заявили, что «вообще ничего не знаете о MIDI». Технология MIDI довольно проста, как только вы ее освоите, но с самого начала она может сбить с толку. Одним из ресурсов, который мне чрезвычайно помог в понимании основ MIDI (которые, безусловно, необходимы, если вы хотите программировать взаимодействия MIDI), является книга под названием MIDI для Technophobe . Это простая книга для чтения и очень полезная.
Чистые данные и Макс
По своему опыту разработки интерактивных мультимедиа я столкнулся с двумя очень похожими программами, которые облегчают подключение и отображение сигналов / входов с любого устройства.
Это Max для среды Mac и Pure Data для среды ПК. У обоих есть множество онлайн-документации и учебных пособий по YouTube. Видео Max / MSP Tutorial 1 - использование клавиатуры компьютера в качестве миди-клавиатуры (стиль ableton) демонстрирует встроенную в Max программу, которая отображает клавиатуру компьютера на входы MIDI-клавиатуры (что в сущности является полной противоположностью тому, что вы пытаетесь сделать). Вы можете получить ожидаемые результаты, используя тот же шаблон, но поменять местами сигналы / отображения.
AutoHotKey
AutoHotKey - это бесплатная утилита с открытым исходным кодом для Windows, которая позволяет переназначать клавиши и кнопки на ваших устройствах в макросы. Он изначально поддерживает QWERTY-клавиатуры, джойстики и мышиные макросы.
Однако я смог найти реализацию, поддерживающую конкретное отображение, которое вы ищете. Эти два потока объясняют процесс:
Поддержка MIDI IN в AutoHotkey , обсуждение варианта использования. Автор искал программу, которая могла бы обнаружить вход MIDI IN и преобразовать его в нажатия клавиш .
Библиотека ввода MIDI , решение проблемы автора и опубликованный код / патч для AutoHotKey, который фактически реализует ваш намеченный результат.
По сути, похоже, что AutoHotKey вместе с пользовательским патчем этого пользователя предоставит именно то, что вам нужно для создания сопоставления с клавиатуры MIDI и входного сигнала клавиатуры QWERTY. Все, что вам нужно сделать, это установить, настроить и определить ваши сопоставления.
Что-нибудь еще?
Некоторые из других ответов дали вам гораздо более обширную информацию о MIDI и MIDI-программировании в целом, но, как говорится в вашем посте, это не совсем то, что вы ищете. Я хотел бы помочь вам больше, если это возможно, но было бы проще, если бы вы могли более точно определить тип информации, которую вы ищете. Например, вас больше интересует, как преобразовать входные сигналы MIDI-клавиатуры в сигналы QWERTY- клавиатуры , или ваш основной интерес заключается в поиске готового решения вашей конкретной проблемы? Что вы ищете, что еще не решено?
источник
Вы можете довольно быстро взломать собственную USB-клавиатуру с помощью микроконтроллера Teenys.
На самом деле, у них есть пример кода для того, как сделать клавиатуру USB .
Вы можете подойти к этому двумя способами:
Получить старое пианино и подключить переключатели прямо к подростку
Добавьте дополнительную логику для подключения к порту MIDI и необходимое декодирование.
источник
На самом деле, я работал над этим некоторое время назад, пытаясь записать входные данные ударных рок-группы в мой компьютер (делая небольшой самодельный эмулятор ударных на Java). В любом случае, я задал здесь вопрос о проблеме задержки времени (там есть код опроса) вместе с тем, что я пытался сделать.) И если я могу найти свою программу, я могу дать вам код, она использует сторонний API ( JInput ).
Удачи в любом случае.
источник
Попробуйте MIDI-переводчик Bome .
Он работает кроссплатформенно, может легко преобразовать любой MIDI- ввод в нажатие клавиши, быстро установить и настроить, плюс он бесплатный для личного использования.
Существует краткое руководство : MIDI Translation - MIDI to Keystrokes , о том, как его легко настроить:
По сути, есть бесконечные возможности того, что вы можете сделать, в том числе клавиши редактирования и изменения. Я использую его для своей живой аудиосистемы, чтобы управлять моей DAW, используя мое пианино, и у меня никогда не было проблем.
источник
В Java вы можете использовать JMF (Java Media Framework) для преобразования MIDI-сигналов. Основы дизайна клавиатуры просты в использовании, то есть пользовательский интерфейс; и поместите часто используемые символы / символы под рукой.
Пример кода и API в Java Sound Resources: Примеры: цифровая обработка сигналов (DSP) помогают понять, как обрабатывать сигнал.
Еще несколько ссылок:
источник
Есть программа под названием GlovePIE . Вы можете запрограммировать его на простом языке сценариев, и я считаю, что он поддерживает MIDI. Я не уверен, подходит ли это под категорию «Java», но, тем не менее, это отличная программа. Я использовал его для управления роботами с помощью контроллеров PS3 . Это очень мощно.
источник
Многие клавиатуры имеют разъем последовательного порта ( RS-232 ) для отправки MIDI-сигналов на компьютер. Я использую программу Girder для преобразования связи через последовательный порт в нажатия клавиш.
Girder имеет функцию «сопоставления», которая позволяет вам сопоставлять каждый ключ, один за другим, с соответствующим нажатием клавиши.
Это может быть простое решение, которое вы ищете!
источник
Просто изучите стенографию!
Это ясно из всей дискуссии с вашей стороны. Вы не хотите заново изобретать колеса с технической точки зрения. Но как только вы установили соединение (что задает этот вопрос) и заработали, у вас все еще есть большая часть работы впереди: вы должны тренировать свой мозг. Вы также должны изобрести самый умный, самый эффективный способ сделать это - вопрос дизайна, полностью выходящий из-под контроля компьютерных техников. Вы или любой из нас потерпят неудачу.
К счастью, проблема была решена и отточена, хотя веками назревали ...
Учитесь стенографии!
Да, это отбросит вас назад. Но сколько стоят сотни часов вашего собственного времени, что в итоге дает менее благоприятный результат? Кроме того, в статье о стенографии в Википедии говорится, что «это больше похоже на клавиатуру пианино».
Если, конечно, вам не нужен побочный эффект. Я должен был признать, я никогда не думал об этой возможности, это было бы действительно интересно видеть, как кто-то выбил текст с клавиатуры пианино!
Вы можете начать с клавиатуры USB с сенсорной панелью (или указатель будет более эргономичным?), Использовать Plover для его перевода (я уверен, что его можно настроить так, чтобы не буквенные клавиши сохраняли свою функциональность, поскольку они важны для программирование), или, следуйте нити Re: Plover клавиатура, чтобы накатить свою собственную USB-клавиатуру для стенографии, или, купить стенотип .
Удачи!
источник
pthread
?Посмотрите на аркадные игры MAME . Они создали аппаратные устройства, позволяющие вводить данные из любого количества различных предметов. IPAc , например, преобразует сигналы от устройств ввода в USB , что компьютер может затем использовать для эмуляции клавиш. Вы можете использовать любую комбинацию устройств ввода, расположенную любым удобным для вас способом, не требуя сумасшедшей логики программирования - поскольку программное обеспечение для интерпретации ввода уже выполнено и хорошо протестировано.
Я видел входы в кабину симулятора полета, специальные киоски и системы голосования, встроенные в этот метод ..... и цена подходящая!
источник
Для решения этой проблемы вам понадобится несколько вещей:
Способ захвата данных MIDI с вашей клавиатуры. В зависимости от интерфейса: MIDI-интерфейс (классический) или USB- MIDI-интерфейс (современный) наиболее вероятным интерфейсом является компьютер, поскольку он предоставляет наибольшее количество опций. Микроконтроллеры USB-хоста не так просты, как просто использование компьютера.
Схема для преобразования MIDI-данных в нажатия клавиш. Как заметил один пользователь, аккорды - это путь, так как количество клавиш не будет зависеть от количества клавиш пианино.
Способ ввода ключа в операционную систему. Для этого потребуется драйвер низкого уровня, чтобы быть точным. Я поиграл с приложениями, которые вводят данные клавиатуры и мыши в приложения в Windows 7, и они могут быть нестабильными и зависеть от того, находится ли приложение в фокусе. Это самая сложная часть интерфейса. Что может сработать, так это создать микроконтроллер HID USB с последовательным интерфейсом.
Последовательный интерфейс создаст виртуальный последовательный порт. Программное обеспечение, которое считывает данные MIDI и производит нажатия клавиш, может отправлять последовательное сообщение на виртуальный последовательный порт. Микроконтроллер посылает нажатие клавиши, чтобы оно выглядело как стандартный ввод с клавиатуры. Это позволило бы сопрягать как MIDI-порты, так и USB-MIDI-клавиатуры.
Хммм, с этим типом интерфейса вы также можете имитировать мышь и использовать некоторые настройки клавиш пианино для оси мыши и кнопок. Давление может быть использовано для определения скорости указателя мыши. Таким образом, вы могли бы также устранить мышь. Еще одно преимущество этого подхода - любой тип устройства ввода, которое вы подключаете, может взаимодействовать с виртуальным последовательным портом для получения событий клавиатуры и мыши. Поэтому, если вы хотите добавить другое оборудование, такое как барабанные педали или джойстик, нужно настроить программу, которая взаимодействует с последовательным интерфейсом.
Другой подход к описанному выше аналогичен рассмотренному выше использованию Arduino, но также включает USB Host Shield от Sparkfun для работы с музыкальными клавиатурами на основе USB. Это позволяет запрограммировать Arduino как комбинацию клавиатуры или мыши в микросхеме загрузчика и позволяет устройству выступать в роли USB- хоста для музыкальной клавиатуры на основе USB. Тогда вы покрыты для обоих типов. Хотя я все еще думаю, что метод виртуального последовательного порта является более гибким и будет проще программировать в долгосрочной перспективе. Устройство Arduino будет сложнее изменить, чем настольную программу или сервис.
Есть еще одна возможность: клавиатуры для одной руки уже существуют. Я видел видео на них, но вы должны были бы определить, повредили ли они ваши руки или нет.
источник
Должно быть достаточно легко использовать что-то вроде интерфейса .NET DirectSound для подключения к MIDI-устройству. Вам нужно будет идентифицировать ваше целевое MIDI-устройство и затем получить код для прослушивания входящих сообщений (есть статьи об этом через Google).
Поскольку вы используете MIDI в качестве клавиатуры, вам нужно обнаружить только два MIDI-сообщения, а именно: включить и отключить ноты. MIDI-сообщение представляет собой три байта данных, определяющих команду, ноту и скорость. Нота отключена - это просто номер ноты (иногда «плохие» MIDI-стеки посылают ноту с нулевой скоростью, которую вы также должны ожидать).
Как только вы получите сообщения, переводящие их, вывод на клавиатуру должен быть довольно простым из .NET.
В других ответах есть много советов по техническим вопросам; Я просто хотел дать вам представление о реальных MIDI-сообщениях. Удачи!
источник
Вы получите лучшие и более счастливые результаты (независимо от того, какую операционную систему и / или программу DAW вы хотите использовать), играя на любой внешней MIDI-клавиатуре в качестве контроллера через звуковую карту. Затем направьте это в свое программное обеспечение GB (или что-то еще), и тональный сигнал генерирует множество звуков, которые они предоставили вам таким образом в режиме реального времени.
Если ваша звуковая карта не поддерживает MIDI I / O (входы / выходы / выходы), это не проблема. Вы можете рассмотреть возможность исследования и инвестирования во внешний настольный конвертер MIDI. Многие из них оснащены для дальнейшего преобразования MIDI-выходов в USB 2.0 (в обход существующей звуковой карты в целом).
Например: довольно сложно получить результаты «благодати», похожие на человеческие, с помощью клавиши изменения Z и X с помощью компьютерной клавиатуры и карандаша. Когда вместо этого ваши собственные пальцы могут просто играть на ней с помощью MIDI-клавиатуры из собственных диапазонов физических октавных регистров - немедленно!
Я понимаю, бюджетные ограничения могут быть связаны. Но некоторые из этих, казалось бы, дешевых октавных клавиатур типа «Casio», продаваемых в Radio Shack менее чем за 100 долларов США (* или меньше), - это все, что вам нужно (плюс некоторые из их встроенных звуковых патчей и секвенсоров звучат и работают). на удивление хорошо и для других вещей).
Опции RadioShack MIDI клавиатуры .
Что касается внешних MIDI-конвертеров для существующих звуковых карт, я провел несколько поисков в Google для вас, особенно с учетом платформ Mac:
Поначалу большая часть информации о внешнем преобразовании MIDI может оказаться для вас обременительной, поэтому я рассмотрел некоторые вещи как «удобные» для ваших соображений и бюджета:
Нет ничего плохого в том, чтобы использовать виртуальные клавиатуры как VST при использовании DAW . У них есть свое место.
Но вы звучите как опытный клавишник. Итак, почему бы не рассмотреть внешние варианты преобразования MIDI / клавиатуры, которые я только что упомянул для себя?
Удачи, и я надеюсь, что это дало вам некоторые идеи, которые могут и будут работать для вас!
источник
Если вы не хотите заниматься программированием самостоятельно, а просто хотите решить проблему, вы можете просто купить USB-MIDI-клавиатуру, где вы можете переназначить любую клавишу для отправки выходного сигнала клавиатуры QWERTY вместо MIDI-выхода, для пример M-Audio Axiom Pro
Этот метод будет работать с любой ОС и любым компьютером, который поддерживает стандартные USB-клавиатуры, поскольку MIDI-клавиатура будет идентифицировать себя как стандартная клавиатура QWERTY.
источник
Вы можете использовать простой скрипт AutoIt для чтения событий MIDI, см. « MIDI Input» .
Вам также понадобится MIDI UDF и имитировать нажатия клавиш .
Чтение MIDI-событий должно быть простым, но разные MIDI-контроллеры (инструменты) имеют разные функции. Постарайтесь сначала выяснить, на что способно ваше MIDI-пианино, а затем посмотрите, как лучше всего сопоставить эти функции с симулированными нажатиями клавиш QWERTY .
Если вы хотите, вы могли бы что - то на экране или в лоток , чтобы помочь вам увидеть , что вы делаете (то есть, для Shift, Ctrlи Altмоделирование).
источник
Вы можете взглянуть на клавишные клавиатуры . У них есть то преимущество, что вам не нужно писать драйвер для них, прежде чем вы сможете их использовать, а некоторые похожи на раскладку клавиатуры пианино.
источник
Если вы знаете кодирование на Java, вы можете использовать этот способ:
Во- первых, реализовать
javax.sound.midi.Receiver
с помощьюsend(..)
метода, отображающего On 'событий нажатия клавиш , как вы хотите.Вам нужно будет получить содержимое MidiMessage с его
getMessage
методом и интерпретировать его по-своему. Значение байтов сообщения можно найти в сообщениях MIDI .Получив «note on» или «note off» для определенной клавиши клавиатуры, вы можете сопоставить ее с клавишей, которая вам нравится, присвоив ей константу класса KeyEvent, что-то вроде C # 4 -> KeyEvent.VK_A и т. Д. , Этот код ключа может затем использоваться методами
java.awt.Robot
keyPress и keyRelease для фактической отправки нажатия клавиши в ОС и, следовательно, в другие приложения.источник
Я согласен с ответом Брайана О'Делла - если бы это был мой проект, я бы сделал это аппаратно. Его преимущество в том, что он не зависит от платформы и аппаратного обеспечения - ваш компьютер заменяет необходимость в интерфейсе MIDI-USB и API для ПК.
mbed - это платформа для быстрого создания прототипов, которую очень легко освоить, и она имеет множество преимуществ по сравнению с Arduino IMHO (онлайн-компилятор, 512 КБ флэш-памяти, 96 МГц, язык C ++). Он имеет интерфейс клавиатуры USB и интерфейс USB Midi, предварительно написанный для вас.
Сообщество очень дружелюбно и готово помочь, и существует множество существующих проектов, использующих скрытую эмуляцию MIDI и USB - поиск на Youtube по запросу «mbed MIDI» или аналогичный.
источник
Если вы используете Linux, обратите внимание на Footware .
Это должно быть именно то, что вы ищете - если вы подстраиваете MIDI-тональность в соответствии с вашими предпочтениями ...
Я никогда не думал, что это может быть полезно для всех, кроме меня; о)
источник
Попробуйте использовать систему на основе микроконтроллера, такую как Arduino .
источник
Это не было бы слишком сложно.
Я предполагаю, что вы находитесь на Windows , но не уверен в этом. Я написал MIDI- секвенсор, http://pianocheetah.com , на простом старом C ++ , и он позволяет вам использовать клавиатуру пианино для запуска команд. Нет никаких причин, по которым вы не могли бы сделать то же самое, чтобы вставить клавиши в поток ввода с клавиатуры.
Но давай сейчас. Вы помните, сколько времени вам понадобилось, чтобы научиться играть на клавиатуре? Готовы ли вы пройти через это снова? И готовы ли вы осквернить свою благословенную клавиатуру кучей глупо выглядящих символов клавиш повсюду на ней?
Вам нужно будет использовать как минимум 26 буквенных, 10 цифровых, 11 знаков пунктуации и как минимум 12 функциональных клавиш И их смещенные состояния. Так что это 60 клавиш плюс сдвинутые состояния. Это сожжет целых 5 октав ключей. Вы будете играть на пианино "хмель" = все = время. Попрощайтесь, чтобы коснуться набора текста.
Вы можете спасти себя от RSI , но вы создали для себя другой тип кошмара.
И удачи в том, чтобы ваш босс купил вам MIDI-клавиатуру на работе.
Если вы научились по-настоящему играть на пианино, вы научились играть без стресса. Сделайте это на QWERTY- клавиатуре. Нет напряжения. Начните медленно.
источник