Skip to content

docs: add ESP32/S3 musical-parameter mapping for encoder+TFT UI#58

Open
ovelhaaa wants to merge 1 commit into
mainfrom
codex/list-musical-parameters-for-user-adjustment
Open

docs: add ESP32/S3 musical-parameter mapping for encoder+TFT UI#58
ovelhaaa wants to merge 1 commit into
mainfrom
codex/list-musical-parameters-for-user-adjustment

Conversation

@ovelhaaa

@ovelhaaa ovelhaaa commented May 4, 2026

Copy link
Copy Markdown
Owner

Motivation

  • Document the mapping and current accessibility of musical parameters between the DSP/bridge/core and the existing encoder+TFT UI for ESP32/S3.
  • Provide a compact reference and UX guidance to prioritize which parameters should be exposed or moved to an advanced menu in a future UI rework.

Description

  • Add docs/esp32s3_parametros_interface.md that lists parameters and their implementation/exposure status for the ESP32/S3 build.
  • Break out parameters into Implementados e acessíveis pela UI, Implementados no bridge/core, mas não acessíveis na UI atual, and Implementados no core DSP, mas não roteados pelo AudioParams sections and document exact fields like ap.mix, ap.feedback, tempoBpm, ap.orbit, and setShimmerMode.
  • Include UX observations and prioritization suggestions for controls such as STEREO SPREAD, SMEAR, ORBIT, INPUT/OUTPUT GAIN, DIFFUSER STAGES, DC BLOCK, and SHIMMER MODE.

Testing

  • No automated tests were run for this documentation-only change.

Codex Task

Summary by CodeRabbit

  • Documentation
    • Added detailed documentation mapping audio parameters to their current implementation status, including which controls are adjustable through the interface and planned enhancements for future interface improvements.

@coderabbitai

coderabbitai Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a2e2b7be-ae89-440a-8191-14300435f8f5

📥 Commits

Reviewing files that changed from the base of the PR and between 05b7ed3 and 96ecf8c.

📒 Files selected for processing (1)
  • docs/esp32s3_parametros_interface.md

📝 Walkthrough

Walkthrough

A markdown document mapping ESP32-S3 audio DSP parameters to their implementation status in the hardware UI, categorizing them as: UI-exposed, core-implemented but UI-hidden, and DSP-available but unrouted, along with UX notes for potential interface restructuring.

Changes

Parameter Implementation Status Documentation

Layer / File(s) Summary
UI-Exposed Parameters
docs/esp32s3_parametros_interface.md (lines 1–14)
Documents parameters directly editable via encoder and TFT screen: MIX, BPM, FEEDBACK, DIVISION, OFFSET (via tempo delay calculation), FOCUS, and BYPASS (forcing mix to 0).
Bridge/Core Parameters Unmapped
docs/esp32s3_parametros_interface.md (lines 15–25)
Lists parameters implemented in bridge/core but not exposed in UI, including ORBIT, STEREO SPREAD, INPUT/OUTPUT GAIN, SMEAR, DIFFUSER STAGES, DC BLOCK ENABLE, and READ MODE, with notes on default behavior during AudioParams republication.
DSP-Only Parameters
docs/esp32s3_parametros_interface.md (lines 26–31)
Identifies parameters existing in core DSP without AudioParams routing, such as TEMPO BPM, NOTE DIVISION, and SHIMMER MODE, citing their underlying functions.
UX Restructuring Suggestions
docs/esp32s3_parametros_interface.md (lines 32–44)
Proposes UI improvements for visual limits and suggests second page/advanced menu for less frequently adjusted parameters.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

  • Implement hardware UI for ESP32-S3 #42: Documents and implements the same UI-exposed audio parameters (MIX, BPM, FEEDBACK, DIVISION, OFFSET, FOCUS) in the ESP32-S3 hardware UI and ParameterBridge.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding documentation that maps ESP32/S3 musical parameters to their UI implementation status for the encoder+TFT interface.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/list-musical-parameters-for-user-adjustment
