← SensorSynthFM
Active buildFebruary to July 2026Updated July 18, 2026

The build history the hardware can back up

Physical-device testingEvidence-gated claimsSensor-to-FM mappingTouch-first interaction design

What This Page Is

This is the dated build history for SensorSynthFM, an FM synthesizer driven by an iPad's onboard sensors. It replaces a single stale July 1 process snapshot with the full record from inception forward. I keep it because the project's hardest problem was never a shortage of ideas. It was deciding which ideas survived source checks, tests, and physical use.

The record combines public Git history, research and design notes, physical-device reports, publication receipts, and a reviewed projection of the working Kanban board. AI collaborators help with implementation, review, and research synthesis. I own the musical judgment, UX direction, hardware testing, evidence gates, and public claims. That boundary stays visible.

Current Evidence Boundary

The current build has crossed several physical gates. It has not crossed all of them. These are three different states, and treating them as one would turn the page into a sales document.

Physical evidence

Verified on iPad

Audio output, accelerometer and gyroscope modulation, microphone response, a causal two-minute microphone route, modulation-matrix launch, and the revised route controls all reached physical hardware. Exact commit 635ab09 passed 20 Xcode tests, a generic iOS build, physical signing, installation, and launch. James then confirmed that the default minus-then-plus order, removal of the dedicated ZERO control, and signed-amount reset all worked on the iPad.

Physical interaction

Control slice accepted, composition open

The quick route-control repair passed physical use. The native screen still differs from the public layout study, and that full composition has not been implemented in Swift. One physical screenshot, the native-versus-study delta, matrix-growth behavior, center haptics, handedness, and bottom-gesture avoidance remain open. The accepted controls do not settle the entire modulation page.

Scope boundary

Designed next, not built

The first Performance-page note-input definition is active design work. The looper, sequence editor, four-operator engine, presets, MPE, AUv3, Ableton integration, and direct gesture editing inside matrix cells are not current implementation claims. The design can move forward without pretending those systems exist.

Design note · July 17, 2026

The matrix is going to grow.

Nine sources by four targets is the current proof, not the final instrument. The matrix has to absorb more synthesis structure as the engine grows: additional operators, envelopes, LFOs, macros, effects, and destinations. It cannot do that by shrinking touch targets until the interface becomes a desktop routing table under glass.

This study turns the July 15 physical feedback into one reviewable composition. All nine current sources stay visible. The selected route sits directly below the matrix. The nudge order becomes minus then plus. The signed amount becomes the reset target, and the right rail carries secondary context. This is the direction under review. It is not a finished matrix or a claim that the current synthesis engine already needs every future lane.

Interactive design study. Select routes, drag the bipolar amount, use the one-percent nudges, reset through the signed value, switch handedness, and compare the current composition with the revision. This changes the design record, not the SensorSynthFM application.

Open the full interactive study ↗

Kanban Evidence, by Date

The screenshots are generated from the working board, then reduced to approved public milestone titles, status, and abstracted work lanes. The current source board holds 2 ready, 3 todo, 2 needs-decision, 45 done, and 1 scheduled cards. The image does not expose private card bodies, comments, paths, logs, or raw identities.

First public board state

The evidence system comes online

Public-safe SensorSynthFM Kanban board state from July 1, 2026Open full-size screenshot ↗
This board state established the capstone evidence lane, the physical activation gate, the research recovery work, and the first public process page. The precise generation time was replaced by the snapshot date for privacy. The original renderer also clipped the end of the tall Done lane. I kept that failure visible because it explains why the current renderer reserves a stable full frame.

Layout-study milestone board

The evidence workflow gets an honest boundary

Public-safe SensorSynthFM capstone milestone board from July 17, 2026Open full-size screenshot ↗
This state records the published layout study while the physical route-control refinement was still open. It is now immutable history rather than a mutable current image.

Current milestone board

The physical slice passes and the next proof gets a queue

Current public-safe SensorSynthFM capstone milestone board from July 18, 2026Open full-size screenshot ↗
The July 18 board preserves the accepted control slice, separates full-chain integration from the open composition decision, and makes the Performance-page note-entry definition visible. Two Ready items remain idle until selected.

Build History by Date

This chronology records product behavior, design decisions, research gates, publications, failures, and open validation. It does not inflate internal bookkeeping into progress.

February 2026

FoundationVerified

The Xcode project exists

SensorSynthFM started as an Xcode project, not a product claim. The first commit established the application shell and a source of truth that later design work could be checked against.

  • Commit 3fd6cf8
  • Xcode project created

InteractionVerified

The first interface direction is drawn

SwiftUI mockups and supporting project documentation gave the instrument its first visible interaction model. This was still interface intent. No hardware evidence existed yet.

  • Commit c01d1d6
  • SwiftUI mockups
  • Project documentation

SensorsVerified

The sensing layer becomes real

The README established the working project description. SensorManager added microphone permission handling and corrected an FFT memory leak, which turned passive sensing from a diagram into a runnable code path.

  • Commits 7715ce4 and 2d21827
  • Microphone permission
  • FFT leak fixed

AudioVerified

