Использование клавиатуры пианино в качестве клавиатуры компьютера [закрыто]

Я RSI проблемы и попробовали 30 различных компьютерных клавиатур, которые все вызвали у меня боль. Играть на пианино не причиняет мне боли. Я играл на пианино около 20 лет без каких-либо проблем с болью. Я хотел бы знать, есть ли способ захватить MIDI с MIDI-клавиатуры и вывести штрихи клавиатуры. Я ничего не знаю о MIDI, но я хотел бы получить некоторые указания о том, как преобразовать этот сигнал в нажатие клавиши.

30 ответов


хорошая библиотека в .NET с полной поддержкой midi (бас), перейдите вhttp://www.un4seen.com.

и, с другой стороны, перевод клавиатуры midi notes на клавиши и многое другое, я бы пошел на AutoItX, интерфейс ActiveX/COM и DLL для autoIt. Информация и скачать, перейти кhttp://www.autoitscript.com/site/autoit/

нет необходимости писать драйвер клавиатуры.


я не делал никакого MIDI-программирования в течение многих лет, но ваша основная идея очень здравая (без каламбура).

MIDI-это поток "событий" (или "сообщений"), два из которых являются наиболее фундаментальными "note on" и "note off", которые несут с собой номер ноты (0 = C пять октав ниже среднего C, через 127 = G пять октав выше G выше среднего C, в полутонах). Эти события несут" скорость " номер на клавиатурах, которые чувствительны к скорости ("сенсорный"), с силой (вы догадались) между 0 и 127.

между скоростью, аккордами и педалями, я думаю, вы могли бы придумать довольно хороший интерфейс "ввода" для клавиатуры фортепиано. Аккординг, в частности, может быть очень мощным методом - как я уже упоминал в комментариях, именно поэтому рядовые стенографисты могут использовать стенограф машина идти в ногу с людьми, говорящими часами подряд, когда даже машинистки верхнего полета не смогут в течение любого времени через обычный машинка-клавиатуры. Как и в случае с машинной стенографией, вам понадобится "словарь" значений аккордов и последовательностей аккордов. (Можете ли вы сказать, что я работал в программной части стенографии машины?)

чтобы сделать это, основные части:

  • прием MIDI-ввода. Не пытайтесь сделать это сами, используйте библиотеку. редактировать: по-видимому, API звука Java поддержка MIDI, включая получение событий от MIDI контроллеры. Прохладный. на этой странице также может быть полезно.
  • преобразование этих данных в нажатия клавиш, которые вы хотите отправить, например, через словарь, о котором я упоминал выше.
  • вывод нажатий клавиш на компьютер.

чтобы быть наиболее широко совместимым с программным обеспечением,вам нужно написать это как драйвер клавиатуры. Это плагин к операционной системе, которая служит источником для событий клавиатуры, разговаривая с базовым оборудованием (в вашем случае клавиатура пианино). Для Windows и Linux вы, вероятно, захотите использовать C для этого.

однако, так как вы просто формирование нажатия клавиш (не пытаясь перехватить их, что я пытался сделать много лет назад), вы можете использовать любые функции операционной системы для отправки искусственных нажатий клавиш. У Windows есть интерфейс для этого (возможно, несколько, тот, о котором я думаю, это SendInput но я знаю, что есть некоторый интерфейс "журнала", который делает что-то подобное), и я уверен, что другие операционные системы делают то же самое. Этого вполне может быть достаточно для ваших целей - это то, с чего я бы начал, потому что маршрут драйвера устройства будет неудобным, и вам, вероятно, придется использовать для него другой язык, чем Java. (Я большой поклонник Java, но интерфейсы, которые операционные системы используют для общения с драйверами устройств, как правило, легче потребляются через C и подобный.)


обновление: подробнее о "словаре" аккордов для нажатия клавиш:

в основном, в словарь бор (спасибо, @Adam), что мы ищем с самым длинным префиксом. Подробности:

