Bifurcator docs rework, draft 1.

This isn't a final form, but an interim draft to test both LaTeX and HTML methods of displaying the equation and such.
This commit is contained in:
Electric Keet 2025-07-20 14:09:30 -07:00
parent a03fd4d85a
commit 4c9704c71d
2 changed files with 35 additions and 28 deletions

View file

@ -1,6 +1,6 @@
# Bifurcator instrument editor
Bifurcator instrument editor consists of these macros:
the Bifurcator instrument editor consists of these macros:
- **Volume**: volume sequence.
- **Arpeggio**: pitch sequence.
@ -10,30 +10,5 @@ Bifurcator instrument editor consists of these macros:
- **Pitch**: fine pitch.
- **Load Value**: changes the current output value.
## audio generation description
not all combinations of Parameter and Load Value generate tones. for a description of how these affect the sound, see the [Bifurcator](../7-systems/bifurcator.md) system page.
Bifurcator uses logistic map iterations for sound generation.
basically it runs the following function over and over:
```
r = (1 + (p / 65536)) * 2
x = (r * x) * (1 - x)
```
where `x` is the current output value and `p` is the "parameter".
by varying the parameter, the value of x may change drastically, producing a variety of sounds.
the higher the parameter, the more "chaos" is present, effectively yielding noise.
the default parameter is `47360`, which results in a square wave.
if the parameter is set to 0, there's no sound at all.
as the parameter approaches 32768, a decaying square wave is produced.
the square wave stops decaying past 32768 and becomes louder until the parameter hits ~47496 (`r = 1 + sqrt(6)`).
a second square wave one octave lower then starts appearing, until the parameter reaches ~51443 (`r ≈ 3.56995`). this is where chaos begins.
anything higher results in a total mess.
however, at ~59914 (`r = 1 + sqrt(8)`) you can hear a 33% pulse wave.
## the importance of loading the value
you must load a value that isn't 0 in order to get sound. otherwise the function will always output 0.

View file

@ -1,6 +1,38 @@
# Bifurcator
this is a fantasy sound chip which uses a unique sound generation method: logistic map iterations.
this is a fantasy sound chip which uses a unique sound generation method: [logistic map](https://en.wikipedia.org/wiki/Logistic_map) iterations.
## usage
the core of the Bifurcator is the (iterative) logistic map function:
<!-- LaTeX -->
$x_{n+1}=\lambda x_n (1-x_n)$
<!-- MD/HTML -->
_x_<sub>_n_+1</sub> = _λx_<sub>_n_</sub>(1 - _x_<sub>_n_</sub>)
which when iterated across $2\leq\lambda\leq4$ produces this graph:
_{{ IMAGE HERE will look sort of like [this](https://en.wikipedia.org/wiki/Logistic_map#/media/File:Logistic_Bifurcation_map_High_Resolution.png) but matching house style }}_
in Bifurcator the current output (and initial "load value") ranges from 0 to 65535, which maps directly to _x_ in the range 0.0 to 1.0. the parameter ranges from 0 to 65535, which maps directly to _λ_ in the range 2.0 to 4.0.
### load value
the first value of $x$ is set with the **load value**. it must be set to a non-zero value, otherwise the next iteration would also be zero... and the next one too... and so on, generating silence. default is 1.
different load values will cause different "attack" sounds before the iterations stabilize (if they do).
### parameter
by varying the parameter, the values of $x$ may change drastically, producing a variety of sounds. the higher the parameter, the more "chaos" is present, effectively yielding noise.
for most parameter values below 32768 the output converges to a single value (effectively no sound).
above 32768 the output starts to oscillate. from 32768 to 47496, it bifurcates to oscillate between between 2 values, generating a square wave. from 47497 to 51433, it bifurcates again and becomes a period of 4 values. beyond that, the system rapidly becomes chaotic (noise). there's an "island of stability" starting at around parameter value 59914 where the output oscillates between 3 values, then bifurcates from there.
the default parameter value is 47360.
## effects