Skip to content

xmacex/population-crowth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

population crowth

Logistic map for monome crow.

The dynamical system $x_n=rx_{x−1}(1−x_{−1})$ known as the logistic map. It oscillates between two points when $3 \leq r \leq 3.44949$, four and more points when $3.44949 \leq r \leq 3.56995$ and is chaotic when $3.56995 \lt r \lt 4$.

The function is a real classic in study of systems, and connected to early climate research and populations (of corvids too). I believe that is something crow people can appreciate. From Wikipedia:

The map was initially utilized by Edward Lorenz in the 1960s to showcase properties of irregular solutions in climate systems. It was popularized in a 1976 paper by the biologist Robert May in part as a discrete-time demographic model analogous to the logistic equation written down by Pierre François Verhulst.

This script exposes the interesting range of $r$ from 3 to 4, set via crow input 2. There are two versions of the script, population-crowth.lua and population-crowth-pp.lua. The former is a more normal version. The latter is an extended version where $r$ is exposed to patch programming.

Documentation

This is a druid script, ie. a script running directly on crow and not on norns. Run or upload to crow with druid, or use bowering from norns as I do.

The more straightforward version

In file population-crowth.lua

→ 1 clock
→ 2 r
  1 value x_n     →
  2 value x_{n-1} →
  3 value x_{n-2} →
  4 value x_{n-3} →

Give clock to crow input 1, and set $r$ with input 2. Output 1 is the current value of the logistic map, and the three older values cascade from output 1 towards 4 before falling off, kind of like a shift register.

The patch programmable version

In file population-crowth-pp.lua you will find an extended, patch-programmable version of the logistic map. It implements the function $x_n=r \Delta(x_{x−1}) (1−\Delta(x_{−1}))$, where $\Delta$ is your Eurorack system.

→ 1 x_n
→ 2 r
  1 value x_n           →

Self-patch output1 to input 1. Set $r$ with input 2. Output 1 is the current value of the logistic map. If you patch output 1 directly to input 1, it will essentially have no effect (besides some noise and lower resolution) and it's the familiar logistic map. But in this version you can route the current value of the function $x_n$ back onto it's next iteration via slew limiters, attenuverters, sequencers, offsets, filters, CV recorders, granular processing, &c.

This version runs at 137 BPM, a tempo I like for techno music. You can change it by setting clock.tempo from druid or clock.clock.tempo from norns, and there is a clock divider public variable public.clockdiv you can set.

There are a few public variables if you are into that sort of thing. bowering visualizes then.

Inspired really by KlangauKöln’s Logistic Equation module. Also thank you Wikipedia.

About

Logistic map for monome crow.

Topics

Resources

License

Stars

Watchers

Forks

Languages