в машинной стенографии стенографистка пишет, одновременно нажимая несколько клавиш на стенографической машине, а затем отпуская их все. Они называют это "ударом" клавиатуры; это похоже на игру аккорда на пианино. Штрихи часто (но не всегда) соответствуют слогу разговорного языка. Как и слоги, иногда один удар (аккорд) имеет значение сам по себе, в других случаях он имеет значение только в сочетании с последующими ударами. (Подумайте" хорошо "против " хорошо", а затем "пока"). Хотя они будут сильно зависеть от школы, в которой они учились, у каждой стенографистки будет свой собственный "словарь" того, какие штрихи они используют для обозначения чего, словарь, который они будут постоянно оттачивать в течение их трудовая жизнь. Словарь будет иметь записи, где стенографическая часть ("steno", для краткости) является одним штрихом или несколькими штрихами. Часто, будет несколько входов с таким же начиная ходом которые продифференцированы их длиной и последующими ходами. Например (и я не буду использовать настоящую стенографию здесь, просто заполнители), могут быть следующие записи:

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.

при переводе steno в стандартный текст мы снова используем поиск" с самым длинным префиксом": алгоритм перевода начинается с первого когда-либо написанного Штриха и ищет записи, начинающиеся с этого ход. Если есть только одна запись, и это один штрих, то мы можем надежно сказать" это запись для использования", вывести соответствующий текст, а затем начать заново со следующего штриха. Но более вероятно, что инсульт запускает несколько записей разной длины. Итак, мы смотрим на следующий удар и видим, есть ли записи, которые начинаются с этих двух ударов в порядке; и так далее, пока мы не получим совпадение.

Итак, со словарем выше, предположим, мы видели это последовательность:

A C B B C A B C A B D

вот как мы это переведем:

  1. A является началом трех записей различной длины; посмотрите на следующий штрих:C
  2. A/C соответствует только одной записи; выход "кондиционер" и начать свежий со следующего хода:B
  3. B начинается две записи, посмотрите на следующий ход: B
  4. B/B ничего не начинает; возьмите самый длинный предыдущий матч (B) и вывода это ("пчела")
  5. имеющие выход B = "пчелка", у нас еще есть B ход в нашем буфере. Он начинает две записи, поэтому посмотрите на следующий штрих:C
  6. B/C соответствует одной записи; выведите "потому что" и начните заново со следующего штриха:A
  7. A начинается три записи, посмотрите на следующий ход: B
  8. A/B начинается две записи, посмотрите на следующий ход: C
  9. A/B/C соответствует только один ввод; вывод "алфавитный" и начать заново со следующего штриха:A
  10. A начинается три записи, посмотрите на следующий ход: B
  11. A/B начинается две записи, посмотрите на следующий ход: D
  12. A/B/D ничего не соответствует, поэтому возьмите самый длинный предыдущий матч (A/B) и использовать его для вывода "алфавит". Это оставляет нас с D еще в буфере.
  13. D запускает две записи, поэтому мы обычно смотрим на следующий удар-но мы обработали все удары, поэтому рассмотрим его в отдельности. В изоляции он переводится как" собака", поэтому выводите это.

аспекты выше, чтобы отметить:

  • у вас есть буфер штрихов, которые вы прочитали, но еще не перевели.
  • вы всегда хотите, чтобы соответствовать большинство штрихов против одной записи, что вы можете. A/B следует переводить как "алфавит", а не" альфа "и"пчела".
  • (не показан выше) У вас могут быть последовательности штрихов, которые вы не можете перевести, потому что они не соответствуют ничему в словаре. (Стено люди используют существительное "untranslate" -- например, с нашим словарем, штрихи E будет "untranslate".)
  • (не показано выше) некоторые теории steno позволяют одному и тому же набору штрихов означать более чем одно, основываясь на более широком контексте. Стенографисты называют это "конфликтами". Вы, вероятно, хотите запретить их в своем проекте, и на самом деле, когда steno используемые для перевода вручную стенографисткой, конфликты были прекрасны, потому что они знали бы, где в предложении они были правильным выбором, но с ростом машинного перевода, конфликтные теории стенографии возникли специально, чтобы избежать необходимости проходить через полученный переведенный текст и "исправлять" конфликты.
  • перевод в режиме реального времени (что вы будете делать) означает, что если вы получите частичное совпадение, вы захотите сохранить его во время ожидания следующего аккорд - но, вероятно, только до тайм-аута, в этот момент Вы переведете то, что у вас есть в буфере, как можно лучше. (Или, может быть, вы не хотите тайм-аут; это ваше призвание.)
  • вероятно, лучше всего иметь инсульт, который говорит "игнорировать предыдущий инсульт"
  • вероятно, лучше всего иметь инсульт, который говорит "полностью очистить буфер без вывода чего-либо"

