Repository navigation
Add Chaosforge module - #1
Merged
Merged
Conversation
A fifth module (apps/att), built on the shared shell, core and VCV layer. Two generators each integrate one of twelve published chaotic systems (Lorenz, Rössler, Thomas, Chua, Halvorsen, Chen, Burke-Shaw, Aizawa, Dadras, Sprott B/C, Finance) and send two of their three state variables to a pair of jacks: OUT 1/2 from A, OUT 3/4 from B. Two outputs from one orbit are related but never equal, which is the thing a pair of LFOs cannot do. - SPEED is a multiplier on the rate each system was catalogued at, so 1.00x means comparable motion whichever system is selected. A fixed 1 ms module step drives an RK4 integrator whose own step follows SPEED; ATT_MAX_SUBSTEPS bounds the work and lets accuracy degrade rather than letting time slow down. - COUPLE is diffusive coupling in normalised units, taking the two orbits from unrelated through entrained to locked. - Output scaling is a measured 0.2/99.8 percentile window per axis, with RANGE > AUTO tracking the orbit's own window once the constants have been moved off their published values. - The home screen is a live XY plot per generator, sampled on the orbit's clock so the figure covers the same arc at any speed. - IN 1 does RESET / RESET A / RESET B / FREEZE (level-driven, so a gate holds every output at its exact voltage). Two systems needed their published defaults changed: Thomas at b=0.19 and the Finance system at a=0.001 are limit cycles, not attractors, so both generators stayed locked together and the module had two outputs instead of four. Their defaults now sit in genuinely chaotic bands (Thomas 0.05, Finance 0.95) with re-measured output windows; docs/Design.md carries the Lyapunov table and the method. Also adds forgevcv::EngineFloatQuantity and FloatSlider — ChaosForge is the first module with continuous parameters, and rounding a range 0.05 wide to integers leaves one usable value. Tests: 27 native cases (attractors + generator) and a two-instance VCV isolation test. The isolation test caught a real bug: constrain() is a macro that evaluates its argument three times, and randomize.hpp had a PRNG call inside one, so roughly one roll in fifty stored a parameter outside its own legal range.
- Increased speed range from 0.01×–16× to 0.01×–100× across documentation and code. - Adjusted display refresh rate to 30 fps for smoother animations. - Modified speed settings in default parameters for better performance. - Enhanced drawing logic to reflect live output instead of buffered points, improving visual fluidity. - Changed preset startup parameters
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.
No description provided.