The audio engine makes sound

A sine-wave test proved that the audio engine could run. It was deliberately plain. The point was to establish output before adding FM complexity.

  • Commit a39ee90
  • Sine-wave proof

March 2026

DesignDecision

The design record expands

Project notes and design documents were expanded before the synthesis engine changed. The work started to name the intended behaviors, not only the files needed to produce them.

  • Commit 463a355
  • Design documents
  • Project notes

AudioVerified

The proof becomes an FM instrument

The sine wave was replaced by AudioKit's FMOscillator. Carrier frequency, modulation index, modulator ratio, and amplitude became the first real synthesis controls.

  • Commit 33009ff
  • AudioKit FMOscillator
  • Four exposed parameters

IntegrationVerified

Sensors reach the FM engine

SensorFMBridge and SensorFMTestView connected accelerometer magnitude, microphone amplitude, and gyroscope Y to FM parameters. This created the first integrated proof surface for judging whether a physical signal caused an audible change.

  • Commit 9be8498
  • SensorFMBridge
  • Integrated test view

April 2026

DocumentationPublished

The project gets a memory

Public project documentation was added and a project Wiki was initialized. The code, README, design documents, and longer plans had begun describing different versions of the instrument. That was a truth problem.

  • Commit 02fd220
  • Public project docs
  • Wiki initialized

AuditDecision

Activation replaces expansion

The canonical repository and a duplicate starter repository were re-audited. The next gate became physical activation of the existing integrated view, not another feature branch.

  • Repository audit
  • Duplicate starter identified
  • Activation checklist

InteractionDecision

A larger interaction system is documented, then held back

Touch-native looping, sequence and edit grammar, rhythmic capture, and a three-page architecture were documented. They stayed behind the activation gate. The design could grow after the physical proof, not instead of it.

  • Looping direction
  • Three-page architecture
  • Activation still first

June 2026

RestartDecision

The build restarts from the device

The restart plan narrowed the work to physical activation. GitHub and the canonical repository remained code authority. Google Drive remained an archive and handoff surface, not a place to run the project.

  • Physical activation gate
  • Canonical repo restored
  • Drive kept archival

CapstoneVerified

Research, coursework, and the task board are connected

Capstone coursework was mapped to the active build, the research corpus was recovered, and the desk-research inventory was prepared. The long-running Kanban structure was prepared as the operational evidence trail for research, implementation, review, and parked scope.

  • Coursework source map
  • Research recovery
  • Capstone board prepared

July 2026

HardwareVerified

The integrated app runs on a physical iPad

The app entry was changed to SensorFMTestView. James ran the integrated build on a physical iPad and confirmed sound output plus audible accelerometer and gyroscope mappings. The microphone seemed active, but the response was too subtle to trust.

  • Commit 6a7683f
  • Sound passed
  • Motion mappings passed

PublicationPublished

The evidence trail becomes public

The desk-research page and first process page were published with a 33-card Kanban capture. Capstone evidence, discovery questions, research recovery, parked ambitions, and the usability-video privacy boundary became explicit parts of the build record.

  • 33-card board state
  • Desk research published
  • Process page published

ResearchPublished

The public source trail catches up

Repository documentation drift was corrected and the SceneFingerprint implementation packet was clarified. An inclusive source atlas built from 319 reviewed public-safe URLs was published so the research surface could be inspected before it was narrowed.

  • Documentation corrected
  • 319 public-safe URLs
  • Source atlas published

EvaluationDecision

Listening changes the mapping priorities

Physical listening ranked the gyroscope first and the accelerometer second. The microphone was alive, but it needed a different interpretation. Accessibility requirements, an interaction model, a cognitive walkthrough, a moderated usability script, and findings-to-decisions traceability were documented around that evidence.

  • Gyroscope ranked first
  • Accessibility requirements
  • Evaluation plan

ImplementationOpen

Three repairs enter review

Microphone diagnostics, safe-area and control-authority repairs, and SceneFingerprint implementation moved into review lanes. The public project narrative was corrected at the same time so the page stopped promising a fixed routing model as the finished direction.

  • Microphone diagnostic lane
  • Control-authority repair
  • SceneFingerprint review

ScopeDecision

The demo becomes stationary

The current focus narrowed to one convincing two-minute environmental-modulation demo with the iPad resting on a table. The project stopped treating whole-device motion as the main performance gesture. This is room and surface modulation, not keytar behavior.

  • Two-minute demo
  • Stationary iPad
  • Environmental modulation

DiagnosticsVerified

The microphone and scene model reach hardware review

Microphone diagnostics and a SceneFingerprint proof harness were assembled on a review branch. Xcode tests and a generic iOS build passed. James cleared the signing boundary and reported that the microphone responded on the physical iPad.

  • Xcode tests passed
  • Generic iOS build passed
  • Physical mic response

InteractionVerified

The fixed mapping becomes a matrix

A touch-first modulation matrix was implemented with nine sources, four targets, 36 bipolar route cells, editable base values, and migrated defaults. Seventeen Xcode tests and the generic iOS build passed. James reported physical signing, installation, and launch success, while per-route interaction behavior remained under review.

  • 9 sources by 4 targets
  • 17 tests passed
  • Physical launch passed