подумайте о том, чтобы сделать что-то в аппаратном обеспечении, которое эмулирует usb (или ps/2?) клавиатура. Вы больше не будете зависеть от конкретной ОС или конкретного API ОС. Аппаратное решение выдержит испытание временем. Не застрять с помощью старого API в Windows 7, когда все остальные работают под управлением Windows 11! Arduino довольно легко научиться.

есть тонна информации и помощи для Arduino. Это аппаратная хакерская платформа, построенная для новичков. Теперь он будет только больше, что Google толкает Arduino.

EDIT: виртуальная USB-клавиатура программа и оборудование


Мне кажется, что вы ищете меньше советов о том, как построить это самостоятельно, и больше спрашиваете, какие ресурсы уже есть, чтобы выполнить то, что вы хотите. В зависимости от вашей ОС, есть много способов сделать это без необходимости писать свою собственную программу с нуля:

MIDI Stroke

бесплатно. Для Mac OS X 10.3 и выше. Это одно специфически приходит с " способностью использовать любое MIDI клавиатура как полный перегорел замена клавиатуры компьютера."

MIDI переводчик Bome

Free / Postcardware (это немного странно). Для Windows 2000 и выше, и Mac OS X. Первоначально он кажется более ориентированным на AutoHotkey-тип использования, но при дальнейшем поиске я думаю, что он может сделать то, что вы хотите красиво.

Макс и ака.клавиатура

бесплатно. Для Mac OS X. Не совсем "готов из box", но если вам удобно с базовой конфигурацией устройства, это не должно быть слишком плохо.


вы можете получить доступ к оборудованию с образцами исходного кода в .NET в миди dotnet ограничителя.

полный рабочий образец в качестве исходного кода для создания потока данных MIDI notes находится в 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-загрузить: VB.NET 0266: Globaler KeyHook.

Enter image description here

тогда просто используйте хорошую рабочую матрицу для пианиста Timo Boehme www.goldengel.ch

на фортепиано, и когда вы хороший игрок, вы можете иметь 10 пальцев на клавиатуре, и если матрица используется, Вы можете быть намного быстрее, чем любой пользователь компьютерной клавиатуры, я думаю. :-)

в этом кейс, если я правильно понял ваш вопрос, это не должно быть большой проблемой.


Я изучал фортепианное исполнение в колледже, а затем попал в дизайн взаимодействия, программирование и использование Vim, поэтому я действительно потратил много времени на прототипирование таких вещей.

вы можете получить это работает довольно быстро в Linux, используя графический язык программирования для мультимедийных художников,"Чистые Данные, " вместе с внешним x11key по Алекс Андр.

на Mac, вы можете использовать MidiStroke. Я поверьте, что метод на Windows задействовал MidiOx и аутохотки-AutoHotkey инструменты. В другое время у меня была версия, использующая плагин Java для Max / MSP. Я верю Патрис Коле сделал внешний windows для чистых данных, которые также работали, но я больше не могу его найти. Кроме того, есть внешний для MaxMSP это может сделать это в Windows. Наконец, несвободный, но удивительный Osculator можно делать что хочешь - см. страницу функций.

когда я получил его работу, я никогда не застрял с ним, потому что я не мог остановить инструмент с макетом. Было здорово просто иметь мой монитор на моей электрической клавиатуре, хотя! Удача.


о MIDI

вы заявили, что"ничего не знаете о MIDI". Технология MIDI довольно прямолинейна, как только вы поймете это, но это может быть запутанным в самом начале. Одним из ресурсов, который был чрезвычайно полезен для меня в понимании основ MIDI (которые, безусловно, необходимы, если вы хотите программировать MIDI-взаимодействия), является книга под названием MIDI для Технофоба. Это простая книга для чтения и очень полезная.