⚔️ Resolve merge conflicts
  • Resolve merge conflict in branch codex/list-musical-parameters-for-user-adjustment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
Review rate limit: 0/1 reviews remaining, refill in 60 minutes.

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new documentation file mapping musical parameters for the ESP32/S3 interface, detailing their implementation status across the UI, bridge, and DSP core. The review identified several technical inconsistencies and improvement opportunities: a critical enum mismatch for ReadMode between the bridge and core, inconsistent default values for dcBlockEnabled, and potential calculation errors caused by UI-side BPM/Division processing instead of using core logic. Additionally, a clarification for the OFFSET parameter description was suggested to improve documentation accuracy.

- **SMEAR / DIFFUSION AMOUNT** (`ap.smearAmount`) — fixo em `0.2f` na UI.
- **DIFFUSER STAGES** (`ap.diffuserStages`) — fixo em `2` na UI.
- **DC BLOCK ENABLE** (`ap.dcBlockEnabled`) — não exposto na UI; como `updateBridge()` cria `AudioParams` novo, as republicações da UI reimpõem o default (`true`).
- **READ MODE** (`ap.readMode`) — não exposto na UI; as republicações da UI também reimpõem o default (`Accidental`).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

There is a critical mismatch between the ReadMode enum definitions in the bridge and the core. In parameter_bridge.h, Accidental is 0 and Orbit is 1. In orbit_delay_core.h, Orbit is 0 and AccidentalReverse is 1. Consequently, when the UI sends the default Accidental (0), the DSP core switches to Orbit (0). The documentation is correct about what the UI sends, but the system behavior is likely inverted relative to the labels.

- **BPM** (`tempoBpm` local da UI) — implementado e editável, usado para calcular delay em amostras.
- **FEEDBACK** (`ap.feedback`) — implementado e editável.
- **DIVISION** (`noteDivision` local da UI) — implementado e editável, usado com BPM.
- **OFFSET** (`ap.offsetSamples`) — implementado de forma indireta via `tempoDelaySamples * OFFSET`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The description of the OFFSET calculation is slightly ambiguous because it uses the term OFFSET both as the parameter name and as a factor in the formula (tempoDelaySamples * OFFSET). It would be clearer to specify that ap.offsetSamples is the resulting value sent to the bridge, calculated from a UI-side ratio. For example: - **OFFSET** (ap.offsetSamples) — implementado de forma indireta via tempoDelaySamples * ratio (onde ratio é o controle da UI).

- **OUTPUT GAIN** (`ap.outputGain`) — não exposto na UI.
- **SMEAR / DIFFUSION AMOUNT** (`ap.smearAmount`) — fixo em `0.2f` na UI.
- **DIFFUSER STAGES** (`ap.diffuserStages`) — fixo em `2` na UI.
- **DC BLOCK ENABLE** (`ap.dcBlockEnabled`) — não exposto na UI; como `updateBridge()` cria `AudioParams` novo, as republicações da UI reimpõem o default (`true`).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This observation highlights a default value inconsistency. AudioParams in parameter_bridge.h defaults dcBlockEnabled to true, while OrbitDelayCore in orbit_delay_core.h defaults it to false. This causes the UI to override the DSP's intended default state upon the first publication. Aligning these defaults would ensure more predictable behavior.

Comment on lines +28 to +29
- **TEMPO BPM** (`setTempoBpm`) — existe no core, mas a app usa cálculo local de `offsetSamples`.
- **NOTE DIVISION** (`setNoteDivision`) — existe no core, mas a app usa cálculo local de `offsetSamples`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The core already implements setTempoBpm and setNoteDivision with internal smoothing and sample-rate awareness. By calculating offsetSamples locally in the UI, the application bypasses this logic, which can lead to inconsistencies if the UI and Core use different sample rate assumptions or rounding. Consider routing BPM and Division directly to the core in the future UI rework.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant