User:Arseniiv/Timbres: Difference between revisions

Arseniiv (talk | contribs)
Arseniiv (talk | contribs)
 
(4 intermediate revisions by the same user not shown)
Line 173: Line 173:
# its differences ''s''<sub>''n'' + 1</sub> − ''s''<sub>''n''</sub> are finitely many.
# its differences ''s''<sub>''n'' + 1</sub> − ''s''<sub>''n''</sub> are finitely many.


Let’s pick a finite alphabet {''A'', …} and for each letter ''L'' define its ''value'' [''L''], a positive real number so that:
We’ll work with those differences. Pick a finite alphabet {''A'', …} and for each letter ''L'' define its ''value'' [''L''], a positive real number so that:
* [''A''] = 1;
* [''A''] = 1;
* for each letter ''L'', there is a word ''L''<sub>1</sub>⋯''L''<sub>''n''</sub> such that its total value [''L''<sub>1</sub>] + … + [''L''<sub>''n''</sub>] = α ⋅ [''L''].
* for each letter ''L'', there is a word ''L''<sub>1</sub>⋯''L''<sub>''n''</sub> such that its total value [''L''<sub>1</sub>] + … + [''L''<sub>''n''</sub>] = α ⋅ [''L''].


Then let’s make a context-free [[Wikipedia:L-system]] over this alphabet. Its start word will be ''A'' and each of its production rules ''L'' ⟶ ''w'' should “scale by α”—satisfy [''w''] = α [''L'']. We also want to observe this L-system has a “left limit” in a sense that for each integer ''N'', there is an iteration of the system sharing a prefix of length ''N'' with every further iteration. Having that, we can construct a limiting word of the system as the unique word which shares prefixes of unbounded non-decreasing lengths with each iteration of the system.
So there is a way to scale each difference α times and break it into unscaled ones, and there is a way to start (''A''). We’re going to build a sequence of differences iteratively.
 
Let’s make a context-free [[Wikipedia:L-system]] over this alphabet. Its start word will be ''A'' and each of its production rules ''L'' ⟶ ''w'' should “scale by α”—satisfy [''w''] = α [''L''] (above, we guaranteed there are such ''w'' for each letter ''L''). We also want to observe this L-system has a “left limit” in the sense that for each integer ''N'', there is an iteration of the system sharing a prefix of length ''N'' with every further iteration. Having that, we can construct a limiting word of the system as the unique word which shares prefixes of unbounded non-decreasing lengths with each iteration of the system.


This limit ''ℓ'' is what we’re after. Take <math>s_n = \sum_{i=0}^n [\ell_n]</math>, that is, differences of ''s'' are the values of ℓ’s letters. By construction we see conditions (2) and (3) satisfied, and if (1) is not, we just divide all of ''s'' by ''s''<sub>0</sub>.
This limit ''ℓ'' is what we’re after. Take <math>s_n = \sum_{i=0}^n [\ell_n]</math>, that is, differences of ''s'' are the values of ℓ’s letters. By construction we see conditions (2) and (3) satisfied, and if (1) is not, we just divide all of ''s'' by ''s''<sub>0</sub>.
Line 207: Line 209:
If we find φ − 1 too small a difference, we can add a letter ''C'' with value [''C''] = φ, and apply to ''G'' once rules ''A'' ⟶ ''BA'', ''B'' ⟶ ''A'', and then, again once, ''A'' ⟶ ''C'', ''B'' ⟶ ''A'', and end up with ''ACCACACCACCACACCACACC''… This word doesn’t give us a set which is mapped into itself when multiplied by φ, but is close to that in a sense.
If we find φ − 1 too small a difference, we can add a letter ''C'' with value [''C''] = φ, and apply to ''G'' once rules ''A'' ⟶ ''BA'', ''B'' ⟶ ''A'', and then, again once, ''A'' ⟶ ''C'', ''B'' ⟶ ''A'', and end up with ''ACCACACCACCACACCACACC''… This word doesn’t give us a set which is mapped into itself when multiplied by φ, but is close to that in a sense.


One can also apply a stochastic ruleset ''A'' ⟶ (''AB'' or ''BA''), ''B'' ⟶ ''A'' to ''G'', except the first ''A'' which goes to ''AB'' to be sure the result starts with ''A''. We end up with a set of timbres which is, I believe, every possible one satisfying (1)…(3) for scaling by φ.
One can also apply a stochastic ruleset ''A'' ⟶ (''AB'' or ''BA''), ''B'' ⟶ ''A'' to ''G'', except the first ''A'' which goes to ''AB'' to be sure the result starts with ''A''. <s>We end up with a set of timbres which is, I believe, every possible one satisfying (1)…(3) for scaling by φ.</s>
 
We ''don’t'' end with a set of timbres which satisfy (2), but we will if we use this ruleset in a special way while generating the limit (not after). Namely, as is already typical, we replace the first ''A'' with ''AB'', then each iteration we’ll get a word which has a previous word as its prefix; and we need to pick a rule for each ''A'' in that prefix which was used beforehand. So we always apply ''A'' ⟶ ''AB'' to the first ''A'' in the word, we always apply a rule to the second ''A'' which we applied after we got a word where the second ''A'' appeared, and so on, and we only have freedom to pick which alternate rules to apply in the newly-generated suffix. That still allows for a countable set of variations of the limit word. Now, all these ''do'' satisfy (2) though it might be not as obvious as with the fully deterministic process.
 
===== Preserving the initial A =====
 
We can preserve the initial A in the string and also rarefy the timbre at the last step by two neat tricks. First, make our iterated ruleset be ''Å'' ⟶ ''ÅB'', ''A'' ⟶ (''AB'' or ''BA''), ''B'' ⟶ ''A''. ''Å'' is a pun for ''A''₀ and is preserved and marks the start, but all other ''A''s that get generated are normal. Then after generation we apply ''another'' “rarefying” ruleset ''Å'' ⟶ ''ÅB'', ''A'' ⟶ ''C'', ''B'' ⟶ ''A'' just once. No matter were rules stochastic or not, this approach gets us starting with ÅB which means partials 1, φ.


==== Silver timbres ====
==== Silver timbres ====
Line 220: Line 228:


Our new word is ''ACACAACACAACACACAACACAA''…
Our new word is ''ACACAACACAACACACAACACAA''…
We can apply ''A'' ⟶ (''AC'' or ''CA'') stochastically too (ensuring the first ''A'' is fixed, as above).