Skip to content

Access Virus A: MIDI CC, NRPN and OSC map

The Access Virus A as named OSC addresses — 186 CC, 63 SysEx commands — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.

Device Access Virus A
Vendor Access
OSC prefix /virus_a
Source 🎛️ Derived from an Electra One community preset
Revision per pencilresearch canonical CSV
Upstream electra-preset
Driver file devices/access/virus_a.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/access/virus_a.json --out-port <N> --in-port <M>

Then send OSC to 127.0.0.1:7777, for example:

osc-bridge osc-send /virus_a/general/modulation_wheel 63

From Claude or any MCP client, the osc-bridge mcp server exposes this driver as virus_a: ask “what can the Access Virus A do?” and it reads this map with list_routes. See the MCP guide.

MIDI CC and NRPN parameters (186)

OSC address CC NRPN (MSB/LSB) Range Nature Section
/virus_a/general/modulation_wheel 1 0–127 continuous General
/virus_a/general/portamento_time 5 0–127 continuous General
/virus_a/general/channel_volume 7 0–127 continuous General
/virus_a/general/panorama 10 0–127 continuous General
/virus_a/oscillators/osc1_shape 17 0–127 continuous Oscillators
/virus_a/oscillators/osc1_pulsewidth 18 0–127 continuous Oscillators
/virus_a/oscillators/osc1_wave_select 19 0–64 continuous Oscillators
/virus_a/oscillators/osc1_semitone 20 0–127 continuous Oscillators
/virus_a/oscillators/osc1_keyfollow 21 0–127 continuous Oscillators
/virus_a/oscillators/osc2_shape 22 0–127 continuous Oscillators
/virus_a/oscillators/osc2_pulsewidth 23 0–127 continuous Oscillators
/virus_a/oscillators/osc2_wave_select 24 0–64 continuous Oscillators
/virus_a/oscillators/osc2_semitone 25 0–127 continuous Oscillators
/virus_a/oscillators/osc2_detune 26 0–127 continuous Oscillators
/virus_a/oscillators/osc2_fm_amount 27 0–127 continuous Oscillators
/virus_a/oscillators/osc2_sync 28 0–1 switch Oscillators
/virus_a/oscillators/osc2_filt_env_amt 29 0–127 continuous Oscillators
/virus_a/general/fm_filt_env_amt 30 0–127 continuous General
/virus_a/general/osc2_keyfollow 31 0–127 continuous General
/virus_a/general/bank_select 32 0–1 switch General
/virus_a/mix/osc_balance 33 0–127 continuous Mix
/virus_a/mix/suboscillator_volume 34 0–127 continuous Mix
/virus_a/oscillators/suboscillator_shape 35 0–1 switch Oscillators
/virus_a/mix/osc_main_volume 36 0–127 continuous Mix
/virus_a/mix/noise_volume 37 0–127 continuous Mix
/virus_a/filter/cutoff 40 0–127 continuous Filter
/virus_a/filter/cutoff2 41 0–127 continuous Filter
/virus_a/filter/filter1_resonance 42 0–127 continuous Filter
/virus_a/filter/filter2_resonance 43 0–127 continuous Filter
/virus_a/filter/filter1_env_amt 44 0–127 continuous Filter
/virus_a/filter/filter2_env_amt 45 0–127 continuous Filter
/virus_a/filter/filter1_keyfollow 46 0–127 continuous Filter
/virus_a/filter/filter2_keyfollow 47 0–127 continuous Filter
/virus_a/filter/balance 48 0–127 continuous Filter
/virus_a/general/saturation_curve 49 0–6 continuous General
/virus_a/filter/filter1_mode 51 0–3 continuous Filter
/virus_a/filter/filter2_mode 52 0–3 continuous Filter
/virus_a/filter/routing 53 0–3 continuous Filter
/virus_a/envelopes/filter_env_attack 54 0–127 continuous Envelopes
/virus_a/envelopes/filter_env_decay 55 0–127 continuous Envelopes
/virus_a/envelopes/filter_env_sustain 56 0–127 continuous Envelopes
/virus_a/envelopes/filter_env_sustain_time 57 0–127 continuous Envelopes
/virus_a/envelopes/filter_env_release 58 0–127 continuous Envelopes
/virus_a/envelopes/amp_env_attack 59 0–127 continuous Envelopes
/virus_a/envelopes/amp_env_decay 60 0–127 continuous Envelopes
/virus_a/envelopes/amp_env_sustain 61 0–127 continuous Envelopes
/virus_a/envelopes/amp_env_sustain_time 62 0–127 continuous Envelopes
/virus_a/envelopes/amp_env_release 63 0–127 continuous Envelopes
/virus_a/general/hold_pedal 64 0–127 continuous General
/virus_a/lfo/lfo1_rate 67 0–127 continuous LFO
/virus_a/lfo/lfo1_shape 68 0–5 continuous LFO
/virus_a/lfo/lfo1_env_mode 69 0–1 switch LFO
/virus_a/lfo/lfo1_mode 70 0–1 switch LFO
/virus_a/lfo/lfo1_symmetry 71 0–127 continuous LFO
/virus_a/lfo/lfo1_keyfollow_amt 72 0–127 continuous LFO
/virus_a/lfo/osc1_lfo1_amount 74 0–127 continuous LFO
/virus_a/lfo/osc2_lfo1_amount 75 0–127 continuous LFO
/virus_a/lfo/pw_lfo1_amount 76 0–127 continuous LFO
/virus_a/lfo/reso_lfo1_amount 77 0–127 continuous LFO
/virus_a/lfo/filtgain_lfo1_amount 78 0–127 continuous LFO
/virus_a/lfo/lfo2_rate 79 0–127 continuous LFO
/virus_a/lfo/lfo2_shape 80 0–5 continuous LFO
/virus_a/lfo/lfo2_env_mode 81 0–1 switch LFO
/virus_a/lfo/lfo2_mode 82 0–1 switch LFO
/virus_a/lfo/lfo2_symmetry 83 0–127 continuous LFO
/virus_a/lfo/lfo2_keytrigger 85 0–127 continuous LFO
/virus_a/lfo/oscshape_lfo2_amount 86 0–127 continuous LFO
/virus_a/lfo/fmamount_lfo2_amount 87 0–127 continuous LFO
/virus_a/lfo/cutoff1_lfo2_amount 88 0–127 continuous LFO
/virus_a/lfo/cutoff2_lfo2_amount 89 0–127 continuous LFO
/virus_a/lfo/panorama_lfo2_amount 90 0–127 continuous LFO
/virus_a/general/patch_volume 91 0–127 continuous General
/virus_a/general/transpose 93 0–127 continuous General
/virus_a/general/key_mode 94 0–4 continuous General
/virus_a/general/twin_mode 97 0–1 switch General
/virus_a/general/twin_detune 98 0–127 continuous General
/virus_a/general/panorama_spread 99 0–127 continuous General
/virus_a/lfo/twin_lfo_phase 100 0–127 continuous LFO
/virus_a/general/input_mode 101 0–2 continuous General
/virus_a/general/input_select 102 0–8 continuous General
/virus_a/fx/chorus_mix 105 0–127 continuous FX
/virus_a/fx/chorus_rate 106 0–127 continuous FX
/virus_a/fx/chorus_depth 107 0–127 continuous FX
/virus_a/fx/chorus_delay 108 0–127 continuous FX
/virus_a/fx/chorus_feedback 109 0–127 continuous FX
/virus_a/fx/chorus_lfo_shape 110 0–5 continuous FX
/virus_a/fx/effect_send 113 0–127 continuous FX
/virus_a/fx/delay_time 114 0–127 continuous FX
/virus_a/fx/delay_feedback 115 0–127 continuous FX
/virus_a/fx/delay_rate 116 0–127 continuous FX
/virus_a/fx/delay_depth 117 0–127 continuous FX
/virus_a/fx/delay_lfo_shape 118 0–5 continuous FX
/virus_a/general/all_notes_off 123 0–0 continuous General
/virus_a/shape 17 0–127 continuous
/virus_a/wave_type 19 0–127 continuous
/virus_a/pulse_width 18 0–127 continuous
/virus_a/semitone 20 -64–63 continuous
/virus_a/key_follow 21 -64–63 continuous
/virus_a/shape 22 0–127 continuous
/virus_a/wave_type 24 0–127 continuous
/virus_a/pulse_width 23 0–127 continuous
/virus_a/semitone 25 -64–63 continuous
/virus_a/key_follow 31 -64–63 continuous
/virus_a/1_fm_2 27 0–127 continuous
/virus_a/1_sync_2 28 0–127 continuous
/virus_a/fil_env_ptch 29 -64–63 continuous
/virus_a/fil_env_fm 30 -64–63 continuous
/virus_a/detune 26 0–127 continuous
/virus_a/vol 37 0–127 continuous
/virus_a/color 39 -64–63 continuous
/virus_a/shape 35 0–127 continuous
/virus_a/mode 97 0–15 continuous
/virus_a/detune 98 0–127 continuous
/virus_a/pan_spread 99 0–127 continuous
/virus_a/lfo_phase 100 -64–63 continuous
/virus_a/1_bal_2 33 -64–63 continuous
/virus_a/sub_osc_vol 34 0–128 continuous
/virus_a/oscs_vol 36 -64–63 continuous
/virus_a/filter_mode 51 0–127 continuous
/virus_a/cutoff 40 0–127 continuous
/virus_a/resonance 42 0–127 continuous
/virus_a/env_amount 44 0–127 continuous
/virus_a/key_follow 46 -64–63 continuous
/virus_a/filter_mode 52 0–127 continuous
/virus_a/cutoff 41 0–127 continuous
/virus_a/resonance 43 0–127 continuous
/virus_a/env_amount 45 0–127 continuous
/virus_a/key_follow 47 -64–63 continuous
/virus_a/series_4_pole 53 0–127 continuous
/virus_a/curve 49 0–127 continuous
/virus_a/filter_env 54 0–127 continuous
/virus_a/filter_env 55 0–127 continuous
/virus_a/filter_env 56 0–127 continuous
/virus_a/filter_env 58 0–127 continuous
/virus_a/sustain_time 57 -64–63 continuous
/virus_a/amp_env 59 0–127 continuous
/virus_a/amp_env 60 0–127 continuous
/virus_a/amp_env 61 0–127 continuous
/virus_a/amp_env 63 0–127 continuous
/virus_a/sustain_time 62 -64–63 continuous
/virus_a/1_bal_2 48 -64–63 continuous
/virus_a/rate 67 0–127 continuous
/virus_a/shape 68 0–127 continuous
/virus_a/tri_symmetry 71 -64–63 continuous
/virus_a/envelope_mode 69 0–127 continuous
/virus_a/osc_1 74 -64–63 continuous
/virus_a/osc_2 75 -64–63 continuous
/virus_a/key_follow 72 0–127 continuous
/virus_a/key_trig_phase 73 0–127 continuous
/virus_a/mono 70 0–127 continuous
/virus_a/pw_1_2 76 -64–63 continuous
/virus_a/resonance_1_2 77 -64–63 continuous
/virus_a/filter_gain 78 -64–63 continuous
/virus_a/pan 90 -64–63 continuous
/virus_a/rate 79 0–127 continuous
/virus_a/shape 80 0–127 continuous
/virus_a/tri_symmetry 83 -64–63 continuous
/virus_a/envelope_mode 81 0–127 continuous
/virus_a/shape_1_2 86 -64–63 continuous
/virus_a/fm_amount 87 -64–63 continuous
/virus_a/key_follow 84 0–127 continuous
/virus_a/key_trig_phase 85 0–127 continuous
/virus_a/mono 82 0–127 continuous
/virus_a/filter_1 88 -64–63 continuous
/virus_a/filter_2 89 -64–63 continuous
/virus_a/rate 106 0–127 continuous
/virus_a/depth 107 0–127 continuous
/virus_a/delay_time 108 0–127 continuous
/virus_a/feedback 109 -64–63 continuous
/virus_a/lfo_shape 110 0–127 continuous
/virus_a/chorus_mix 105 0–127 continuous
/virus_a/vol 38 0–127 continuous
/virus_a/delay_time_ms 114 0–127 continuous
/virus_a/lfo_shape 118 0–127 continuous
/virus_a/rate 116 0–127 continuous
/virus_a/effect_send 113 0–127 continuous
/virus_a/feedback 115 0–127 continuous
/virus_a/depth 117 0–127 continuous
/virus_a/color 119 -64–63 continuous
/virus_a/patch_vol 91 0–127 continuous
/virus_a/pan 10 -64–63 continuous
/virus_a/transpose 93 -48–48 continuous
/virus_a/key_mode 94 0–127 continuous
/virus_a/porta_time 5 0–127 continuous
/virus_a/input_mode 101 0–127 continuous
/virus_a/input_select 102 0–127 continuous