Pure Data & Max

по моему опыту разработки интерактивных мультимедиа, есть две очень похожие программы, с которыми я столкнулся, которые облегчают подключение и отображение сигналов/входов с любого устройства.

это Макс для среды Mac и Чистые Данные для среды ПК. Оба имеют множество онлайн-документации и учебников YouTube. Видео Макс / MSP учебник 1 - использование клавиатуры компьютера в качестве midikeyboard (Ableton style) демонстрирует программу, встроенную в Max, которая сопоставляет клавиатуру компьютера с входами MIDI-клавиатуры (что в основном прямо противоположно тому, что вы пытаетесь сделать). Вы можете получить ожидаемые результаты, используя тот же шаблон, но изменив сигналы/сопоставления.


AutoHotKey

AutoHotKey это бесплатная утилита с открытым исходным кодом для Windows, которая позволяет вам для переназначения клавиш и кнопок на устройствах в макросы. Он изначально поддерживает QWERTY клавиатуры, джойстики и макросы мыши.

тем не менее, я смог найти реализацию, поддерживающую конкретное отображение, которое вы ищете. Эти два потока объясняют процесс:

  1. MIDI в поддержке в AutoHotkey обсуждение варианта использования. Автор искал программа, которая могла бы обнаружить MIDI на входе и переведите это на клавиши.

  2. библиотека ввода MIDI , решение проблемы автора и опубликованный код / патч для AutoHotKey, который фактически реализует ваш предполагаемый результат.

в основном, похоже, что AutoHotKey, наряду с пользовательским патчем этого пользователя, предоставит именно то, что вам нужно для создания отображения с MIDI-клавиатуры на входной сигнал QWERTY-клавиатуры. Все, что тебе нужно. do-это установка, настройка и определение сопоставлений.


что-нибудь еще?

некоторые из других ответов дали вам гораздо более подробную информацию о MIDI и MIDI-программировании в целом, но, как говорится в вашем сообщении, это не совсем то, что вы ищете. Я хотел бы помочь вам больше, если это возможно, но было бы проще, если бы вы могли быть более конкретными о типе информации, которую вы ищете. Например, вы больше интересует как преобразовать входные сигналы MIDI-клавиатуры в QWERTY клавиатуры, или ваш основной интерес найти решение к вашей конкретной проблеме? Что вы ищете, что еще не было рассмотрено?


вы можете взломать свою собственную клавиатуру USB довольно быстро, используя микроконтроллер Teenys.

в самом деле, у них есть пример кода как сделайте USB-клавиатуру.

вы можете подойти к этому двумя способами:

  1. получите старое пианино и подключите переключатели непосредственно к teensy

  2. добавить дополнительную логику для подключения к MIDI-Порту и необходимое декодирование.


на самом деле, я работал над этим некоторое время назад, пытаясь захватить Рок-Группа барабанные входы в мой компьютер (делая небольшой Java самодельный эмулятор барабана) в любом случае, я задал вопрос здесь об этом, проблема задержки времени (там есть код опроса, вместе с тем, что я пытался сделать.). И если я могу найти свою программу, я могу дать вам код, он использует сторонний API (JInput).

удачи в любом случае.


попробовать MIDI переводчик Bome.

Он работает кросс-платформенный, может конвертировать любой MIDI вход в keystoke легко, быстро настроить и настроить, плюс это бесплатно для личного использования.

есть учебник, Быстрый совет: MIDI перевод-MIDI для нажатия клавиш, как легко настроить его:

в принципе, есть бесконечные возможности того, что вы можете сделать, включая аккорды и клавиши-модификаторы. Я использую это для моей живой звуковой установки, чтобы контролировать мой DAW использование моего пианино и никогда не было проблемы.


в Java вы можете использовать JMF (Java Media framework) для преобразования MIDI-сигналов. Основной дизайн клавиатуры прост в использовании, то есть пользовательский интерфейс; и место часто используемый charcter/символ удобно.

пример кода и API в звуковые ресурсы Java: примеры: Цифровая обработка сигналов (DSP) помогите понять, как обрабатывать сигнал.

еще некоторые ссылки:


