Reference RatioTap from the README, book, and comparison doc - #44
Merged
Conversation
The RatioTap relationship was documented entirely one-directionally: RatioTap's README carries the family diagram, the clock-topology decision rule, the bluetooth_bridge composition recipe, and a test-only submodule of this repo for golden cross-validation — while this repo never mentioned RatioTap (or DspTap) once outside header comments. Worse, two places actively sent readers elsewhere: the README's Limitations said "No 44.1 <-> 48 kHz conversion" with no pointer to the sibling built for exactly that, and the book's survey chapter recommended soxr/libsamplerate for genuine conversion, text that predates RatioTap shipping. - README: new "Position in the Tap family" section (reciprocal of RatioTap's diagram, which also finally explains the DspTap submodule), plus the clock-topology decision rule and the composition recipe; the Limitations bullet now redirects to it. - book/part0/two-crystals.md: the synchronous-resampler recommendation now names RatioTap alongside soxr/libsamplerate. - book/part5/scaling.md: new "A different rate on each side belongs to RatioTap" subsection under the Rates axis — the decision rule, the composed bridge numbers, and the cross-validation figures — with the runnable sibling-repo recipe appended to Verify it yourself. Prose, not a code walk: the working code is RatioTap's, and the book's include-anchor contract quotes only from this tree (a full chapter would require submoduling RatioTap back, creating a cycle against its test-only submodule of this repo). - docs/COMPARISON.md: the "put soxr/libsamplerate in the chain" guidance now includes RatioTap, keeping the book's paraphrase of it accurate. All figures quoted from RatioTap's README (v0.2): 160/147 and 147/160 ratio pair, -109/-99 dB cross-validation, bluetooth_bridge's 2.0 ms. Verified: pinned mdBook v0.4.40 builds the book with zero warnings/errors and the image-reference check passes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015nKdmj5kcJrD3yH8BnD3Yd
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
Adds the missing back-references to RatioTap: a "Position in the Tap family" section in the README (family diagram, clock-topology decision rule, composition recipe), a redirect in the Limitations bullet, a RatioTap mention where the book's survey chapter recommends synchronous resamplers, a new Part V subsection on the 44.1 ↔ 48 composition, and one line in
docs/COMPARISON.mdso the book's paraphrase of it stays accurate.Why
The relationship between the two rate converters was documented entirely one-directionally. RatioTap's README carries the family diagram, the "boundaries are identity" delegation to this library, the
bluetooth_bridgecomposition example, and a test-only submodule of this repo for golden cross-validation — while this repo never mentioned RatioTap (or DspTap) outside header comments. Two places actively sent readers elsewhere: the README's Limitations ended at "No 44.1 ↔ 48 kHz conversion" with no pointer to the sibling built for exactly that, andbook/src/part0/two-crystals.mdrecommended soxr/libsamplerate for genuine conversion — text that predates RatioTap shipping.The Part V addition is deliberately prose rather than a code walk, and says so in the text: the book's include-anchor contract quotes only from this tree, and including RatioTap source would require submoduling it back — a cycle against its test-only submodule of this repo. The working recipe stays RatioTap's; this book contributes the decision rule (which engine applies is a property of the clock topology, never inferred from a float ratio).
Verification
bookjob gate.ci.ymlpasses.bluetooth_bridge's +200 ppm / 997 Hz / 2.0 ms; the ±1.5 ×max_deviation_ppmservo clamp was verified againstinclude/srt/pi_servo.h.bluetooth_bridge) was checked against RatioTap'sexamples/CMakeLists.txttarget name but not executed here.Notes for the reviewer
docs/COMPARISON.mdedit is the one file beyond the README/book scope, touched only becausetwo-crystals.mdcharacterizes what that document says; updating one without the other would make the book's paraphrase false.🤖 Generated with Claude Code
https://claude.ai/code/session_015nKdmj5kcJrD3yH8BnD3Yd
Generated by Claude Code