Skip to content

Implementation Roadmap

graph LR
    P0["Phase 0\nMaintenance &\nAssessment"]
    P1["Phase 1\nBench\nTesting"]
    DG1{"Decision\nGate"}
    P2["Phase 2\nSingle-Octave\nPrototype"]
    P3["Phase 3\nFull Keyboard\nIntegration"]
    P4["Phase 4\nExpression\nLayer"]

    P0 --> P1
    P1 --> DG1
    DG1 --> P2
    P2 --> P3
    P3 --> P4

    style P0 fill:#92400e,color:#fef3c7,stroke:#d97706
    style P1 fill:#164e63,color:#cffafe,stroke:#06b6d4
    style DG1 fill:#374151,color:#f3f4f6,stroke:#9ca3af
    style P2 fill:#1e3a5f,color:#bfdbfe,stroke:#3b82f6
    style P3 fill:#1e3a5f,color:#bfdbfe,stroke:#3b82f6
    style P4 fill:#065f46,color:#d1fae5,stroke:#10b981

Phase 0 — Maintenance and Assessment planned

Section titled “Phase 0 — Maintenance and Assessment ”

The organ must be electrically healthy before we start probing it with oscilloscopes and soldering CapSense boards onto it. A failing electrolytic capacitor during a bench test would contaminate every measurement.

  • Clean all Orbit III potentiometers with DeoxIT D5
  • Free the stuck Sine Wave volume pot (penetrating treatment or replacement)
  • Fix the sticky lower manual C6 key (likely felt/bushing, not electrical)
  • Complete an extended 30+ minute burn-in test, monitoring for audio dropout, hum escalation, or thermal issues
  • Photo-document all circuit boards with the console open — before touching anything
  • Acquire the Orbit III service manual (eBay listings available)

All pots clean, no stuck keys, organ plays for 30+ minutes without degradation. All boards photographed. Known issues documented in the known issues log.

Cross-references: Initial Assessment, Known Issues


Phase 1 — Bench Testing planned

Section titled “Phase 1 — Bench Testing ”

One afternoon with an oscilloscope, a few jumper wires, and the Cypress PSoC eval boards. The goal is to determine which sensing approach — CapSense overlay, AC signal coupling, or both — is viable for the 555’s electrical environment.

  1. AC coupling probe test

    Solder a single insulated pickup wire near one contact rail on the lower manual. Connect to an oscilloscope probe (high-Z, AC coupled). Power the organ and press the corresponding key slowly while observing the coupled signal. If amplitude changes measurably as the key descends toward the rail, the fundamental physics of Approach B is confirmed. Connect the pickup to a CY8C29466 ADC input and log readings vs. key position.

  2. CapSense baseline test

    With the organ powered OFF, connect a CY8C20236A or CY8C29466 to a single sensor pad mounted under one key. Verify that finger/key proximity produces clean capacitance changes with an acceptable noise floor. This establishes the best-case baseline.

  3. EMI characterization

    Power the organ ON and repeat the CapSense measurement. Quantify the interference: how much does the 0–12 V square wave on the nearby contact rail shift the CapSense readings? Add shielding (ground plane, driven shield via the PSoC’s CMOD pin) and measure the improvement. The delta between organ-off and organ-on readings determines whether Approach A is viable without heroic shielding.

  4. Decision gate

    The bench test results map to one of four paths:

    AC Coupling Works?CapSense Works?Path Forward
    YesNoApproach B only — AC signal coupling with PSoC analog blocks
    NoYesApproach A only — Traditional CapSense overlay with shielding
    YesYesHybrid — AC coupling for position, CapSense for proximity/aftertouch
    NoNoShift registers only — abandon continuous sensing, focus on fast on/off with debounce

Cross-references: CapSense Feasibility — Proof of Concept, CapSense Feasibility — EMI Problem


Phase 2 — Single-Octave Prototype planned

Section titled “Phase 2 — Single-Octave Prototype ”

Build and validate a 12-key prototype that demonstrates the complete signal chain: key contact detection, continuous position sensing (if viable from Phase 1), debounce, and MIDI output.

  • ESP32-S3 development board (USB-MIDI native, BLE-MIDI capable)
  • 2x 74HC165 shift registers (16 digital inputs for 12 keys + spare channels)
  • CapSense and/or AC coupling hardware for 12 keys (determined by Phase 1 outcome)
  • Single-octave mounting bracket for the lower manual
  • SPI scan loop running at ≥ 1 kHz for the shift register chain
  • Debounce algorithm (Moro’s contact bounce data: ~200 μs oscillation period, 5 ms total settling)
  • USB-MIDI output first (lowest latency, simplest debugging), then BLE-MIDI and DIN-5
  • Per-key three-point calibration stored in ESP32 NVS flash (from Moro’s calibration workflow)

Every millisecond is accounted for. Moro achieved 3.33 ms mean action-to-sound latency; our target is < 5 ms total.

StageBudgetNotes
Key contact scan (SPI read)< 1 ms74HC165 chain at 10 MHz SPI clock
CapSense / AC coupling read< 1 msI2C at 400 kHz or PSoC ADC sample
Debounce + state machine< 1 msSoftware, runs on ESP32 core
MIDI TX (USB)< 1 msUSB Full Speed, 3-byte message
Total< 4 msWell under 5 ms target