у Кейси есть лучший ответ. Я добавил к нему комментарий и поддержал его. Этот вид программного обеспечения принадлежит либо драйверу устройства, либо встроенной системе. Драйверы устройств намного сложнее, и они не переносятся на другие ОС. Для справки см. проблемы с Winmodems в Linux.

помещая код во встроенную систему, Вы делаете его портативным для любого MIDI-устройства с USB-портом и любого компьютера, который принимает USB-клавиатуры.


существует программа под названием glovepie выступает. Вы можете запрограммировать его на простом языке сценариев, и я считаю, что он поддерживает MIDI. Я не уверен, что это подходит под категорию "Java", но все же это отличная программа. Я использовал его для управления роботами с помощью ПС3 контроллеры. Он очень мощный.


многие клавиатуры имеют последовательный порт ( RS-232) разъем для отправки MIDI-сигналов на компьютер. Я использую программу под названием Балка преобразовать сообщение серийного порта в ходы клавиатуры.

прогон имеет функцию "отображение", которая позволяет сопоставлять каждый ключ, один за другим, с соответствующим нажатием клавиши.

Это может быть простое решение, которое вы ищете!


просто выучить стенографию!

это ясно из всего обсуждения с вашей стороны. Вы не хотите заново изобретать колеса, с технической точки зрения. Но как только у вас есть связь (что этот вопрос задает) и вверх и работает, у вас все еще есть большая часть работы впереди Вас: Вы должны тренировать свой мозг. Вы и должны изобрести самый умный, самый эффективный способ сделать это - проблема дизайна полностью из Реала компьютерных техников. Ты или любой из нас падет короткий.

к счастью, проблема была решена и отточена, хотя столетия созревания...

изучать стенографию!

Да, это поставит вас обратно некоторые Джек. Но чего стоят сотни часов вашего собственного времени с менее благоприятным результатом в конце? Кроме того, статья в Википедии стенографии говорит: "это больше похоже на клавиатуру пианино".

Если, конечно, вы не хотите иметь эффект интермедии. Я должен признать, я никогда не думал об этой возможности, это было бы действительно интересно увидеть, как кто-то вырывает текст с клавиатуры пианино!

Вы можете начать с USB клавиатура с сенсорной панелью (или указывая stick было бы более эргономично?), используйте зуек чтобы перевести его (я уверен, что он может быть настроен так, чтобы не буквенные ключи сохраняли свою функциональность, поскольку они важны для программирования), или, следуйте нить Re: Plover клавиатура чтобы свернуть свою собственную клавиатуру USB stenography, или купить в стенограф.

удачи!


посмотри MAME аркадные игры. Они создали аппаратные устройства, позволяющие вводить данные из любого количества различных элементов. The iPac, например, преобразует сигналы с устройств ввода в USB, который компьютер может использовать для эмуляции ключей. Вы можете использовать любую комбинацию устройств ввода, расположенных так, как кажется удобным, без сумасшедшей логики программирования-потому что программное обеспечение для интерпретации ввода уже сделано и хорошо проверенный.

Я видел входы кабины летного тренажера, пользовательские киоски и системы голосования, построенные в этом методе.....и цена правильная!


на самом деле не связано с программой, но я могу предложить несколько советов о том, как управлять RSI.

есть таймеры, которые темп вашей работы troughout день введения частых микро-перерывов. Если вы исследовали RSI, я уверен, что вы слышали о микро-перерывах. Они имеют решающее значение для управления и предотвращения рецидивов. Бесплатная программа Workrave

дайте QWERTY загрузку и попробуйте Дворак. Вот это программист Dvorak клавиатура макет. Dvorak имеет наиболее часто используемые символы в домашней строке, а QWERTY-нет. Таким образом, использование Dvorak уменьшит напряжение, вызванное отсутствием необходимости "дотягиваться" до букв.

возьмите эту "естественную" клавиатуру из шкафа, если вы еще не используете ее. Типа очень легко. Самый минимум, чтобы зарегистрировать нажатие клавиши будет делать.

попробуйте ограничить кофе одной или двумя чашками в день. Чрезмерный кофеин заставит вас не чувствовать себя усталым и позволит легко забыть, что у вас есть индикатор RSI.

