News:

CWP2Song, public beta.
My  DAW is Reaper
YouTube channel

Main Menu

AZ: Not ... (a mouse or a keyboard as a dedicated REAPER controller)

Started by azslow3, July 05, 2018, 07:29:31 PM

Previous topic - Next topic

azslow3

Functionality
As a class of devices, mouse/keyboard is cheap, small and can work without cable for long time. The only other class of devices which can compete in that positions are IR/RF remotes. But they normally do not have encoders (scroll wheel on mouse) and have way less buttons then a keyboard.

With this tiny REAPER Control Surface plug-in, (almost) any mouse or keyboard can work as a dedicated REAPER controller. It will not perform its usual duty, so it will not "click" nor move cursor on the screen. And you can not type text with it. In other words it will not interfere with other mouse/keyboard you want continue to use.

In the current version (mouse):

  • mouse buttons always sends Note On/Off on configured channel:

    • Left button (alone),  on release
    • Right button (alone), on release
    • Left + Right combination, on Right push
    • Right + Left combination, on Left push
    • Middle (wheel), on release
    • Left + Middle, on Middle release
    • Right + Middle, on Middle release
  • the Wheel can send "CC Relative 1" messages (with configurable "speed") or Note messages (turn direction dependent), configuration dependent:

    • wheel alone, pushed/not pushed
    • Left button + wheel  pushed/not pushed
    • Right button + wheel pushed/not pushed
  • when touched track is changed as the reaction on device binding, the extension can audition touched track name. Note that Windows audio should be able to work in parallel for that
  • Sending "normal" MIDI messages instead of "control" MIDI messages is also supported (for keyboards can be switched on the fly)

In the current version (keyboard):

  • every button except "modifiers" is translated as MIDI note on specified in the configuration channel. No (not yet) combinations. Escape key can be used to switch between MIDI and Control modes (when enabled in the configuration)

Windows (32/64bit) only

Known limitations/bugs
* not well tested with all devices. The latest version can work with not boot compatible mouse and compound devices.


Changelog

  • 0.0r1b1 - FIX: hot-plug/reconnect
  • 0.0r1b2 - CHANGES: reworked wheel reaction NEW: TTS
  • 0.0r1b3 - NEW: keyboard support, CHANGE: plug-in is renamed
  • 0.0r2b4 - NEW: "normal" MIDI output, f.e. to use with ReaLearn
  • 0.0r3b6 - NEW: "normal" MIDI output for keyboards FIXES: compatibility with compound devices and several other small fixes

azslow3

Installation
AZ: Not a ...
The procedure is standard for REAPER extension.

  • Download the latest version from: http://www.azslow.com/index.php?action=downloads;sa=view;down=64
  • Start REAPER. Select "Options"/"Show REAPER resource path..."
  • Close REAPER (important especially when upgrading)
  • In the downloaded archive select the folder with correct  fro your REAPER version number of bits (32/64) any copy "reaper_aznot.dll" into "UserPlugins" sub-folder of your REAPER resources.if you had reaper_aznm.dll installed, delete it. reaper_aznot.dll is the new name for the same plug-in
Declaring your mouse/keyboard as "not a mouse"/"not a keyboard"
Note: that is not a "hack", the device will just use another standard Microsoft driver.
The following procedure is for Windows 7-10.
WARNING: Do NOT randomly click in this application! You will not break your computer doing that and you can easily revert the change, but the result can be confusing...

  • Download Zadig application from https://zadig.akeo.ie/ . Note that on the right side of the site are Ads... Direct link to the current version: https://zadig.akeo.ie/downloads/zadig-2.3.exe This version is for Windows 7-10, for XP-Vista download older version
  • Disconnect the mouse/keyboard you want to use for REAPER from the computer
  • Start Zadig (no installation required). It should be digitally signed. I repeat: do not randomly click in it! Read the following first! It will ask about online update check, that is up to you what to answer.
  • In the "Options" menu select "List All Devices". And un-check "Ignore Hubs or Composite Parents"
  • Open drop-down list of the devices, notice what you see here, you DO NOT want to modify any of them!
  • Connect the mouse/keyboard in question. You should see new choice in the list now. If not sure, disconnect/check/connect again.
  • Once you are sure which mouse/keyboard is right...
  • First select "normal" mouse/keyboard, which you do not want to modify. Write on paper USB ID (2 numbers). Now select your "Not a Mouse/Keyboard". Compare its USB ID with IDs of your normal mouse/keyboard. Are they the same (both numbers)? If yes, do not continue and find another device for the purpose. Windows will have problems using absolutely identical devices with different drivers
  • If USB ID is different, select the device which (sure?) is "Not a Mouse" or "Not a Keyboard" (or both). Select "Composite" if you see it (there will be also "Interface 0"/"Interface 1" in this case, but you need the whole device)
  • "HidUsb -> WinUSB" should be already pre-selected. Press "Replace Driver" and confirm the decision. Sometimes it can take a while, but it should report "Success" at the end.
  • Close Zadig. You may need to use it again after major Windows 10 upgrades

azslow3

Configuration for Mouse

  • In the REAPER preferences, Control Surfaces/OSC, add "AZ: Not a Mouse"
  • Select the mouse (only switched in Zadig devices will be shown, so you can not make mistake here)
  • Choose MIDI channel the messages will be sent to (useful for several "Not Mouses" with different bindings)
  • Use usual for MIDI surfaces procedure for Actions binding. For Wheel, select "Relative 1" mode
  • In case the parameter is changed too fast or too slow when using the wheel, try to adjust "Wheel speed"

Configuration for Keyboard

  • In the REAPER preferences, Control Surfaces/OSC, add "AZ: Not a Keyboard"
  • Select the keyboard (only switched in Zadig devices will be shown, so you can not make mistake here)
  • Choose MIDI channel the messages will be sent to (useful for several devices with different bindings)
  • Use usual for MIDI surfaces procedure for Actions binding
  • You can choose the MIDI target: Control (to use as REAPER actions) or MIDI (to use with scripts or MIDI input for plug-ins). You can also enable on the fly switching between these modes with Escape key

Using JS scripts it is easy to translate incoming MIDI messages into something else. F.e. convert keyboard keys into Program Changes on CCs. So there is no plans to duplicate such mapping in this extension.


In case you like my projects in Control Surfaces area, here is Donation link
Please note that you do not buy a license nor any special service.