Свежие обсуждения
Консультации

Код клавиши при нажатии и отпускании

1 5

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

Имеется аппаратная часть(собственно клавиши), которая должна выдавать на выходе код такого вида

при нажатии клавиши
"номер инструмента"
"номер клавиши", "клавиша нажата"

при отпускании
"номер клавиши", "клавиша отпущена"

С нажатием все понятно, можно использовать либо простую матрицу клавиш(статическая), либо связку генератора, счетчика и дешифраторов/мультиплексоров(динамическая)

Непонятно как сделать, чтобы и при отпускании клавиши выдавался ее код?

 

МИДИ клавиатуру проще сделать на микроконтроллере. Примеры реализации есть в инете.
Например этот

 

smg123: МИДИ клавиатура просто делается на микроконтроллере

это я в курсе,
Просто я сделал прогу к которой можно подсоединить клаву по COM или LPT
теперь думаю как бы сваять к ней аппаратную часть на простой логике(программы на МК еще писать не умею)

 

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

 

Для любителей музыки, выкладываю прогу(черновик)

145455.exe

 

Исходник(для HiAsm)

145457.sha

 

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

 

ты делаеш миди контроллер?
на 16 клавиш я видел на гтлабе и подключалась она к 4м проводам в джойстиковом порте
при помощи диодов реализовывались логические связи и все
потом была прога-транслятор в миди команды и управляла эта штука эффектами в гитар риге

 

djelektronik: ты делаеш миди контроллер?

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

видал MIDI2LPT - клавиатура в виде диодной матрицы и программа

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

ЗЫ А джойстиковый порт я давно убил

 

Кстати, в упомянутой выше LPT2MIDI на слух ощущается задержка(около 1сек) между нажатием клавиши и звучанием ноты

Это особенности порта LPT(маленькая скорость передачи) или виновата программа?, т.е. такая задержка неизбежна или ее можно избежать?(извиняюсь за тавтологию)