12 keys produce correct MIDI note-on/off with < 5 ms latency. If continuous sensing is active, velocity correlates with keystroke speed. No false triggers during 10-minute continuous playing.

Cross-references: Approach, CapSense Feasibility — Design Targets


Phase 3 — Full Keyboard Integration planned

Section titled “Phase 3 — Full Keyboard Integration ”

Scale the single-octave prototype to all 153 inputs: both manuals, pedalboard, Orbit III, and expression pedal.

  • 19 daisy-chained 74HC165 shift registers (151 digital inputs / 8 = 19 chips)
  • CapSense / AC coupling scaled per the chip allocation analysis:
    • Approach A: 15x CY8C20236A on I2C bus (or 8x CY8C29466 on SPI)
    • Approach B: CY8C29466 analog blocks for bandpass/envelope detection
    • Hybrid: combination of both
  • Expression pedal: 2 ADC channels on ESP32 (volume axis + pitch slide axis)
  • Key state machine implementing Moro’s five-state model:

    StateShift RegisterCapSense / ACAction
    Partial PressOpenPosition changingTrack velocity, prepare note
    Press in ProgressTransitioningRapid position changeCalculate velocity from peak early-phase derivative
    Key DownClosedPosition stableSustain note, monitor for aftertouch
    ReleaseTransitioningPosition returningSend Note Off, track release velocity
    Post-ReleaseOpenPosition returning to restReset state
  • Per-key calibration for all 151 keys (three-point linearization, stored in ESP32 NVS flash)

  • MIDI channel assignment per the approach design: Ch 1 (Upper), Ch 2 (Lower), Ch 3 (Pedals), Ch 4 (Orbit III)

  • Expression pedal mapped to CC#11 (volume swell) and Pitch Bend (lateral slide)

All 153 inputs scanned correctly. MIDI output on all three transports (USB, BLE, DIN-5). Latency < 5 ms sustained across full keyboard. Expression pedal produces smooth CC/Pitch Bend curves. No crosstalk between manuals.

Cross-references: Input Inventory, CapSense Feasibility — Chip Allocation


Phase 4 — Expression Layer planned

Section titled “Phase 4 — Expression Layer ”

The shift registers give us on/off. The expression layer gives us how. This phase extracts continuous expressive parameters from the key position data and maps them to MIDI.

Standard MIDI velocity (0–127) derived from the rate of key descent. The position derivative is computed over the key’s travel, but the critical insight from Moro’s Chapter 5: use the peak early-phase velocity — the maximum derivative during the first ~2 mm of ballistic collision — not the average over the full stroke. This captures the percussive attack that Hammond players use to control key click.

A second velocity-like parameter that captures the sharpness of the initial attack. Computed from the jerk (derivative of acceleration) or from the peak-to-mean velocity ratio during the early phase. Maps to a MIDI CC for downstream sound engines that support percussive vs. legato articulation.

If the 555’s key mechanism permits enough post-contact over-travel (Moro measured ~1 mm on the Hammond), the continuous position signal after contact closure maps to MIDI Channel Pressure or Polyphonic Aftertouch. A dynamic per-key dead zone accounts for mechanical tolerance variation.

ParameterSourceMIDI MessageCC#
VelocityPeak early-phase key descent rateNote On velocity
Continuous positionAbsolute key depthCC74 (Brightness) or custom
PercussivenessPeak/mean velocity ratioCC1 (Mod Wheel) or custom
AftertouchPost-contact over-travelChannel Pressure
Expression pedal (volume)Vertical pot axisCC11 (Expression)
Expression pedal (pitch)Lateral pot/switch axisPitch Bend
Release velocityKey ascent rateNote Off velocity

Velocity responds perceptibly to keystroke dynamics. Percussiveness parameter distinguishes struck from pressed touches. Expression pedal produces musical results in a connected synthesizer. A player can feel the difference between the 555’s MIDI output and a generic keyboard controller.

Cross-references: CapSense Feasibility — What Becomes Possible, CapSense Feasibility — What Moro Built and Tested


Giulio Moro frames the challenge as “widening the bottleneck.” Every stage in the signal chain — from finger to air — has a bandwidth. Traditional MIDI narrows the keyboard-to-sound-engine channel to a few discrete events (note-on, note-off, velocity). The Hammond’s 9-contact action carries more information than a single MIDI velocity byte can encode. Continuous key position sensing widens that channel back open.

For the 555, the architecture is layered:

  • Shift registers are the foundation — reliable on/off detection for every key, every time. This works even if everything else fails.
  • CapSense / AC coupling adds continuous position data — the raw material for expression.
  • The expression layer (Phase 4) transforms that position data into musically meaningful parameters.
  • Decision gates between phases keep the project honest. If a sensing approach doesn’t work, we fall back to the layer below without losing anything.

The goal isn’t to turn the 555 into something it isn’t. It’s to let the player’s intent — already present in the way they touch the keys — pass through to the sound engine without being flattened into a binary switch.