Tenho problemas de RSI e tentei 30 teclados de computador diferentes, o que me causou dor. Tocar piano não me causa dor. Toco piano há cerca de 20 anos sem problemas de dor. Gostaria de saber se existe uma maneira de capturar MIDI a partir de um teclado MIDI e emitir toques de teclado. Não sei nada sobre MIDI, mas gostaria de algumas orientações sobre como converter esse sinal em um pressionamento de tecla.
727
Respostas:
Uma boa biblioteca em .NET com suporte total a midi (BASS), acesse http://www.un4seen.com .
E, por outro lado, traduzindo notas midi do teclado em teclas e muito mais, eu usaria o AutoItX, a interface ActiveX / COM e DLL no autoIt. Informações e download, acesse http://www.autoitscript.com/site/autoit/
Não há necessidade de escrever o driver do teclado.
fonte
Não faço programação MIDI há anos, mas sua ideia fundamental é muito sólida (sem trocadilhos).
MIDI é um fluxo de "eventos" (ou "mensagens"), dois dos mais fundamentais sendo "note on" e "note off" que carregam com eles o número da nota (0 = C cinco oitavas abaixo do meio C, através de 127 = G cinco oitavas acima do G acima do meio C, em semitons). Esses eventos carregam um número de "velocidade" em teclados sensíveis à velocidade ("sensíveis ao toque"), com uma força de (você adivinhou) entre 0 e 127.
Entre a velocidade, as cordas e os pedais, acho que você poderia criar uma interface de "digitação" bastante boa para o teclado do piano. A gravação em particular pode ser uma técnica muito poderosa - como mencionei nos comentários, é por isso que os estenógrafos comuns podem usar uma máquina de estenótipo para acompanhar as pessoas conversando por horas seguidas, quando até os datilógrafos de primeira linha não ' por um longo período de tempo através de teclados normais no estilo de máquinas de escrever. Como na estenografia de máquinas, você precisa de um "dicionário" dos significados dos acordes e das seqüências de acordes. (Você pode dizer que eu costumava trabalhar no lado do software da estenografia da máquina?)
Para fazer isso, as peças fundamentais são:
Para ser o mais amplamente compatível com o software, você teria que escrever isso como um driver de dispositivo do teclado. Este é um plug-in para o sistema operacional que serve como fonte para eventos do teclado, conversando com o hardware subjacente (no seu caso, o teclado do piano). Para Windows e Linux, você provavelmente vai querer usar C para isso.
No entanto, como você está apenas gerando pressionamentos de tecla (sem tentar interceptá-los, o que eu estava tentando fazer anos atrás), você poderá usar os recursos que o sistema operacional tiver para enviar pressionamentos de teclas artificiais. O Windows tem uma interface para fazer isso (provavelmente várias, a única em que estou pensando é,
SendInput
mas sei que há alguma interface de "diário" que faz algo semelhante) e tenho certeza que outros sistemas operacionais também o fazem. Isso pode ser suficiente para seus propósitos - é onde eu começaria, porque a rota do driver de dispositivo será estranha e você provavelmente precisará usar uma linguagem diferente do Java. (Sou um grande fã de Java, mas as interfaces que os sistemas operacionais usam para conversar com os drivers de dispositivo tendem a ser mais facilmente consumidas via C e similares.)Atualização : Mais informações sobre o "dicionário" de acordes para pressionamentos de teclas:
Basicamente, o dicionário é um trie (obrigado, @Adam) que pesquisamos com a correspondência de prefixo mais longo. Detalhes:
Na estenografia da máquina, o estenógrafo escreve pressionando várias teclas na máquina de estenótipo ao mesmo tempo e, em seguida, liberando todas elas. Eles chamam isso de "toque" do teclado; é como tocar um acorde no piano. Os traços freqüentemente (mas nem sempre) correspondem a uma sílaba da língua falada. Assim como as sílabas, às vezes um toque (acorde) tem significado por si só, outras vezes ele só tem significado combinado com os movimentos seguintes. (Pense "bom" vs. "bom" seguido de "tchau"). Embora eles sejam fortemente influenciados pela escola em que estudaram, cada estenógrafo terá seu próprio "dicionário" de quais traços eles usam para significar o que, um dicionário que eles continuamente aprimorarão ao longo de suas vidas profissionais. O dicionário terá entradas em que a parte estenográfica ("steno", para abreviar) tem um curso ou vários tempos. Freqüentemente, haverá várias entradas com o mesmo golpe inicial, diferenciadas pelo comprimento e pelos movimentos subsequentes. Por exemplo (e eu não usarei o steno real aqui, apenas espaços reservados), pode haver estas entradas:
(Essas cartas não devem ser notas musicais, apenas marcadores abstratos.)
Observe que
A
inicia várias entradas e também como a tradução de umC
traçado depende se você já viu umA
, aB
ou se está começando de novo.Observe também que (embora não seja mostrado na amostra muito pequena acima), pode haver várias maneiras de "reproduzir" a mesma palavra ou frase, em vez de apenas uma. Os estenógrafos fazem isso para facilitar o fluxo de uma palavra anterior para a seguinte, dependendo da posição da mão. Existe uma analogia óbvia com a música, e você pode usar isso para tornar a digitação mais parecida com a música, tanto para impedir que isso afete negativamente a execução do seu piano quanto para maximizar a probabilidade de realmente ajudar com o RSI.
Ao traduzir steno em texto padrão, novamente usamos uma pesquisa de "correspondência de prefixo mais longo": o algoritmo de tradução começa com o primeiro toque já escrito e procura entradas que começam com esse toque. Se houver apenas uma entrada e for um toque, poderemos dizer com segurança "essa é a entrada a ser usada", produzir o texto correspondente e começar novamente com o próximo toque. Mas o mais provável é que esse traçado inicie várias entradas de diferentes comprimentos. Então, olhamos para o próximo traço e vemos se há entradas que começam com esses dois traços em ordem; e assim por diante até conseguirmos uma partida.
Portanto, com o dicionário acima, suponha que vimos essa sequência:
Veja como o traduziríamos:
A
é o início de três entradas de comprimentos variados; veja o próximo golpe:C
A/C
corresponde apenas a uma entrada; saída "ar condicionado" e começar de novo com o próximo curso:B
B
inicia duas entradas; veja o próximo golpe:B
B/B
não inicia nada; pegue a correspondência anterior mais longa (B
) e produza que ("bee")B
= "bee", ainda temos umB
acidente vascular cerebral em nosso buffer. Ele inicia duas entradas, então veja o próximo traço:C
B/C
corresponde a uma entrada; output "because" e comece do zero com o próximo golpe:A
A
inicia três entradas; veja o próximo golpe:B
A/B
inicia duas entradas; veja o próximo golpe:C
A/B/C
corresponde apenas a uma entrada; output "alfabético" e comece do zero com o próximo toque:A
A
inicia três entradas; veja o próximo golpe:B
A/B
inicia duas entradas; veja o próximo golpe:D
A/B/D
não corresponde a nada, portanto, pegue a correspondência anterior mais longa (A/B
) e use-a para gerar "alfabeto". Isso nos deixaD
ainda no buffer.D
inicia duas entradas, para que normalmente analisássemos o próximo golpe - mas processamos todos os movimentos, então considere-o isoladamente. Isoladamente, ele se traduz como "cachorro", então é isso.Aspectos acima para observação:
A/B
deve ser traduzido como "alfabeto", não "alfa" e "abelha".E
seriam "não traduzidos".)fonte
Considere fazer algo no hardware que emula um teclado usb (ou ps / 2?). Você não será mais dependente de um sistema operacional específico ou de uma API específica do sistema operacional. Uma solução de hardware resistirá ao teste do tempo. Não fique preso usando uma API antiga no Windows 7 quando todos os outros estiverem executando o Windows 11! O Arduino é muito fácil de aprender.
Há uma tonelada de informações e ajuda para o Arduino. É uma plataforma de hackers de hardware criada para iniciantes. Só ficará maior agora que o Google está pressionando o Arduino.
EDIT: Software e hardware do teclado virtual USB
fonte
Parece-me que você está procurando menos conselhos sobre como construir isso sozinho e mais perguntas sobre quais recursos já existem para realizar o que deseja. Dependendo do seu sistema operacional, existem várias maneiras de fazer isso sem precisar escrever seu próprio programa do zero:
Curso MIDI
Livre. Para Mac OS X 10.3 e superior . Este vem especificamente com "a capacidade de usar qualquer teclado MIDI como uma substituição completa do teclado do computador".
Tradutor MIDI da Bome
Free / Postcardware (é um pouco estranho). Para Windows 2000 e para cima, e Mac OS X . Inicialmente, parece ser mais voltado para o uso do tipo AutoHotkey , mas, olhando mais adiante, acho que poderia fazer o que você deseja.
Max e aka.keyboard
Livre. Para Mac OS X . Não é exatamente uma solução "pronta para uso", mas se você se sentir confortável com a configuração básica do dispositivo, não deve ser tão ruim.
fonte
Você pode acessar o hardware com exemplos de código-fonte no .NET no MIDI DotNet .
Um exemplo completo de trabalho como código-fonte para criar fluxo de dados de notas MIDI está no VB 5/6-Tipp 0521: MIDI-Töne erzeugen (Visual Basic 6.0, em algum lugar também é a versão .NET)
Uma maneira de simular toques de teclado é no VB 5/6-Tipp 0155: Tastaturereignisse simulieren (Visual Basic 6.0, em algum lugar também está na versão .NET)
E o reconhecimento de pressionamentos de teclas é descrito em Tipp-Upload: VB.NET 0266: Globaler KeyHook .
Em seguida, basta usar uma boa matriz de trabalho para um pianista
No piano e quando você é um bom tocador, pode ter 10 dedos no teclado e, se a matriz for utilizável, pode ser muito mais rápido que qualquer usuário de teclado de computador. :-)
Nesse caso, se entendi bem sua pergunta, não deve ser uma grande coisa.
fonte
Estudei performance de piano na faculdade e depois entrei em design de interação, programação e uso do Vim , então, na verdade, passei muito tempo criando protótipos de coisas como essa.
Você pode fazer isso funcionar rapidamente no Linux usando a linguagem de programação gráfica para artistas de multimídia, " Pure Data ", junto com o x11key externo de Alex Andre .
No Mac, você pode usar o MidiStroke . Acredito que um método no Windows envolva as ferramentas MidiOx e AutoHotKey . Em outra época, tive uma versão usando o plug-in Java para Max / MSP . Acredito que Patrice Colet criou uma janela externa para o Pure Data que também funcionou, mas não consigo mais localizá-lo. Além disso, há um externo para o MaxMSP que pode fazer isso no Windows. Por fim, o Osculator , que não é gratuito, mas incrível, pode fazer o que você quiser - consulte a página de recursos.
Quando o fiz funcionar, nunca fiquei preso, porque não conseguia parar de trabalhar com o layout. Foi legal ter meu monitor no teclado elétrico! Boa sorte.
fonte
Sobre o MIDI
Você afirmou que "não sabe nada sobre MIDI". A tecnologia MIDI é bastante direta quando você a compreende, mas pode ser confusa desde o início. Um dos recursos que me foi tremendamente útil para entender os fundamentos do MIDI (que certamente são necessários se você deseja programar interações MIDI) é um livro chamado MIDI para o Technophobe . É um livro fácil de ler e é muito útil.
Pure Data & Max
Na minha experiência no desenvolvimento de multimídia interativa, encontrei dois programas muito semelhantes que facilitam a conexão e o mapeamento de sinais / entradas de qualquer dispositivo.
Estes são Max para um ambiente Mac e Pure Data para um ambiente PC. Ambos têm uma infinidade de documentação on-line e tutoriais do YouTube. O vídeo Max / MSP Tutorial 1 - usando o teclado do computador como meio do teclado (estilo ableton) demonstra um programa construído no Max que mapeia o teclado do computador para as entradas de um teclado MIDI (que é basicamente o oposto do que você está tentando fazer). Você pode obter os resultados pretendidos usando o mesmo padrão, mas revertendo os sinais / mapeamentos.
AutoHotKey
O AutoHotKey é um utilitário de código aberto gratuito para Windows que permite remapear as teclas e os botões dos seus dispositivos para macros. Ele suporta nativamente teclados QWERTY, joysticks e macros de mouse.
No entanto, consegui encontrar uma implementação que suporte o mapeamento específico que você está procurando. Esses dois threads explicam o processo:
Suporte MIDI IN no AutoHotkey , a discussão do caso de uso. O autor procurava um programa que pudesse detectar a entrada MIDI IN e traduzi-lo para pressionamentos de tecla .
Biblioteca de entrada MIDI , a solução para o problema do autor e o código / patch publicado no AutoHotKey que realmente implementa o resultado pretendido.
Basicamente, parece que o AutoHotKey, junto com o patch personalizado deste usuário, fornecerá exatamente o que você precisa para criar um mapeamento de um teclado MIDI para o sinal de entrada de um teclado QWERTY. Tudo o que você precisa fazer é instalar, configurar e definir seus mapeamentos.
Algo mais?
Algumas das outras respostas forneceram informações muito mais abrangentes sobre programação MIDI e MIDI, em geral, mas, como diz o seu post, isso não parece exatamente o que você está procurando. Gostaria de ajudá-lo mais, se possível, mas seria mais fácil se você pudesse ser mais específico sobre o tipo de informação que está procurando. Por exemplo, você está mais interessado em converter os sinais de entrada de um teclado MIDI em sinais de um teclado QWERTY ou o seu interesse principal é encontrar uma solução pronta para o seu problema específico? O que você está procurando que ainda não foi abordado?
fonte
Você pode invadir seu próprio teclado USB rapidamente usando um micro controlador Teenys.
De fato, eles têm um código de exemplo de como criar um teclado USB .
Você pode abordar isso de duas maneiras:
Adquira um piano velho e conecte interruptores diretamente ao pequenino
Adicione a lógica adicional para conectar à porta MIDI e a decodificação necessária.
fonte
Na verdade, eu trabalhei nisso há um tempo atrás, tentando capturar as entradas de bateria do Rock Band no meu computador (criando um pequeno emulador de bateria caseiro Java) De qualquer forma, fiz uma pergunta aqui sobre isso, problema de atraso de tempo (há código de pesquisa lá , junto com o que eu estava tentando fazer.). E se eu encontrar meu programa, posso fornecer o código, ele usa uma API de terceiros ( JInput ).
Boa sorte de qualquer maneira.
fonte
Experimente o tradutor MIDI da Bome .
Funciona em várias plataformas, pode converter qualquer MIDI entrada em um keytoke facilmente, rápido de instalar e configurar, além de ser gratuito para uso pessoal.
Há um tutorial, Dica rápida: Tradução MIDI - MIDI para pressionamentos de teclas , sobre como configurá-lo facilmente:
Basicamente, existem infinitas possibilidades do que você pode fazer, incluindo teclas de modificação e modificação. Eu o uso no meu equipamento de áudio ao vivo para controlar minha DAW usando meu piano e nunca tive um problema.
fonte
Em Java, você pode usar o JMF (estrutura Java Media) para converter sinais MIDI. O design básico do teclado é fácil de usar, ou seja, a interface do usuário; e coloque à mão os caracteres / símbolos usados com freqüência.
O código de exemplo e a API em Java Sound Resources: Exemplos: DSP (Digital Signal Processing) ajudam a entender como processar o sinal.
Mais algumas referências:
fonte
Existe um programa chamado GlovePIE . Você pode programá-lo em uma linguagem de script simples e acredito que ele suporta MIDI. Não tenho certeza se isso se encaixa na categoria "Java", mas ainda assim, é um ótimo programa. Eu usei-o para controlar robôs usando controladores PS3 . É muito poderoso.
fonte
Muitos teclados possuem um conector de porta serial ( RS-232 ) para enviar sinais MIDI ao computador. Eu uso um programa chamado Girder para converter a comunicação da porta serial em toques no teclado.
A viga possui um recurso de "mapeamento" que permite mapear cada tecla, uma por uma, para o pressionamento de tecla correspondente.
Esta pode ser a solução simples que você está procurando!
fonte
Apenas aprenda estenografia!
Está claro em toda a discussão da sua parte. Você não deseja reinventar nenhuma roda, do ponto de vista técnico. Mas uma vez que você tenha feito uma conexão (o que esta pergunta está perguntando) e funcionando, você ainda terá a maior parte do trabalho pela frente: você precisa treinar seu cérebro. Você também precisa inventar a maneira mais inteligente e eficiente de fazer isso - um problema de design totalmente fora do mundo dos técnicos em informática. Você ou qualquer um de nós ficaria aquém.
Felizmente, o problema foi resolvido e aperfeiçoado durante séculos de amadurecimento ...
Aprenda estenografia!
Sim, isso fará com que você volte a usar algum conector. Mas quanto vale centenas de horas de seu tempo, com no final, um resultado menos favorável? Além disso, o artigo da Wikipedia sobre estenografia diz: "parece mais um teclado de piano".
A menos, é claro, que você queira ter um efeito de exibição lateral. Eu teria que admitir, nunca pensei nessa possibilidade, seria realmente divertido ver alguém pegar um texto de um teclado de piano!
Você pode começar com um teclado USB com touchpad (ou um apontador seria mais ergonômico?), Use o Plover para traduzi-lo (tenho certeza de que pode ser configurado para permitir que as teclas que não sejam da letra mantenham sua funcionalidade, pois são críticas para programação) ou siga o tópico Re: Plover keyboard para rolar seu próprio teclado de estenografia USB ou compre um estenótipo .
Boa sorte!
fonte
pthread
?Dê uma olhada nos jogos de arcade MAME . Eles criaram dispositivos de hardware para permitir a entrada de qualquer número de itens diferentes. O iPac , por exemplo, converte sinais de dispositivos de entrada em USB que o computador pode usar para emular teclas. Você pode usar qualquer combinação de dispositivos de entrada dispostos de qualquer maneira que pareça confortável, sem lógica lógica de programação necessária - porque o software para interpretar as entradas já está pronto e bem testado.
Vi entradas do cockpit do simulador de vôo, quiosques personalizados e sistemas de votação criados neste método ..... e o preço é justo!
fonte
Para resolver isso, você precisará de algumas coisas:
Uma maneira de capturar dados MIDI do seu teclado. Dependendo da interface: interface MIDI (clássica) ou interface USB MIDI (moderna), a interface mais provável é para um computador, pois oferece mais opções. Os microcontroladores host USB não são tão simples quanto usar um computador.
Um esquema para converter dados MIDI em pressionamentos de teclas. Como um usuário apontou, os acordes são o caminho a percorrer, pois o número de teclas não depende do número de teclas do piano.
Uma maneira de injetar uma chave no sistema operacional. Isso exigirá que um driver de baixo nível seja preciso. Eu brinquei com aplicativos que injetam dados de teclado e mouse em aplicativos no Windows 7, e isso pode ser um problema e depende se um aplicativo está atualmente em foco. Esta é a parte mais difícil da interface. O que pode funcionar é criar um microcontrolador de teclado USB HID que também tenha uma interface serial.
A interface serial criaria uma porta serial virtual. O software que lê os dados MIDI e produz as teclas pressionadas pode enviar uma mensagem serial para a porta serial virtual. O microcontrolador envia um pressionamento de tecla para parecer uma entrada de teclado padrão. Isso permitiria interface entre as portas MIDI e os teclados USB MIDI.
Hmmm, com esse tipo de interface, você também pode simular um mouse e usar algumas configurações de teclas de piano para o eixo e os botões do mouse. A pressão pode ser usada para determinar a velocidade do ponteiro do mouse. Então você pode eliminar o mouse também. Outro benefício dessa abordagem é que qualquer tipo de dispositivo de entrada que você conectar poderá conversar com a porta serial virtual para produzir eventos de teclado e mouse. Portanto, se você quiser adicionar outro hardware, como pedais de bateria ou um joystick, seria uma questão de ajustar o programa que fala com a interface serial.
Outra abordagem acima é como algumas postadas acima para usar um Arduino, mas também incluem o USB Host Shield da Sparkfun para lidar com teclados de música baseados em USB. Isso permite que o Arduino seja programado como uma combinação de teclado ou mouse no chip do carregador de inicialização e permite que o dispositivo atue como host USB para o teclado musical baseado em USB. Então você está coberto para os dois tipos. Embora eu ainda ache que o método da porta serial virtual é mais flexível e seria mais fácil de programar a longo prazo. O dispositivo Arduino será mais difícil de alterar do que um programa ou serviço de desktop.
Há outra possibilidade: os teclados com uma mão já estão disponíveis. Eu já vi vídeos neles, mas você teria que determinar se eles machucam suas mãos ou não.
fonte
Deve ser bastante fácil usar algo como a interface do .NET DirectSound para conectar-se a um dispositivo MIDI. Você precisará identificar seu dispositivo MIDI de destino e, em seguida, obter o código para ouvir as mensagens recebidas (há artigos sobre como fazer isso via Google).
Como você está usando o MIDI como teclado, existem basicamente apenas duas mensagens MIDI que você precisa detectar, a saber, ligar e desligar. A mensagem MIDI tem três bytes de dados especificando o comando, a nota e a velocidade. A nota desativada é apenas o número da nota (às vezes pilhas MIDI 'ruins' enviam uma nota com velocidade zero, o que você também deve esperar).
Depois de as mensagens serem traduzidas, a saída do teclado deve ser bastante simples do .NET.
Há muitas dicas nas outras respostas sobre os detalhes técnicos; Eu só queria dar uma idéia das mensagens MIDI reais. Boa sorte!
fonte
Você obterá resultados melhores e mais felizes (independentemente do sistema operacional e / ou programa DAW que você gosta de usar) tocando em qualquer teclado MIDI externo como controlador pela placa de som. Em seguida, direcione isso para o software GB (ou o que for) e o tom gere os muitos sons que eles forneceram dessa maneira em tempo real.
Se a sua placa de som não suportar E / S MIDI (entradas / saídas / thrus), isso não é problema. Você pode pesquisar e investir em um conversor de mesa MIDI externo. Muitos estão equipados para converter ainda mais saídas MIDI para USB 2.0 (ignorando completamente uma placa de som existente).
Por exemplo: é muito difícil obter resultados de notas de cortesia "semelhantes a humanos" por meio da opção de tecla Z e X, usando uma ferramenta de teclado e lápis do computador. Quando, em vez disso, seus próprios dedos podem tocar isso com um teclado MIDI de seus próprios intervalos físicos de registro de oitavas - imediatamente!
Percebo que restrições orçamentárias podem estar envolvidas. Porém, alguns desses teclados de oitava "Casio" do tipo 5 de oitava, vendidos na Radio Shack por menos de US $ 100,00 dólares (* ou menos), são tudo o que você precisa (além disso, alguns de seus patches de som e módulos de seqüenciador integrados soam e manipulam incrivelmente bem para outras coisas também).
Opções de teclado RadioShack MIDI .
Quanto aos conversores MIDI externos para placas de som existentes, realizei algumas pesquisas no Google para você da seguinte maneira, com plataformas Mac especificamente em mente:
Muitas dessas informações externas de conversão de MIDI podem ser complicadas para você no começo; portanto, detalhamos as coisas como "amigáveis" para suas considerações e orçamento:
Não há nada errado em facilitar teclados virtuais como VST ao usar DAW . Eles têm o seu lugar.
Mas você parece um tecladista talentoso. Então, por que não considerar as opções externas de conversão / teclado MIDI que acabei de mencionar?
Boa sorte e espero que isso tenha lhe dado algumas idéias que podem e irão funcionar para você!
fonte
Se você não quiser programar sozinho, mas apenas resolver o problema, basta comprar um teclado USB-MIDI, onde poderá redesignar qualquer tecla para enviar um sinal de saída do teclado QWERTY em vez de uma saída MIDI, por exemplo M-Audio Axiom Pro
Este método funcionará com qualquer sistema operacional e qualquer computador que suporte teclados USB padrão, já que o teclado MIDI se identificará como um teclado QWERTY padrão.
fonte
Você pode usar um script AutoIt simples para ler eventos MIDI, consulte Entrada MIDI .
Você também precisará de MIDI UDF e simular pressionamentos de tecla .
A leitura de eventos MIDI deve ser fácil, mas diferentes controladores MIDI (instrumentos) têm recursos diferentes. Tente descobrir o que o seu piano MIDI pode fazer primeiro e, em seguida, veja como você pode mapear melhor esses recursos para prensas de teclado QWERTY simuladas .
Se você quiser, poderá ter algo na tela ou na bandeja para ajudá-lo a ver o que está fazendo (ou seja Shift,Ctrl e Altsimulação).
fonte
Você pode dar uma olhada nos teclados com acordes . Eles têm a vantagem de que você não precisa escrever um driver para eles antes de poder usá-los, e alguns são semelhantes ao layout de um teclado de piano.
fonte
Se você conhece a codificação em Java, pode usar desta maneira:
Primeiro, implemente um
javax.sound.midi.Receiver
com umsend(..)
método que esteja mapeando os eventos 'Nota sobre' para as teclas digitadas como você deseja.Você precisaria obter o conteúdo do MidiMessage com seu
getMessage
método e interpretá-lo da sua maneira. O significado dos bytes da mensagem pode ser encontrado em Mensagens MIDI .Depois de receber uma 'nota ativada' ou 'anotação desativada' para uma determinada tecla do teclado, você pode mapeá-la para uma tecla que desejar, atribuindo-lhe uma constante da classe KeyEvent, algo como C # 4 -> KeyEvent.VK_A e assim por diante . Esse código de chave pode ser usado pelos
java.awt.Robot
métodos keyPress e keyRelease para realmente enviar o pressionamento de tecla para o sistema operacional e, portanto, para outros aplicativos.fonte
Concordo com a resposta de Brian O'Dell - se esse fosse o meu projeto, eu o faria em hardware. Tem a vantagem de ser independente de plataforma e hardware - sua caixa substitui a necessidade de uma interface MIDI-USB e uma API de PC.
O mbed é uma plataforma de prototipagem rápida, fácil de aprender e com múltiplas vantagens sobre o Arduino IMHO (compilador on-line, flash de 512 KB, 96 MHz, linguagem C ++). Possui uma interface de teclado USB e uma interface USB Midi pré-escrita para você.
A comunidade é muito amigável e está disposta a ajudar, e há muitos projetos existentes usando emulação escondida MIDI e USB - pesquise no YouTube por "mbed MIDI" ou similar.
fonte
Se você usa Linux, dê uma olhada no Footware .
Deve ser exatamente o que você está procurando - se você ajustar os tons MIDI para um mapeamento de teclas do seu gosto ...
Eu nunca pensei que isso poderia ser útil para ninguém além de mim; o)
fonte
Tente usar um sistema baseado em microcontrolador, como o Arduino .
fonte
Isso não seria muito difícil.
Suponho que você esteja no Windows , embora não tenha certeza disso. Eu escrevi um seqüenciador MIDI , http://pianocheetah.com , em C ++ antigo e permite que você use o teclado do piano para executar comandos. Não há motivo para que você não possa fazer o mesmo para pressionar as teclas no fluxo de entrada do teclado.
Mas vamos lá agora. Você se lembra de quanto tempo você aprendeu o teclado, certo? Você está disposto a passar por isso de novo? E você está disposto a poluir seu abençoado teclado com um monte de símbolos de teclas estúpidas por todo o lado?
Você precisará usar pelo menos 26 teclas alfabéticas, 10 numéricas, 11 de pontuação e pelo menos 12 teclas de função E seus estados alterados. Portanto, são 60 chaves mais estados alterados. Isso queimará 5 oitavas de teclas. Você estará fazendo "pulos" de piano = todo = o tempo. Diga adeus ao toque em digitação.
Você pode se salvar do RSI , mas criou outro tipo de pesadelo para si mesmo.
E boa sorte em conseguir que seu chefe compre um teclado MIDI para você no trabalho.
Se você aprendeu a tocar piano de verdade, aprendeu a tocar sem estresse. Faça isso no teclado QWERTY . Sem tensão. Comece devagar.
fonte