SysEx commands (63)

OSC address Arguments
/virus_a/osc1_shape val: u7
/virus_a/osc2_shape val: u7
/virus_a/oscs_phaseinit val: u7
/virus_a/osc_1_2_pw val: u7
/virus_a/fm_amount val: u7
/virus_a/env_polarity val: u7
/virus_a/keytrack_base val: u7
/virus_a/cutoff_link val: u7
/virus_a/intensity val: u7
/virus_a/env_amount val: u7
/virus_a/resonance val: u7
/virus_a/amp val: u7
/virus_a/pan val: u7
/virus_a/clock val: u7
/virus_a/rate val: u7
/virus_a/shape val: u7
/virus_a/fade_in_time val: u7
/virus_a/mono val: u7
/virus_a/destination val: u7
/virus_a/amount val: u7
/virus_a/key_follow val: u7
/virus_a/source val: u7
/virus_a/dest_1 val: u7
/virus_a/dest_2 val: u7
/virus_a/amount_1 val: u7
/virus_a/amount_2 val: u7
/virus_a/dest_3 val: u7
/virus_a/amount_3 val: u7
/virus_a/tune val: u7
/virus_a/mode val: u7
/virus_a/global_bpm val: u7
/virus_a/octave_range val: u7
/virus_a/pattern val: u7
/virus_a/note_length val: u7
/virus_a/hold val: u7
/virus_a/swing val: u7
/virus_a/midi_arp_send val: u7
/virus_a/smooth_mode val: u7
/virus_a/bend_up val: u7
/virus_a/bend_down val: u7
/virus_a/bend_scale val: u7
/virus_a/boost val: u7
/virus_a/direct_thru val: u7
/virus_a/definable_1 val: u7
/virus_a/definable_2 val: u7
/virus_a/category_1 val: u7
/virus_a/category_2 val: u7
/virus_a/panel_destinat val: u7
/virus_a/led_mode val: u7
/virus_a/lcd_contrast val: u7
/virus_a/knob_mode val: u7
/virus_a/master_tune val: u7
/virus_a/master_volume val: u7
/virus_a/note_steal val: u7
/virus_a/global_midi_ch val: u7
/virus_a/low_page val: u7
/virus_a/high_page val: u7
/virus_a/midi_dump_tx val: u7
/virus_a/midi_dump_rx val: u7
/virus_a/memory_protect val: u7
/virus_a/midi_clock_rx val: u7
/virus_a/program_change val: u7
/virus_a/soft_thru val: u7

Performance MIDI

Notes, pitch bend and any CC are also available: /virus_a/note/on <note> <velocity>, /virus_a/cc/<number> <value>, /virus_a/pitchbend <0-16383>, /virus_a/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.