It's Digital

Korg MS-20 Mini

Korg · clone of Korg MS-20
INOSC ×2triangle sawtooth pulse noiseNOISEMIXERFILTER ×2highpass _verifyVCAOUTLFO ×1ENV ×2modulation sources

Voicing

Voices
1
Polyphony
1
Multitimbral
no
Unison
no
Portamento
yes
Mono legato
_verify

Oscillators

Oscillators
2
Noise source
yes
OSC 1
analog-vco · triangle/sawtooth/pulse/noise · PWM
OSC 2
analog-vco · sawtooth/square/pulse

Cross-modulation

Hard sync
no
Osc FM / X-mod
_verify
Ring mod
yes

Filters

Filter 1
highpass · _verify · resonance · self-osc
Filter 2
lowpass · _verify · resonance · self-osc
Routing
series

Envelopes

Count
2
Stages
multi-stage
Assignments
filter, amp, pitch, aux
Env 1
DELAY/ATTACK/RELEASE
Env 2
HOLD/ATTACK/DECAY/SUSTAIN/RELEASE

LFO

Count
1
Waveforms
triangle, sawtooth, pulse
Destinations
osc-freq, filter
Tempo sync
no

Modulation

Mod matrix
no
Patchbay
yes

Performance & I/O

Velocity
no
Aftertouch
no
Mod wheel
_verify
Pitch bend
no
Onboard FX
—
Audio out
mono 1/8" SIGNAL OUT (2Vp-p, 3.5kOhm) + PHONES jack
MIDI
yes
USB
yes
CV / gate
yes
Notes
Synthesizersanalogcapability-v4fx: outboard

Signal flow rendered server-side as inline SVG from capability.json: no WPF, no client JavaScript.

Provenance

Confidence
medium
Last verified
2026-05-26
Manual
manuals/synths--korg-ms20-mini-manual.pdf
Pages
1, 2, 3
Via
SM26 single-seat manual extraction (Opus general-purpose seat); SM34 (2026-05-26) STRUCTURAL migration capability-v3->v4 (control_style=dial-led + morphology_overrides[]=[]); SM36 council re-extraction with panel-image SSOT (2026-05-26): CC/Opus + Codex CLI + Gemini browser 3-seat council, panel images at manuals/synths--<id>-panel.jpg (SM35-landed) -- panel-grounded re-extraction.

SCOPE: this PDF is the 4-page MS-20 mini ADDENDUM (precautions, intro/differences, MIDI chart, basic operation, specs) and explicitly defers per-control descriptions to the separately-reprinted original Owner's Manual, which is NOT in this file. The full front-panel layout + labeled signal-flow block diagram is printed on PDF p.1 (legible vector art), so the architecture (2 VCOs, HP->LP series, 2 EGs, 1 MG, semi-modular patch bay, ring mod, monophonic, CV/Gate I/O, no onboard FX) traces to that diagram + the p.2 MIDI chart + p.3 specs. Behavioural/numeric fields not on the panel (filter slopes/self-osc/key-track, mono_legato, osc_fm, the RING waveform slot, mod_wheel semantics) are honestly '_verify'. Page numbers are PDF page indices (no printed page numbers except a '2' on the second sheet). A future pass with the original Owner's Manual reprint can resolve the _verify fields. SM34 (2026-05-26): STRUCTURAL migration capability-v3->v4 (top-level control_style='dial-led', morphology_overrides[] of length 0). Morphology grounded in real-hardware knowledge + the SM34 brief's per-synth assignment (panel-image backfill at manuals/synths--*-panel.jpg is a separate follow-on node). SM36 (2026-05-26): 3-of-3 council seats CONFIRMED control_style=dial-led + morphology_overrides[]=[] (panel image manual p1 lower-left illustration shows EVERY continuous control on the MS-20 mini panel as a rotary knob -- VCO1/VCO2 WAVE/PW/SCALE/PITCH, VCO MIXER LEVEL, HP/LP FILTER CUTOFF/PEAK, MG WAVE/FREQUENCY, EG1 DELAY/ATTACK/RELEASE, EG2 HOLD/ATTACK/DECAY/SUSTAIN/RELEASE, PORTAMENTO TIME, MASTER TUNE all dials). dial-led + no overrides matches the panel uniformly. provenance.fields.control_style bumped medium -> high.

