New instruments: ARP's Odyssey, 2600 and Omni #22

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

ARP's synthesizers as a new instrument or several: the Odyssey, the 2600 and the Omni. Not started.

Everything below is from recollection, with nothing read. Find and read ARP's owner's and service manuals before designing anything, and put them in docs/references.md.

The instruments, as recalled

  • Odyssey (1972). Two VCOs, each a sawtooth or a pulse, the second able to be synchronized to the first; a ring modulator; white or pink noise. A four-pole low-pass with resonance, which changed with the revision: a two-pole in the first, then two different four-pole designs. A high-pass after it, with no resonance. An ADSR and an AR, an LFO giving a sine and a square, a sample and hold with a small mixer ahead of it, portamento. It is duophonic: with two keys held, one VCO takes the lowest and the other the highest. Everything is a slider or a switch, and it has no memory.
  • 2600 (1971). Semi-modular: three VCOs (the second and third usable as LFOs), a four-pole low-pass, an ADSR and an AR, a VCA, a ring modulator, noise, a sample and hold with its own clock, an envelope follower, a preamplifier for outside sound, a lag, inverters, a mixer and a spring reverb, into a stereo output. It is wired inside so that it plays with no cables, and a cable in a jack replaces the wire behind it. Its later keyboard is duophonic and has an LFO.
  • Omni (1975) and Omni 2. A string machine and a synthesizer together. Every key sounds at once, from a divide-down tone generator, as the Poly-800's oscillators are made. The strings (violin, viola, cello, bass) go through a chorus that is most of their sound. The synthesizer section has all its keys through one filter with one ADSR, paraphonic as the Poly-800 is, and there is a bass section on the lowest keys.

To settle with the owner first

  • How many instruments. These three share a maker and little else. The Odyssey is close to the SH-5 in kind: one voice, two VCOs, a ring modulator, two envelopes. The 2600 is the Odyssey's parts with jacks. The Omni is nearer the Poly-800 than either. One ticket was asked for; splitting it into three is likely the first step.
  • The 2600's patching. No instrument here can be rewired. A cable is a route from a source to a destination, which is what the modulation matrix of #7 is, though the 2600 patches audio as well as control. Do #7 first, or with this.
  • The names.

