Nodes/ComfyUI-NoiseGen/πŸŒ€ True Chaos
ComfyUI Node

πŸŒ€ True Chaos

The Lorenz Attractor as an Audio Source β€” Math That Never Repeats

By eg0pr0xyΒ·Created about a year agoΒ·Updated about a year agoΒ· 1
πŸŒ€ True Chaos
  • audio_input
  • chaos_audio
  • chaos_report
β—„chaos_systemlorenzβ–Ί
β—„duration5.0β–Ί
β—„sample_rate44100β–Ί
β—„time_scale10.0β–Ί
β—„amplitude0.80β–Ί
β—„modulation_modeamplitudeβ–Ί
β—„chaos_intensity0.70β–Ί
β—„seed0β–Ί
β—„carrier_frequency440β–Ί
β—„initial_x1.00β–Ί
β—„initial_y1.00β–Ί
β—„initial_z1.00β–Ί
β—„chaos_parameter_a0.00β–Ί
β—„chaos_parameter_b0.00β–Ί
β—„chaos_parameter_c0.00β–Ί
β—„channels2β–Ί

Random noise is pseudo-random - give it the same seed and it replays exactly. TrueChaos is the pack's answer to that: it generates audio from actual chaotic systems - the Lorenz, Chua, RΓΆssler, HΓ©non, and Duffing attractors, plus a hybrid - numerically integrated so the output genuinely never repeats. It's the deepest rabbit hole in this pack, and also the one that sounds the least like anything else.

What it is

A chaos-system generator. You pick a chaos_system, and the node integrates that system's differential equations over time, producing a trajectory that it turns into sound. These are the classic nonlinear systems from chaos theory - the Lorenz "butterfly" attractor being the famous one - and their defining property is sensitive dependence on initial conditions: change initial_x by a hair and the entire trajectory diverges into something completely different.

The trajectory becomes audio through modulation_mode: amplitude (the chaos modulates the output's loudness), frequency (it bends the pitch - this is where you get the warped, theremin-like wailing), phase, ring_mod, or waveshape. carrier_frequency (default 440 Hz) sets the base tone for the frequency/phase modes. time_scale (0.1–1000) controls how fast the system evolves - a small value stretches the chaotic evolution across a long drone; large values make it flutter wildly. chaos_intensity (0–1) scales how much the chaos actually influences the sound.

How it works

Under the hood it's numerical integration - fourth-order Runge-Kutta per the README, with scipy's integrators available in the code - stepping the system's ODEs forward in time at your sample_rate. Each system has its own parameters (chaos_parameter_a/b/c, and the initial_x/y/z starting point) which you can override from their defaults. Two outputs come back: chaos_audio and a chaos_report STRING summarizing the system state.

The optional audio_input is the other path: instead of generating pure chaos, you feed it an existing audio signal and the chaos modulates it. That's the more musical use - your noise bed gets bent and warped by a genuinely unpredictable control signal rather than an LFO.

The inputs that matter

  • chaos_system - the personality. Lorenz is the all-rounder; Duffing is more periodic and tonal; HΓ©non is the spikier, more discrete one.
  • modulation_mode and chaos_intensity - how the chaos shows up. Start with amplitude at moderate intensity, then try frequency.
  • time_scale - the most dramatic knob in the node. Crank it and everything goes from glacial to frantic.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/eg0pr0xy/comfyui_noisegen.git
cd comfyui_noisegen
pip install -r requirements.txt

Windows embedded Python: ComfyUI\python_embeded\python.exe -m pip install -r requirements.txt. Or ComfyUI Manager, search "NoiseGen" / eg0pr0xy. No models, no keys.

Gotchas

The pack rule applies: don't skip the pip install (scipy at module load takes the whole pack down). Two TrueChaos-specific notes: first, integration at high sample rates over long durations with chaotic systems is heavier than plain noise generation, so don't be shocked if long renders take a few seconds. Second, if you set seed and the system still "sounds different" between runs, that's not a bug - that's the entire point. Chaos is sensitive to its initial conditions, and the system deliberately runs from state each time. If you want reproducible results, that's what the NoiseGenerator's seeded perlin is for. This one is for letting go.

Category🎡 NoiseGen/Generate

Inputs (17)

NameTypeDefaultDescription
chaos_systemCOMBOlorenz6 options: lorenz, chua, rossler, henon, duffing, hybrid
durationFLOAT5.00.1–300β€”
sample_rateCOMBO441006 options: 8000, 16000, 22050, 44100, 48000, 96000
time_scaleFLOAT10.00.1–1000Time scaling factor for chaos evolution
amplitudeFLOAT0.800–2β€”
modulation_modeCOMBOamplitude5 options: amplitude, frequency, phase, ring_mod, waveshape
chaos_intensityFLOAT0.700–1β€”
seedINT00–2147483647β€”
carrier_frequencyoptFLOAT44010–10000β€”
initial_xoptFLOAT1.00-10–10β€”
initial_yoptFLOAT1.00-10–10β€”
initial_zoptFLOAT1.00-10–10β€”
chaos_parameter_aoptFLOAT0.00-50–50β€”
chaos_parameter_boptFLOAT0.00-50–50β€”
chaos_parameter_coptFLOAT0.00-50–50β€”
channelsoptCOMBO22 options: 1, 2
audio_inputoptAUDIOOptional audio input for chaos modulation

Outputs (2)

NameTypeDescription
chaos_audioAUDIOβ€”
chaos_reportSTRINGβ€”