Repository navigation
book: the synchronous engines, and the framing for three - #68
Merged
Merged
Conversation
Six chapters in the book's form, header by header with the excerpts included live by anchor: the ratio as a type and the charter (ratio.h), the Nyquist design and the profiles (DspTap's nyquist.h, design.h), the two machines of stage.h, chains and the coverage matrix (DspTap's chain.h, chain.h), the fixed-point ladder per stage with the two lifted Q15 limits and the host-versus-target table traced to the designer's mirror branches, and the proof system, the C ABI and the levers measured and declined. Each closes with the commands that back it. Anchors added to ratio.h, stage.h and chain.h (comment-only; the DspTap ones came with tap/DspTap#56). SUMMARY and the introduction gain the part; book-pages.yml rebuilds on rational/include and the submodule pointer; the README's workload count reads fourteen, the table's. mdbook 0.4.40 builds the book with no warnings. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015VR1VC4SDGxHZQQsQvPBaA
Four chapters on bridge in the book's form, the excerpts included live from its headers' anchors: the direction as a type and the rate scale K, the spec-relaxation argument (nothing folds below 20.1 kHz going down) and the profile ladder with its pinned counts (the 38-not-40 quirk), the per-branch normalization that kills the f_out / L spurs; the compile-time schedule and the phase table without the ASRC's blend and extra row, the symmetry halving and why its quantization is canonical over the stored half; the converter's contract and the three measured codegen levers (the superblock walk, the committed trip counts, the halving's per-target inlining gate) with the construction-share finding; the three proof legs, the pinned-eps cross-validation relocated from the brief, the Q15 pairing, bluetooth_bridge run and measured (1.93 ms, +200.1 ppm, 72.8 dB), the C ABI and the ratchet. The rational chapters move from part6/ to part7/ so the parts read in the order the engines were built and the machinery was inherited; Part V's bridge section now points at Part VI instead of saying the code lives in another repository. The introduction describes both. mdbook 0.4.40 builds the book with no warnings. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015VR1VC4SDGxHZQQsQvPBaA
…dices, two figures The title is now the family's (The Story of a Sample Rate Converter Family); the introduction opens on three converters built on one substrate by one method, keeps the honesty clause true for the two new figures, and says where the epilogue sits. The epilogue moves after Part VII so the book closes on the letter (its chapter count reads thirty-one). Part 0 ends with the rule the family runs on: the three engines as the three clock topologies, the lookup that none of them has. Part VI opens by pointing back at it. Appendix A gains section 19, the five C++ decisions the synchronous engines added in the log's own format (the ratio as a type, if constexpr selecting the machine, exact rationals over doubles, quantize once and let symmetry carry the rest, the per-target noinline with its numbers); the glossary gains eight entries (commutator, coverage matrix, design divisor, L-th-band filter, mirrored phase, rate scale, structural zero, superblock); the bibliography gains Mintzer 1982 and Vaidyanathan 1993. Two figures, generated by scripts/book_figures.py from the sources the text cites: alias-zone.svg, bridge's rate arithmetic drawn to scale (the 20.1–22.05 kHz landing zone, Part VI chapter 1), and coverage-matrix.svg, the 14 x 14 matrix at economy read from the rational engine's own generator with the 38 dipping rows marked (Part VII chapter 4). The script takes figure names so the two can be re-rendered without the trace tool. Two attributed epigraphs are replaced with sourced ones (Dijkstra EWD 498; Pike, Notes on Programming in C). mdbook 0.4.40 builds the book with no warnings; CI's image check passes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015VR1VC4SDGxHZQQsQvPBaA
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
Three commits.
1. Part VI — The bridge engine (
book/src/part6/, four chapters, about 6,400 words):bluetooth_bridgerun on this tree (locked at +200.1 ppm, 997.000 Hz, 72.8 dB, 1.93 ms), the C ABI and the ten-workload ratchet.2. Part VII — The rational engine (
book/src/part7/, six chapters, about 12,000 words): the ratio as a type, the Nyquist design, the two machines ofstage.h, chains and the 182-row matrix, the fixed-point ladder with the two lifted Q15 limits and the host-versus-target table traced to the designer, and the proof system, C ABI and levers.3. The framing for three engines:
(in_hz, out_hz)lookup. Part VI opens by pointing back at it.if constexprselecting the machine; exact rationals over doubles; quantize once and let symmetry carry the rest; the per-targetnoinlinewith its numbers).scripts/book_figures.py, generated from the sources the text cites:alias-zone.svg(bridge's rate arithmetic drawn to scale: the 20.1–22.05 kHz landing zone) andcoverage-matrix.svg(the 14 × 14 matrix ateconomy, read from therationalengine's own generator, the 38 dipping rows marked). The script now takes figure names so these can be re-rendered without the trace tool.Also: anchors (comment-only) in
rational'sratio.h,stage.h,chain.h;book-pages.ymlrebuilds onrational/include/**and the submodule pointer;rational/README.md's workload count reads fourteen.Why
The family plan listed the book's engine chapters as follow-up work since the migration. Once the two parts existed, the book's own framing — its title, its opening sentence, its appendices and its honesty clause about figures — described one engine; the third commit makes it describe three. The parts read in the order the machinery was inherited:
bridgefirst, thenrational.Verification
{{#include}}resolves; CI's image-reference check passes with the two new SVGs.Notes for the reviewer
nyquist.h's contract agree.🤖 Generated with Claude Code
https://claude.ai/code/session_015VR1VC4SDGxHZQQsQvPBaA