What it needs that is not here yet

  • Duophony: two VCOs of one voice on two different keys. engine/key_assign.h already knows the latest, the highest and the lowest key held.
  • The Odyssey's three filters, each a switch by the owner's rule of a switch per quirk. Their differences are tone, and wait on measurement (#4), but two poles against four is arrangement.
  • A divide-down oscillator for every key at once for the Omni, and its chorus, which is three lines and not engine/effects.h's two.
  • A spring reverb, an envelope follower and a preamplifier for the 2600: #6 for the first, #17 for outside sound.
  • Audio-rate modulation of anything by anything for the 2600, where pitch, width and cutoff are worked out once a block today.

What is already here to build on

  • instruments/sh5/, the nearest thing to an Odyssey: engine/analog_oscillator.h with sync, a ring modulator in the voice, pink noise, a sample and hold with a lag, an ADSR beside an AR.
  • engine/four_pole_filter.h, engine/state_variable_filter.h, engine/one_pole.h for the high-pass, engine/portamento.h.
  • instruments/poly800/ for the Omni: divide-down squares from one counter, and voices through one shared filter channel.
  • 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.
ARP's synthesizers as a new instrument or several: the Odyssey, the 2600 and the Omni. Not started. Everything below is from recollection, with nothing read. **Find and read ARP's owner's and service manuals before designing anything**, and put them in `docs/references.md`. ## The instruments, as recalled - **Odyssey** (1972). Two VCOs, each a sawtooth or a pulse, the second able to be synchronized to the first; a ring modulator; white or pink noise. A four-pole low-pass with resonance, which changed with the revision: a two-pole in the first, then two different four-pole designs. A high-pass after it, with no resonance. An ADSR and an AR, an LFO giving a sine and a square, a sample and hold with a small mixer ahead of it, portamento. It is duophonic: with two keys held, one VCO takes the lowest and the other the highest. Everything is a slider or a switch, and it has no memory. - **2600** (1971). Semi-modular: three VCOs (the second and third usable as LFOs), a four-pole low-pass, an ADSR and an AR, a VCA, a ring modulator, noise, a sample and hold with its own clock, an envelope follower, a preamplifier for outside sound, a lag, inverters, a mixer and a spring reverb, into a stereo output. It is wired inside so that it plays with no cables, and a cable in a jack replaces the wire behind it. Its later keyboard is duophonic and has an LFO. - **Omni** (1975) and **Omni 2**. A string machine and a synthesizer together. Every key sounds at once, from a divide-down tone generator, as the Poly-800's oscillators are made. The strings (violin, viola, cello, bass) go through a chorus that is most of their sound. The synthesizer section has all its keys through one filter with one ADSR, paraphonic as the Poly-800 is, and there is a bass section on the lowest keys. ## To settle with the owner first - **How many instruments.** These three share a maker and little else. The Odyssey is close to the SH-5 in kind: one voice, two VCOs, a ring modulator, two envelopes. The 2600 is the Odyssey's parts with jacks. The Omni is nearer the Poly-800 than either. One ticket was asked for; splitting it into three is likely the first step. - **The 2600's patching.** No instrument here can be rewired. A cable is a route from a source to a destination, which is what the modulation matrix of #7 is, though the 2600 patches audio as well as control. Do #7 first, or with this. - **The names.** ## What it needs that is not here yet - **Duophony**: two VCOs of one voice on two different keys. `engine/key_assign.h` already knows the latest, the highest and the lowest key held. - **The Odyssey's three filters**, each a switch by the owner's rule of a switch per quirk. Their differences are tone, and wait on measurement (#4), but two poles against four is arrangement. - **A divide-down oscillator for every key at once** for the Omni, and its chorus, which is three lines and not `engine/effects.h`'s two. - **A spring reverb, an envelope follower and a preamplifier** for the 2600: #6 for the first, #17 for outside sound. - **Audio-rate modulation of anything by anything** for the 2600, where pitch, width and cutoff are worked out once a block today. ## What is already here to build on - `instruments/sh5/`, the nearest thing to an Odyssey: `engine/analog_oscillator.h` with sync, a ring modulator in the voice, pink noise, a sample and hold with a lag, an ADSR beside an AR. - `engine/four_pole_filter.h`, `engine/state_variable_filter.h`, `engine/one_pole.h` for the high-pass, `engine/portamento.h`. - `instruments/poly800/` for the Omni: divide-down squares from one counter, and voices through one shared filter channel. - `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 read on 2026-10-12, before any design. All are ARP's own unless marked; no emulator's code was looked at.

Odyssey

2600

Omni and Omni-2

What the manuals changed from the recollection above

  • The Odyssey's ring modulator is an exclusive-OR of the two VCOs' pulse waves, not a multiplier. The 2600's is a true multiplier.
  • The Odyssey's first VCO takes the lowest key and its second the highest; its ADSR needs a trigger and its AR only a gate; every key resets its LFO, whose "sine" the service manual describes as a triangle.
  • The Omni's chorus is three delay lines, each with one LFO of its own, summed to one signal: not the usual string ensemble of two LFOs in three phases. Its "sawtooth" is a differentiated square wave. Its LFO moves the filter only; there is no vibrato. Each key has its own release and none has its own attack.
  • The Omni is Model 2480 and the Omni-2 Models 2471 to 2475.

Decided: three instruments, since the manuals show three unlike machines: one duophonic voice with fixed routing (Odyssey), one voice whose every connection is a jack (2600), and forty-nine keys of divide-down through one filter (Omni, with the Omni-2's differences as settings). Building now.

Sources read on 2026-10-12, before any design. All are ARP's own unless marked; no emulator's code was looked at. **Odyssey** - Owner's manual, second edition, March 1976: <https://www.korg.com/us/support/download/manual/0/435/2415/> and <https://archive.org/details/synthmanual-arp-odyssey-owners-manual> - Service manual, Models 2800 through 2823: <https://archive.org/details/arp-odyssey-service-manual> (the scan at <https://archive.org/details/arp_ODYSSEY_SERVICE_MANUAL> lacks its page 12) - Korg's owner's manual for its reissue, read as a published document about the reissue: <https://www.korg.com/us/support/download/manual/0/435/2025/> - Not found: a first-edition owner's manual for the 2800, one for the 2820-2823, and anything on the insides of the 4023, 4035 and 4075 filter modules, which the service manual draws as boxes. **2600** - Owner's manual (Michmerhuizen, 1971; seventh printing, March 1976): <https://www.korg.com/us/support/download/manual/0/842/4469/>; first printing <https://archive.org/details/arp-2600-owners-manual> - 3620 keyboard owner's manual, April 1976, which has the whole panel drawn: <https://www.korg.com/us/support/download/manual/0/842/4470/> - Service manual for Models 2600-2606, September 1977 (its text; its schematics were not read): <https://archive.org/details/ARP_2600_Service_Manual> - 3620 keyboard service manual, 1977: <https://archive.org/details/manualzilla-id-6879323> - Korg's manual for the 2600 FS reissue, to confirm only: <https://www.korg.com/us/support/download/manual/0/842/4463/> - Not found: any range for the envelopes' times, in any document; anything on the insides of the 4012 and 4072 filters, which the service manual calls "identical in operation"; a manual for the 3604 keyboard alone. **Omni and Omni-2** - Omni (Model 2480) service manual, February 1977: <http://www.synthfool.com/docs/Arp/ArpOmni/ARP_Omni_2480_service_manual.pdf> - Omni-2 (Models 2471 to 2475) service manual, July 1978: <https://archive.org/details/lost_manuals_ARP_Instruments_Inc.--Omni-2_2471--service--ID9686> - Omni-2 owner's manual, undated, its page 7 missing: <https://www.synthxl.com/wp-content/uploads/2019/04/Arp-Omni-2-Owners-manual.pdf> - Not found: the first Omni's owner's manual. Not read: the voicing, string-control, synth-control and bass board schematics. **What the manuals changed from the recollection above** - The Odyssey's ring modulator is an exclusive-OR of the two VCOs' pulse waves, not a multiplier. The 2600's is a true multiplier. - The Odyssey's first VCO takes the lowest key and its second the highest; its ADSR needs a trigger and its AR only a gate; every key resets its LFO, whose "sine" the service manual describes as a triangle. - The Omni's chorus is three delay lines, each with one LFO of its own, summed to one signal: not the usual string ensemble of two LFOs in three phases. Its "sawtooth" is a differentiated square wave. Its LFO moves the filter only; there is no vibrato. Each key has its own release and none has its own attack. - The Omni is Model 2480 and the Omni-2 Models 2471 to 2475. **Decided: three instruments**, since the manuals show three unlike machines: one duophonic voice with fixed routing (Odyssey), one voice whose every connection is a jack (2600), and forty-nine keys of divide-down through one filter (Omni, with the Omni-2's differences as settings). Building now.
Author
Owner

Built on 2026-10-12, in one local commit that is not pushed. Left open for you to close after playing them: none of the three has been heard by anyone; each was rendered offline (not silent, no bad samples, nothing over full scale at the renderer's settings) and benched on the Pi.

What was built

Three instruments, each whole (daemon, ctl, web, render, bench; tests beside the code):

Instrument Directory Programs Web port Patches
ARP Odyssey, every revision instruments/odyssey/ miniody* 8809 .mody
ARP 2600 with the 3620 keyboard instruments/arp2600/ mini2600* 8810 .m2600
ARP Omni and Omni-2 instruments/omni/ miniomni* 8811 .momni
  • Odyssey: the whole panel, one duophonic voice (VCO-1 the lowest key, VCO-2 the highest), the exclusive-OR ring modulator, the S/H mixer and sample and hold, both envelopes with the three repeat switches, and filter.two_pole for the 2800's 12 dB filter. The 4035 and 4075 are both the shared four-pole filter; their difference is tone and waits on measurement.
  • 2600: every module on the panel, worked out one sample at a time so that any output can go to any input. The patch cords are parameters: every input jack has a whole-number parameter ending .jack: 0 is no cable, which leaves the wire behind the jack as the manual's panel has it; 1 is a dummy plug; 2 to 37 is a cord from an output jack, in a fixed order. The protocol and the page were not changed for it, a patch file holds the cords, and a 2600 with no cords plays as the normalled instrument. The upper voice is patched as the 3620's manual says, with a cord to a VCO's KBD CV jack. Its reverberator is a small plain reverb and not a model of springs (#6 may replace it). Issue #7 was not done first; this does not depend on it.
  • Omni: every key sounds, from a divide-down generator of twelve counters; per-key release with the manual's rule that a new key cuts off the tails of keys let go; the string section through the three-line chorus phaser; the synthesizer through one four-pole filter and one ADSR; the first Omni's Synthesizer Bass and the Omni-2's Bass Voice, Single Trigger, Staccato and phaser figures as switches.

Shared code added to engine/: duophonic.h and duophonic_glide.h (both ARP keyboards), keyed_lfo.h (the Odyssey's, the 3620's and now the SH-5's LFO-2), sample_hold.h (both ARPs and now the SH-5), wave_vco.h with vco_edges.h (a VCO with an output a waveform; analog_vco.h takes its edges from the same place), divide_down.h, fast_math.h, and a one-pole high-pass in one_pole.h.

Results

  • bazel test //...: 112 of 112 pass, no warnings. bazel build --config=pi --config=opt //instruments/... succeeds.
  • On the Pi, no daemon running, as shares of one core: Odyssey 2.1% with one sawtooth, 3.4% with everything, 3.5% and 4.7% with the effects. Omni 1.8% for one key, 3.6% for ten with everything, 10.3% for all forty-nine, 13.0% with the effects. 2600 8.2% with no cords, 10.3% with every module and cords, 10.9% and 13.0% with the effects.
  • The SH-5's, the Prophets' and the SEM family's benches were run before and after, since shared files they use were touched. None moved.

Deliberately not done

Deliberately not done for the Odyssey, beyond what "clean" already leaves out: the filter self-oscillating from half way up its slider, where the specification puts it, and not from the shared filter's onset; the envelopes' curves, which the service manual draws; the trigger arriving 10 to 15 milliseconds after the gate; the external audio input; the pedal that can stand in for the S/H mixer; the control voltage, gate and trigger jacks; setting a slider by its place along its travel, which wants each slider's curve; and more than one voice. Plain choices, not known to be the hardware's: which way up the sawtooth, the pulse and the ring modulator are, and that the ring modulator swings either side of nothing; that the specification's modulation depths, each printed with a plus sign alone, are a swing that far either side for the LFO's sine and upward only for the square and the ADSR; that an envelope narrows the pulse and that the width stops at a twentieth; that the S/H mixer gives half the sum of its sliders; how far the S/H mixer, unsampled, moves the second VCO and the filter (kMixerOctaves), and the reach of the filter's second slider, given in octaves; that the noise the S/H mixer hears is the one the noise switch chooses, where the specification says pink; that a cycle of the LFO started over by a key counts as a cycle to the sample and hold; that a restarted LFO begins with its sine rising and its square high; that a key struck starts the ADSR again while the LFO is repeating it; that with AUTO REPEAT the envelopes fire before any key is played; that the amplifier is linear and its two sliders add; that when one of two keys is let go its VCO goes to the other key at once, the first by the glide and the second without, with no trigger, so that the interval of a chord let go a key at a time is lost; that the transpose switch is not glided; that the transpose switch and the bender move the filter's keyboard tracking, as on the later boards, where on the 2800 the bender is read as missing the filter; that the first VCO in its low range hears nothing from the keyboard, the bender and the vibrato included; that the two-pole filter sings about twice as loud as the four-pole, being heard from half way along the same loop; and the lag's time, which is three time constants (engine/sample_hold.h).

Deliberately not done for the 2600, beyond what "clean" already leaves out: the filter self-oscillating from about half way up its slider, where the manual puts it, and not the shared filter's onset; any difference between the 4012 and 4072 filter modules, which ARP's service manual calls "identical in operation"; the envelopes' curves; anything overdriving, where the service manual says three oscillators at full overdrive the filter; the sliders' tapers, each being the gain it gives; a model of the reverb springs, reverb.h being a plain reverberation with placeholder figures that issue #6 may replace; sound from outside (issue #17), so the preamplifier and the envelope follower act only on what is patched to them; the speakers and their sliders; the MANUAL START button; more than one cord into an input; the keyboard's momentary portamento button and its foot switch, and the dead zone of its bend knob; the 3604's TONE INTERVAL and TUNING knobs; and the gate and trigger being late by anything, where the 3604P's trigger is 15 ms behind its gate.

Deliberately not done for the Omni, beyond what "clean" already leaves out: the waveform, which the service manual says is a square wave put through a capacitor with the negative spikes clipped off, and with the hollow switch some of the negative spike let through, its time constants on schematics nobody read, so that here the first is an ideal sawtooth and the second an ideal square and no spike has been made up; the voicing, which is the formant filters of the 4' and 8' sums, the 8' synthesizer's being a little mellower than the 4', and the string bass's resonator, none with a figure in the text and none stood in for; the filter self-oscillating only as the hardware's does, which is not at all as it is played, and not from the shared filter's onset; the envelopes' curves; the top-octave chip's tuning; the low-pass after each of the phaser's lines and its chips' noise; the volume pedal; the gate and trigger outputs and the filter's control voltage input; and a jack for each section beyond the three pans. Plain choices, not known to be the hardware's: that the lowest key is MIDI's 36, from the service manual's calling its 8' tone C2, and that the keys beyond the hardware's forty-nine sound; how loud a tone, the bass and the two sections are against each other; the ranges of the string section's Attack and Release sliders, for which no figure is published; how fast a new key shuts the gates of keys let go (kQuenchSeconds), and that it does so with the sustain footswitch down too; how far a new key pulls the string envelope down (kStringAttackReset) and how fast that envelope shuts; that the bass has no attack, keeps the pitch of its last key while it dies away, and takes the hollow waveform with the rest; that Violin and Viola sound over the whole keyboard whatever the bass switches say; that the LFO's triangle and not its square moves the filter, and equally either way; how far each of the filter's three sliders reaches (kMost...Octaves); everything about the Bass Voice's filter (kBassVoice...); that every octave of a note begins its cycle together; where the phaser's three oscillators start; that each section is whole until the Mix slider passes the middle toward the other; and the pans.

Open, each with the option taken

These are CLAUDE.md's "Open decisions" entries for this issue, as committed.

  • The three ARPs: three instruments, or fewer. Built for issue #22
    on 2026-10-12 with no one to ask. Chosen: three, the Odyssey, the 2600
    and the Omni, with the Omni-2 a setting of the Omni and the 3604 and
    3620 keyboards part of the 2600, as "Decisions made" has it. It was
    Claude's choice and not the owner's, and wants the owner's word; so do
    their names, under "Product name" above, and their ports, 8809, 8810
    and 8811.
  • The Odyssey's placeholders and plain choices, listed under "The
    Odyssey" above. It was built for issue #22 on 2026-10-12 with no one
    to ask, so each of these was settled by Claude's own choice and wants
    the owner's say, a recording or a schematic read:
    • Sine or triangle LFO. The panel and owner's manual say sine; the
      service manual's circuit makes a triangle and no shaper was found.
      Chosen: a sine, with lfo.triangle for the other.
    • The three filters. Chosen: filter.two_pole for the 2800's
      4023, as the shared four-pole filter heard from its second section
      so that it sings as the service manual's trim has it; no switch
      between the 4035 and the 4075. Their insides are not in ARP's
      manuals. The two-pole sings about twice as loud as the four-pole.
    • The ring modulator's level, offset and polarity. Chosen: -1 to
      1, high while the pulses differ, whatever steady level that leaves
      taken off by the high-pass.
    • What the modulation depths mean. The specification prints "+1/2
      octave" and so on. Chosen: the sine swings that far either side;
      the square and the ADSR go upward only; the sample and hold goes as
      far as its sample either way, a full-level sample being 1, which is
      the S/H mixer with both its sliders up: the mixer gives half their
      sum, so that two octaves is the most, as the specification is read.
      One slider alone then reaches an octave, which wants checking
      against a real one.
    • Pulse width modulation's direction and limit. Chosen: the ADSR
      narrows the pulse, the sine goes both ways, and the width stops at
      5% and 95%.
    • How far the S/H mixer, unsampled, moves VCO-2 and the filter.
      No figure. Chosen: two octaves at full, which is with both of the
      mixer's sliders up, as the sample and hold
      (kMixerOctaves). And the filter's second slider, given in octaves
      to 5; the schematic's resistors were read (keyboard and envelope
      through 100k, the second slider through 33k) but not used.
    • Which noise the S/H mixer hears. The specification says pink.
      Chosen: whichever the noise switch chooses.
    • A chord's release. The manuals do not describe it. Chosen: when
      one of two keys is let go its VCO goes to the other key at once and
      nothing triggers; both then stay on the last key up, so the interval
      of a chord let go a key at a time is lost. The 2600's keyboard was
      then read, from its service manual, to keep both notes, and does;
      whether the Odyssey should do the same is open.
    • What the glide reaches. Chosen: the lower voice only, a lag
      (voice.portamento_curve on); VCO-2's interval and the transpose
      switch are not glided. The specification gives a rate per octave
      and the circuit is a lag of constant time; the time here is the
      whole slide's unless voice.portamento_per_octave is on.
    • Bender and transpose to the filter. Chosen: both move the
      filter's keyboard tracking, as the later boards have it. On the
      2800 the bender is read as missing the filter; there is no switch
      for that.
    • VCO-1 in its low range. Chosen: it hears nothing from the
      keyboard, the bender and the pad's vibrato included.
    • Concert pitch and the lowest key. Chosen: the tuning sliders
      read in semitones and cents from concert pitch and start at
      nothing; the lowest key is MIDI's 48.
    • Envelope triggering under LFO repeat. Chosen: a key struck
      starts the ADSR again while the LFO is repeating it; AUTO REPEAT
      fires the envelopes before any key has been played; a restarted LFO
      begins with its sine rising and its square high, which is when a
      repeat begins and when the sample and hold takes a sample.
    • The amplifier's law. Chosen: linear, its two sliders adding,
      held at full.
    • The pad's vibrato. Depth and wave are not in ARP's manuals.
      Chosen: the LFO's sine to both VCOs, a semitone at full.
    • The portamento footswitch. Chosen: controller 64, only for a
      patch with voice.portamento_pedal on, so that a patch without it
      glides by its slider alone.
    • The HPF's range. The panel's legend, 16 Hz to 16 kHz, is used.
      The schematic's values come to about 8 Hz to 5.3 kHz by arithmetic
      done while it was built; one of them is off.
    • The lag's range. sh.lag runs to half a second; the hardware's
      is read from the schematic as about 0.14 seconds at most, in this
      project's measure of three time constants.
    • Envelope times. The parameters are held to the specification's
      ranges, so an attack cannot be shorter than 5 ms; the segments are
      straight.
    • The trigger's lateness, 10 to 15 ms behind the gate, is not
      done.
    • Parameter names. The audio mixer is mixer.noise, mixer.vco1
      and mixer.vco2, each with a _source or _wave switch, and not
      the other instruments' noise.level and vco1.saw, because each
      slider has a switch; the third trigger switch is adsr.auto_repeat
      though it governs the AR too.
    • It has not been heard. Only rendered and measured.
  • The 2600's patch cords. Decided as issue #22 asked, and open to
    the owner's say: every input jack is a parameter ending in .jack,
    a whole number: 0 no cable (the normal stays connected), 1 a dummy
    plug, 2 to 37 a cord from an output jack in a fixed order that stored
    patches depend on. The protocol and the page were not changed. Still
    open: whether the page should draw cords, or show a jack as anything
    better than a stepped control with a name; whether a patch file
    should be able to name an output in words; and that the dummy plug
    was put at 1, ahead of the outputs, so that outputs can be added at
    the end.
  • The 2600's placeholders and plain choices, listed under "The
    2600" above. It was built for issue #22 on 2026-10-12 with no one to
    ask, so each of these was settled by Claude's own choice and wants the
    owner's say, a recording or the schematics read, which they were not:
    • Envelope times. No ARP or Korg manual gives any. Chosen: the
      Odyssey's published ranges (attack 5 ms to 5 s, decay 10 ms to 8 s,
      release 15 ms to 10 s; the AR's release 10 ms to 8 s), as
      placeholders. The schematic's capacitors and sliders would say.
    • Whether the filter's audio inputs pass DC. The manual says the
      filter is "flat to DC". Chosen: they go through a capacitor (5 Hz,
      a placeholder), so that a sawtooth of nothing to +10 V does not
      thump when the amplifier opens. The amplifier and mixer pass DC.
      This is the choice most likely to be wrong, and it decides whether
      the filter can be used on control voltages.
    • A chord's release on the 3620. Read from the service manual's
      memory control: a key let go moves nothing with the portamento off,
      and with it on the voices follow the keys held. engine/duophonic.h
      gained SetMovesOnRelease for it. The Odyssey was left as it was
      first chosen.
    • "Upper Voice memory is disabled" with the portamento on. Chosen
      as above; and a glide stops where it is when the last key comes up,
      which is what the circuit description says and may surprise.
    • Vibrato stopping with the key. The service manual shuts the
      delayed sine off whenever no key is down. Chosen: as it says, so
      the pitch stops wobbling the moment the last key comes up, release
      or no release.
    • Portamento's switch. Chosen: on when voice.portamento is not
      nothing. The momentary button and its foot switch are not done;
      controller 64 is the interval latch.
    • TRIGGER MODE at SINGLE. ARP: a trigger for the first key only.
      Korg's reissue words it differently. Chosen: ARP's, and the voices
      and the LFO's restart still follow every key.
    • Triggers under REPEAT. Chosen: each rise of the LFO's square is
      a trigger as well as a gate, so the ADSR fires on each.
    • The gate switch and its jack. Chosen: with the switch at the
      keyboard the S/H GATE jack is not heard; a gate is up above 5 V.
    • The envelope follower's sensitivity. The owner's manual and the
      service manual disagree by four times. Chosen: the owner's, 1 V
      peak to peak for +10 V.
    • The lag's shortest time. Three figures in two manuals. Chosen:
      the owner's manual's .5 ms to .5 s to settle, which is its time
      constants of .1 ms and .1 s and its corners of 1600 Hz and 1.6 Hz.
    • The internal clock's range. ARP says about .2 Hz to 100 Hz,
      Korg's reissue 0.2 Hz to 24 Hz. Chosen: ARP's.
    • The noise. Chosen: uniform, 20 V either side at the top of its
      slider and clipped at 10; the colour slider a pan between it and a
      one-pole low-pass copy at 20 Hz brought back to the same loudness,
      as the service manual describes, and not engine/noise.h's pink.
      So noise.colour is a slider and there is no noise.pink.
    • The amplifier's two control inputs together. Chosen: the gains
      add, to a most of one; no voltage at the exponential input is no
      gain, and a negative one at the linear input takes gain away.
    • The electronic switch. Chosen: three inputs and three outputs,
      A while the clock is high.
    • The reverberator. A plain reverberation with every figure a
      placeholder (two seconds, four loops, top off at 4 kHz); the left
      side has it inverted. Issue #6 may replace it.
    • The 4012 and the 4072. One filter, the shared one. ARP's
      service manual calls them identical in operation; what is commonly
      said of their difference is in no manual read.
    • Slider tapers. Each attenuator is the gain it gives, from 0 to
      1; the page draws the audio and FM ones on a curve.
    • Limits. Outputs held at the 15 V supplies; an oscillator driven
      no higher than 20 kHz; a pulse no narrower than its slider's 10%;
      the cutoff 1 Hz to 20 kHz, though the shared filter stops at 10 Hz.
    • Levels. The filter's headroom is 10 V; 2.5 V at an output jack
      is full scale, so that one oscillator panned to the middle is a
      wave of full height.
    • Feedback. A loop has one sample of delay in it, by the fixed
      order the modules are worked out in.
    • Running in. The console is run unheard for a second when the
      program first has a patch, so that the first note has no thump of
      capacitors charging.
    • Idle. A patch that sounds with no key held (the clock gating
      the envelopes, the filter singing into the mixer) is never idle, so
      an offline render of one runs to the renderer's ten-second limit.
    • The lowest key is MIDI's 36, and the frequency sliders read in
      semitones from where the key played is the note heard.
    • The 1971 panel. The voltage processors' four normals are from
      the 1976 panel's drawing and the 1977 service manual; whether the
      first panels had them was not found.
    • What was not read: the schematics, chapters 5 to 7 of the
      owner's manual beyond a skim, any manual for the 3604 alone, and
      Korg's manual for the 2600 M.
    • Its cost. One voice takes 7.8% to 12.6% of a core on the Pi,
      since every module runs at every sample. The shared filter is given
      its cutoff anew at every sample, which costs a tangent each; a
      per-sample entry to engine/four_pole_filter.h that takes the
      tangent from outside would spare it, and has not been written.
    • It has not been heard. Only rendered and measured.
  • The Omni's sources, placeholders and plain choices, listed under
    "The Omni" above. It was built for issue #22 on 2026-10-12 with
    no one to ask, so each of these was settled by Claude's own choice.
    The owner has not said whether there is one to measure.
    • The waveform. The service manual describes a spike, not a ramp:
      a differentiated square with the negative spikes clipped, and with
      the hollow switch some of the negative spike. Chosen: an ideal
      sawtooth and an ideal square, and no spike made up. It wants the
      voicing schematics read for the capacitors, or a recording, and is
      most of what the instrument's tone is.
    • The voicing filters of the 4' and 8' sums, the synthesizer's 8'
      against its 4', and the string bass's resonator. Chosen: none.
    • The phaser's rates, depths and delays, both boards. Chosen: the
      figures derived while it was built, as named constants; the Omni's switch
      doubling its sweep; the Omni-2's sweep the same as the Omni's. The
      Omni-2's rates double if its square wave is 20 V and not 10. The
      clock low-pass after each line is left out.
    • The lowest twenty keys with a bass switch in. The brief it
      was built from had them silent in the synthesizer on both
      instruments. The service manuals differ, and were followed: kept from the synthesizer on the
      Omni; on the Omni-2 still sounding there, but not firing the ADSR,
      so heard only while an upper key holds it open.
    • The Attack and Release sliders' ranges. Unpublished. Chosen: to
      2 seconds and to 5, starting at 10 ms and 0.3 s.
    • The pulse that cuts short released keys on a new key. Chosen: a
      fall of 30 ms, and it happens with the sustain footswitch down as
      well, so the footswitch lengthens only what follows the last key
      struck. Whether the hardware's footswitch behaves so is not known.
    • The string envelope under legato playing. Chosen: a new key
      halves its level, for every key sounding, and it shuts over 20 ms
      once no key's gate is open.
    • Cello and Bass's release, and the Synthesizer Bass's. Chosen: a
      setting, bass.release, starting at the Omni's 2.5 seconds; the
      Omni-2's is about one.
    • The Bass Voice's filter: where it rests, how far its envelope
      opens it, its resonance. Chosen: 100 Hz, four octaves, 0.2, all
      placeholders. And 0.1 s for what is left when the key is let go.
    • Which LFO waveform reaches the filter. Chosen: the triangle,
      equally either way.
    • How far the filter's three sliders reach. Chosen: the ADSR's 10
      octaves, the LFO's 4, the pedal's 10, starting at 0, 0 and 2.
    • The filter's singing. The hardware's does not oscillate as it is
      played. Chosen: the shared filter as it stands, as on every
      instrument. Nothing sings with no key down, since the amplifier
      follows the filter.
    • Levels: a tone, the bass, the strings after the phaser against
      the dry synthesizer. Chosen so that all forty-nine keys fit at the
      gain the programs start with; one key is quieter than another
      instrument's one voice.
    • Whether Violin and Viola sound under the split with Cello or Bass
      on.
      Chosen: yes.
    • Keys and MIDI. Chosen: the lowest key is 36; every MIDI key
      sounds; the split is bass.top, starting at 55. Controller 1 does
      nothing. Pitch bend is added, two semitones as it comes.
    • Stereo. Chosen: a pan each for strings, synthesizer and bass
      voice, all central, in place of the hardware's separate jacks.
    • Master Volume and the Bass Voice. The Omni-2's manuals say it
      does not reach it, and it does not here; the Omni's bass, through
      the synthesizer, it does.
    • The first Omni's owner's manual wants finding, and the unread
      schematics reading.
    • It has not been heard. Only rendered and measured.
Built on 2026-10-12, in one local commit that is not pushed. Left open for you to close after playing them: **none of the three has been heard by anyone**; each was rendered offline (not silent, no bad samples, nothing over full scale at the renderer's settings) and benched on the Pi. ## What was built Three instruments, each whole (daemon, ctl, web, render, bench; tests beside the code): | Instrument | Directory | Programs | Web port | Patches | |---|---|---|---|---| | ARP Odyssey, every revision | `instruments/odyssey/` | `miniody*` | 8809 | `.mody` | | ARP 2600 with the 3620 keyboard | `instruments/arp2600/` | `mini2600*` | 8810 | `.m2600` | | ARP Omni and Omni-2 | `instruments/omni/` | `miniomni*` | 8811 | `.momni` | - **Odyssey**: the whole panel, one duophonic voice (VCO-1 the lowest key, VCO-2 the highest), the exclusive-OR ring modulator, the S/H mixer and sample and hold, both envelopes with the three repeat switches, and `filter.two_pole` for the 2800's 12 dB filter. The 4035 and 4075 are both the shared four-pole filter; their difference is tone and waits on measurement. - **2600**: every module on the panel, worked out one sample at a time so that any output can go to any input. **The patch cords are parameters**: every input jack has a whole-number parameter ending `.jack`: 0 is no cable, which leaves the wire behind the jack as the manual's panel has it; 1 is a dummy plug; 2 to 37 is a cord from an output jack, in a fixed order. The protocol and the page were not changed for it, a patch file holds the cords, and a 2600 with no cords plays as the normalled instrument. The upper voice is patched as the 3620's manual says, with a cord to a VCO's KBD CV jack. Its reverberator is a small plain reverb and not a model of springs (#6 may replace it). Issue #7 was not done first; this does not depend on it. - **Omni**: every key sounds, from a divide-down generator of twelve counters; per-key release with the manual's rule that a new key cuts off the tails of keys let go; the string section through the three-line chorus phaser; the synthesizer through one four-pole filter and one ADSR; the first Omni's Synthesizer Bass and the Omni-2's Bass Voice, Single Trigger, Staccato and phaser figures as switches. Shared code added to `engine/`: `duophonic.h` and `duophonic_glide.h` (both ARP keyboards), `keyed_lfo.h` (the Odyssey's, the 3620's and now the SH-5's LFO-2), `sample_hold.h` (both ARPs and now the SH-5), `wave_vco.h` with `vco_edges.h` (a VCO with an output a waveform; `analog_vco.h` takes its edges from the same place), `divide_down.h`, `fast_math.h`, and a one-pole high-pass in `one_pole.h`. ## Results - `bazel test //...`: 112 of 112 pass, no warnings. `bazel build --config=pi --config=opt //instruments/...` succeeds. - On the Pi, no daemon running, as shares of one core: Odyssey 2.1% with one sawtooth, 3.4% with everything, 3.5% and 4.7% with the effects. Omni 1.8% for one key, 3.6% for ten with everything, 10.3% for all forty-nine, 13.0% with the effects. 2600 8.2% with no cords, 10.3% with every module and cords, 10.9% and 13.0% with the effects. - The SH-5's, the Prophets' and the SEM family's benches were run before and after, since shared files they use were touched. None moved. ## Deliberately not done Deliberately not done for the Odyssey, beyond what "clean" already leaves out: the filter self-oscillating from half way up its slider, where the specification puts it, and not from the shared filter's onset; the envelopes' curves, which the service manual draws; the trigger arriving 10 to 15 milliseconds after the gate; the external audio input; the pedal that can stand in for the S/H mixer; the control voltage, gate and trigger jacks; setting a slider by its place along its travel, which wants each slider's curve; and more than one voice. Plain choices, not known to be the hardware's: which way up the sawtooth, the pulse and the ring modulator are, and that the ring modulator swings either side of nothing; that the specification's modulation depths, each printed with a plus sign alone, are a swing that far either side for the LFO's sine and upward only for the square and the ADSR; that an envelope narrows the pulse and that the width stops at a twentieth; that the S/H mixer gives half the sum of its sliders; how far the S/H mixer, unsampled, moves the second VCO and the filter (`kMixerOctaves`), and the reach of the filter's second slider, given in octaves; that the noise the S/H mixer hears is the one the noise switch chooses, where the specification says pink; that a cycle of the LFO started over by a key counts as a cycle to the sample and hold; that a restarted LFO begins with its sine rising and its square high; that a key struck starts the ADSR again while the LFO is repeating it; that with AUTO REPEAT the envelopes fire before any key is played; that the amplifier is linear and its two sliders add; that when one of two keys is let go its VCO goes to the other key at once, the first by the glide and the second without, with no trigger, so that the interval of a chord let go a key at a time is lost; that the transpose switch is not glided; that the transpose switch and the bender move the filter's keyboard tracking, as on the later boards, where on the 2800 the bender is read as missing the filter; that the first VCO in its low range hears nothing from the keyboard, the bender and the vibrato included; that the two-pole filter sings about twice as loud as the four-pole, being heard from half way along the same loop; and the lag's time, which is three time constants (`engine/sample_hold.h`). Deliberately not done for the 2600, beyond what "clean" already leaves out: the filter self-oscillating from about half way up its slider, where the manual puts it, and not the shared filter's onset; any difference between the 4012 and 4072 filter modules, which ARP's service manual calls "identical in operation"; the envelopes' curves; anything overdriving, where the service manual says three oscillators at full overdrive the filter; the sliders' tapers, each being the gain it gives; a model of the reverb springs, `reverb.h` being a plain reverberation with placeholder figures that issue #6 may replace; sound from outside (issue #17), so the preamplifier and the envelope follower act only on what is patched to them; the speakers and their sliders; the MANUAL START button; more than one cord into an input; the keyboard's momentary portamento button and its foot switch, and the dead zone of its bend knob; the 3604's TONE INTERVAL and TUNING knobs; and the gate and trigger being late by anything, where the 3604P's trigger is 15 ms behind its gate. Deliberately not done for the Omni, beyond what "clean" already leaves out: **the waveform**, which the service manual says is a square wave put through a capacitor with the negative spikes clipped off, and with the hollow switch some of the negative spike let through, its time constants on schematics nobody read, so that here the first is an ideal sawtooth and the second an ideal square and no spike has been made up; **the voicing**, which is the formant filters of the 4' and 8' sums, the 8' synthesizer's being a little mellower than the 4', and the string bass's resonator, none with a figure in the text and none stood in for; the filter self-oscillating only as the hardware's does, which is not at all as it is played, and not from the shared filter's onset; the envelopes' curves; the top-octave chip's tuning; the low-pass after each of the phaser's lines and its chips' noise; the volume pedal; the gate and trigger outputs and the filter's control voltage input; and a jack for each section beyond the three pans. Plain choices, not known to be the hardware's: that the lowest key is MIDI's 36, from the service manual's calling its 8' tone C2, and that the keys beyond the hardware's forty-nine sound; how loud a tone, the bass and the two sections are against each other; the ranges of the string section's Attack and Release sliders, for which no figure is published; how fast a new key shuts the gates of keys let go (`kQuenchSeconds`), and that it does so with the sustain footswitch down too; how far a new key pulls the string envelope down (`kStringAttackReset`) and how fast that envelope shuts; that the bass has no attack, keeps the pitch of its last key while it dies away, and takes the hollow waveform with the rest; that Violin and Viola sound over the whole keyboard whatever the bass switches say; that the LFO's triangle and not its square moves the filter, and equally either way; how far each of the filter's three sliders reaches (`kMost...Octaves`); everything about the Bass Voice's filter (`kBassVoice...`); that every octave of a note begins its cycle together; where the phaser's three oscillators start; that each section is whole until the Mix slider passes the middle toward the other; and the pans. ## Open, each with the option taken These are CLAUDE.md's "Open decisions" entries for this issue, as committed. - **The three ARPs: three instruments, or fewer.** Built for issue #22 on 2026-10-12 with no one to ask. Chosen: three, the Odyssey, the 2600 and the Omni, with the Omni-2 a setting of the Omni and the 3604 and 3620 keyboards part of the 2600, as "Decisions made" has it. It was Claude's choice and not the owner's, and wants the owner's word; so do their names, under "Product name" above, and their ports, 8809, 8810 and 8811. - **The Odyssey's placeholders and plain choices**, listed under "The Odyssey" above. It was built for issue #22 on 2026-10-12 with no one to ask, so each of these was settled by Claude's own choice and wants the owner's say, a recording or a schematic read: - **Sine or triangle LFO.** The panel and owner's manual say sine; the service manual's circuit makes a triangle and no shaper was found. Chosen: a sine, with `lfo.triangle` for the other. - **The three filters.** Chosen: `filter.two_pole` for the 2800's 4023, as the shared four-pole filter heard from its second section so that it sings as the service manual's trim has it; no switch between the 4035 and the 4075. Their insides are not in ARP's manuals. The two-pole sings about twice as loud as the four-pole. - **The ring modulator's level, offset and polarity.** Chosen: -1 to 1, high while the pulses differ, whatever steady level that leaves taken off by the high-pass. - **What the modulation depths mean.** The specification prints "+1/2 octave" and so on. Chosen: the sine swings that far either side; the square and the ADSR go upward only; the sample and hold goes as far as its sample either way, a full-level sample being 1, which is the S/H mixer with both its sliders up: the mixer gives half their sum, so that two octaves is the most, as the specification is read. One slider alone then reaches an octave, which wants checking against a real one. - **Pulse width modulation's direction and limit.** Chosen: the ADSR narrows the pulse, the sine goes both ways, and the width stops at 5% and 95%. - **How far the S/H mixer, unsampled, moves VCO-2 and the filter.** No figure. Chosen: two octaves at full, which is with both of the mixer's sliders up, as the sample and hold (`kMixerOctaves`). And the filter's second slider, given in octaves to 5; the schematic's resistors were read (keyboard and envelope through 100k, the second slider through 33k) but not used. - **Which noise the S/H mixer hears.** The specification says pink. Chosen: whichever the noise switch chooses. - **A chord's release.** The manuals do not describe it. Chosen: when one of two keys is let go its VCO goes to the other key at once and nothing triggers; both then stay on the last key up, so the interval of a chord let go a key at a time is lost. The 2600's keyboard was then read, from its service manual, to keep both notes, and does; whether the Odyssey should do the same is open. - **What the glide reaches.** Chosen: the lower voice only, a lag (`voice.portamento_curve` on); VCO-2's interval and the transpose switch are not glided. The specification gives a rate per octave and the circuit is a lag of constant time; the time here is the whole slide's unless `voice.portamento_per_octave` is on. - **Bender and transpose to the filter.** Chosen: both move the filter's keyboard tracking, as the later boards have it. On the 2800 the bender is read as missing the filter; there is no switch for that. - **VCO-1 in its low range.** Chosen: it hears nothing from the keyboard, the bender and the pad's vibrato included. - **Concert pitch and the lowest key.** Chosen: the tuning sliders read in semitones and cents from concert pitch and start at nothing; the lowest key is MIDI's 48. - **Envelope triggering under LFO repeat.** Chosen: a key struck starts the ADSR again while the LFO is repeating it; AUTO REPEAT fires the envelopes before any key has been played; a restarted LFO begins with its sine rising and its square high, which is when a repeat begins and when the sample and hold takes a sample. - **The amplifier's law.** Chosen: linear, its two sliders adding, held at full. - **The pad's vibrato.** Depth and wave are not in ARP's manuals. Chosen: the LFO's sine to both VCOs, a semitone at full. - **The portamento footswitch.** Chosen: controller 64, only for a patch with `voice.portamento_pedal` on, so that a patch without it glides by its slider alone. - **The HPF's range.** The panel's legend, 16 Hz to 16 kHz, is used. The schematic's values come to about 8 Hz to 5.3 kHz by arithmetic done while it was built; one of them is off. - **The lag's range.** `sh.lag` runs to half a second; the hardware's is read from the schematic as about 0.14 seconds at most, in this project's measure of three time constants. - **Envelope times.** The parameters are held to the specification's ranges, so an attack cannot be shorter than 5 ms; the segments are straight. - **The trigger's lateness**, 10 to 15 ms behind the gate, is not done. - **Parameter names.** The audio mixer is `mixer.noise`, `mixer.vco1` and `mixer.vco2`, each with a `_source` or `_wave` switch, and not the other instruments' `noise.level` and `vco1.saw`, because each slider has a switch; the third trigger switch is `adsr.auto_repeat` though it governs the AR too. - **It has not been heard.** Only rendered and measured. - **The 2600's patch cords.** Decided as issue #22 asked, and open to the owner's say: every input jack is a parameter ending in `.jack`, a whole number: 0 no cable (the normal stays connected), 1 a dummy plug, 2 to 37 a cord from an output jack in a fixed order that stored patches depend on. The protocol and the page were not changed. Still open: whether the page should draw cords, or show a jack as anything better than a stepped control with a name; whether a patch file should be able to name an output in words; and that the dummy plug was put at 1, ahead of the outputs, so that outputs can be added at the end. - **The 2600's placeholders and plain choices**, listed under "The 2600" above. It was built for issue #22 on 2026-10-12 with no one to ask, so each of these was settled by Claude's own choice and wants the owner's say, a recording or the schematics read, which they were not: - **Envelope times.** No ARP or Korg manual gives any. Chosen: the Odyssey's published ranges (attack 5 ms to 5 s, decay 10 ms to 8 s, release 15 ms to 10 s; the AR's release 10 ms to 8 s), as placeholders. The schematic's capacitors and sliders would say. - **Whether the filter's audio inputs pass DC.** The manual says the filter is "flat to DC". Chosen: they go through a capacitor (5 Hz, a placeholder), so that a sawtooth of nothing to +10 V does not thump when the amplifier opens. The amplifier and mixer pass DC. This is the choice most likely to be wrong, and it decides whether the filter can be used on control voltages. - **A chord's release on the 3620.** Read from the service manual's memory control: a key let go moves nothing with the portamento off, and with it on the voices follow the keys held. `engine/duophonic.h` gained `SetMovesOnRelease` for it. The Odyssey was left as it was first chosen. - **"Upper Voice memory is disabled" with the portamento on.** Chosen as above; and a glide stops where it is when the last key comes up, which is what the circuit description says and may surprise. - **Vibrato stopping with the key.** The service manual shuts the delayed sine off whenever no key is down. Chosen: as it says, so the pitch stops wobbling the moment the last key comes up, release or no release. - **Portamento's switch.** Chosen: on when `voice.portamento` is not nothing. The momentary button and its foot switch are not done; controller 64 is the interval latch. - **TRIGGER MODE at SINGLE.** ARP: a trigger for the first key only. Korg's reissue words it differently. Chosen: ARP's, and the voices and the LFO's restart still follow every key. - **Triggers under REPEAT.** Chosen: each rise of the LFO's square is a trigger as well as a gate, so the ADSR fires on each. - **The gate switch and its jack.** Chosen: with the switch at the keyboard the S/H GATE jack is not heard; a gate is up above 5 V. - **The envelope follower's sensitivity.** The owner's manual and the service manual disagree by four times. Chosen: the owner's, 1 V peak to peak for +10 V. - **The lag's shortest time.** Three figures in two manuals. Chosen: the owner's manual's .5 ms to .5 s to settle, which is its time constants of .1 ms and .1 s and its corners of 1600 Hz and 1.6 Hz. - **The internal clock's range.** ARP says about .2 Hz to 100 Hz, Korg's reissue 0.2 Hz to 24 Hz. Chosen: ARP's. - **The noise.** Chosen: uniform, 20 V either side at the top of its slider and clipped at 10; the colour slider a pan between it and a one-pole low-pass copy at 20 Hz brought back to the same loudness, as the service manual describes, and not `engine/noise.h`'s pink. So `noise.colour` is a slider and there is no `noise.pink`. - **The amplifier's two control inputs together.** Chosen: the gains add, to a most of one; no voltage at the exponential input is no gain, and a negative one at the linear input takes gain away. - **The electronic switch.** Chosen: three inputs and three outputs, A while the clock is high. - **The reverberator.** A plain reverberation with every figure a placeholder (two seconds, four loops, top off at 4 kHz); the left side has it inverted. Issue #6 may replace it. - **The 4012 and the 4072.** One filter, the shared one. ARP's service manual calls them identical in operation; what is commonly said of their difference is in no manual read. - **Slider tapers.** Each attenuator is the gain it gives, from 0 to 1; the page draws the audio and FM ones on a curve. - **Limits.** Outputs held at the 15 V supplies; an oscillator driven no higher than 20 kHz; a pulse no narrower than its slider's 10%; the cutoff 1 Hz to 20 kHz, though the shared filter stops at 10 Hz. - **Levels.** The filter's headroom is 10 V; 2.5 V at an output jack is full scale, so that one oscillator panned to the middle is a wave of full height. - **Feedback.** A loop has one sample of delay in it, by the fixed order the modules are worked out in. - **Running in.** The console is run unheard for a second when the program first has a patch, so that the first note has no thump of capacitors charging. - **Idle.** A patch that sounds with no key held (the clock gating the envelopes, the filter singing into the mixer) is never idle, so an offline render of one runs to the renderer's ten-second limit. - **The lowest key** is MIDI's 36, and the frequency sliders read in semitones from where the key played is the note heard. - **The 1971 panel.** The voltage processors' four normals are from the 1976 panel's drawing and the 1977 service manual; whether the first panels had them was not found. - **What was not read:** the schematics, chapters 5 to 7 of the owner's manual beyond a skim, any manual for the 3604 alone, and Korg's manual for the 2600 M. - **Its cost.** One voice takes 7.8% to 12.6% of a core on the Pi, since every module runs at every sample. The shared filter is given its cutoff anew at every sample, which costs a tangent each; a per-sample entry to `engine/four_pole_filter.h` that takes the tangent from outside would spare it, and has not been written. - **It has not been heard.** Only rendered and measured. - **The Omni's sources, placeholders and plain choices**, listed under "The Omni" above. It was built for issue #22 on 2026-10-12 with no one to ask, so each of these was settled by Claude's own choice. The owner has not said whether there is one to measure. - **The waveform.** The service manual describes a spike, not a ramp: a differentiated square with the negative spikes clipped, and with the hollow switch some of the negative spike. Chosen: an ideal sawtooth and an ideal square, and no spike made up. It wants the voicing schematics read for the capacitors, or a recording, and is most of what the instrument's tone is. - **The voicing filters** of the 4' and 8' sums, the synthesizer's 8' against its 4', and the string bass's resonator. Chosen: none. - **The phaser's rates, depths and delays**, both boards. Chosen: the figures derived while it was built, as named constants; the Omni's switch doubling its sweep; the Omni-2's sweep the same as the Omni's. The Omni-2's rates double if its square wave is 20 V and not 10. The clock low-pass after each line is left out. - **The lowest twenty keys with a bass switch in.** The brief it was built from had them silent in the synthesizer on both instruments. The service manuals differ, and were followed: kept from the synthesizer on the Omni; on the Omni-2 still sounding there, but not firing the ADSR, so heard only while an upper key holds it open. - **The Attack and Release sliders' ranges.** Unpublished. Chosen: to 2 seconds and to 5, starting at 10 ms and 0.3 s. - **The pulse that cuts short released keys on a new key.** Chosen: a fall of 30 ms, and it happens with the sustain footswitch down as well, so the footswitch lengthens only what follows the last key struck. Whether the hardware's footswitch behaves so is not known. - **The string envelope under legato playing.** Chosen: a new key halves its level, for every key sounding, and it shuts over 20 ms once no key's gate is open. - **Cello and Bass's release**, and the Synthesizer Bass's. Chosen: a setting, `bass.release`, starting at the Omni's 2.5 seconds; the Omni-2's is about one. - **The Bass Voice's filter**: where it rests, how far its envelope opens it, its resonance. Chosen: 100 Hz, four octaves, 0.2, all placeholders. And 0.1 s for what is left when the key is let go. - **Which LFO waveform reaches the filter.** Chosen: the triangle, equally either way. - **How far the filter's three sliders reach.** Chosen: the ADSR's 10 octaves, the LFO's 4, the pedal's 10, starting at 0, 0 and 2. - **The filter's singing.** The hardware's does not oscillate as it is played. Chosen: the shared filter as it stands, as on every instrument. Nothing sings with no key down, since the amplifier follows the filter. - **Levels**: a tone, the bass, the strings after the phaser against the dry synthesizer. Chosen so that all forty-nine keys fit at the gain the programs start with; one key is quieter than another instrument's one voice. - **Whether Violin and Viola sound under the split with Cello or Bass on.** Chosen: yes. - **Keys and MIDI.** Chosen: the lowest key is 36; every MIDI key sounds; the split is `bass.top`, starting at 55. Controller 1 does nothing. Pitch bend is added, two semitones as it comes. - **Stereo.** Chosen: a pan each for strings, synthesizer and bass voice, all central, in place of the hardware's separate jacks. - **Master Volume and the Bass Voice.** The Omni-2's manuals say it does not reach it, and it does not here; the Omni's bass, through the synthesizer, it does. - **The first Omni's owner's manual** wants finding, and the unread schematics reading. - **It has not been heard.** Only rendered and measured.
Author
Owner

Closed: all three have now been played by Ben, and he has confirmed what was his to say.

  • The Odyssey: played on the Pi on 2026-10-12, sounds good; its choices found fine that day.
  • The Omni: played on the Pi the same evening, sounds great, as its schematics have it.
  • The 2600: played on his laptop that night, sounds good. He found its plain choices fine as they stand, its name and port (mini2600, 8810), and its patch cords as .jack parameters, the dummy plug at 1 included.

What is left, and where it is kept:

  • How the page shows a cord: #58. A patch file naming an output in words: #59.
  • The 2600's reverb springs: #6. Sound from outside: #17. The LFO's sine or triangle on the Odyssey: #8. The Odyssey's footswitch on another controller: #31.
  • What only a schematic, a recording or a real one would settle (the 2600's envelope times and whether its filter's inputs pass DC; the Omni's unread Lower Voicing sheets and its first owner's manual) is under "Open decisions" in CLAUDE.md.
  • Their families went to #34 and #36.

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.

**Closed: all three have now been played by Ben, and he has confirmed what was his to say.** - **The Odyssey**: played on the Pi on 2026-10-12, sounds good; its choices found fine that day. - **The Omni**: played on the Pi the same evening, sounds great, as its schematics have it. - **The 2600**: played on his laptop that night, sounds good. He found its plain choices fine as they stand, its name and port (`mini2600`, 8810), and **its patch cords as `.jack` parameters**, the dummy plug at 1 included. What is left, and where it is kept: - How the page shows a cord: #58. A patch file naming an output in words: #59. - The 2600's reverb springs: #6. Sound from outside: #17. The LFO's sine or triangle on the Odyssey: #8. The Odyssey's footswitch on another controller: #31. - What only a schematic, a recording or a real one would settle (the 2600's envelope times and whether its filter's inputs pass DC; the Omni's unread Lower Voicing sheets and its first owner's manual) is under "Open decisions" in CLAUDE.md. - Their families went to #34 and #36. 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.
bcox closed this issue 2026-10-13 04:27:02 +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#22
No description provided.