A new instrument: Roland's JX family (JX-3P, JX-8P, JX-10 Super JX) #19
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?
Roland's JX synthesizers as a new instrument: the JX-3P, the JX-8P and the JX-10 Super JX, with their racks, the MKS-30 and the MKS-70. Not started.
Everything below is from recollection, with nothing read. Find and read Roland's owner's manuals and service notes before designing anything, and put them in
docs/references.md.The instruments, as recalled
To settle with the owner first
What it needs that is not here yet
engine/ramp_oscillator.his one counter giving a sawtooth, a pulse and a sub oscillator; whether the JX's DCOs are made the same way, and what "metal" is exactly, wants the service notes.engine/zones.hare the same idea: two zones, each with a sound. Chase play is new.panel.hlike the Juno-106's is likely the right shape.What is already here to build on
engine/four_pole_filter.h, which is believed to be the same family of chip as the Juno's;instruments/juno/hpf.hfor the high-pass in steps; the Juno's chorus modes inengine/effects.h.engine/key_assign.h,engine/portamento.h,engine/modulation_generator.h,engine/variance.h, the shared arpeggiator and effects.instruments/README.mdsays what an instrument must provide.Provenance
Sources found and read on 2026-10-12, all at archive.org, as the text archive.org made of the scans plus two pages read as pictures. Nothing in the issue's recollection had to be thrown out, but several things turned out differently.
Read: the JX-3P owner's manual and service notes (July 1983, with the PG-200); the JX-8P owner's manual and service notes (May 1985, with the PG-800); the JX-10 owner's manual and service notes (August 1986); the MKS-30 and MKS-70 service notes; the MKS-30 owner's manual in part. The MKS-70 owner's manual and the PG-200 and PG-800 sheets were fetched and not read through.
What they say that the issue did not know:
Decisions taken, each open for the owner: one instrument for all three, since the JX-3P's voice is the JX-8P's with one envelope and fewer routes;
instruments/jx/, programsminijx*, port 8807,.mjxpatches.Built, as one instrument, mini-JX. It is in one local commit,
b6fd2ebonmain, not pushed. Nobody has heard it yet: it has been rendered offline and benched on the Pi, and that is all. I am leaving this open for you to close after playing it.What was built
instruments/jx/, programsminijxd,minijxctl,minijxweb,minijxrender,minijxbench; patches.mjx; web port 8807.engine/,platform/,web/,daemon/orprotocol/was changed. It reusesanalog_vco,four_pole_filter,envelope,key_assign,portamento,zones,variance,effectsand the arpeggiator as they stand.Checks
bazel test //...: 76 of 76 pass (69 before, 7 new), no warnings.bazel build --config=pi --config=opt //instruments/...: succeeds.Deliberately not done
Open questions, with what I chose
minijx/ mini-JX /instruments/jx//.mjx/ 8807.rom/jx/tables.his placeholders near the Juno-106's, apart from the tune ranges, key follow at 83 = 100%, and envelope key follow, which are the manuals'.dual.threshold; the JX-10 borrows the upper split point for that.zone.assign,zone.unison_detuneand so on, notvoice.assignas on the other instruments, because the JX-10 keeps them for each side.env2is the amplifier's, as the panel numbers it; on the Prophets and the SEM familyenv1is.All of these are also under "Open decisions" in CLAUDE.md.
The owner went through the open questions on 2026-10-12.
Confirmed: one instrument (1); the name (2); mono modes (9); the inverted envelope (11); chase (12); zone names (14). Placeholders 4 to 8 and 16 are fine for now. Not wanted: memories, System Exclusive, key transpose, a mute of the whole instrument, and separate outputs for now.
Done, uncommitted:
noise.shared, a switch, off by default. On, every voice hears one noise source, as the hardware has.Still open: 13 (touch voice's threshold) and control assign, both explained to the owner and awaiting a ruling; 15 (
env2is the amplifier's); XMOD's level; and nobody has heard it.Correction to the comment above, by the owner's word the same day:
noise.sharedis on by default, to match the hardware. Its bench on the Pi did not move. Also settled: touch voice keeps its owndual.threshold(13);env2stays the amplifier's, as the real JX numbers it (15); XMOD as it stands (3); the JX-3P's mute is dropped. Control assign is filed as a shared feature in its own issue.Played by the owner on the Pi on 2026-10-12, through the Scarlett Solo, from commit
c76a906: cross modulation in each position, the shared noise source, both chorus modes, and twelve voices split with chase play and touch voice. The owner found all of it sounds great and asked for this to be closed. What is left is elsewhere: the LFO triangle on #8, the sequencers on #29, control assign on #31, and the placeholders with #4.