author: Sean Bechhofer (github.com/seanbechhofer) date: 2022-03-15 labels: gates, triggers, randomness
Strange Attractor is a source of chaotic modulation using systems of differential equations such as the Lorenz System:
https://en.wikipedia.org/wiki/Lorenz_system
Outputs 1, 2 and 3 are based on the x, y and z values generated by the attractor.
Outputs 4, 5 and 6 are gates based on the values of x, y and z and relationships between them.
Credits:
- The Europi hardware and firmware was designed by Allen Synthesis: https://github.com/Allen-Synthesis/EuroPi
-
digital_in: Pause motion when
HIGH
-
analog_in:
-
knob_1: Adjust speed
-
knob_2: Adjust threshold for triggers
-
button_1: Decrease output voltage range; change equation system
-
button_2: Increase output voltage range; change display
-
output_1: x
-
output_2: y
-
output_3: z
-
output_4: triggers/gates
-
output_5: triggers/gates
-
output_6: triggers/gates
Outputs 1-3 provide chaotic shifting voltages. Outputs 4-6 provide gates/triggers.
- Switch on
- Connect outputs to modules
- Enjoy randomness
- Knob 1 controls the speed. The sensitivity changes at noon, allowing for very slow or very fast modulation.
- Knob 2 adjusts the threshold used for triggers.
- Short presses on buttons 1/2 reduce/increase the max output voltage of the CV outputs, from 1V to 5V.
- Long press on button 1 changes the equation system
- Long press on button 2 changes the display between detail and graphical
- If the digital input is
HIGH
, change is paused.
The attractors can be used to desribe a point moving in 3-D space. The x, y, z coordinates are then be used to generate control voltages and triggers.
A selection of equation systems are available, currently including Lorzez, Rossler, Pan-X-Zhou and Rikitake -- see code for details. Each has a set of parameters and defaults.
On startup, code runs through a number of iterations in order to calculate the possible output ranges. This process takes around 30 seconds per system. This is then used to normalise x, y and z values to the range 0-100 for calculation of voltages on outputs 1, 2 and 3.
A system is then chosen at random.
Outputs 4, 5 and 6 are triggers, with 4 giving more frequent triggers
than 5 and 6. Output 4 takes the normalised value of output 1 and sets
it HIGH
if the integer portion is even. Output 5 is set high when
(y+z - 2*x) is above an (adjustable) threshold, similarly for
output 6 and (z+x - 2*y).
The display will show current values for outputs 1, 2, 3, speed,
threshold, voltage range, triggers 4, 5 and 6 when HIGH
and if the
movement is frozen.
A long press on button 1 changes the equation system. Note that this may cause a discontinuity in the x, y and z values.
A long press on button 2 toggles between a numerical and graphical display
If the digital input is set to HIGH
, the system will pause.