title: Example HedgeHog Setup tags: reaper osc hedgehog t1: Since mice are called mice, I wanted a name for other peripherals that basically talk OSC over the network, and came up with HedgeHog. The idea with HedgeHog is that the target machine has a hub which receives OSC, manipulates it as needed, and sends events, either OSC locally, or MIDI. So e.g. a relative knob on a controller can eventually end up controlling a midi CC value, or something. Now relative knobs aren't as friendly to the touch as absolute ones. I do also have a midimix that I use as a regular Midi controller to do knob twiddling in synths when recording. ## Two Old Midi Devices These are basically no longer supported. They are not class compliant. The Nocturn officially only works with Novation's long-discontinued Automap software, and I have no idea what the Envivo (the DJ controller on the left) is meant to work with. Under Linux, these just appear as midi devices like any other. The jogwheels on the Envivo and the rotaries on the Nocturn send Midi (relative Midi CC for the Nocturn, the Envivo for some reason sends noteon/off messages as well as CC). ![]{cs}(hh_envivo_and_nocturn.jpg) The Nocturn uses the LED buttons to indicate bank number. And touching the central rotary and a button at the same time selects a bank. Each of the sixteen buttons then sends a unique OSC message, which can be bound. The rotaries send relative messages (inc or dec) as OSC. These can be translated on the receiving machine. The Envivo's main use is to use the jog wheels to scrub through the timeline. The centre buttons select a bank, so I have a total of 12 virtual jogwheels which can be bound to things. I use the central stepped rotary to adjust the grid size in factors of 2 or 1/2. ## Spare Keyboard as Macro Buttons ![]{cs}(kb2osc.png) Something else I came up with quickly, a 300-line bodge using `PySide6` (for Qt) and `python-osc` to send OSC, gives me a vast array of macro buttons which can be bound some something. This keyboard attaches to the Linux laptop on my desk rather than the main music PC. The function keys, along with modifiers like shift and/or control, select pages (e.g. `f1` or `C-S-f3`, giving 8 pages per function key), so I have a total of 96 banks of macro buttons. Each key combo (e.g. not just `x` but also `C-S-x`) on each bank sends a different osc to Reaper on my music PC. All of these can be bound to actions. Then there is a simple script which parses the `osc.ini` file in Reaper, along with a dump of the action list (an SWS extension IIRC), to produce a display of what the mappings are for the current page. This gives me way more macro buttons than I need. ## Why A Spare Laptop One reason it is there is to write notes on while I study synth presets and projects. That leaves they keyboard on the music PC focussed on the music software, and avoids alt-tabbing between Reaper and the web browser. Then I can use the laptop's display as an auxiliary third screen for whatever use I have for it. It's an old laptop: a 2010 sony Vaio, with a lovely screen, but slow. Back in the day I would run Pianoteq Stage 4 connected to a cheap weighted midi controller for classical piano practice. But you can do a lot with a cheap spare laptop if you put your mind to it. And then laptops like old Thinkpads can be had cheap on eBay. Then you can throw Linux on them and they run quite happily. This Sony Vaio I mention has terrible thermals, and the fans spin up under light load. To keep it quiet, I throttle the CPU to minimum in powersaving mode, which prevents the CPU from warming up. Windows 10 on such a machine would be unusable with the CPU throttled so, but it runs kubuntu perfectly well, and Chrome is fine so long as it's not on a heavy website (e.g. this Wikio is fine, but some bloatware websites like Devon Live will bring the machine to its knees).