A new instrument: Roland's JX family (JX-3P, JX-8P, JX-10 Super JX) #19

Closed
opened 2026-10-12 03:07:00 +00:00 by bcox · 5 comments
Owner

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

  • JX-3P (1983). Six voices, two DCOs a voice. The first gives a sawtooth, a pulse or a square; the second those and noise, and can be synchronized to the first or cross-modulated by it ("metal"). A high-pass, a four-pole low-pass with resonance, one ADSR envelope, one LFO (sine, square, random), a chorus. No velocity. A step sequencer of about 128 steps. It is edited a parameter at a time from its panel, or by knobs on the optional PG-200 programmer. The MKS-30 is its rack, which hears velocity.
  • JX-8P (1985). Six voices, two DCOs a voice (sawtooth, pulse, square, noise), sync and cross modulation, a mixer with an envelope on the second DCO's level, a high-pass in steps, a four-pole low-pass, two ADSR envelopes with key follow, one LFO with a delay, a chorus in two modes. Velocity and channel aftertouch. Poly, unison and solo key modes. The PG-800 is its programmer.
  • JX-10 Super JX (1986). Two JX-8Ps under 76 keys: twelve voices, an upper and a lower tone, whole, dual or split, and "chase play", which repeats the upper tone's notes on the lower after a delay. The MKS-70 is its rack.

To settle with the owner first

  • One instrument or two. The JX-8P and the JX-10 are one voice. The JX-3P's is simpler: one envelope where those have two, and fewer routes. Whether it is settings of the larger voice, as the Juno-6 is of the one Juno, wants the manuals read.
  • Its name, and its programs' names.
  • The JX-3P's sequencer, which belongs with #2, #3 and #5.

What it needs that is not here yet

  • Two DCOs a voice with sync and cross modulation. engine/ramp_oscillator.h is 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.
  • An envelope that can be turned over and that key follow shortens, and velocity toward each envelope's depth.
  • Upper and lower tones for the JX-10. The SEM family's sounds and engine/zones.h are the same idea: two zones, each with a sound. Chase play is new.
  • A numbered panel. These instruments are edited by parameter number and send each parameter over MIDI, so a panel.h like 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.h for the high-pass in steps; the Juno's chorus modes in engine/effects.h.
  • engine/key_assign.h, engine/portamento.h, engine/modulation_generator.h, engine/variance.h, the shared arpeggiator and effects.
  • instruments/README.md says what an instrument must provide.