Raw capability.json
{
  "schema_version": "capability-v4",
  "id": "ms20mini",
  "name": "Korg MS-20 Mini",
  "maker": "Korg",
  "clone_of": "Korg MS-20",
  "clone_of_note": "The manual frames it as a reissue: 'a reincarnation of the original MS-20, which was released in 1978' that 'uses analog circuitry to faithfully recreate the sound and characteristics' of the original (PDF p.2).",
  "type": "analog",
  "voices": 1,
  "voices_note": "Monophonic. FCC type 'MONOPHONIC SYNTHESIZER' (PDF p.1); MIDI chart header '[MONOPHONIC SYNTHESIZER]' (PDF p.2); 'only one tone will be produced ... the highest tone played will be produced' (PDF p.3).",
  "multitimbral": "no",
  "control_style": "dial-led",
  "device_class": "synth",
  "voicing": {
    "polyphony": 1,
    "unison": false,
    "unison_detune_spread": false,
    "portamento": true,
    "mono_legato": "_verify"
  },
  "voicing_note": "PORTAMENTO TIME knob present on the panel (PDF p.1). unison/spread false (single-voice mono, no unison control). mono_legato='_verify': note priority is documented as highest-note (PDF p.3) but legato/retrigger behaviour is described only in the original Owner's Manual reprint, which is NOT in this PDF.",
  "oscillators": {
    "count": 2,
    "noise": true,
    "note": "VCO1 WAVE FORM selector = triangle / sawtooth / pulse(square w/ PW) / white-noise, with a dedicated PW knob; SCALE 32'/16'/8'/4' = octave_select; no sub-osc, no per-osc detune (shared MASTER TUNE). VCO2 WAVE FORM selector = sawtooth / square / (narrow) pulse / RING (4th position); the RING position is ring modulation, captured in cross_mod.ring_mod=true (not a waveform token); SCALE 16'/8'/4'/2'; PITCH knob (+/-) relative to VCO1 = detune; no PW knob on VCO2. The synth-level noise source is both VCO1's noise WAVE FORM position and a dedicated patch-bay NOISE GENERATOR (PINK/WHITE) (all from the page-1 panel + block diagram).",
    "per": [
      {
        "engine_type": "analog-vco",
        "waveforms": [
          "triangle",
          "sawtooth",
          "pulse",
          "noise"
        ],
        "pwm": true,
        "sub": false,
        "sync": false,
        "octave_select": true,
        "octave_positions": 4,
        "detune": false
      },
      {
        "engine_type": "analog-vco",
        "waveforms": [
          "sawtooth",
          "square",
          "pulse"
        ],
        "pwm": false,
        "sub": false,
        "sync": false,
        "octave_select": true,
        "octave_positions": 4,
        "detune": true
      }
    ]
  },
  "cross_mod": {
    "hard_sync": false,
    "osc_fm": "_verify",
    "ring_mod": true,
    "note": "ring_mod=true: VCO2 WAVE FORM has a RING position producing ring modulation of VCO1 x VCO2 (panel diagram, PDF p.1). hard_sync=false: no sync waveform position or sync switch on either VCO. osc_fm='_verify': the patch bay exposes VCO CV-IN / FREQ jacks so audio-rate cross-FM via patching is plausible, but this addendum PDF does not describe oscillator-to-oscillator FM explicitly (semi-modular routing detail deferred)."
  },
  "filters": [
    {
      "type": "highpass",
      "slopes": [
        "_verify"
      ],
      "slope_switchable": false,
      "resonance": true,
      "self_oscillation": "_verify",
      "key_tracking": "_verify",
      "drive": false
    },
    {
      "type": "lowpass",
      "slopes": [
        "_verify"
      ],
      "slope_switchable": false,
      "resonance": true,
      "self_oscillation": "_verify",
      "key_tracking": "_verify",
      "drive": false
    }
  ],
  "filters_note": "TWO filters in SERIES, HP before LP -- the page-1 signal-flow block diagram reads VCO1 -> VCO2 -> VCO MIXER -> VOLTAGE CONTROLLED HP FILTER -> VOLTAGE CONTROLLED LP FILTER -> VCA -> SIGNAL OUT. Each filter has CUTOFF FREQUENCY + PEAK knobs; PEAK = resonance -> resonance=true. drive=false (panel shows only CUTOFF + PEAK, no drive control). slopes / self_oscillation / key_tracking are '_verify': this 4-page addendum PDF does not state dB/oct, self-oscillation, or key-tracking behaviour (those live in the original Owner's Manual reprint, not in this file). The MS-20 LP is reputed to self-oscillate, but per manual-wins/never-guess it stays _verify here pending the reprint.",
  "filter_routing": "series",
  "envelopes": {
    "count": 2,
    "assignments": [
      "filter",
      "amp",
      "pitch",
      "aux"
    ],
    "stages": "multi-stage",
    "per": [
      {
        "stages": "DAR",
        "stages_long": "DELAY/ATTACK/RELEASE"
      },
      {
        "stages": "HADSR",
        "stages_long": "HOLD/ATTACK/DECAY/SUSTAIN/RELEASE"
      }
    ],
    "note": "Two EGs with non-standard stage sets (neither maps cleanly to a single ADSR-family enum). v3 structurally promotes the per-envelope shape into per[]: EG1 = DELAY/ATTACK/RELEASE (DAR), EG2 = HOLD/ATTACK/DECAY/SUSTAIN/RELEASE (HADSR) (panel, PDF p.1); top-level stages='multi-stage' retained as v2-reader fallback. The VCA is driven by 'EG2 & EXT', so EG2 is the primary amp/filter envelope; EG outputs are also patch-bay routable (FREQUENCY MODULATION EG1, CUTOFF FREQUENCY MODULATION EG2), hence assignments span filter/amp/pitch/aux. Exact fixed-vs-patched destinations are part of the deferred semi-modular routing model."
  },
  "lfo": {
    "count": 1,
    "waveforms": [
      "triangle",
      "sawtooth",
      "pulse"
    ],
    "destinations": [
      "osc-freq",
      "filter"
    ],
    "sync": false,
    "note": "MODULATION GENERATOR (MG) = the LFO: a single continuously-morphing WAVE FORM knob (icons triangle / sawtooth / pulse-with-variable-width) + a FREQUENCY knob (PDF p.1). destinations osc-freq + filter are confirmed by the dedicated FREQUENCY MODULATION (MG) and CUTOFF FREQUENCY MODULATION (MG) controls; further MG destinations are patch-bay routable (deferred). sync=false: no MG tempo-sync control and the MS-20 mini receives no MIDI clock (MIDI chart Clock=X, p.2). A SAMPLE & HOLD module exists but is a separate patch-bay block, not an MG waveform."
  },
  "modulation": {
    "mod_matrix": false,
    "mod_matrix_size": null,
    "patchbay": true,
    "patchbay_note": "ESP / patch panel present; routing model DEFERRED (flag only). Semi-modular with a full mini-jack patch bay (10x patch cords included, PDF p.3) exposing VCO CV-IN, FREQ, CUTOFF FREQ, INITIAL GAIN, CONTROL INPUT, EG1/TRIG IN, MG/REV OUT, SAMPLE & HOLD, NOISE GENERATOR (PINK/WHITE), KBD CV/TRIG, and the External Signal Processor. Patch points intentionally NOT enumerated per scope.",
    "vibrato_lever": false,
    "note": "vibrato_lever=false: the performance controller is a center-click Control wheel + a momentary switch (PDF p.3), not a vibrato lever; modulation is not even transmitted over MIDI (p.3). mod_matrix=false / size null: routing is via the physical patch bay, not a stored matrix."
  },
  "performance": {
    "velocity": false,
    "aftertouch": false,
    "mod_wheel": "_verify",
    "pitch_bend": false,
    "note": "MIDI chart: Velocity Note On/Off=X, After Touch=X, Pitch Bend=X, Control Change=X (PDF p.2). Over USB velocity is fixed at 64 and reception disabled (p.3) -> no real velocity, velocity=false. pitch_bend=false ('pitch bend and modulation will not be transmitted', p.3). mod_wheel='_verify': a physical center-click Control wheel exists (p.3) for hands-on patch-bay modulation, but it is not a MIDI mod wheel (modulation not transmitted) -- whether to count it as mod_wheel is ambiguous, so flagged not guessed."
  },
  "fx_onboard": [],
  "fx_onboard_note": "Verified-none: no FX section on the panel/block diagram (PDF p.1) and none in the specifications (PDF p.3). The MS-20 mini has no onboard effects.",
  "io": {
    "audio_out": "mono 1/8\" SIGNAL OUT (2Vp-p, 3.5kOhm) + PHONES jack",
    "midi": true,
    "usb": true,
    "cv_gate": true,
    "note": "audio_out: SIGNAL OUT (mono 1/8\" mini) + PHONES (PDF p.3). midi=true: MIDI IN connector added on the Mini (RECEIVE-ONLY, note messages, channel 1 fixed; there is NO MIDI OUT/THRU) (p.2/p.3). usb=true: USB type-B, transmits/receives note messages (p.3). cv_gate=true: extensive CV/Gate + ESP patch I/O -- KBD CV OUT, VCO1/VCO2/VCO1+2 CV IN, TRIG IN, KBD TRIG OUT, F->V CV OUT, ENV OUT, plus SIGNAL IN/OUT for the External Signal Processor (page-1 block diagram; SIGNAL IN listed p.3)."
  },
  "morphology_overrides": [],
  "provenance": {
    "manual_path": "manuals/synths--korg-ms20-mini-manual.pdf",
    "confidence": "medium",
    "last_verified": "2026-05-26",
    "manual_pages": [
      1,
      2,
      3
    ],
    "verify_via": "SM26 single-seat manual extraction (Opus general-purpose seat); SM34 (2026-05-26) STRUCTURAL migration capability-v3->v4 (control_style=dial-led + morphology_overrides[]=[]); SM36 council re-extraction with panel-image SSOT (2026-05-26): CC/Opus + Codex CLI + Gemini browser 3-seat council, panel images at manuals/synths--<id>-panel.jpg (SM35-landed) -- panel-grounded re-extraction.",
    "verify_note": "SCOPE: this PDF is the 4-page MS-20 mini ADDENDUM (precautions, intro/differences, MIDI chart, basic operation, specs) and explicitly defers per-control descriptions to the separately-reprinted original Owner's Manual, which is NOT in this file. The full front-panel layout + labeled signal-flow block diagram is printed on PDF p.1 (legible vector art), so the architecture (2 VCOs, HP->LP series, 2 EGs, 1 MG, semi-modular patch bay, ring mod, monophonic, CV/Gate I/O, no onboard FX) traces to that diagram + the p.2 MIDI chart + p.3 specs. Behavioural/numeric fields not on the panel (filter slopes/self-osc/key-track, mono_legato, osc_fm, the RING waveform slot, mod_wheel semantics) are honestly '_verify'. Page numbers are PDF page indices (no printed page numbers except a '2' on the second sheet). A future pass with the original Owner's Manual reprint can resolve the _verify fields. SM34 (2026-05-26): STRUCTURAL migration capability-v3->v4 (top-level control_style='dial-led', morphology_overrides[] of length 0). Morphology grounded in real-hardware knowledge + the SM34 brief's per-synth assignment (panel-image backfill at manuals/synths--*-panel.jpg is a separate follow-on node). SM36 (2026-05-26): 3-of-3 council seats CONFIRMED control_style=dial-led + morphology_overrides[]=[] (panel image manual p1 lower-left illustration shows EVERY continuous control on the MS-20 mini panel as a rotary knob -- VCO1/VCO2 WAVE/PW/SCALE/PITCH, VCO MIXER LEVEL, HP/LP FILTER CUTOFF/PEAK, MG WAVE/FREQUENCY, EG1 DELAY/ATTACK/RELEASE, EG2 HOLD/ATTACK/DECAY/SUSTAIN/RELEASE, PORTAMENTO TIME, MASTER TUNE all dials). dial-led + no overrides matches the panel uniformly. provenance.fields.control_style bumped medium -> high.",
    "fields": {
      "type": {
        "conf": "high",
        "pg": 1
      },
      "voices": {
        "conf": "high",
        "pg": 1
      },
      "multitimbral": {
        "conf": "high",
        "pg": 1
      },
      "voicing.portamento": {
        "conf": "high",
        "pg": 1
      },
      "voicing.mono_legato": {
        "conf": "_verify",
        "pg": null
      },
      "oscillators.count": {
        "conf": "high",
        "pg": 1
      },
      "oscillators.noise": {
        "conf": "high",
        "pg": 1
      },
      "oscillators.per.0.waveforms": {
        "conf": "high",
        "pg": 1
      },
      "oscillators.per.0.pwm": {
        "conf": "high",
        "pg": 1
      },
      "oscillators.per.1.waveforms": {
        "conf": "medium",
        "pg": 1
      },
      "oscillators.per.1.detune": {
        "conf": "high",
        "pg": 1
      },
      "cross_mod.ring_mod": {
        "conf": "high",
        "pg": 1
      },
      "cross_mod.hard_sync": {
        "conf": "medium",
        "pg": 1
      },
      "cross_mod.osc_fm": {
        "conf": "_verify",
        "pg": null
      },
      "filters.0.type": {
        "conf": "high",
        "pg": 1
      },
      "filters.0.resonance": {
        "conf": "high",
        "pg": 1
      },
      "filters.0.slopes": {
        "conf": "_verify",
        "pg": null
      },
      "filters.0.self_oscillation": {
        "conf": "_verify",
        "pg": null
      },
      "filters.0.key_tracking": {
        "conf": "_verify",
        "pg": null
      },
      "filters.1.type": {
        "conf": "high",
        "pg": 1
      },
      "filters.1.resonance": {
        "conf": "high",
        "pg": 1
      },
      "filters.1.slopes": {
        "conf": "_verify",
        "pg": null
      },
      "filters.1.self_oscillation": {
        "conf": "_verify",
        "pg": null
      },
      "filters.1.key_tracking": {
        "conf": "_verify",
        "pg": null
      },
      "filter_routing": {
        "conf": "high",
        "pg": 1
      },
      "envelopes.count": {
        "conf": "high",
        "pg": 1
      },
      "envelopes.stages": {
        "conf": "high",
        "pg": 1
      },
      "envelopes.per.0.stages": {
        "conf": "high",
        "pg": 1
      },
      "envelopes.per.1.stages": {
        "conf": "high",
        "pg": 1
      },
      "lfo.count": {
        "conf": "high",
        "pg": 1
      },
      "lfo.waveforms": {
        "conf": "medium",
        "pg": 1
      },
      "lfo.destinations": {
        "conf": "high",
        "pg": 1
      },
      "lfo.sync": {
        "conf": "high",
        "pg": 2
      },
      "modulation.patchbay": {
        "conf": "high",
        "pg": 1
      },
      "modulation.mod_matrix": {
        "conf": "high",
        "pg": 1
      },
      "modulation.vibrato_lever": {
        "conf": "high",
        "pg": 3
      },
      "performance.velocity": {
        "conf": "high",
        "pg": 2
      },
      "performance.aftertouch": {
        "conf": "high",
        "pg": 2
      },
      "performance.pitch_bend": {
        "conf": "high",
        "pg": 2
      },
      "performance.mod_wheel": {
        "conf": "_verify",
        "pg": 3
      },
      "fx_onboard": {
        "conf": "high",
        "pg": 1
      },
      "io.audio_out": {
        "conf": "high",
        "pg": 3
      },
      "io.midi": {
        "conf": "high",
        "pg": 3
      },
      "io.usb": {
        "conf": "high",
        "pg": 3
      },
      "io.cv_gate": {
        "conf": "high",
        "pg": 1
      },
      "control_style": {
        "conf": "high",
        "pg": 1
      }
    }
  }
}