From 4c9704c71d30c1891b802b87ede73857c17fcd31 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Sun, 20 Jul 2025 14:09:30 -0700 Subject: [PATCH] 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. --- doc/4-instrument/bifurcator.md | 29 ++--------------------------- doc/7-systems/bifurcator.md | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 28 deletions(-) diff --git a/doc/4-instrument/bifurcator.md b/doc/4-instrument/bifurcator.md index 11516a511..ac96d0f4e 100644 --- a/doc/4-instrument/bifurcator.md +++ b/doc/4-instrument/bifurcator.md @@ -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. diff --git a/doc/7-systems/bifurcator.md b/doc/7-systems/bifurcator.md index df056f17d..f3bd78363 100644 --- a/doc/7-systems/bifurcator.md +++ b/doc/7-systems/bifurcator.md @@ -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: + + +$x_{n+1}=\lambda x_n (1-x_n)$ + + +_x__n_+1 = _λx__n_(1 - _x__n_) + +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