A new instrument: Korg's MS-10 and MS-20 #25
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Korg's MS synthesizers as a new instrument: the MS-10 and the MS-20, and perhaps the MS-50. Not started.
The MS-2000, which the owner asked about with a question mark, is a different thing: a digital virtual analog of 2000 that has the name and little else. Four voices of two modelled oscillators, a modelled filter in several modes, sequences of modulation, a vocoder and digital effects. On 2026-10-11 the owner said fully digital synths were out when proposing instruments. The owner decided on 2026-10-11 that it is left out, as an instrument and as a source of features for this one: it is a general virtual analog more than a virtual MS-20.
Everything below is from recollection, with nothing read. Find and read Korg's owner's and service manuals before designing anything, and put them in
docs/references.md.The instruments, as recalled
To settle with the owner first
mini10andmini20say little, asmini1would have.What it needs that is not here yet
engine/state_variable_filter.his two poles; but that one stops short of self-oscillation and is linear, and here the oscillation and what limits it are most of the character. The slopes want the service manual. The two revisions are a switch by the owner's rule of a switch per quirk, and the rest is tone, which waits on measurement (#4).engine/envelope.hhas a delay stage now.What is already here to build on
instruments/sh5/andinstruments/sh101/, the other one-voice instruments:engine/analog_oscillator.h,engine/noise.hwith pink, the SH-5's sample and hold,engine/portamento.h, and the SH-101's way of having more voices than the hardware.engine/one_pole.h,engine/state_variable_filter.h,engine/variance.h, the shared arpeggiator and effects.instruments/README.mdsays what an instrument must provide.Provenance
Sources read (Claude, 2026-10-12, working on this overnight), before any design:
Not found: a titled service manual for the later revision; what is inside the KORG35 block; any printed filter slope; minimum envelope times, the portamento's time, and a clearly printed MG range.
What the reading changed from the issue's recollection:
Built overnight on 2026-10-12 by Claude, with no one to ask. It is in one local commit, not pushed. It has been rendered offline and benched on the Pi and not yet played or heard by anyone. The issue is left open for you to close after playing it.
What was built
mini-MS: the MS-20 and the MS-10 as one instrument, in
instruments/ms20/. Programsminimsd,minimsctl,minimsweb,minimsrender,minimsbench; patches are.mmsfiles; the web port is 8812.filter.revisionis the earlier (KORG35) or the later filter..jackparameters, the 2600's way: 15 inputs and 16 outputs, with the sample and hold, the second amplifier, pink and white noise, the wheel and the button.--mixer.ext.jack=16is the cord from PHONES to EXT SIGNAL IN.mixer.vco2at 0,hpf.onoff, andfm.eg.jackat 17 (EG 2 to FREQ). Its PITCH knob, PWM IN and EXTERNAL SIGNAL LEVEL are here for it.voice.count), with Poly 1, Poly 2 and unison as the SH-101 has.Shared, in
engine/:sallen_key_filter.h, the two-pole filter both instruments' filters are.patch_panel.h, made from what the 2600 had: the jack numbering and the wires. The 2600 now uses it, its tests pass unchanged, and its bench on the Pi did not move (8.2%, 10.4%, 10.9%, 13.0% before; 8.2%, 10.3%, 10.9%, 13.0% after).web/page/app.jsnow knows ajackcontrol, which was the 2600's ownpage.js.Tests:
bazel test //...passes, 120 of 120, with no warnings. The Pi build of every instrument succeeds.Bench on the Pi 3B, no daemon running beside it: one voice 4.2% of a core with no cords, 5.6% with every part at work; 5.6% and 6.9% with the effects; four voices 22.9%; eight 47.2%; twelve 72.2% (73.5% with the effects). A voice costs as the 2600's does, since every part is worked out a sample at a time, which is why twelve is the most.
Levels: one VCO at full is about full scale, and about 1.5 on low notes, since the high-pass filter at the bottom of its knob (50 Hz) still leans a sawtooth over. Two VCOs with the later filter reach about 2.9, and a filter singing at full peak about 2.
Deliberately not done
Open questions, and the option chosen for each
.jackparameters, as the 2600's; the same questions are open as there (#7).bend.rangeat 0 makes it only what it is patched to. Controller 1 is half a semitone of vibrato; both could as well start at nothing.minims, mini-MS,.mms.All of these are under "Open decisions" in
CLAUDE.md, and the plain choices are listed in full under "The MS-20 and MS-10" there.Not found
A service manual for the later revision (only its filter board's diagram was read; the later main board's was fetched and not read); the MS-50's service manual; any dated edition; the envelopes' shortest times and the portamento's time.
The MS-20's
voice.low_noteis gone: the shared switch has three positions,voice.key_priority, 0 the latest key, 1 the lowest, 2 the highest, and the MS-20 starts at 2, its hardware's rule, so it needs no special case. On branchfamily-extensions, not merged.Closed: Ben played it on his laptop on the night of 2026-10-12 and found it looks and sounds fine.
Confirmed by him the same night: the MS-10 as settings of the MS-20; more than one voice, off by default, to twelve; the patch panel as
.jackparameters;filter.revisionas one switch for both filters; the wheel, the button and the controllers as they start;minims, mini-MS,.mmsand port 8812; and its plain choices as they stand.What is left, and where it is kept:
Everything said here is on
main, pushed, on the night of 2026-10-12. What was heard was heard on Ben's laptop, not on the Pi.