чрезмерный алкоголь нарушает сон, необходимый, чтобы позволить вашему телу исцелить себя. Хороший ночной отдых имеет решающее значение для укрощения RSI.

растягивание с использованием активных изолированные stetching. Хорошая процедура описана в Запястье, Рука И Палец Растяжения Рутина-Активные Изолированные Растяжения.

узнайте, как быть ambidextrous с мышью. Убедитесь, что мышь предназначена для использования обеими руками и имеет кнопки, которые легко щелчок.

использовать планшет в качестве основного устройства ввода. Wacom делает некоторые приличные недорогие таблетки.

удачи!


чтобы решить эту проблему вам понадобится несколько вещей:

  1. способ захвата MIDI-данных с клавиатуры. В зависимости от интерфейса: MIDI-интерфейс (классический) или USB MIDI-интерфейс (современный) наиболее вероятный интерфейс для компьютера, поскольку он предоставляет большинство опций. USB хост микроконтроллеры не так просто, как просто с помощью компьютера.

  2. схема для преобразования MIDI-данных в нажатия клавиш. Как указал один пользователь, аккорды путь идти, как количество клавиш не будет зависеть от количества клавиш пианино.

  3. способ введения ключа в операционную систему. Это потребует от водителя низкого уровня точности. Я играл с приложениями, которые вводят данные клавиатуры и мыши в приложения в Windows 7, и это может быть слоеным и зависеть от того, находится ли приложение в фокусе. Это самая сложная часть интерфейса. Что может сработать, так это создать HID USB клавиатура микроконтроллер, который также имеет последовательный интерфейс.

последовательный интерфейс создаст виртуальный последовательный порт. Программное обеспечение, которое считывает данные MIDI и производит нажатия клавиш может отправить последовательное сообщение на виртуальный последовательный порт. Микроконтроллер отправит нажатие клавиши, чтобы он выглядел как стандартный ввод с клавиатуры. Это позволит взаимодействовать как MIDI-порты и USB MIDI-клавиатуры.

Хммм, с этим типом интерфейс вы также можете имитировать мышь и использовать некоторые клавиши пианино настройки для оси мыши и кнопок. Давление может использоваться для определения скорости указателя мыши. Так вы сможете устранить мышки. Еще одно преимущество этого подхода - любой тип подключаемого устройства ввода может разговаривать с виртуальным последовательным портом для создания событий клавиатуры и мыши. Поэтому, если вы хотите добавить другое оборудование, такое как педали барабана или джойстик, это будет вопрос настройки программы, которая разговаривает с последовательный интерфейс.

другой взять на себя выше, как некоторые размещены выше, чтобы использовать Arduino, но также включают экран Хоста USB от Sparkfun для обработки музыкальных клавиатур на основе USB. Это позволяет Arduino быть запрограммированным как клавиатура или клавиатура мышь комбо в чипе загрузчика и позволяет устройству действовать USB хост для музыкальной клавиатуры на основе USB. Тогда вы покрываетесь для обоих типов. Хотя, я все еще думаю, что метод виртуального последовательного порта более гибкий и будет легче программировать в долгосрочной перспективе. Устройство Arduino будет сложнее изменить, чем настольную программу или службу.

есть еще одна возможность: Хордовая одной рукой клавиатуры уже существуют. Я видел видео на них, но вам придется определить, повредили ли они ваши руки или нет.


ваши болевые симптомы могут очень хорошо психосоматические.

Я когда-то думал, что у меня RSI в моем запястье в течение многих месяцев после долгой ночи игры в компьютерные игры. Физиотерапия не помогла. После того, как я прочитал статью, написанную врачом, объясняющую, что RSI, запястный туннель, боль в спине и IBS часто может быть психосоматическим, особенно у людей, которые находятся под стрессом, боль практически исчезла (это помогло визуализировать мое запястье расслабление и приток крови к нему, так как в статье говорится, что сужение вегетативных кровеносных сосудов является непосредственной причиной боли). В то время я действительно страдал от большого стресса.