HardwareVerified

The microphone passes, then the interface fails

James ran a two-minute stationary microphone test in a room measuring roughly 60 dB. The route was audibly causal, stable, and only slightly pumping, although exact calibration remained open. The same physical pass exposed a blocking defect: the route slider occupied the iPadOS bottom gesture zone.

  • Two-minute physical test
  • Causal mic route
  • System-gesture conflict

ImplementationVerified

The first route-editor repair reaches review

A local adaptive route inspector defaulted to the right, mirrored for left-handed use, moved diagnostics behind progressive disclosure, and added a center-zero control with one-percent nudges and a zero detent. Source checks passed. The next physical review rejected its fixed side rail, turning this implementation into evidence for the redesign rather than a finished interaction.

  • Adaptive inspector implemented
  • Source checks passed
  • Physical review next

HardwareOpen

The iPad rejects the side inspector

The repaired build reached the physical 11-inch iPad with the selected route fixed at the right edge. That solved the wrong problem. The 300-point rail made the primary bipolar slider too narrow for confident touch control and left most of the right column unused. The next layout must put a wider slider directly below the matrix and reserve the right rail for secondary elements.

Physical iPad running SensorSynthFM in landscape with context controls at left, the modulation matrix in the center, and a narrow selected-route inspector at right.
Rejected physical layout. The route amount control occupied a narrow right-side inspector, but iPad testing showed that the primary slider needs a wider strip below the matrix. The iPad status bar is redacted. This records the defect, not a completed repair.
  • Physical iPad capture
  • Side inspector rejected
  • Full-width slider required

InteractionDecision

The wider editor reaches the iPad, and the grid is still not done

The selected-route editor moved below the matrix. Twenty Xcode tests, a generic iOS build, and simulator geometry checks passed before James signed, installed, and launched exact commit c5d3472 on the physical 11-inch iPad without errors. The physical review was clear: the revision is better, but it still underuses the available space. The dedicated ZERO control wastes room, the plus/minus nudge order must reverse, and the grid should move toward an Ableton-like layout over time. The next interaction revision remains open.

  • Commit c5d3472
  • 20 Xcode tests passed
  • Physical launch passed; layout still open

EvidenceDecision

The screenshot path is corrected before it becomes another claim

A live check confirmed that Xcode 26.3 still sees the physical iPad as paired. The working capture path is Window > Devices and Simulators, where a human takes the full-resolution screenshot before the existing transfer, sanitization, privacy review, and publication pipeline runs. Apple's newer Device Hub remote-control instructions do not apply to the installed toolchain. Agent-operated physical UI-test capture remains proposed, not implemented.

  • Xcode 26.3 pairing reverified
  • Manual capture path corrected
  • Automated physical capture remains open

DesignPublished

The matrix gets a layout study before it gets more synthesis

The physical rejection became an interactive current-versus-revision design study. The revision keeps all nine current sources visible, gives the selected route a wide bipolar strip below the grid, reverses the nudge order, turns the signed amount into the reset target, and reserves the right rail for secondary context. The harder constraint is growth: nine sources by four targets is the current proof, not the final ceiling. The matrix has to expand with the synth without collapsing touch targets or burying route editing.

  • Interactive layout study
  • All nine current sources visible
  • Matrix growth remains an open design constraint

HardwareVerified

The quick control slice passes, and the next proof is named

Exact commit 635ab09 removed the dedicated ZERO control, reversed the default nudge order, and made the signed amount the reset target. Twenty Xcode tests, a generic iOS build, installation, and launch passed before James confirmed all three requested controls worked on the physical iPad. The larger web-study composition is still not in Swift. The new board keeps that decision open while making full-chain integration, note-entry definition, walkthrough, mapping survival, and the capstone evidence brief visible in sequence.

  • Commit 635ab09
  • 20 Xcode tests passed
  • Three physical control checks passed
  • July 18 board archived

How This Stays Current

This page is event-driven. It is not a real-time board dump and it does not update on a timer. A timer can copy a status. It cannot decide whether a code change earned a public claim.

Every verified public milestone now closes through the same history gate. James's July 15 request is standing approval for narrow, public-safe history refreshes that pass this sequence. It is not approval to publish unrelated code, private research, participant material, or unsupported claims.

Step 1

Verify the milestone

Start with the strongest evidence available: Git, Xcode output, a physical-device report, a research artifact, or a live publication receipt.

Step 2

Update the dated record

State what passed, what failed, and what remains unverified. Classify each new board title before any part of it can reach the public screenshot.

Step 3

Regenerate and inspect

Produce the current board image and a date-keyed archive, then run the privacy guard, typecheck, lint, and production build. A timer cannot do this judgment.

Step 4

Publish and prove it

Verify the source workflow, public Pages workflow, live route, and image URLs. Internal smokes, retries, bookkeeping, and unverified code churn do not earn a history entry.

The Commitment

I will keep documenting what survives physical use, what fails under a hand, and what stays open after the code looks finished. The device gets the last word.