Guide for using the Neural DSP Quad Cortex device library in MMD files...
Expert guidance for using the Quad Cortex device library in MIDI Markdown files.
Invoke this skill when working with:
@import "devices/quad_cortex.mmd"
[00:00.000]
# Load Setlist 1, Group 0, Preset 5
- qc_load_preset 1 0 0 5
# Or use simplified version (first 128 presets)
- qc_load_preset_simple 1 0 5
[00:16.000]
# Switch to Scene B
- qc_scene_b 1
# Or use parameterized version
- qc_scene 1 1
Problem: MIDI scene changes via CC#43 have significant latency in CorOS 2.0+
Symptoms:
Workarounds:
# Workaround 1: Send scene change early (in DAW)
[00:15.900] # 100ms before the beat
- qc_scene 1 2
# Workaround 2: Use expression swell to mask latency
[00:16.000]
- qc_scene_with_swell 1 2 # Fades expression to hide latency
# Workaround 3: Enable "Ignore Duplicate PC" in device settings
System Recommendations:
Problem: Sending rapid successive CC messages can freeze the device
Critical: ALWAYS add minimum 100ms delays between CC messages
Safe Expression Automation:
# ā WRONG - No delays, can freeze device
[00:00.000]
- cc 1.1.0
- cc 1.1.42
- cc 1.1.85
- cc 1.1.127
# ā
CORRECT - Use safe helper with enforced delays
[00:00.000]
- qc_exp1_step_automation 1
# ā
CORRECT - Use safe ramp helper
[00:00.000]
- qc_exp1_safe_ramp 1 0 127
Problem: When MIDI Thru is enabled, device stops sending its own MIDI messages
Solution:
Critical: Must wait 100ms between Bank/Setlist/PC messages
# ā
CORRECT - qc_load_preset includes proper delays
[00:00.000]
- qc_load_preset 1 0 0 5
# This expands to:
# - cc 1.0.0 # Bank group
# [+100ms]
# - cc 1.32.0 # Setlist
# [+100ms]
# - pc 1.5 # Preset
Never manually construct this sequence without delays!
Problem: CC#1/CC#2 have noticeable lag compared to physical pedals
Recommendations:
[00:00.000]
# Full preset load (group 0, setlist 2, preset 10)
- qc_load_preset 1 0 2 10
# Simplified (first 128 presets)
- qc_load_preset_simple 1 2 10
# Preset + Scene combo
- qc_load_preset_scene 1 2 10 3 # Load preset 10, scene D
[00:00.000]
# Named scenes (A-H)
- qc_scene_a 1
- qc_scene_b 1
- qc_scene_c 1
# Parameterized (0-7 for scenes A-H)
- qc_scene 1 3 # Scene D
# Scene change with expression swell (masks latency)
- qc_scene_with_swell 1 4 # Scene E with crossfade
[00:00.000]
# Explicit on/off (64+ = active, 0-63 = bypass)
- qc_stomp_a_on 1
- qc_stomp_b_on 1
[00:08.000]
- qc_stomp_a_off 1
# Toggle mode (any value toggles)
- qc_stomp_c 1 127 # Toggles footswitch C
[02:00.000]
# Bypass all footswitches (song ending)
- qc_all_stomps_off 1
[00:00.000]
# Direct MIDI value (0-127)
- qc_exp1 1 64
# Percentage (0-100)
- qc_exp1_percent 1 50
# With modulation curves
- qc_exp1_swell 1 0 127 # Smooth swell with ease-in-out
- qc_exp1_fade_in 1 # 0 to 127 with exponential curve
- qc_exp1_fade_out 1 # 127 to 0 with logarithmic curve
[00:00.000]
# Vibrato effect using wave modulation
- qc_exp1_vibrato 1 64 5.5 10 # Center=64, freq=5.5Hz, depth=10%
# Tremolo effect
- qc_exp1_tremolo 1 64 4.0 30 # Center=64, freq=4Hz, depth=30%
# ADSR envelope
- qc_exp1_envelope 1
# Attack-Release envelope
- qc_exp1_ar 1 0.5 1.0 # Attack=0.5s, Release=1.0s
[00:00.000]
# Open looper
- qc_looper_open 1
[+150ms]
# Start recording (momentary: send 127 then 0)
- qc_looper_record 1
[+100ms]
- qc_looper_stop 1
# Switch to playback
[+4s]
- qc_looper_play 1
# Close when done
[+8s]
- qc_looper_close 1
[00:00.000]
# Complete workflow with safe timing
- qc_looper_safe_workflow 1
[00:00.000]
# Toggle features
- qc_looper_reverse 1 # Enable/disable reverse
- qc_looper_halfspeed 1 # Enable/disable half speed
- qc_looper_oneshot 1 # Enable/disable one shot
- qc_looper_undo 1 # Undo/redo
# Set quantize (0=off, 1-8=beats, 9=16 beats)
- qc_looper_quantize 1 4 # 4 beat quantize
[00:00.000]
# MIDI value (0-127)
- qc_tempo 1 64
# BPM (40-300)
- qc_tempo_bpm 1 120
[00:00.000]
# Toggle tuner
- qc_tuner_on 1
[+5s]
- qc_tuner_off 1
[00:00.000]
# Switch modes
- qc_mode_preset 1 # Preset mode
- qc_mode_scene 1 # Scene mode
- qc_mode_stomp 1 # Stomp mode
# Temporary mode switch
- qc_temp_stomp_mode 1 35 0 # Switch to stomp, toggle FS A, return to preset
[00:00.000]
# Load preset, scene, and set expression
- qc_song_section 1 2 10 3 100
# Params: channel, setlist, preset, scene, exp1_value
[00:00.000]
# Configure QC for DAW control
- qc_daw_init 1
# This enables:
# - Ignore Duplicate PC
# - Stomp mode
# - Closes Gig View
# - Disables tuner
Preferred: 5-pin DIN MIDI cables
If using both:
DAW Integration:
# ā WRONG - Can freeze device
[00:00.000]
- cc 1.1.0
- cc 1.1.32
- cc 1.1.64
- cc 1.1.96
- cc 1.1.127
# ā
CORRECT - Use safe helper
[00:00.000]
- qc_exp1_safe_ramp 1 0 127
# ā WRONG - Will be late
[00:16.000]
- qc_scene 1 2
# ā
CORRECT - Send early or use crossfade
[00:15.900] # 100ms early
- qc_scene 1 2
# Or use crossfade helper
[00:16.000]
- qc_scene_with_swell 1 2
# ā WRONG - Manual sequence without delays
[00:00.000]
- cc 1.0.0
- cc 1.32.2
- pc 1.10
# ā
CORRECT - Use helper with built-in delays
[00:00.000]
- qc_load_preset 1 0 2 10
ā Enable "Ignore Duplicate PC" in device settings ā Use MIDI DIN cables instead of USB for live performance ā Turn off MIDI Thru on the device ā Add 100ms spacing between all CC messages ā Keep firmware updated but test before gigs ā Use safe expression automation aliases
Recommended: Stay in Stomp Mode
Connect physical expression pedals directly:
qc_exp1_safe_ramp and similar helpersdevices/quad_cortex.mmd
CorOS 3.2.1 (as of library version 1.0.0)
| Issue | Solution |
|---|---|
| Scene changes are late | Enable "Ignore Duplicate PC", send early, or use crossfade |
| Device freezes with CC | Add 100ms delays, use safe automation helpers |
| Expression pedal is laggy | Use physical pedals, not MIDI CC |
| Preset won't load | Check timing delays (100ms minimum) |
| MIDI conflicts | Disable MIDI Thru, use specific channels |
| Random preset changes | Disable MIDI Timecode in DAW |