Это должно быть довольно легко, используя что-то вроде интерфейса .NET DirectSound для подключения к MIDI-устройству. Вам нужно будет определить свое целевое MIDI-устройство, а затем получить код для прослушивания входящих сообщений (есть статьи об этом через Google).

поскольку вы используете MIDI в качестве клавиатуры, есть в основном только два MIDI-сообщения, которые вам нужно обнаружить, а именно примечание и примечание. Сообщение MIDI-это три байта данных, указывающих команду, нота и скорость. Примечание off-это просто номер заметки (иногда "плохие" MIDI-стеки отправляют заметку с нулевой скоростью, которую вы также должны ожидать).

Как только у вас есть сообщения, переводящие их, выход клавиатуры должен быть довольно простым .Сеть.

в других ответах есть много советов о технических деталях; я просто хотел дать вам представление о фактических MIDI-сообщениях. Удачи!


вы получите лучшие и счастливые результаты (независимо от того, какая операционная система и / или DAW программа, которую вы хотите использовать), играя любую внешнюю MIDI-клавиатуру в качестве контроллера через звуковую карту. Затем направьте это в свое программное обеспечение GB (или что-то еще) и тон генерирует множество звуков, которые они предоставили вам таким образом в режиме реального времени.

Если ваша звуковая карта не поддерживает MIDI I/O (ins / outs /thrus), это не проблема. Вы можете рассмотреть возможность исследования и инвестирования в внешний Midi настольный конвертер. Многие оборудованы для дальнейшего преобразования MIDI-выходов в USB 2.0 (обход существующей звуковой карты в целом).

например: довольно сложно получить" человеческие " результаты grace note с помощью клавиши Z и X с помощью клавиатуры компьютера и карандаша. Когда вместо этого ваши собственные пальцы могут просто играть с MIDI-клавиатурой из собственных физических диапазонов регистров октавы-немедленно!

Я понимаю, что бюджетные ограничения могут быть вовлеченный. Но некоторые из этих, казалось бы, дешевых "Casio" типа 5 октавных клавиатур, продаваемых в Radio Shack за $100.00 долларов США (*или меньше),-это все, что вам нужно (кроме того, некоторые из их встроенных звуковых патчей и модулей секвенсора звучат и обрабатываются удивительно хорошо для других вещей).

опции клавиатуры RadioShack MIDI.

Что касается внешних MIDI-преобразователей для существующих звуковых карт, я запустил некоторые поиски Google для вас следующим образом с Mac платформы конкретно в виду:

много этой внешней информации преобразования MIDI может быть громоздким для вас на первый взгляд, так что я сломал вещи больше, как "удобный" для ваших соображений и бюджета:

нет ничего плохого в облегчении виртуальных клавиатур как VST'ы при использовании DAW. У них есть свое место.

но, вы звучит как опытный клавишник. Итак, почему бы не рассмотреть параметры внешнего преобразования MIDI / клавиатуры, которые я только что упомянул для себя?

удачи и я надеюсь, это дало вам некоторые идеи, которые могут и будут работать на вас!


Если вы не хотите самостоятельно программировать, но просто хотите решить проблему, вы можете просто купить USB-MIDI-клавиатуру, где вы можете повторно назначить любую клавишу для отправки выходного сигнала QWERTY-клавиатуры вместо MIDI-выхода, например M-Audio Axiom Pro

этот метод будет работать с любой ОС и любым компьютером, который поддерживает стандартные USB-клавиатуры, так как MIDI-клавиатура идентифицирует себя как стандартная клавиатура QWERTY.


вы можете использовать простой AutoIt скрипт для чтения событий MIDI, см. MIDI вход.

вам понадобится MIDI UDF и имитация нажатия клавиш.

чтение MIDI-событий должно быть простым, но разные MIDI-контроллеры (инструменты) имеют разные функции. Попробуйте выяснить, что ваш MIDI фортепиано может сделать сначала, а затем посмотреть, как вы можете лучше всего сопоставить эти функции для моделирования QWERTY-нажатия клавиш на клавиатуре.

Если вы хотите, вы можете иметь что-то на экране или в лотке, чтобы помочь вам увидеть, что вы делаете (то есть для Shift, Ctrl и Alt моделирование).


