Repository navigation
Receive E1.31 multicast, and number E1.31 from universe 1 #232
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
e749d2b
310ddfd
24f1ba2
73bf5e6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -85,7 +85,7 @@ Adding `ParlioLedDriver` (round 2 of 4) was mostly *subtraction* from the LCD dr | |
|
|
||
| The first audio-reactive capability: `AudioModule` (a SystemModule Peripheral) reads an INMP441 I²S mic and publishes an `AudioFrame` (level + 16-band spectrum + peak) that `AudioVolumeEffect`/`AudioSpectrumEffect` consume. | ||
|
|
||
| - **Two seams, everything else host-tested.** Only the I²S read and the FFT *kernel* sit behind the platform boundary (`i2s_std` + esp-dsp's float `dsps_fft2r_fc32`). All signal math (DC strip, RMS, Hann window, magnitude→16-band log map) is header-only domain code. The desktop `audioFft` stub is a real naive O(n²) DFT, so the whole pipeline runs in CI on synth sines. esp-dsp float (not fixed-point) is right on an FPU chip. | ||
| - **One seam, everything else host-tested.** Only the I²S read sits behind the platform boundary (`i2s_std`). All signal math (DC strip, RMS, the third-octave filter bank, the sixteen-band map) is header-only domain code, so the whole pipeline runs in CI on synthesized sines. Float maths is right on an FPU chip. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use American English spelling. Replace As per coding guidelines: American English spelling applies to documentation.
|
||
| - **Effects reach the producer via `AudioModule::latestFrame()` (a static accessor), not a boot setter**, because an audio effect can be added through the UI after boot and a setter only wired the boot instance. The active mic registers in `setup()`, clears in `teardown()`, returns a static silent frame when there's no mic. | ||
| - **Two hardware-only bugs, now pinned:** a missing `registerType<AudioModule>` made `create(...)->markWiredByCode()` deref null and boot-loop; the I²S read blocked the tick ~7.7 ms at a 20 ms timeout (fixed to non-blocking + a cross-tick sample accumulator, dropping to ~400 µs). The INMP441 is on the **left** I²S slot here (right reads empty), the first bench suspect when level floors with sound present. | ||
| - **Shipped the manual core; the adaptive conditioner was prototyped and removed.** Auto noise-floor + AGC + smoothing needs tuning in a *quiet* room; the dev environment (a campground van with strong varying low-frequency rumble) was the adversarial worst case that kept it from settling. Land the manual core, treat adaptive auto-tuning as its own increment, tune it where the noise floor is real-quiet. Also: `level` is overall RMS (independent of the FFT), don't derive it from the bands or it stops fluctuating with volume. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,6 @@ | ||
| # MoonLive: the language roadmap | ||
|
|
||
| [MoonLive](../explanation/architecture/moonlive.md) is the engine as built (grammar, IR, codegen), and [power-functions.md](../moonmodules/light/power-functions.md) is the builtin surface it calls into. This analysis is the ordered plan for closing the gap between them: which language features to add next, and why that order. Every limit quoted was measured against the shipped compiler, not read off the source. The steps and the code cap are two backlog items, both listed in [MoonLive language and catalog](https://github.com/MoonModules/MoonLight/issues/221). | ||
| [MoonLive](../explanation/architecture/moonlive.md) is the engine as built (grammar, IR, codegen), and [power-functions.md](../moonmodules/light/power-functions.md) is the builtin surface it calls into. This analysis is the ordered plan for closing the gap between them: which language features to add next, and why that order. Every limit quoted was measured against the shipped compiler, not read off the source. The steps and the code cap are two backlog items, both listed in [issue #221](https://github.com/MoonModules/MoonLight/issues/221). | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use the standard spelling Replace Static analysis reports this spelling issue.
|
||
|
|
||
| ## What this is for | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -78,7 +78,7 @@ Zephyr fundamentals check out. **C++20 is a supported language standard** (`CONF | |
| | mDNS, hostname, `httpRequest` | Zephyr mDNS responder, sockets | With effort / easy respectively, given IP | | ||
| | OTA (`http_fetch_to_ota`, `otaBegin`, `otaWrite`, `otaEnd`) | MCUboot + mcumgr/SMP (BLE or serial DFU), or hand-rolled HTTP-to-slot given IP | **With effort**: a different but standard mechanism; the seam's status-buffer contract is implementable | | ||
| | Improv provisioning (UART) | USB CDC-ACM on 52840; **Improv-BLE** is the natural transport on this family | **With effort**: note Improv's BLE variant fits nRF better than the serial one, but that's a new transport in our Improv module, more than a platform stub | | ||
| | Audio in (`audioMicInit`), FFT | nRF **PDM** peripheral (built for MEMS mics) or I2S RX; CMSIS-DSP `arm_rfft` | **Easy-to-moderate**: arguably nicer than ESP32 (PDM is purpose-built); `audioFft` maps to the textbook CMSIS kernel | | ||
| | Audio in (`audioMicInit`) | nRF **PDM** peripheral (built for MEMS mics) or I2S RX | **Easy-to-moderate**: arguably nicer than ESP32 (PDM is purpose-built); the bands are domain code, so only the read is ported | | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Describe the complete audio platform seam. The platform contract includes
|
||
| | `i2cScan`, filesystem (`fs*`) | Zephyr `i2c`, **LittleFS** | **Easy**: LittleFS is the same fs ESP32 uses | | ||
| | IR (`irRead`) | No RMT-RX equivalent; GPIOTE + timer capture | **Bespoke effort**: low priority, can stub false like desktop | | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Link to a rendered process or its source.
On GitHub, these links open
docs/moonwalk.md, which contains an empty map container rather than the process steps. The other new process links have the same problem. Link to the published MoonWalk page or the relevant stage files. (raw.githubusercontent.com)