Skip to content

Expert Sleepers FH-2: MIDI CC, NRPN and OSC map

The Expert Sleepers FH-2 as named OSC addresses — 119 CC — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.

Device Expert Sleepers FH-2
Vendor Expert Sleepers
OSC prefix /fh_2
Source 📦 Derived from MIDI Guide (community CC/NRPN data)
Firmware unknown
Revision per pencilresearch canonical CSV
Upstream pencilresearch
Data licence CC-BY-SA-4.0 — MIDI Guide (https://midi.guide) by Pencil Research and contributors
Driver file devices/expert-sleepers/fh_2.json

Not tested on the device yet

This driver comes from documentation or community data and has not been checked on real hardware. If you own one, a quick test and a pull request promoting it helps everyone — see CONTRIBUTING.

How do you control it?

Find the MIDI ports, then start the bridge with this driver:

osc-bridge detect        # prints the ready-to-run line for what is plugged in
osc-bridge run --device devices/expert-sleepers/fh_2.json --out-port <N> --in-port <M>

Then send OSC to 127.0.0.1:7777, for example:

osc-bridge osc-send /fh_2/fh2_direct1 63

From Claude or any MCP client, the osc-bridge mcp server exposes this driver as fh_2: ask “what can the Expert Sleepers FH-2 do?” and it reads this map with list_routes. See the MCP guide.

MIDI CC and NRPN parameters (120)

OSC address CC NRPN (MSB/LSB) Range Nature Section
/fh_2/fh2_direct1 continuous
/fh_2/lfo1_level 10 0–127 continuous
/fh_2/lfo1_base 11 0–127 continuous
/fh_2/lfo1_multiplier 12 0–127 continuous
/fh_2/lfo1_speed 13 0–127 continuous
/fh_2/sine1 14 0–127 continuous
/fh_2/square1 15 0–127 continuous
/fh_2/pw1 16 0–127 continuous
/fh_2/triangle1 17 0–127 continuous
/fh_2/saw1 18 0–127 continuous
/fh_2/random1 19 0–127 continuous
/fh_2/phase1 90 0–127 continuous
/fh_2/fh2_direct2 1 0–127 continuous
/fh_2/lfo2_level 20 0–127 continuous
/fh_2/lfo2_base 21 0–127 continuous
/fh_2/lfo2_multiplier 22 0–127 continuous
/fh_2/lfo2_speed 23 0–127 continuous
/fh_2/sine2 24 0–127 continuous
/fh_2/square2 25 0–127 continuous
/fh_2/pw2 26 0–127 continuous
/fh_2/triangle2 27 0–127 continuous
/fh_2/saw2 28 0–127 continuous
/fh_2/random2 29 0–127 continuous
/fh_2/phase2 91 0–127 continuous
/fh_2/fh2_direct3 2 0–127 continuous
/fh_2/lfo3_level 30 0–127 continuous
/fh_2/lfo3_base 31 0–127 continuous
/fh_2/lfo3_multiplier 32 0–127 continuous
/fh_2/lfo3_speed 33 0–127 continuous
/fh_2/sine3 34 0–127 continuous
/fh_2/square3 35 0–127 continuous
/fh_2/pw3 36 0–127 continuous
/fh_2/triangle3 37 0–127 continuous
/fh_2/saw3 38 0–127 continuous
/fh_2/random3 39 0–127 continuous
/fh_2/phase3 92 0–127 continuous
/fh_2/fh2_direct4 3 0–127 continuous
/fh_2/lfo4_level 40 0–127 continuous
/fh_2/lfo4_base 41 0–127 continuous
/fh_2/lfo4_multiplier 42 0–127 continuous
/fh_2/lfo4_speed 43 0–127 continuous
/fh_2/sine4 44 0–127 continuous
/fh_2/square4 45 0–127 continuous
/fh_2/pw4 46 0–127 continuous
/fh_2/triangle4 47 0–127 continuous
/fh_2/saw4 48 0–127 continuous
/fh_2/random4 49 0–127 continuous
/fh_2/phase4 93 0–127 continuous
/fh_2/fh2_direct5 4 0–127 continuous
/fh_2/lfo5_level 50 0–127 continuous
/fh_2/lfo5_base 51 0–127 continuous
/fh_2/lfo5_multiplier 52 0–127 continuous
/fh_2/lfo5_speed 53 0–127 continuous
/fh_2/sine5 54 0–127 continuous
/fh_2/square5 55 0–127 continuous
/fh_2/pw5 56 0–127 continuous
/fh_2/triangle5 57 0–127 continuous
/fh_2/saw5 58 0–127 continuous
/fh_2/random5 59 0–127 continuous
/fh_2/phase5 94 0–127 continuous
/fh_2/fh2_direct6 5 0–127 continuous
/fh_2/lfo6_level 60 0–127 continuous
/fh_2/lfo6_base 61 0–127 continuous
/fh_2/lfo6_multiplier 62 0–127 continuous
/fh_2/lfo6_speed 63 0–127 continuous
/fh_2/sine6 64 0–127 continuous
/fh_2/square6 65 0–127 continuous
/fh_2/pw6 66 0–127 continuous
/fh_2/triangle6 67 0–127 continuous
/fh_2/saw6 68 0–127 continuous
/fh_2/random6 69 0–127 continuous
/fh_2/phase6 95 0–127 continuous
/fh_2/fh2_direct7 6 0–127 continuous
/fh_2/lfo7_level 70 0–127 continuous
/fh_2/lfo7_base 71 0–127 continuous
/fh_2/lfo7_multiplier 72 0–127 continuous
/fh_2/lfo7_speed 73 0–127 continuous
/fh_2/sine7 74 0–127 continuous
/fh_2/square7 75 0–127 continuous
/fh_2/pw7 76 0–127 continuous
/fh_2/triangle7 77 0–127 continuous
/fh_2/saw7 78 0–127 continuous
/fh_2/random7 79 0–127 continuous
/fh_2/phase7 96 0–127 continuous
/fh_2/fh2_direct8 7 0–127 continuous
/fh_2/lfo8_level 80 0–127 continuous
/fh_2/lfo8_base 81 0–127 continuous
/fh_2/lfo8_multiplier 82 0–127 continuous
/fh_2/lfo8_speed 83 0–127 continuous
/fh_2/sine8 84 0–127 continuous
/fh_2/square8 85 0–127 continuous
/fh_2/pw8 86 0–127 continuous
/fh_2/triangle8 87 0–127 continuous
/fh_2/saw8 88 0–127 continuous
/fh_2/random8 89 0–127 continuous
/fh_2/phase8 97 0–127 continuous
/fh_2/28_cv1_direct 100 0–127 continuous
/fh_2/28_cv2_direct 101 0–127 continuous
/fh_2/28_cv3_direct 102 0–127 continuous
/fh_2/28_cv4_direct 103 0–127 continuous
/fh_2/28_cv5_direct 104 0–127 continuous
/fh_2/28_cv6_direct 105 0–127 continuous
/fh_2/28_cv7_direct 106 0–127 continuous
/fh_2/28_cv8_direct 107 0–127 continuous
/fh_2/38_cv1_direct 108 0–127 continuous
/fh_2/38_cv2_direct 109 0–127 continuous
/fh_2/38_cv3_direct 110 0–127 continuous
/fh_2/38_cv4_direct 111 0–127 continuous
/fh_2/38_cv5_direct 112 0–127 continuous
/fh_2/38_cv6_direct 113 0–127 continuous
/fh_2/38_cv7_direct 114 0–127 continuous
/fh_2/38_cv8_direct 115 0–127 continuous
/fh_2/48_cv1_direct 116 0–127 continuous
/fh_2/48_cv2_direct 117 0–127 continuous
/fh_2/48_cv3_direct 118 0–127 continuous
/fh_2/48_cv4_direct 119 0–127 continuous
/fh_2/48_cv5_direct 120 0–127 continuous
/fh_2/48_cv6_direct 121 0–127 continuous
/fh_2/48_cv7_direct 122 0–127 continuous
/fh_2/48_cv8_direct 123 0–127 continuous

Performance MIDI

Notes, pitch bend and any CC are also available: /fh_2/note/on <note> <velocity>, /fh_2/cc/<number> <value>, /fh_2/pitchbend <0-16383>, /fh_2/program_change <n>.

Limitations

CC/NRPN only. SysEx (preset management, display control, bulk dump/load, vendor-proprietary opcodes) is NOT covered by pencilresearch. To extend this device with SysEx, sniff the vendor editor, add `sysex.header/footer` + `commands` blocks, and use `update_device.md` PR template.