Использование клавиатуры пианино в качестве компьютерной клавиатуры
У меня есть RSI проблемы и попробовали 30 различных клавиатур на компьютере, которые все вызвали у меня боль. Игра на пианино не вызывает у меня боли. Я играл на пианино около 20 лет без каких-либо проблем с болью. Я хотел бы знать, есть ли способ захватить MIDI с MIDI-клавиатуры и вывести клавиатурные штрихи. Я вообще ничего не знаю о MIDI, но мне хотелось бы, чтобы некоторые рекомендации о том, как преобразовать этот сигнал в нажатие клавиши.
Ответы
Ответ 1
Хорошая библиотека в .NET с полной поддержкой midi (BASS), перейдите в http://www.un4seen.com.
И для другой части, переведя MIDI-заметки клавиатуры на клавиши и многое другое, я бы пошел на AutoItX, интерфейс ActiveX/COM и DLL для autoIt. Информация и загрузка, перейдите в http://www.autoitscript.com/site/autoit/
Не нужно писать драйвер клавиатуры.
Ответ 2
В течение многих лет я не программировал MIDI-программирование, но ваша фундаментальная идея очень проста (без каламбура).
MIDI - это поток "событий" (или "сообщений" ), два из самых фундаментальных "примечание" и "примечание", которые переносят с собой номер ноты (0 = C на пять октав ниже среднего C, через 127 = G пять октав выше G выше среднего C, в полутонах). Эти события несут "скорость" на клавиатурах, чувствительных к скорости ( "чувствительный к касанию" ) с силой (как вы догадались) от 0 до 127.
Между скоростью, chording и педалями, я думаю, вы могли бы придумать довольно хороший "типизирующий" интерфейс для фортепианной клавиатуры. Chording, в частности, может быть очень мощным методом — как я упоминал в комментариях, почему рядовые стенографисты могут использовать stenotype , чтобы не отставать от людей, говорящих часами подряд, когда даже машинисты высочайшего класса не могли бы работать какое-либо время с помощью обычных клавиатур в стиле пишущей машинки. Как и в случае с машинной стенографией, вам понадобится "словарь" значений аккордов и последовательности аккордов. (Можете ли вы сказать, что я работал на программной стороне машинной стенографии?)
Для этого основные части:
- Прием MIDI-входа. Не пытайтесь делать это самостоятельно, используйте библиотеку. Изменить. По-видимому, Java Sound API поддерживает MIDI, включая прием событий от MIDI-контроллеров. Круто. Эта страница также может быть полезна.
- Преобразование этих данных в нажатия клавиш, которые вы хотите отправить, например. через словарь, упомянутый выше.
- Вывод нажатий клавиш на компьютер.
Чтобы быть максимально совместимым с программным обеспечением, вам нужно написать это как драйвер устройства клавиатуры. Это плагин к операционной системе, который служит источником для событий клавиатуры, разговаривая с основным оборудованием (в вашем случае, с клавиатурой пианино). Для Windows и Linux вы, вероятно, захотите использовать C для этого.
Однако, поскольку вы просто генерируете нажатия клавиш (не пытайтесь перехватить их, что я пытался сделать много лет назад), вы можете использовать любые функции, которые имеет операционная система для отправки искусственных нажатий клавиш. У Windows есть интерфейс для этого (возможно, несколько, я думаю о SendInput
, но я знаю, что есть некоторый "журнальный" интерфейс что-то похожее), и я уверен, что другие операционные системы тоже работают. Этого может быть достаточно для ваших целей — где я начну, потому что маршрут драйвера устройства будет неудобным, и вам, вероятно, придется использовать для него другой язык, чем Java. (Я большой поклонник Java, но интерфейсы, которые операционные системы используют для разговора с драйверами устройств, как правило, более легко потребляются через C и аналогичные.)
Обновить. Подробнее о "словаре" аккордов на нажатия клавиш:
В принципе, словарь представляет собой trie (спасибо, @Adam), который мы ищем с использованием длинного префикса. Подробности:
В машинной стенографии стенографист пишет, одновременно нажимая несколько клавиш на машине с stenotype, а затем освобождая их все. Они называют это "штрихом" клавиатуры; это как играть аккорд на фортепиано. Штрихи часто (но не всегда) соответствуют слогу разговорного языка. Подобно слогам, иногда один удар (аккорд) имеет смысл сам по себе, в других случаях он имеет смысл только в сочетании со следующими штрихами. (Подумайте "хорошо" и "хорошо", а затем "до свидания" ). Хотя на них будет сильно влиять школа, в которой они учились, у каждого стенографиста будет свой "словарь" того, какие штрихи они используют для обозначения того, что словарь, который они будут постоянно оттачивать в течение своей трудовой жизни. Словарь будет содержать записи, в которых стенографическая часть ( "стено", для краткости) - один такт длиной или несколько ударов. Часто будет несколько записей с тем же начальным штрихом, которые различаются по их длине и последующим штрихам. Например (и я не буду использовать настоящий стено здесь, просто заполнители), могут быть следующие записи:
A = alpha
A/B = alphabet
A/B/C = alphabetic
A/C = air conditioning
B = bee
B/C = because
C = sea
D = dog
D/D = Dee Dee
(Эти буквы не предназначены для музыкальных нот, а только для абстрактных маркеров.)
Обратите внимание, что A
запускает несколько записей, а также отмечает, что то, как вы переводите ход C
, зависит от того, видели ли вы ранее A
, a B
или начинаете свежие.
Также обратите внимание, что (хотя и не показано в очень маленьком примере выше), может быть несколько способов "воспроизвести" одно и то же слово или фразу, а не только одну. Стенографы делают это, чтобы облегчить переход от предыдущего слова к другому в зависимости от позиции руки. Там есть очевидная аналогия с музыкой, и вы можете использовать это, чтобы сделать ваш вводный поток более похожим на воспроизведение музыки, чтобы как предотвратить это негативное влияние на вашу игру на фортепиано, так и максимально увеличить вероятность того, что это действительно поможет с RSI.
При переводе стено в стандартный текст снова мы используем поиск с самым длинным префиксом: алгоритм перевода начинается с первого такта, когда-либо написанного, и ищет записи, начинающиеся с этого штриха. Если есть только одна запись, и это один шаг длинный, то мы можем надежно сказать "что запись использовать", вывести соответствующий текст, а затем начать новый со следующего такта. Но, скорее всего, этот штрих запускает несколько записей различной длины. Итак, мы рассмотрим следующий штрих и посмотрим, есть ли записи, которые начинаются с этих двух штрихов по порядку; и так далее, пока мы не получим матч.
Итак, со словарем выше, предположим, что мы увидели эту последовательность:
A C B B C A B C A B D
Вот как мы это переведем:
-
A
- начало трех записей различной длины; посмотрите следующий ход: C
-
A/C
соответствует только одной записи; вывести "кондиционер" и начать новый со следующего хода: B
-
B
запускается две записи; посмотрите следующий ход: B
-
B/B
ничего не запускает; возьмите самый длинный предыдущий матч (B
) и выведите его ( "bee" )
- Вывод
B
= "bee", у нас все еще есть ход B
в нашем буфере. Он запускает две записи, поэтому рассмотрим следующий ход: C
-
B/C
соответствует одной записи; вывод "из-за" и начать новый со следующего такта: A
-
A
запускается три записи; посмотрите следующий ход: B
-
A/B
запускается две записи; посмотрите следующий ход: C
-
A/B/C
соответствует только одной записи; выводить "буквенный" и начинать новый со следующего такта: A
-
A
запускается три записи; посмотрите следующий ход: B
-
A/B
запускается две записи; посмотрите следующий ход: D
-
A/B/D
ничего не соответствует, поэтому возьмите самое длинное предыдущее совпадение (A/B
) и используйте его для вывода "алфавита". Это оставляет нас с D
еще в буфере.
-
D
запускается две записи, поэтому мы обычно будем смотреть на следующий штрих — но мы обработали все штрихи, поэтому рассмотрим это отдельно. В отдельности он переводится как "собака", поэтому выведите это.
Аспекты вышеизложенного:
- У вас есть буфер штрихов, который вы прочитали, но еще не переведены.
- Вы всегда хотите соответствовать большинству ударов по единственной записи, которую вы можете.
A/B
следует перевести как "алфавит", а не "альфа" и "пчела".
- (Не показано выше). У вас могут быть последовательности штрихов, которые вы не можете перевести, потому что они не соответствуют чему-либо в словаре. (Люди Steno используют существительное "нетранслировать" - например, с нашим словарем, штрихи
E
будут "нетранслируемыми".)
- (Не показано выше). Некоторые теории стеной позволяют использовать один и тот же набор штрихов для обозначения более чем одного объекта, основанного на более широком контексте. Стено люди называют эти "конфликты". Вероятно, вы захотите запретить их в своем проекте, и на самом деле, когда стенографисты были переведены вручную стенографистом, конфликты были прекрасны, потому что они знали, что именно в предложении они были тем, кем был правильный выбор, но с ростом машинного перевода, бесконфликтные теории стено возникли специально, чтобы избежать необходимости переходить в результате переведенного текста и "исправлять" конфликты.
- Перевод в реальном времени (что вы делаете) означает, что если вы получите частичное совпадение, вы захотите удержать его, ожидая следующего аккорда — но, вероятно, только до таймаута, после чего вы переводите то, что у вас есть в буфере, насколько сможете. (Или, может быть, вам не нужен тайм-аут, это ваш звонок.)
- Вероятно, лучше всего иметь удар, который говорит "игнорировать предыдущий удар"
- Наверное, лучше иметь удар, который говорит "полностью очистить буфер без вывода чего-либо"
Ответ 3
Подумайте о том, чтобы сделать что-то в аппаратном обеспечении, которое эмулирует клавиатуру usb (или ps/2?). Вы больше не будете зависить от конкретной ОС или конкретного API OS. Аппаратное решение выдержит испытание временем. Не зацикливайтесь с использованием старого API в Windows 7, когда все остальные работают под управлением Windows 11! Arduino довольно легко изучить.
Существует масса информации и помощь там для Arduino. Это аппаратная хакерская платформа, созданная для новичков. Теперь это будет только больше, если Google нажимает Arduino.
EDIT: виртуальная USB-клавиатура программное обеспечение и оборудование
Ответ 4
Мне кажется, что вы ищете меньше советов о том, как построить это самостоятельно и еще больше спрашивать, какие ресурсы уже существуют, чтобы выполнить то, что вы хотите. В зависимости от вашей ОС есть много способов сделать это без необходимости писать собственную программу с нуля:
MIDI-ход
Free. Для Mac OS X 10.3 и. В частности, это "возможность использовать любую MIDI клавиатуру, заменяющую клавиатуру с полной заменой".
Bome MIDI Translator
Бесплатная/Открытка (это немного странно). Для Windows 2000 и выше и Mac OS X. Поначалу он больше ориентирован на AutoHotkey -тип использования, но при дальнейшем просмотре я думаю, что он мог бы делать то, что вам нужно.
Max и aka.keyboard
Free. Для Mac OS X. Не совсем "готовое из коробки" решение, но если вам нравится базовая конфигурация устройства, это не должно быть слишком плохо.
Ответ 5
Вы можете получить доступ к оборудованию с образцами исходного кода в .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 пальцев на клавиатуре, и если матрица пригодна для использования, вы можете быть намного быстрее, чем любой пользователь компьютерной клавиатуры, я думаю.: -)
В этом случае, если я правильно понимаю ваш вопрос, это не должно быть большой проблемой.
Ответ 6
Я учился игре на фортепиано в колледже, а затем вступил в дизайн взаимодействия, программирование и использование Vim, поэтому я потратил много времени на создание прототипов вещей, таких как это.
Вы можете быстро это сделать в Linux, используя графический язык программирования для мультимедийных художников, Pure Data ", а также внешний x11key Алекс Андре.
На Mac вы можете использовать MidiStroke. Я считаю, что метод в Windows включает в себя инструменты MidiOx и AutoHotKey. В другой раз у меня была версия, использующая плагин Java для Max/MSP. Я полагаю, что Patrice Colet сделал внешние окна для Pure Data, которые тоже работали, но я больше не могу их найти. Кроме того, внешний для MaxMSP, который может сделать это в Windows. Наконец, несвободные, но удивительные Osculator могут делать то, что вы хотите - см. Страницу функций.
Когда я заработал, я никогда не зацикливался на нем, потому что я не мог прекратить инструменты с макетом. Это было здорово, просто мой монитор на моей электрической клавиатуре! Удачи.
Ответ 7
О MIDI
Вы заявили, что "ничего не знаете о MIDI". Технология MIDI довольно прямолинейна, как только вы ее понимаете, но с самого начала это может сбивать с толку. Один из ресурсов, который был чрезвычайно полезен для меня в понимании основ MIDI (которые, безусловно, необходимы, если вы хотите запрограммировать MIDI-взаимодействия), - это книга под названием MIDI для Technophobe. Это простая книга для чтения и очень полезна.
Чистые данные и Макс
В моем опыте разработки интерактивных мультимедиа есть две очень похожие программы, с которыми я столкнулся, которые облегчают подключение и отображение сигналов/входов с любого устройства.
Это Max для среды Mac и Pure Данные для среды ПК. Оба имеют множество онлайн-документации и учебных пособий YouTube. Видео Max/MSP Tutorial 1 - использование вашей компьютерной клавиатуры в качестве midikeyboard (способный стиль) демонстрирует программу, построенную в Max, которая отображает компьютерную клавиатуру для входы MIDI-клавиатуры (что в основном противоположно тому, что вы пытаетесь сделать). Вы можете получить свои намеченные результаты, используя тот же шаблон, но изменяя сигналы/отображения.
AutoHotKey
AutoHotKey - бесплатная утилита с открытым исходным кодом для Windows, которая позволяет переназначать ключи и кнопки на устройствах на макросы. Он поддерживает QWERTY-клавиатуру, джойстики и мыши.
Однако мне удалось найти реализацию, поддерживающую конкретное сопоставление, которое вы ищете. Эти два потока объясняют процесс:
-
Поддержка MIDI IN в AutoHotkey, обсуждение варианта использования. Автор искал программу , которая могла бы обнаружить вход MIDI IN и перевести его на клавиши.
-
Библиотека ввода MIDI, решение проблемы автора и опубликованный код/патч для AutoHotKey, который на самом деле реализует ваш предполагаемый результат.
В принципе, похоже, что AutoHotKey вместе с этим пользовательским патчем предоставит именно то, что вам нужно, чтобы создать сопоставление с MIDI-клавиатуры на входной сигнал клавиатуры QWERTY. Все, что вам нужно сделать, это установить, настроить и определить ваши сопоставления.
Что-нибудь еще?
Некоторые из других ответов предоставили вам гораздо более обширную информацию о MIDI и MIDI-программировании в целом, но, поскольку ваше сообщение гласит, что это не похоже на то, что вы ищете. Я хотел бы помочь вам больше, если это возможно, но было бы проще, если бы вы были более конкретными в отношении типа информации, которую вы ищете. Например, вас больше интересует, как преобразовать входные сигналы MIDI-клавиатуры в сигналы клавиатуры QWERTY, или это ваш основной интерес решение "из коробки" для вашей конкретной проблемы? Что вы ищете, это еще не рассмотрено?
Ответ 8
Вы можете быстро взломать свою собственную USB-клавиатуру с помощью микроконтроллера Teenys.
На самом деле у них есть пример кода для создания USB-клавиатуры.
Вы можете подойти двумя способами:
Ответ 9
На самом деле, я работал над этим некоторое время назад, пытаясь захватить Rock Band барабанные входы в мой компьютер (создавая маленький самодельный барабан Java эмулятор) В любом случае, я задал здесь вопрос о том, что проблема с задержкой времени (там есть код для голосования, а также то, что я пытался сделать). И если я могу найти свою программу, я могу дать вам код, он использует сторонний API (JInput).
Удачи в любом случае.
Ответ 10
Попробуйте Bome MIDI-переводчик.
Он работает с кросс-платформой, может конвертировать любой MIDI вход в цепочку легко, быстро настроить и настроить, а также бесплатно для личного использовать.
Есть учебник, Quick Tip: MIDI Translation - MIDI to Keystrokes, о том, как легко настроить его:
В принципе, есть бесконечные возможности того, что вы можете делать, включая клавиши chording и modifier. Я использую его для своей живой звуковой установки для управления моим DAW с помощью моего пианино и никогда не имел проблемы.
Ответ 11
В Java вы можете использовать JMF (инфраструктуру Java Media) для преобразования MIDI-сигналов.
Основной дизайн клавиатуры прост в использовании, то есть пользовательский интерфейс; и часто используйте часто используемые символы charcter/symbol.
Пример кода и API в Java Sound Resources: Примеры: Цифровая обработка сигналов (DSP) помогают понять, как обрабатывать сигнал.
Еще несколько ссылок:
Ответ 12
Существует программа под названием GlovePIE. Вы можете запрограммировать его на простом языке сценариев, и я считаю, что он поддерживает MIDI. Я не уверен, что это соответствует категории "Java", но, тем не менее, это отличная программа. Я использовал его для управления роботами с помощью PS3. Это очень мощный.
Ответ 13
У многих клавиатур есть последовательный порт (RS-232) для отправки MIDI-сигналов на компьютер. Я использую программу, называемую Girder, чтобы преобразовать связь последовательного порта в штрихи клавиатуры.
Гирдер имеет функцию "сопоставления", которая позволяет сопоставлять каждую клавишу по одному на соответствующее нажатие клавиши.
Это может быть простое решение, которое вы ищете!
Ответ 14
У Кейси есть лучший ответ. Я добавил комментарий к нему и поддержал его. Этот вид программного обеспечения принадлежит либо драйверу устройства, либо встроенной системе. Драйверы устройств намного сложнее, и они не переносятся на другие ОС. Для справки см. Проблемы с Winmodems в Linux.
Поместив свой код во встроенную систему, вы сделаете его переносимым на любое MIDI-устройство с USB-портом и любым компьютером, который принимает USB-клавиатуры.
Ответ 15
Просто изучите стенографию!
Это ясно из всех обсуждений с вашей стороны. Вы не хотите изобретать колеса с технической точки зрения. Но как только у вас есть связь (что задает этот вопрос), и вы работаете и работаете, у вас все еще впереди большая работа: вам нужно тренировать свой мозг. Вы также должны изобрести самый умный, самый эффективный способ сделать это - проблема дизайна полностью из ревма компьютерных техников. Вы или кто-то из нас упадет.
К счастью, проблема была решена и отточена, хотя веками зрелости...
Изучите стенографию!
Да, это вернет вам некоторое гнездо. Но каковы сотни часов вашего собственного времени, а в конце - менее благоприятный результат? Кроме того, стенография статьи в Википедии говорит: "Это больше похоже на клавиатуру пианино".
Если, конечно же, вы не хотите, чтобы эффект одновременного воспроизведения. Я должен был признать, что я никогда не думал об этой возможности, было бы действительно интересно видеть, как кто-то выкинул текст с клавиатуры пианино!
Вы можете начать с USB-клавиатуры с сенсорной панелью (или указывающей stick будет более эргономичным?), используйте Plover, чтобы перевести его (я уверен, что он может быть настроен так, чтобы небуквенные ключи сохраняют свою функциональность, так как они критически важны для программирования), или, следуйте за потоком Re: Plover keyboard, чтобы свернуть собственную клавиатуру USB-стенографии, или, stenotype.
Удачи!
Ответ 16
Посмотрите MAME аркадные игры. Они создали аппаратные устройства, позволяющие вводить любое количество различных элементов. iPac, например, преобразует сигналы от устройств ввода в USB, которые компьютер может затем использовать для эмуляции ключей. Вы можете использовать любую комбинацию устройств ввода, расположенных удобно, без необходимости использовать сумасшедшую логику программирования, поскольку программное обеспечение для интерпретации ввода уже выполнено и хорошо протестировано.
Я видел пилотируемые входы в кабины пилота, пользовательские киоски и системы голосования, построенные в этом методе..... и цена правильная!
Ответ 17
Чтобы решить эту проблему, вам понадобятся несколько вещей:
-
Способ захвата MIDI-данных с клавиатуры. В зависимости от интерфейса: MIDI-интерфейс (классический) или USB Интерфейс MIDI (современный), наиболее вероятный интерфейс - для компьютера, поскольку он предоставляет большинство параметров, Микроконтроллеры USB-хоста не так просты, как просто использование компьютера.
-
Схема преобразования MIDI-данных в нажатия клавиш. Как указал один из пользователей, аккорды - это путь, так как количество клавиш не будет зависеть от количества клавиш фортепиано.
-
Способ ввода ключа в операционную систему. Для этого потребуется драйвер низкого уровня. Я играл с приложениями, которые вводят данные клавиатуры и мыши в приложения в Windows 7, и это может быть шероховато и зависит от того, находится ли приложение в настоящее время в фокусе. Это самая сложная часть интерфейса. Что может работать, это создать HID микроконтроллер клавиатуры USB, который также имеет последовательный интерфейс.
Последовательный интерфейс создаст виртуальный последовательный порт. Программное обеспечение, которое считывает MIDI-данные и производит нажатия клавиш, может отправить последовательное сообщение в виртуальный последовательный порт. Микроконтроллер отправил бы нажатие клавиши, чтобы он выглядел как стандартный ввод на клавиатуре. Это позволит взаимодействовать как с MIDI-портами, так и с USB-клавиатурами MIDI.
Хммм, с этим типом интерфейса вы также можете имитировать мышь и использовать некоторые настройки клавиш фортепиано для оси и кнопок мыши. Давление может быть использовано для определения скорости указателя мыши. Таким образом, вы также можете устранить мышь. Другим преимуществом такого подхода является то, что любой тип устройства ввода, с которым вы подключаетесь, может разговаривать с виртуальным последовательным портом для создания событий клавиатуры и мыши. Поэтому, если вы хотите добавить другое оборудование, такое как барабанные педали или джойстик, это будет вопрос настройки программы, которая говорит с последовательным интерфейсом.
Другое выступление выше, как и выше, для использования Arduino, но также включает USB Host Shield от Sparkfun для обработки музыки на основе USB клавиатуры. Это позволяет Arduino запрограммироваться как комбинация клавиатуры или клавиатуры мыши в чипе загрузчика и позволяет устройству действовать USB хост для USB основанная музыкальная клавиатура. Затем вы покрыты для обоих типов. Хотя, по-прежнему я считаю, что метод виртуального последовательного порта более гибкий и будет легче программировать в долгосрочной перспективе. Устройство Arduino будет сложнее изменить, чем настольная программа или служба.
Есть еще одна возможность:
Аккордные одноручные клавиатуры уже существуют. Я видел видео на них, но вам нужно было бы определить, причиняют ли они ваши руки или нет.
Ответ 18
Совсем не связанный с программой, но я могу предложить несколько советов о том, как управлять RSI.
Есть таймеры, которые ускоряют вашу работу в течение дня, внося частые микроперерывы. Если вы изучили RSI, я уверен, что вы слышали о микро-паузах. Они имеют решающее значение для управления и предотвращения повторений. Бесплатная программа Workrave
Дайте QWERTY загрузку и попробуйте Dvorak. Вот программист раскладки клавиатуры Dvorak. У Dvorak чаще всего используются символы в домашней строке, тогда как QWERTY - нет. Таким образом, использование Dvorak уменьшит напряжение, вызванное отсутствием "достижения" для букв.
Захватите эту "естественную" клавиатуру из шкафа, если вы еще не используете ее. Тип очень легко. Голый минимум для регистрации нажатия клавиши будет делать.
Попробуйте ограничить кофе до одной или двух чашек в день. Чрезмерный кофеин заставит вас не чувствовать усталости и легко забыть, что у вас есть RSI.
Чрезмерный алкоголь нарушает сон, необходимый для того, чтобы ваше тело могло исцелить себя. Хороший ночной отдых имеет решающее значение для укрощения RSI.
Растянуть, используя активную выделенную строчку. Хорошая рутина описана в Ручная и ручная растяжка - активная изолированная растяжка.
Узнайте, как с помощью мыши быть двунаправленным. Убедитесь, что мышь предназначена для использования обеими руками и имеет кнопки, которые легко нажимать.
Используйте планшетный планшет в качестве основного устройства ввода. Wacom делает несколько достойных недорогих планшетов.
Удачи!
Ответ 19
Ваши симптомы боли могут быть очень хорошими быть психосоматическими.
Я как-то думал, что в течение нескольких месяцев после долгой ночи игры в компьютерные игры я был RSI. Физиотерапия не помогла. После того, как я прочитал статью, написанную врачом, объяснив, что RSI, запястный туннель, боли в спине и IBS часто могут быть психосоматическими, особенно у людей, стресс, боль практически исчезла (это помогло визуализировать мое расслабление запястья и кровь, текущую к нему, поскольку в статье сказано, что вегетативное сужение кровеносных сосудов является непосредственной причиной боли). В то время я действительно страдал от большого стресса.
Ответ 20
Вы получите лучшие и счастливые результаты (независимо от того, какая операционная система и/или программа DAW, которую вы любите использовать), играя любые внешние MIDI-клавиатуру в качестве контроллера через вашу звуковую карту. Затем проложите это в свое программное обеспечение GB (или что-то еще) и произведите много звуков, которые они предоставили вам таким образом в режиме реального времени.
Если ваша звуковая карта не поддерживает MIDI I/O (ins/outs/thrus), это не проблема. Вы можете рассмотреть возможность исследования и инвестирования в внешний MIDI-конвертер таблицы. Многие из них оснащены для дополнительного преобразования MIDI-выходов на USB 2.0 (обход существующей звуковой карты в целом).
Например: это довольно жесткое получение "человеческих" результатов изящной ноты с помощью ключа ключа Z и X с помощью компьютерной клавиатуры и инструмента карандаша. Когда вместо этого ваши собственные пальцы могут просто воспроизвести это с помощью MIDI-клавиатуры из своих собственных диапазонов регистров физической октавы - немедленно!
Я понимаю, что бюджетные ограничения могут быть задействованы. Но некоторые из этих, по-видимому, дешевых клавиатур 5-октавного типа Casio, продаваемых в Radio Shack, стоимостью менее 100 долларов США (* или меньше) - это все, что вам нужно (плюс, некоторые из их встроенных звуковых патчей и секвенсорных модулей звучат и обрабатываются удивительно хорошо для других вещей).
Параметры MIDI-клавиатуры RadioShack.
Что касается внешних MIDI-преобразователей для существующих звуковых карт, я запустил некоторые поисковые запросы Google для вас, как это следует из соображений Mac:
Большая часть этой внешней информации о преобразовании MIDI может быть громоздкой для вас вначале, поэтому я искал больше, чем "удобство для пользователя" для ваших соображений и бюджета:
Нет ничего плохого в упрощении виртуальных клавиатур как VST при использовании ОУПЖ. Они имеют свое место.
Но ты говоришь как опытный клавишник. Итак, почему бы не рассмотреть внешние параметры MIDI-преобразования/клавиатуры, которые я только что упомянул для себя?
Удачи, и я надеюсь, что это дало вам некоторые идеи, которые могут и будут работать на вас!
Ответ 21
Это должно быть довольно легко, используя что-то вроде интерфейса .NET DirectSound для подключения к MIDI-устройству. Вам нужно будет определить ваше целевое MIDI-устройство, а затем получить код для прослушивания входящих сообщений (есть статьи об этом с помощью Google).
Поскольку вы используете MIDI в качестве клавиатуры, в основном есть только два MIDI-сообщения, которые необходимо обнаружить, а именно отметить и отметить. MIDI-сообщение представляет собой три байта данных, определяющих команду, примечание и скорость. Примечание - это только номер примечания (иногда "плохие" MIDI-столы посылают заметку с нулевой скоростью, которую вы также должны ожидать).
После того, как у вас есть сообщения, переводящие их, вывод на клавиатуре должен быть довольно простым из .NET.
В других ответах о технических особенностях есть много советов; Я просто хотел дать вам представление о реальных MIDI-сообщениях. Удачи!
Ответ 22
Вы можете использовать простой AutoIt script для чтения MIDI-событий, см. Вход MIDI.
Вам также понадобится MIDI UDF и имитировать нажатия клавиш.
Чтение MIDI-событий должно быть простым, но разные MIDI-контроллеры (инструменты) имеют разные функции. Попытайтесь узнать, что может сделать ваше MIDI-пианино вначале, а затем посмотрите, как вы можете наилучшим образом сопоставить эти функции с имитируемыми QWERTY - нажатиями клавиш.
Если вы хотите, вы можете иметь что-то на экране или в лотке, чтобы помочь вам понять, что вы делаете (т.е. для моделирования Shift, Ctrl и Alt).
Ответ 23
Если вы не хотите самостоятельно программировать, а просто хотите решить проблему, вы можете просто купить USB-MIDI-клавиатуру, где вы можете повторно назначить любую клавишу для отправки выходного сигнала клавиатуры QWERTY вместо MIDI- вывода, например M-Audio Axiom Pro
Этот метод будет работать с любой ОС и любым компьютером, поддерживающим стандартные USB-клавиатуры, поскольку MIDI-клавиатура идентифицирует себя как стандартную QWERTY-клавиатуру.
Ответ 24
Вы можете взглянуть на хордовые клавиатуры. Они имеют то преимущество, что вам не нужно писать драйвер для них, прежде чем вы сможете их использовать, а некоторые похожи на макет клавиатуры пианино.
Ответ 25
Если вы знаете кодирование на Java, вы можете использовать этот способ:
Сначала реализуем javax.sound.midi.Receiver
с помощью метода send(..)
, который отображает события "Примечание" на нажатия клавиш, как вы хотите.
Вам нужно будет получить контент MidiMessage с помощью метода getMessage
и проиндексировать его по-своему. Значение байтов сообщения можно найти в MIDI-сообщениях.
После получения "примечания по" или "заметок" для определенной клавиши клавиатуры вы можете сопоставить это с ключом, который вам нравится, назначив ему константу класса KeyEvent, что-то вроде С# 4 → KeyEvent.VK_A и так далее. Этот key code может затем использоваться методами java.awt.Robot
keyPress и keyRelease для фактического отправки нажатия клавиши в ОС и, следовательно, в другие приложения.
Ответ 26
Я точно знаю, как вы себя чувствуете. Выполнение сумасшедших команд кодирования клавиатуры в течение всего дня заставляет мои руки болеть.
Пианино не будет выполнять работу (вам лучше получить клавиатуру Dorvak). Лучшим решением было бы умственная телепатия или в данный момент во время голосового управления.
Я считаю, что кремы Arthro-Aid Direct хороши и Wild Blend работает нормально.
Другая вещь, которую я заметил, - это то, что мышь также сильно виновата, большинство из них не эргономичны и нажимают так много причин RSI и CTS. Чтобы преодолеть это, я иногда пользуюсь автозаменами мыши, например Auto Mouse Clicker.
Я знаю патенты с мышью, как ручки, которые вы сжимаете, я очень хочу купить.
PS: Получите страховку защиты своего дохода, прежде чем вы увидите врача о своих руках!
И не программируйте в выходные дни:)
Ответ 27
Я согласен с ответом Брайана О'Делла - если бы это был мой проект, я бы сделал это на аппаратном уровне. Преимущество в том, что он независим от платформы и оборудования - ваш блок заменяет необходимость в интерфейсе MIDI-USB и API-интерфейсе ПК.
mbed - это платформа быстрого прототипирования, которая очень проста в изучении и имеет множество преимуществ перед Arduino IMHO (онлайн-компилятор, 512  , KB flash, 96 MHz, язык С++). Он имеет интерфейс USB-клавиатуры и интерфейс USB Midi pre -писано для вас.
Сообщество очень дружелюбное и готовое помочь, и есть много существующих проектов, использующих эмуляцию MIDI и USB, - поиск Youtube для "mbed MIDI" или аналогичный.
Ответ 28
Чтобы напечатать быстрее, возможно, это идея "играть" согласные слева и гласные справа (или наоборот). Вам не нужен ключ для каждого согласного, потому что вы можете комбинировать их так:
B C D G H J K L M N P Q R S T W X Y Z
c c# d d# e f f# g c+d ...
Вы можете оставить две закрытые клавиши (например, c# + d, это не играет легко).
Вы даже можете оставить черные клавиши.
Для гласных легко:
A E я O U Y
c d e f g a
Однако также подумайте об использовании нескольких нажатий клавиш: например, c#= aa, d#= ee и т.д.
Вы можете сделать тот же трюк с согласными (с комбинацией клавиш для st, sp и т.д.)
Вы можете одновременно воспроизводить согласные и гласные, связывать их поочередно или с приоритетом (согласные, затем гласные и т.д.)
Вам, вероятно, придется научиться вводить снова, но я уверен, что вы можете сделать намного быстрее, чем обычный человек, который печатает текст.
Используйте другую октаву для цифр и специальных символов, используйте переключатель для переключения, используйте удобную комбинацию клавиш для пробела (например, два cs с левой и правой рукой, убедитесь, что это не означает (a) символ (ы)).
Также подумайте об использовании педали, которая может иметь значения 0-127. Вы можете использовать его как сдвиг или пространство тоже... или backspace/enter.
Надеюсь, это даст новые идеи и удачи в вашем проекте.
Ответ 29
Если вы используете Linux, возьмите Footware.
Это должно быть именно то, что вы ищете - если вы настроите MIDI-поля на клавиатуру по своему вкусу...
Я никогда не думал, что это может быть полезно для всех, кроме меня; o)
Ответ 30
Ответы на ваш вопрос уже на этой странице, но я хотел бы внести некоторые дополнительные данные.
Во-первых, я не уверен, что печатать на клавиатуре пианино, а не останавливать боли. В этой связи я предлагаю вам посмотреть на что-то вроде Nuance Dragon - естественно говорить для ввода текста.
Во-вторых, если вы настаиваете на продолжении этого, вам, вероятно, придется пойти с Nasebnbaar (хотя я не согласен, что это будет быстрее ) и предложение Брайана. Это, вероятно, что-то, что вы должны связаться с инженером, чтобы сделать это правильно, но если вы сделаете это сами, вам будет лучше просить указания в Электротехнике - Stack Echange.
В-третьих, если вы просто хотите понять как работают файлы MIDI, как читать их программно, и как имитировать ход клавиатуры, а затем удачи;)
Наконец, я хотел бы получить копию, если вы в конечном итоге решите пойти со вторым вариантом:)