Skip to content

Latest commit

 

History

History
95 lines (69 loc) · 3.07 KB

strange_attractor.md

File metadata and controls

95 lines (69 loc) · 3.07 KB

EuroPi Strange Attractor.

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

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:

Controls

  • 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

Getting Started

Outputs 1-3 provide chaotic shifting voltages. Outputs 4-6 provide gates/triggers.

Basic Usage

  1. Switch on
  2. Connect outputs to modules
  3. Enjoy randomness

Controls

  1. Knob 1 controls the speed. The sensitivity changes at noon, allowing for very slow or very fast modulation.
  2. Knob 2 adjusts the threshold used for triggers.
  3. Short presses on buttons 1/2 reduce/increase the max output voltage of the CV outputs, from 1V to 5V.
  4. Long press on button 1 changes the equation system
  5. Long press on button 2 changes the display between detail and graphical
  6. If the digital input is HIGH, change is paused.

Details

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.