Яндекс.Метрика

    Песочница

    Подключение Wii RockBand Pro Drums к PC с определением ударов по тарелкам


    Для подключения нам понадобится:
    • Сам джойстик (установка)
    • JoyToKey
    • Какой-нибудь язык программирования (я выбрал Delphi)
    • Программа для тестирования (у меня была возможность проверить на Kontakt5)


    Введение

    Кто знаком с программой JoyToKey, тот наверно задастся вопросом: «Зачем же здесь язык программирования?». Дело в том, что джойстик Wii ограничен в количестве кнопок при подаче сигнала к приставке, поэтому создатели не много схитрили. При ударе по тарелкам, они сначала посылают нажатие кнопки соответствующего цвета, затем посылают дополнительную кнопку (Button12 в JoyToKey). Изза этого способа возникают как минимум две проблемы:
    1. В результате сигнал получаемый при ударе по тарелке НЕ ЯВЛЯЕТСЯ комбинацией нажатия двух кнопок.
    2. Бывают моменты когда дополнительный удар по другому барабану посылает сигнал в интервале между посылом комбинации от удара по тарелке, поэтому выделить правильные сигналы — практически нереально.

    Обозначим кнопки/цвета барабанов

    Кнопка JoyToKey Сокращение
    Красный Button3 R
    Желтый Button4 Y
    Синий Button1 B
    Зеленый Button2 G
    Бочка (педаль) Button5 T
    Тарелка Button12 C

    Отсюда получаем, что YC, BC, GC — желтая тарелка, синяя и зеленая соответственно.

    Настройка JoyToKey

    В данной программе я повесил кнопки на NumPad:
    Button1..Button5 — Num1..Num5
    Button12 — Num9

    Программирование

    Задача программы следующая:
    1. Перехватываем нажатие клавиши.
    2. Формируем стек нажатий перехваченных клавиш (тем самым сможем выделить удар по тарелкам).
    3. По интервалу времени обрабатываем наш стек в виде строки.
    4. Посылаем нажатие клавиши в активное окно согласно коду кнопок.
    5. Очищаем стек

    Программу с исходниками можно скачать тут. Чтобы описать
    как она работает я назову всего две функции: PostKeyEx32 (эмуляция нажатия клавиши), RegisterHotKey (Перехват нажатий).

    Итог

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