Implementation Roadmap
Phase Progression
Section titled “Phase Progression”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)
Exit Criteria
Section titled “Exit Criteria”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.
-
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.
-
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.
-
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.
-
Decision gate
The bench test results map to one of four paths:
AC Coupling Works? CapSense Works? Path Forward Yes No Approach B only — AC signal coupling with PSoC analog blocks No Yes Approach A only — Traditional CapSense overlay with shielding Yes Yes Hybrid — AC coupling for position, CapSense for proximity/aftertouch No No Shift 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.
Hardware
Section titled “Hardware”- 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
Firmware
Section titled “Firmware”- 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)
Latency Budget
Section titled “Latency Budget”Every millisecond is accounted for. Moro achieved 3.33 ms mean action-to-sound latency; our target is < 5 ms total.
| Stage | Budget | Notes |
|---|---|---|
| Key contact scan (SPI read) | < 1 ms | 74HC165 chain at 10 MHz SPI clock |
| CapSense / AC coupling read | < 1 ms | I2C at 400 kHz or PSoC ADC sample |
| Debounce + state machine | < 1 ms | Software, runs on ESP32 core |
| MIDI TX (USB) | < 1 ms | USB Full Speed, 3-byte message |
| Total | < 4 ms | Well under 5 ms target |
Exit Criteria
Section titled “Exit Criteria”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.
Hardware Scale-Up
Section titled “Hardware Scale-Up”- 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)
Firmware
Section titled “Firmware”-
Key state machine implementing Moro’s five-state model:
State Shift Register CapSense / AC Action Partial Press Open Position changing Track velocity, prepare note Press in Progress Transitioning Rapid position change Calculate velocity from peak early-phase derivative Key Down Closed Position stable Sustain note, monitor for aftertouch Release Transitioning Position returning Send Note Off, track release velocity Post-Release Open Position returning to rest Reset 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)
Exit Criteria
Section titled “Exit Criteria”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.
Velocity from Position Derivative
Section titled “Velocity from Position Derivative”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.
Percussiveness Detection
Section titled “Percussiveness Detection”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.
Aftertouch
Section titled “Aftertouch”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.
MIDI CC Mapping
Section titled “MIDI CC Mapping”| Parameter | Source | MIDI Message | CC# |
|---|---|---|---|
| Velocity | Peak early-phase key descent rate | Note On velocity | — |
| Continuous position | Absolute key depth | CC | 74 (Brightness) or custom |
| Percussiveness | Peak/mean velocity ratio | CC | 1 (Mod Wheel) or custom |
| Aftertouch | Post-contact over-travel | Channel Pressure | — |
| Expression pedal (volume) | Vertical pot axis | CC | 11 (Expression) |
| Expression pedal (pitch) | Lateral pot/switch axis | Pitch Bend | — |
| Release velocity | Key ascent rate | Note Off velocity | — |
Exit Criteria
Section titled “Exit Criteria”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
The Principle
Section titled “The Principle”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.
References
Section titled “References”- Approach — ESP32 + 74HC165 shift register architecture
- Input Inventory — All 153 inputs cataloged
- CapSense Feasibility — Sensing approaches, EMI analysis, chip allocation, design targets
- Initial Assessment — Current organ condition
- Known Issues — Documented problems and their status
- Giulio Moro, “Beyond Key Velocity” (2020) — instrumentslab.org — local copy