Provenance

  • Rule 3: no firmware disassembly and nothing extracted from a ROM. Timings and curves come from the manuals or from measuring a real instrument's audio, or are placeholders.
  • Rule 4: no factory patches. Reading a user's own dump at run time is allowed.
  • Rule 2: emulations exist. None's code may be read for more than how a problem is structured, and nothing lifted.
  • The names are trademarks, which matters for the programs' names and anything sold.
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 - **JX-3P** (1983). Six voices, two DCOs a voice. The first gives a sawtooth, a pulse or a square; the second those and noise, and can be synchronized to the first or cross-modulated by it ("metal"). A high-pass, a four-pole low-pass with resonance, one ADSR envelope, one LFO (sine, square, random), a chorus. No velocity. A step sequencer of about 128 steps. It is edited a parameter at a time from its panel, or by knobs on the optional PG-200 programmer. The MKS-30 is its rack, which hears velocity. - **JX-8P** (1985). Six voices, two DCOs a voice (sawtooth, pulse, square, noise), sync and cross modulation, a mixer with an envelope on the second DCO's level, a high-pass in steps, a four-pole low-pass, two ADSR envelopes with key follow, one LFO with a delay, a chorus in two modes. Velocity and channel aftertouch. Poly, unison and solo key modes. The PG-800 is its programmer. - **JX-10 Super JX** (1986). Two JX-8Ps under 76 keys: twelve voices, an upper and a lower tone, whole, dual or split, and "chase play", which repeats the upper tone's notes on the lower after a delay. The MKS-70 is its rack. ## To settle with the owner first - **One instrument or two.** The JX-8P and the JX-10 are one voice. The JX-3P's is simpler: one envelope where those have two, and fewer routes. Whether it is settings of the larger voice, as the Juno-6 is of the one Juno, wants the manuals read. - **Its name**, and its programs' names. - **The JX-3P's sequencer**, which belongs with #2, #3 and #5. ## What it needs that is not here yet - **Two DCOs a voice with sync and cross modulation.** `engine/ramp_oscillator.h` is 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. - **An envelope that can be turned over and that key follow shortens**, and velocity toward each envelope's depth. - **Upper and lower tones for the JX-10.** The SEM family's sounds and `engine/zones.h` are the same idea: two zones, each with a sound. Chase play is new. - **A numbered panel.** These instruments are edited by parameter number and send each parameter over MIDI, so a `panel.h` like 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.h` for the high-pass in steps; the Juno's chorus modes in `engine/effects.h`. - `engine/key_assign.h`, `engine/portamento.h`, `engine/modulation_generator.h`, `engine/variance.h`, the shared arpeggiator and effects. - `instruments/README.md` says what an instrument must provide. ## Provenance - Rule 3: no firmware disassembly and nothing extracted from a ROM. Timings and curves come from the manuals or from measuring a real instrument's audio, or are placeholders. - Rule 4: no factory patches. Reading a user's own dump at run time is allowed. - Rule 2: emulations exist. None's code may be read for more than how a problem is structured, and nothing lifted. - The names are trademarks, which matters for the programs' names and anything sold.
Author
Owner

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:

  • No manual gives a range in hertz or seconds for anything. Every curve from a panel number to a frequency or a time will be a placeholder.
  • The DCO (JX-3P service notes, circuit description and waveform chart): a counter gives a rectangle; a capacitor charged at a rate that follows the pitch and discharged by the counter makes the sawtooth; the "pulse" is that sawtooth overcharged until its top goes flat, so it is a fixed narrow pulse and there is no pulse width control; the square is the counter's output. The JX-8P's service notes say its modules are "very similar" and describe none of it again; the MKS-70's say the same things of its own.
  • Sync resets DCO-2's counter and ramp at DCO-1's rate. Metal (JX-3P) leaves DCO-2's counter free and discharges DCO-2's ramp at every cycle of both counters, "something like what ring modulation offers"; DCO-2 is then a sawtooth whatever its switch says. The JX-8P's cross modulation has four positions, OFF, SYNC 1, SYNC 2 and XMOD, and its manual says only that SYNC 2 is "both SYNC 1 and X MOD". Nothing describes the JX-8P's XMOD circuit, so it is taken to be the JX-3P's metal.
  • Noise is one source for the instrument, and choosing it stops DCO-2's clock.
  • The HPF and the chorus come after the voices are mixed, as on the Juno. On the JX-10 each board of six voices has its own.
  • LFO and envelopes are made in software by the processor. The LFO's shapes are random, square and sine (the JX-8P's MIDI table says triangle where its panel says sine).
  • JX-8P tone parameters are numbered 11 to 58 over MIDI, each sent 0 to 127, with the switches in bands of 32. That table is the panel.
  • Dynamics is a four-position switch (OFF, 1, 2, 3) for each of four things: the DCOs' envelope depth, the mixer's envelope depth on DCO-2, the VCF's envelope depth, and the VCA.
  • Envelope key follow (OFF, 1, 2, 3): the envelope's times halve over the whole keyboard, half of it, or a quarter.
  • Key modes are six: Poly 1 and 2, Unison 1 (two modules a key) and 2 (the second an octave down), and Solo/Mono 1 (one module) and 2 (all six on one key). On the JX-10 each of upper and lower has its own.
  • JX-10 chase play works in Dual only: the lower tone repeats the upper's notes after a time, in three modes (U-L, U-L-L-, U-L-U-), each repeat softer by a level. The JX-10 also has a touch voice mode (hard notes play the upper tone, soft ones the lower) and a cross fade mode.

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/, programs minijx*, port 8807, .mjx patches.

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:** - **No manual gives a range in hertz or seconds for anything.** Every curve from a panel number to a frequency or a time will be a placeholder. - **The DCO** (JX-3P service notes, circuit description and waveform chart): a counter gives a rectangle; a capacitor charged at a rate that follows the pitch and discharged by the counter makes the sawtooth; the "pulse" is that sawtooth overcharged until its top goes flat, so it is a fixed narrow pulse and there is no pulse width control; the square is the counter's output. The JX-8P's service notes say its modules are "very similar" and describe none of it again; the MKS-70's say the same things of its own. - **Sync** resets DCO-2's counter and ramp at DCO-1's rate. **Metal** (JX-3P) leaves DCO-2's counter free and discharges DCO-2's ramp at every cycle of both counters, "something like what ring modulation offers"; DCO-2 is then a sawtooth whatever its switch says. The JX-8P's cross modulation has four positions, OFF, SYNC 1, SYNC 2 and XMOD, and its manual says only that SYNC 2 is "both SYNC 1 and X MOD". Nothing describes the JX-8P's XMOD circuit, so it is taken to be the JX-3P's metal. - **Noise** is one source for the instrument, and choosing it stops DCO-2's clock. - **The HPF and the chorus come after the voices are mixed**, as on the Juno. On the JX-10 each board of six voices has its own. - **LFO and envelopes are made in software** by the processor. The LFO's shapes are random, square and sine (the JX-8P's MIDI table says triangle where its panel says sine). - **JX-8P tone parameters** are numbered 11 to 58 over MIDI, each sent 0 to 127, with the switches in bands of 32. That table is the panel. - **Dynamics** is a four-position switch (OFF, 1, 2, 3) for each of four things: the DCOs' envelope depth, the mixer's envelope depth on DCO-2, the VCF's envelope depth, and the VCA. - **Envelope key follow** (OFF, 1, 2, 3): the envelope's times halve over the whole keyboard, half of it, or a quarter. - **Key modes** are six: Poly 1 and 2, Unison 1 (two modules a key) and 2 (the second an octave down), and Solo/Mono 1 (one module) and 2 (all six on one key). On the JX-10 each of upper and lower has its own. - **JX-10 chase play** works in Dual only: the lower tone repeats the upper's notes after a time, in three modes (U-L, U-L-L-, U-L-U-), each repeat softer by a level. The JX-10 also has a touch voice mode (hard notes play the upper tone, soft ones the lower) and a cross fade mode. **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/`, programs `minijx*`, port 8807, `.mjx` patches.
Author
Owner

Built, as one instrument, mini-JX. It is in one local commit, b6fd2eb on main, 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/, programs minijxd, minijxctl, minijxweb, minijxrender, minijxbench; patches .mjx; web port 8807.
  • Voice: two DCOs, each a sawtooth, a fixed pulse, a square or noise, at 16' to 2'; sync, the JX-8P's SYNC 2 and XMOD, and the JX-3P's metal; a mixer with an envelope on DCO-2's level; the shared four-pole filter; the amplifier under envelope 2 or the gate; two envelopes with key follow. The pitch, the mixer and the filter each choose an envelope and which way up, and each has dynamics.
  • A tone is a sound: a patch holds four, each with its own LFO (sine, square, random, with a delay), high-pass filter and chorus (off, 1, 2).
  • Zones: the first two are the JX-10's upper and lower. Each has its own key assign (Poly 1 and 2, Unison 1 and 2, Mono 1 and 2), unison detune, chromatic shift, detune, level, lever depth, and switches for portamento, the bender and the hold pedal.
  • Chase play, touch voice and cross fade between the first two zones.
  • Panel: the JX-8P's MIDI tone parameters 11 to 58, values 0 to 127.
  • Bender, lever vibrato (controller 1), aftertouch to vibrato, brilliance and volume, hold pedal (controller 64).
  • Nothing in engine/, platform/, web/, daemon/ or protocol/ was changed. It reuses analog_vco, four_pole_filter, envelope, key_assign, portamento, zones, variance, effects and 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.
  • Offline renders of five patches: none silent, none clipping, a chase's repeats run on past the last key.
  • Pi 3B bench, 2026-10-12, no daemon beside it: six voices 8.5% of a core plain, 10.6% with everything, 13.9% with chorus and effects; twelve 21.0% and 24.3%; thirty-two 56.9% and 60.3%.

Deliberately not done

  • The JX-3P's sequencer and the JX-10's cartridge sequencer. They belong with #2, #3 and #5; I did not file an issue for them.
  • Memories, patch chain, cartridges, all System Exclusive.
  • The JX-3P's brilliance slider, mute and key transpose; the JX-10's control assign and separate upper and lower outputs.
  • The limiter the JX-8P's block diagram shows after the high-pass filter.
  • The JX-8P display's own parameter numbers (11 to 95) and the patch-level MIDI numbers.
  • The MKS-30's velocity: its manual says only that a Dynamics button turns it on.

Open questions, with what I chose

  1. One instrument or two? One. The JX-3P's voice is the JX-8P's with one envelope and fewer routes.
  2. Name. minijx / mini-JX / instruments/jx/ / .mjx / 8807.
  3. What is the JX-8P's XMOD? No document says in words. Its block diagram draws "AMP MODULATE" beside "DCO MIXER", so I made it amplitude modulation: DCO-1 turns DCO-2 up and down. Direction and depth are guesses. The schematic (service notes page 11) would settle it and was not traced. This is the choice most likely to be wrong.
  4. Every panel curve. No JX manual gives hertz or seconds for anything. rom/jx/tables.h is placeholders near the Juno-106's, apart from the tune ranges, key follow at 83 = 100%, and envelope key follow, which are the manuals'.
  5. Pulse width. Fixed at a tenth, read off a drawing; the manuals give no figure.
  6. High-pass filter. One pole; corners 225, 700 and 1400 Hz for positions 1 to 3 are placeholders.
  7. Chorus. The shared chorus at 0.45 Hz for mode 1 and 0.9 Hz for mode 2; placeholders.
  8. Dynamics. Positions 1, 2, 3 take 65%, 90% and 100% of the depth from the softest note; read off a small graph.
  9. Mono modes. Last key has priority (MKS-70 manual). Envelopes restart on every key struck and not when a held key takes over; my choice.
  10. LFO. Sine, where the JX-8P's MIDI table says triangle. The delay ends in a 0.1 s fade and restarts on a key struck with none of the tone's held; my choice.
  11. Inverted envelope. Subtracted where it was added; for DCO-2's level, counted down from full.
  12. Chase. Time is in seconds (hardware: 1 to 99, no unit). Repeats stop below 5% velocity or after eight. Repeats already scheduled still play after all-notes-off, so that an offline render does not cut them.
  13. Touch voice. Turns at its own dual.threshold; the JX-10 borrows the upper split point for that.
  14. Zone parameter names. zone.assign, zone.unison_detune and so on, not voice.assign as on the other instruments, because the JX-10 keeps them for each side.
  15. Envelope names. env2 is the amplifier's, as the panel numbers it; on the Prophets and the SEM family env1 is.
  16. Filter. The JX-8P's chip is called "a state variable filter of -24dB/oct" in the MKS-70 notes; it is the shared four-pole filter here regardless.
  17. Noise. One generator per voice; the hardware has one for the instrument.

All of these are also under "Open decisions" in CLAUDE.md.

Built, as one instrument, **mini-JX**. It is in one local commit, `b6fd2eb` on `main`, 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/`, programs `minijxd`, `minijxctl`, `minijxweb`, `minijxrender`, `minijxbench`; patches `.mjx`; web port 8807. - **Voice**: two DCOs, each a sawtooth, a fixed pulse, a square or noise, at 16' to 2'; sync, the JX-8P's SYNC 2 and XMOD, and the JX-3P's metal; a mixer with an envelope on DCO-2's level; the shared four-pole filter; the amplifier under envelope 2 or the gate; two envelopes with key follow. The pitch, the mixer and the filter each choose an envelope and which way up, and each has dynamics. - **A tone is a sound**: a patch holds four, each with its own LFO (sine, square, random, with a delay), high-pass filter and chorus (off, 1, 2). - **Zones**: the first two are the JX-10's upper and lower. Each has its own key assign (Poly 1 and 2, Unison 1 and 2, Mono 1 and 2), unison detune, chromatic shift, detune, level, lever depth, and switches for portamento, the bender and the hold pedal. - **Chase play**, **touch voice** and **cross fade** between the first two zones. - **Panel**: the JX-8P's MIDI tone parameters 11 to 58, values 0 to 127. - Bender, lever vibrato (controller 1), aftertouch to vibrato, brilliance and volume, hold pedal (controller 64). - Nothing in `engine/`, `platform/`, `web/`, `daemon/` or `protocol/` was changed. It reuses `analog_vco`, `four_pole_filter`, `envelope`, `key_assign`, `portamento`, `zones`, `variance`, `effects` and 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. - Offline renders of five patches: none silent, none clipping, a chase's repeats run on past the last key. - Pi 3B bench, 2026-10-12, no daemon beside it: six voices 8.5% of a core plain, 10.6% with everything, 13.9% with chorus and effects; twelve 21.0% and 24.3%; thirty-two 56.9% and 60.3%. ## Deliberately not done - The JX-3P's sequencer and the JX-10's cartridge sequencer. They belong with #2, #3 and #5; I did not file an issue for them. - Memories, patch chain, cartridges, all System Exclusive. - The JX-3P's brilliance slider, mute and key transpose; the JX-10's control assign and separate upper and lower outputs. - The limiter the JX-8P's block diagram shows after the high-pass filter. - The JX-8P display's own parameter numbers (11 to 95) and the patch-level MIDI numbers. - The MKS-30's velocity: its manual says only that a Dynamics button turns it on. ## Open questions, with what I chose 1. **One instrument or two?** One. The JX-3P's voice is the JX-8P's with one envelope and fewer routes. 2. **Name.** `minijx` / mini-JX / `instruments/jx/` / `.mjx` / 8807. 3. **What is the JX-8P's XMOD?** No document says in words. Its block diagram draws "AMP MODULATE" beside "DCO MIXER", so I made it amplitude modulation: DCO-1 turns DCO-2 up and down. Direction and depth are guesses. The schematic (service notes page 11) would settle it and was not traced. This is the choice most likely to be wrong. 4. **Every panel curve.** No JX manual gives hertz or seconds for anything. `rom/jx/tables.h` is placeholders near the Juno-106's, apart from the tune ranges, key follow at 83 = 100%, and envelope key follow, which are the manuals'. 5. **Pulse width.** Fixed at a tenth, read off a drawing; the manuals give no figure. 6. **High-pass filter.** One pole; corners 225, 700 and 1400 Hz for positions 1 to 3 are placeholders. 7. **Chorus.** The shared chorus at 0.45 Hz for mode 1 and 0.9 Hz for mode 2; placeholders. 8. **Dynamics.** Positions 1, 2, 3 take 65%, 90% and 100% of the depth from the softest note; read off a small graph. 9. **Mono modes.** Last key has priority (MKS-70 manual). Envelopes restart on every key struck and not when a held key takes over; my choice. 10. **LFO.** Sine, where the JX-8P's MIDI table says triangle. The delay ends in a 0.1 s fade and restarts on a key struck with none of the tone's held; my choice. 11. **Inverted envelope.** Subtracted where it was added; for DCO-2's level, counted down from full. 12. **Chase.** Time is in seconds (hardware: 1 to 99, no unit). Repeats stop below 5% velocity or after eight. Repeats already scheduled still play after all-notes-off, so that an offline render does not cut them. 13. **Touch voice.** Turns at its own `dual.threshold`; the JX-10 borrows the upper split point for that. 14. **Zone parameter names.** `zone.assign`, `zone.unison_detune` and so on, not `voice.assign` as on the other instruments, because the JX-10 keeps them for each side. 15. **Envelope names.** `env2` is the amplifier's, as the panel numbers it; on the Prophets and the SEM family `env1` is. 16. **Filter.** The JX-8P's chip is called "a state variable filter of -24dB/oct" in the MKS-70 notes; it is the shared four-pole filter here regardless. 17. **Noise.** One generator per voice; the hardware has one for the instrument. All of these are also under "Open decisions" in CLAUDE.md.
Author
Owner

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:

  • 17: noise.shared, a switch, off by default. On, every voice hears one noise source, as the hardware has.
  • 10: the JX-8P's triangle LFO is noted on #8.
  • The sequencers are #29.
  • 3, XMOD: Electric Druid's reading of the JX-8P schematic (https://electricdruid.net/roland-cross-mod-metal-sync/) and Roland's own article both say amplitude modulation, DCO-1 controlling DCO-2's level through a second amplifier ahead of the mixer, which replaces DCO-2 in the mix, opened only by positive voltage. That is what the code already computes; only its level is still a guess. The schematic itself was not traced here.

Still open: 13 (touch voice's threshold) and control assign, both explained to the owner and awaiting a ruling; 15 (env2 is the amplifier's); XMOD's level; and nobody has heard it.

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:** - 17: `noise.shared`, a switch, off by default. On, every voice hears one noise source, as the hardware has. - 10: the JX-8P's triangle LFO is noted on #8. - The sequencers are #29. - 3, XMOD: Electric Druid's reading of the JX-8P schematic (https://electricdruid.net/roland-cross-mod-metal-sync/) and Roland's own article both say amplitude modulation, DCO-1 controlling DCO-2's level through a second amplifier ahead of the mixer, which replaces DCO-2 in the mix, opened only by positive voltage. That is what the code already computes; only its level is still a guess. The schematic itself was not traced here. **Still open:** 13 (touch voice's threshold) and control assign, both explained to the owner and awaiting a ruling; 15 (`env2` is the amplifier's); XMOD's level; and nobody has heard it.
Author
Owner

Correction to the comment above, by the owner's word the same day: noise.shared is on by default, to match the hardware. Its bench on the Pi did not move. Also settled: touch voice keeps its own dual.threshold (13); env2 stays 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.

Correction to the comment above, by the owner's word the same day: `noise.shared` is **on** by default, to match the hardware. Its bench on the Pi did not move. Also settled: touch voice keeps its own `dual.threshold` (13); `env2` stays 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.
Author
Owner

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.

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.
bcox closed this issue 2026-10-12 18:18:30 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bcox/mini-800#19
No description provided.