Tengo problemas de RSI y he probado 30 teclados de computadora diferentes que me causaron dolor. Tocar el piano no me causa dolor. He tocado el piano durante unos 20 años sin problemas de dolor. Me gustaría saber si hay una manera de capturar MIDI desde un teclado MIDI y emitir golpes de teclado. No sé nada sobre MIDI, pero me gustaría obtener alguna guía sobre cómo convertir esta señal en una pulsación de tecla.
727
Respuestas:
Una buena biblioteca en .NET con soporte midi completo (BASS), vaya a http://www.un4seen.com .
Y por otra parte, traduciendo las notas midi del teclado a teclas y más, elegiría AutoItX, la interfaz ActiveX / COM y DLL para autoIt. Información y descarga, vaya a http://www.autoitscript.com/site/autoit/
No es necesario escribir el controlador del teclado.
fuente
No he hecho ninguna programación MIDI en años, pero su idea fundamental es muy sólida (sin juego de palabras).
MIDI es una secuencia de "eventos" (o "mensajes"), dos de los más fundamentales son "note on" y "note off" que llevan consigo el número de nota (0 = C cinco octavas por debajo de C central, hasta 127 = G cinco octavas por encima de la G por encima de la C central, en semitonos). Estos eventos llevan un número de "velocidad" en los teclados que son sensibles a la velocidad ("sensibles al tacto"), con una fuerza de (lo adivinó) entre 0 y 127.
Entre la velocidad, los acordes y los pedales, creo que podrías encontrar una interfaz de "tipeo" bastante buena para el teclado del piano. El cordaje en particular podría ser una técnica muy poderosa: como mencioné en los comentarios, es por eso que los taquígrafos de base pueden usar una máquina de estenotipos para mantenerse al día con las personas que hablan durante horas seguidas, cuando incluso los mecanógrafos de alto nivel no lo harían No podrá hacerlo por ningún período de tiempo a través de teclados de estilo de máquina de escribir normales. Al igual que con la estenografía de máquina, necesitaría un "diccionario" de los significados de los acordes y secuencias de acordes. (¿Puedes decir que solía trabajar en el lado del software de la estenografía de máquina?)
Para hacer esto, las piezas fundamentales son:
Para ser más ampliamente compatible con el software, tendría que escribir esto como un controlador de dispositivo de teclado. Este es un complemento para el sistema operativo que sirve como fuente para los eventos del teclado, hablando con el hardware subyacente (en su caso, el teclado del piano). Para Windows y Linux, probablemente querrás usar C para eso.
Sin embargo, dado que solo está generando pulsaciones de teclas (no tratando de interceptarlas, lo que intentaba hacer hace años), es posible que pueda usar cualquier función que tenga el sistema operativo para enviar pulsaciones de teclas artificiales. Windows tiene una interfaz para hacerlo (probablemente varias, la que estoy pensando es,
SendInput
pero sé que hay una interfaz de "diario" que hace algo similar), y estoy seguro de que otros sistemas operativos también lo hacen. Eso puede ser suficiente para sus propósitos: es donde comenzaría, porque la ruta del controlador del dispositivo será incómoda y probablemente tenga que usar un lenguaje diferente al de Java. (Soy un gran admirador de Java, pero las interfaces que utilizan los sistemas operativos para comunicarse con los controladores de dispositivos tienden a consumirse más fácilmente a través de C y similares).Actualización : Más sobre el "diccionario" de acordes a pulsaciones de teclas:
Básicamente, el diccionario es un trie (gracias, @Adam) que buscamos con la coincidencia de prefijo más largo. Detalles:
En la estenografía de la máquina, el taquígrafo escribe presionando varias teclas en la máquina de estenotipos al mismo tiempo, luego soltándolas todas. Llaman a esto un "golpe" del teclado; Es como tocar un acorde en el piano. Los trazos con frecuencia (pero no siempre) corresponden a una sílaba del lenguaje hablado. Al igual que las sílabas, a veces un trazo (acorde) tiene significado por sí solo, otras veces solo tiene un significado combinado con los siguientes trazos. (Piense "bueno" versus "bueno" seguido de "adiós"). Aunque estarán fuertemente influenciados por la escuela en la que estudiaron, cada taquígrafo tendrá su propio "diccionario" de los trazos que usan para decir qué, un diccionario que perfeccionarán continuamente a lo largo de su vida laboral. El diccionario tendrá entradas en las que la parte estenográfica ("steno", para abreviar) tiene una longitud de un trazo o múltiples trazos. Con frecuencia, habrá varias entradas con el mismo trazo de inicio que se diferencian por su longitud y por los trazos posteriores. Por ejemplo (y no usaré steno real aquí, solo marcadores de posición), puede haber estas entradas:
(Esas letras no están destinadas a ser notas musicales, solo marcadores abstractos).
Tenga en cuenta que
A
comienza varias entradas, y también tenga en cuenta que la forma en que traduce unC
trazo depende de si ha visto previamente unA
, unB
o si está comenzando de nuevo.También tenga en cuenta que (aunque no se muestra en la pequeña muestra anterior), puede haber múltiples formas de "reproducir" la misma palabra o frase, en lugar de solo una. Los taquígrafos hacen eso para facilitar el flujo de una palabra anterior a la siguiente según la posición de la mano. Hay una analogía obvia con la música allí, y podría usarla para hacer que su escritura fluya más parecida a la reproducción de música, a fin de evitar que esto afecte negativamente su piano y maximizar la probabilidad de que esto realmente ayude con el RSI.
Cuando traducimos steno en texto estándar, nuevamente utilizamos una búsqueda de "coincidencia de prefijo más largo": el algoritmo de traducción comienza con el primer trazo escrito y busca entradas que comiencen con ese trazo. Si solo hay una entrada, y es un trazo largo, entonces podemos decir "esa es la entrada a usar", generar el texto correspondiente y luego comenzar de nuevo con el siguiente trazo. Pero lo más probable es que ese trazo inicie múltiples entradas de diferentes longitudes. Así que miramos el siguiente trazo y vemos si hay entradas que comienzan con esos dos trazos en orden; y así sucesivamente hasta que tengamos una coincidencia.
Entonces, con el diccionario anterior, supongamos que vimos esta secuencia:
Así es como lo traduciríamos:
A
es el comienzo de tres entradas de diferentes longitudes; mira el siguiente golpe:C
A/C
solo coincide con una entrada; salida "aire acondicionado" y comenzar de nuevo con el siguiente golpe:B
B
comienza dos entradas; mira el siguiente golpe:B
B/B
no comienza nada; tomar la coincidencia anterior más larga (B
) y generar esa ("abeja")B
= "abeja", todavía tenemos unB
trazo en nuestro búfer. Comienza dos entradas, así que mira el siguiente trazo:C
B/C
coincide con una entrada; salida "porque" y comenzar de nuevo con el siguiente golpe:A
A
comienza tres entradas; mira el siguiente golpe:B
A/B
comienza dos entradas; mira el siguiente golpe:C
A/B/C
solo coincide con una entrada; salida "alfabético" y comenzar de nuevo con el siguiente trazo:A
A
comienza tres entradas; mira el siguiente golpe:B
A/B
comienza dos entradas; mira el siguiente golpe:D
A/B/D
no coincide con nada, así que toma la coincidencia anterior más larga (A/B
) y úsala para generar "alfabeto". Eso nos deja conD
todavía en el búfer.D
comienza dos entradas, por lo que normalmente miraríamos el siguiente trazo, pero hemos procesado todos los trazos, así que considérelo de forma aislada. En forma aislada, se traduce como "perro", por lo que da como resultado.Aspectos de lo anterior a tener en cuenta:
A/B
debe traducirse como "alfabeto", no "alfa" y "abeja".E
serían un "no traducir").fuente
Considere hacer algo en hardware que emule un teclado usb (o ps / 2?). Ya no dependerá de un sistema operativo específico o de una API específica del sistema operativo. Una solución de hardware resistirá la prueba del tiempo. ¡No se quede atascado usando una API antigua en Windows 7 cuando todos los demás ejecutan Windows 11! Arduino es bastante fácil de aprender.
Hay un montón de información y ayuda para Arduino. Es una plataforma de piratería de hardware creada para novatos. Solo crecerá ahora que Google está presionando a Arduino.
EDITAR: software y hardware de teclado USB virtual
fuente
Me parece que está buscando menos consejos sobre cómo construir esto usted mismo y más preguntas sobre qué recursos ya existen para lograr lo que desea. Dependiendo de su sistema operativo, hay muchas maneras de lograr esto sin tener que escribir su propio programa desde cero:
Carrera MIDI
Gratis. Para Mac OS X 10.3 y superior . Este viene específicamente con "la capacidad de usar cualquier teclado MIDI como un reemplazo completo del teclado de la computadora".
Traductor MIDI de Bome
Gratis / Postcardware (es un poco extraño). Para Windows 2000 y arriba, y Mac OS X . Inicialmente parece estar más orientado hacia el uso del tipo AutoHotkey , pero al mirar más allá, creo que podría hacer lo que desea muy bien.
Max y aka.keyboard
Gratis. Para Mac OS X . No es exactamente una solución "lista para usar", pero si se siente cómodo con la configuración básica del dispositivo, no debería ser tan malo.
fuente
Puede acceder al hardware con muestras de código fuente en .NET en MIDI DotNet .
Una muestra de trabajo completa como código fuente para crear flujo de datos de notas MIDI se encuentra en VB 5/6-Tipp 0521: MIDI-Töne erzeugen (Visual Basic 6.0, en algún lugar también está la versión .NET)
Una forma de simular golpes de teclado es en VB 5/6-Tipp 0155: Tastaturereignisse simulieren (Visual Basic 6.0, en algún lugar también está la versión .NET)
Y reconocer pulsaciones de teclas se describe en Tipp-Upload: VB.NET 0266: Globaler KeyHook .
Luego, solo use una buena matriz de trabajo para un pianista
En el piano y cuando eres un buen jugador, puedes tener 10 dedos en el teclado y si la matriz es utilizable, puedes ser mucho más rápido que cualquier usuario de teclado de computadora, creo. :-)
En ese caso, si entiendo bien su pregunta, no debería ser una gran cosa.
fuente
Estudié interpretación de piano en la universidad y luego me metí en el diseño de interacción, la programación y el uso de Vim , por lo que de hecho pasé mucho tiempo creando prototipos de este tipo de cosas.
Puede hacer que esto funcione bastante rápido en Linux utilizando el lenguaje de programación gráfico para artistas multimedia, " Pure Data ", junto con la clave x11key de Alex Andre .
En Mac, puedes usar MidiStroke . Creo que un método en Windows involucraba las herramientas MidiOx y AutoHotKey . En otro momento tenía una versión que usaba el complemento de Java para Max / MSP . Creo que Patrice Colet creó una ventana externa para Pure Data que también funcionó, pero parece que ya no puedo localizarlo. Además, hay un externo para MaxMSP que puede hacer esto en Windows. Finalmente, el Osculator no gratuito pero impresionante puede hacer lo que quiera: vea la página de características.
Cuando lo puse a trabajar, nunca me quedé con él, porque no podía dejar de utilizar el diseño. ¡Sin embargo, fue genial tener mi monitor en mi teclado eléctrico! Buena suerte.
fuente
Sobre MIDI
Usted declaró que "no sabe nada sobre MIDI". La tecnología MIDI es bastante sencilla una vez que la comprende, pero puede ser confusa desde el principio. Uno de los recursos que me ha sido tremendamente útil para comprender los fundamentos de MIDI (que sin duda son necesarios si desea programar interacciones MIDI) es un libro llamado MIDI para el Technophobe . Es un libro fácil de leer y es muy útil.
Datos puros y Max
En mi experiencia en el desarrollo de multimedia interactiva, hay dos programas muy similares que he encontrado que facilitan la conexión y mapeo de señales / entradas desde cualquier dispositivo.
Estos son Max para un entorno Mac y Pure Data para un entorno de PC. Ambos tienen una gran cantidad de documentación en línea y tutoriales de YouTube. El video Max / MSP Tutorial 1: el uso del teclado de su computadora como midikeyboard (estilo ableton) muestra un programa integrado en Max que asigna un teclado de computadora a las entradas de un teclado MIDI (que es básicamente exactamente lo contrario de lo que está tratando de hacer). Puede obtener los resultados deseados utilizando el mismo patrón, pero invirtiendo las señales / asignaciones.
AutoHotKey
AutoHotKey es una utilidad gratuita de código abierto para Windows que le permite reasignar teclas y botones en sus dispositivos a macros. Admite de forma nativa teclados QWERTY, joysticks y macros de mouse.
Sin embargo, pude encontrar una implementación compatible con el mapeo específico que está buscando. Estos dos hilos explican el proceso:
Soporte MIDI IN en AutoHotkey , la discusión del caso de uso. El autor estaba buscando un programa que pudiera detectar la entrada MIDI IN y traducirla a pulsaciones de teclas .
Biblioteca de entrada MIDI , la solución al problema del autor y el código / parche publicado en AutoHotKey que realmente implementa el resultado deseado.
Básicamente, parece que AutoHotKey, junto con el parche personalizado de este usuario, proporcionará exactamente lo que necesita para crear una asignación desde un teclado MIDI a la señal de entrada de un teclado QWERTY. Todo lo que tendría que hacer es instalar, configurar y definir sus asignaciones.
¿Algo más?
Algunas de las otras respuestas le han dado información mucho más extensa sobre programación MIDI y MIDI, en general, pero como su publicación dice que no parece ser lo que está buscando. Me gustaría ayudarlo más si es posible, pero sería más fácil si pudiera ser más específico sobre el tipo de información que está buscando. Por ejemplo, ¿está más interesado en cómo convertir las señales de entrada de un teclado MIDI en las señales de un teclado QWERTY , o es su interés principal encontrar una solución inmediata a su problema específico? ¿Qué buscas que aún no se ha abordado?
fuente
Puede hackear su propio teclado USB con bastante rapidez utilizando un microcontrolador Teenys.
De hecho, tienen un código de ejemplo sobre cómo hacer un teclado USB .
Podría abordar esto de dos maneras:
Obtenga un piano viejo y conecte los interruptores directamente a la adolescencia
Agregue la lógica adicional para conectarse al puerto MIDI y la decodificación necesaria.
fuente
En realidad, trabajé en esto hace un tiempo, tratando de capturar entradas de batería de Rock Band en mi computadora (haciendo un pequeño emulador de batería casero de Java) De todos modos, hice una pregunta aquí sobre eso, problema de retraso de tiempo (hay código de sondeo allí , junto con lo que intentaba hacer). Y si puedo encontrar mi programa, puedo darle el código, utiliza una API de terceros ( JInput ).
Buena suerte de cualquier manera.
fuente
Prueba el traductor MIDI de Bome .
Funciona multiplataforma, puede convertir cualquier entrada MIDI en un teclado para tocar fácilmente, configurar y configurar rápidamente, además es gratis para uso personal.
Hay un tutorial, Consejo rápido: Traducción MIDI - MIDI a pulsaciones de teclas , sobre cómo configurarlo fácilmente:
Básicamente, hay infinitas posibilidades de lo que puede hacer, incluidas las teclas de chording y modificador. Lo uso para mi equipo de audio en vivo para controlar mi DAW usando mi piano y nunca he tenido un problema.
fuente
En Java, puede usar JMF (marco de Java Media) para convertir señales MIDI. El diseño básico del teclado es fácil de usar, es decir, la interfaz de usuario; y coloque el carácter / símbolo frecuentemente utilizado a mano.
El código de muestra y la API en Java Sound Resources: Ejemplos: el procesamiento de señal digital (DSP) ayuda a comprender cómo procesar la señal.
Algunas referencias más:
fuente
Hay un programa llamado GlovePIE . Puede programarlo en un lenguaje de script simple y creo que es compatible con MIDI. No estoy seguro si esto encaja en la categoría "Java", pero aún así, es un gran programa. Lo he usado para controlar robots usando controladores PS3 . Es muy poderoso.
fuente
Muchos teclados tienen un conector de puerto serie ( RS-232 ) para enviar señales MIDI a la computadora. Utilizo un programa llamado Girder para convertir la comunicación del puerto serie en golpes de teclado.
La viga tiene una función de "mapeo" que le permite mapear cada tecla, una por una, a la pulsación correspondiente.
¡Esta podría ser la solución simple que estás buscando!
fuente
¡Solo aprende estenografía!
Está claro por toda la discusión de su parte. No desea reinventar ninguna rueda, desde un punto de vista técnico. Pero una vez que haya hecho una conexión (lo que esta pregunta está haciendo) y esté funcionando, todavía tiene la mayor parte del trabajo por delante: tiene que entrenar su cerebro. Usted también tiene que inventar la manera más inteligente, más eficiente de hacer eso - un problema de diseño totalmente fuera de la rhealm de técnicos informáticos. Usted o cualquiera de nosotros se quedaría corto.
Afortunadamente, el problema se ha resuelto y perfeccionado a través de siglos de maduración ...
¡Aprende estenografía!
Sí, esto te hará retroceder un poco. Pero, ¿cuánto valen cientos de horas de su propio tiempo y, al final, un resultado menos favorable? Además, el artículo de Wikipedia sobre estenografía dice: "se parece más a un teclado de piano".
A menos, por supuesto, que desee tener un efecto secundario. Debo admitir que nunca pensé en esta posibilidad, ¡sería realmente entretenido ver a alguien sacar un texto del teclado de un piano!
Puede comenzar con un teclado USB con panel táctil (¿o un dispositivo de puntero sería más ergonómico?), Use Plover para traducirlo (estoy seguro de que se puede configurar para permitir que las teclas que no sean letras retengan su funcionalidad, ya que son críticas para programación), o, siga el hilo Re: Plover keyboard para rodar su propio teclado de estenografía USB, o compre un estenotipo .
¡Buena suerte!
fuente
pthread
?Echa un vistazo a los juegos de arcade MAME . Han construido dispositivos de hardware para permitir la entrada de cualquier cantidad de elementos diferentes. El iPac , por ejemplo, convierte las señales de los dispositivos de entrada en USB que la computadora puede usar para emular claves. Puede usar cualquier combinación de dispositivos de entrada organizados de cualquier manera que parezca cómoda sin una lógica de programación loca, porque el software para interpretar la entrada ya está hecho y bien probado.
He visto entradas de la cabina del simulador de vuelo, quioscos personalizados y sistemas de votación integrados en este método ... ¡y el precio es correcto!
fuente
Para resolver esto, necesitará algunas cosas:
Una forma de capturar datos MIDI desde su teclado. Dependiendo de la interfaz: interfaz MIDI (clásica) o interfaz MIDI USB (moderna), la interfaz más probable es para una computadora, ya que ofrece la mayoría de las opciones. Los microcontroladores host USB no son tan simples como usar una computadora.
Un esquema para convertir datos MIDI en pulsaciones de teclas. Como señaló un usuario, los acordes son el camino a seguir, ya que la cantidad de teclas no dependerá de la cantidad de teclas del piano.
Una forma de inyectar una clave en el sistema operativo. Esto requerirá un controlador de bajo nivel para ser preciso. He jugado con aplicaciones que inyectan datos de teclado y mouse en aplicaciones en Windows 7, y puede ser escaso y depender de si una aplicación está actualmente en foco. Esta es la parte más difícil de la interfaz. Lo que puede funcionar es crear un microcontrolador de teclado USB HID que también tenga una interfaz en serie.
La interfaz serial crearía un puerto serial virtual. El software que lee los datos MIDI y produce las pulsaciones de teclas podría enviar un mensaje en serie al puerto en serie virtual. El microcontrolador enviaría una pulsación de tecla para que pareciera una entrada de teclado estándar. Esto permitiría la interfaz de los puertos MIDI y los teclados MIDI USB.
Hmmm, con este tipo de interfaz también puedes simular un mouse y usar algunas teclas de piano para el eje y los botones del mouse. La presión podría usarse para determinar la velocidad del puntero del mouse. Entonces también podrías eliminar el mouse. Otro beneficio de este enfoque es que cualquier tipo de dispositivo de entrada que conecte podría comunicarse con el puerto serie virtual para producir eventos de teclado y mouse. Entonces, si desea agregar otro hardware como pedales de batería o un joystick, sería cuestión de ajustar el programa que se comunica con la interfaz en serie.
Otra versión de lo anterior es como algunas publicadas anteriormente para usar un Arduino, pero también incluyen USB Host Shield de Sparkfun para manejar teclados de música basados en USB. Esto permite que Arduino se programe como una combinación de teclado o mouse de teclado en el chip del cargador de arranque y permite que el dispositivo actúe como host USB para el teclado de música basado en USB. Entonces estás cubierto para ambos tipos. Aunque, sigo pensando que el método de puerto serie virtual es más flexible y sería más fácil de programar a largo plazo. El dispositivo Arduino será más difícil de cambiar que un programa o servicio de escritorio.
Hay otra posibilidad: ya existen teclados con una sola mano. He visto videos sobre ellos, pero tendrías que determinar si te duelen las manos o no.
fuente
Debería ser bastante fácil usar algo como la interfaz .NET DirectSound para conectarlo a un dispositivo MIDI. Deberá identificar su dispositivo MIDI de destino y luego obtener el código para escuchar los mensajes entrantes (hay artículos sobre cómo hacerlo a través de Google).
Dado que está utilizando el MIDI como teclado, básicamente hay dos mensajes MIDI que debe detectar, a saber, nota activada y desactivada. El mensaje MIDI tiene tres bytes de datos que especifican el comando, la nota y la velocidad. La nota desactivada es solo el número de la nota (a veces las pilas MIDI 'malas' envían una nota con velocidad cero que también debe esperar).
Una vez que tenga los mensajes traduciéndolos, la salida del teclado debería ser bastante simple desde .NET.
Hay muchos consejos en las otras respuestas sobre los tecnicismos; Solo quería darte una idea de los mensajes MIDI reales. ¡Buena suerte!
fuente
Obtendrá resultados mejores y más felices (independientemente del sistema operativo y / o programa DAW que quiera usar) tocando cualquier teclado MIDI externo como controlador a través de su tarjeta de sonido. Luego, diríjalo a su software GB (o lo que sea) y el tono genera los muchos sonidos que le han proporcionado de esa manera en tiempo real.
Si su tarjeta de sonido no admite E / S MIDI (entradas / salidas / thrus), eso no es un problema. Puede considerar investigar e invertir en un convertidor de mesa MIDI externo. Muchos están equipados para convertir aún más las salidas MIDI a USB 2.0 (pasando por alto una tarjeta de sonido existente).
Por ejemplo: es bastante difícil obtener resultados de notas de gracia "similares a los humanos" a través de una opción de tecla de cambio Z y X usando un teclado de computadora y una herramienta de lápiz. Cuando, en cambio, sus propios dedos pueden tocar eso con un teclado MIDI desde sus propios rangos de registro de octava física, ¡inmediatamente!
Me doy cuenta de que pueden estar involucradas restricciones presupuestarias. Pero, algunos de estos teclados de octava tipo "Casio" aparentemente baratos vendidos en Radio Shack por menos de $ 100.00 dólares estadounidenses (* o menos) es todo lo que necesitaría (además, algunos de sus parches de sonido integrados y módulos de sonido y manejo de sonido increíblemente bien para otras cosas también).
Opciones de teclado MIDI RadioShack .
En cuanto a los convertidores MIDI externos para tarjetas de sonido existentes, he realizado algunas búsquedas en Google de la siguiente manera teniendo en cuenta las plataformas Mac específicamente:
Al principio, mucha de esta información de conversión MIDI externa puede ser engorrosa para usted, por lo que he desglosado las cosas como "fáciles de usar" para sus consideraciones y presupuesto:
No hay nada de malo en facilitar teclados virtuales como VST cuando se usa DAW . Ellos tienen su lugar.
Pero suenas como un tecladista consumado. Entonces, ¿por qué no considerar las opciones de conversión / teclado MIDI externo que acabo de mencionar?
¡Buena suerte y espero que esto te haya dado algunas ideas que pueden y funcionarán para ti!
fuente
Si no desea hacer ninguna programación usted mismo, pero solo desea resolver el problema, puede comprar un teclado USB-MIDI donde puede reasignar cualquier tecla para enviar una señal de salida de teclado QWERTY en lugar de una salida MIDI, para ejemplo M-Audio Axiom Pro
Este método funcionará con cualquier sistema operativo y cualquier computadora que admita teclados USB estándar, ya que el teclado MIDI se identificará como un teclado QWERTY estándar.
fuente
Puede usar un simple script AutoIt para leer eventos MIDI, ver Entrada MIDI .
También necesitará MIDI UDF y simular pulsaciones de teclas .
Leer eventos MIDI debería ser fácil, pero diferentes controladores MIDI (instrumentos) tienen diferentes características. Intente averiguar qué puede hacer su piano MIDI primero, luego vea cómo puede asignar mejor esas funciones a las prensas de teclado QWERTY simuladas.
Si lo desea, podría tener algo en la pantalla o en la bandeja para ayudarle a ver lo que está haciendo (es decir, para Shift, Ctrly la Altsimulación).
fuente
Puede echar un vistazo a los teclados con acordes . Tienen la ventaja de que no necesita escribir un controlador para ellos antes de poder usarlos, y algunos son similares al diseño de un teclado de piano.
fuente
Si conoce la codificación en Java, puede usarla de esta manera:
Primero, implemente a
javax.sound.midi.Receiver
con unsend(..)
método que asigne los eventos 'Nota sobre' a las pulsaciones de teclas como desee.Necesitaría obtener el contenido de MidiMessage con su
getMessage
método e interpretarlo a su manera. El significado de los bytes del mensaje se puede encontrar en Mensajes MIDI .Después de recibir una 'nota activada' o 'desactivada' para una determinada tecla del teclado, puede asignarla a una tecla que desee asignándole una constante de la clase KeyEvent, algo así como C # 4 -> KeyEvent.VK_A y así sucesivamente . Este código de tecla puede ser utilizado por
java.awt.Robot
los métodos keyPress y keyRelease para enviar la pulsación de tecla al sistema operativo y, por lo tanto, a otras aplicaciones.fuente
Estoy de acuerdo con la respuesta de Brian O'Dell: si este fuera mi proyecto, lo haría en hardware. Tiene la ventaja de ser independiente de la plataforma y el hardware: su caja reemplaza la necesidad de una interfaz MIDI-USB y una API de PC.
mbed es una plataforma de creación rápida de prototipos que es muy fácil de aprender y tiene múltiples ventajas sobre Arduino IMHO (compilador en línea, 512 KB flash, 96 MHz, lenguaje C ++). Tiene una interfaz de teclado USB y una interfaz USB Midi preescrita para usted.
La comunidad es muy amigable y está dispuesta a ayudar, y hay muchos proyectos existentes que utilizan emulación oculta MIDI y USB: busque en YouTube "mbed MIDI" o similar.
fuente
Si usa Linux, eche un vistazo a Footware .
Debe ser exactamente lo que está buscando: si ajusta los tonos MIDI a un mapeo de teclas de su agrado ...
Nunca pensé que esto podría ser útil para nadie más que para mí; o)
fuente
Intente usar un sistema basado en microcontrolador, como Arduino .
fuente
Esto no sería demasiado difícil.
Supongo que estás en Windows , aunque no estoy seguro de eso. He escrito un secuenciador MIDI , http://pianocheetah.com , en C ++ antiguo y simple , y le permite usar el teclado del piano para ejecutar comandos. No hay ninguna razón por la que no pueda hacer lo mismo para introducir teclas en la secuencia de entrada del teclado.
Pero vamos ahora. Recuerdas cuánto tiempo te llevó aprender el teclado en primer lugar, ¿verdad? ¿Estás dispuesto a pasar por eso otra vez? ¿Y estás dispuesto a contaminar tu bendito teclado con un montón de símbolos de teclas estúpidos por todas partes?
Deberá usar al menos 26 alfa, 10 numéricos, 11 signos de puntuación y al menos 12 teclas de función Y sus estados desplazados. Eso es 60 teclas más estados cambiados. Eso quemará un total de 5 octavas de teclas. Estarás haciendo piano "lúpulo" = todo = el tiempo. Diga adiós a tocar escribiendo.
Puede salvarse de RSI , pero ha creado otro tipo diferente de pesadilla para usted.
Y buena suerte para que tu jefe te compre un teclado MIDI en el trabajo.
Si has aprendido a tocar el piano de verdad, has aprendido a tocar sin estrés. Hazlo en el teclado QWERTY . Sin tension. Comience despacio.
fuente