вы можете взглянуть на хордовая клавиатура. У них есть то преимущество, что вам не нужно писать драйвер для них, прежде чем вы сможете их использовать, и некоторые из них похожи на раскладку фортепианной клавиатуры.


если вы знаете кодирование на Java, вы можете использовать следующий способ:

во-первых, реализовать javax.sound.midi.Receiver с send(..) метод, который сопоставляет события "Note on" с нажатиями клавиш, как вы хотите.

вам нужно будет получить содержимое MidiMessage с его getMessage метод и intepret его в вашей моде. Значение байтов сообщения можно найти в MIDI-сообщения.

после получения "Примечание on" или "Примечание off" для определенного клавиша клавиатуры, вы можете сопоставить это с ключом, который вам нравится, назначив ему константу класса KeyEvent, что-то вроде C#4 - > KeyEvent.VK_A и так далее. Затем этот код ключа может использоваться java.awt.Robotметоды нажатия клавиш и keyRelease фактически отправляют нажатие клавиши в ОС и, следовательно, в другие приложения.



Я согласен с ответом Брайана О'Делла - если бы это был мой проект, я бы сделал это в аппаратном обеспечении. Он имеет преимущество быть независимым платформы и оборудования-ваша коробка заменяет потребность для интерфейса MIDI-USB и API ПК.

mbed-это платформа быстрого прототипирования, которая очень проста в освоении и имеет множество преимуществ перед Arduino IMHO (онлайн-компилятор, 512 KB flash, 96 МГц, язык C++). У него есть интерфейс клавиатуры USB и USB Midi интерфейс заранее написанному для вас.

сообщество очень дружелюбно и готово помочь, и есть много существующих проектов, использующих как MIDI, так и USB hid emulation - поиск Youtube для "mbed MIDI" или аналогичного.


Если вы используете Linux, возьмите Footware.

Это должно быть именно то, что вы ищете - если вы настроите MIDI-питчи на клавиатуру по своему вкусу...

Я никогда не думал, что это может быть полезно для кого-либо, кроме меня ;o)


печатать быстрее, возможно, это идея "играть" согласные на левой руке и гласные справа (или наоборот). Вам не нужен ключ для каждой согласной, потому что вы можете объединить их так:

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 I O U Y

C d e f g а

однако, также подумайте об использовании нескольких нажатий клавиш: like в C# = aa, d# = ээ, etc.

вы можете сделать тот же трюк с согласными (имея комбинацию клавиш для st, sp и т. д.)

вы можете играть согласные и гласные одновременно, связывать их поочередно или с приоритетом (согласные, затем гласные и т. д.)

вам, вероятно, придется научиться печатать снова, но я конечно, вы можете сделать это намного быстрее, чем обычный печатающий человек.

используйте другую октаву для цифр и специальных символов, используйте переключатель для сдвига, используйте простую комбинацию клавиш для пространства (например, два c-s с левой и правой рукой, убедитесь, что это не означает (a) символ(ы)).

также подумайте об использовании педали, которая может иметь значения 0-127. Вы также можете использовать его как shift или space... или backspace / enter.

Я надеюсь, что это даст какие-то новые идеи и удачи с вашим проектом.


ответы на ваш вопрос уже есть на этой странице, но я хотел бы сделать несколько дополнительных входов.

во-первых, я не уверен, что набрав на клавиатуре пианино вместо этого остановит боли. В связи с этим, я предлагаю вам рассмотреть что-то вроде Нюанс Дракона, Естественно, Говоря для ввода текста.

во-вторых, если вы настаиваете на продолжении этого, вам, вероятно, придется пойти с Nasebnbaar это (хотя я не согласен, что это будет любой быстрее) и Брайана!--4--> предложение. Это, вероятно, то, что вы должны связаться с инженером, чтобы сделать правильно, но если вы должны сделать это сами, вам лучше спросить о направлениях на Электротехника-Стек Echange.

в-третьих, если вы просто хотите понять как работают MIDI-файлы, как читать их программно и как имитировать ход клавиатуры, тогда удачи ;)

наконец, я хотел бы получить копию, если вы в конечном итоге решите пойти со вторым вариантом:)