Genes
This project was concerned mainly in the production of unique and reproducible number-sequence driven sound from the manipulation of genetic algorithms and mathematics, geared towards the production of simple, interactive sound installation software. Although not original, I wanted the project to be simple, give reasonable results, be quick to develop and be easy to use and reproduce. A cgi version was also written to enable users to produce and down load their own sounds from their own sample data using a web server.
At its very simplest, this project is a perl script, some input data and csound (csound is a publicly available sound generator available for use on several platforms). It is capable of producing two very different sound outputs; reproducible white noise soundscape of a predetermined length and a more 'ambient' style sound of various lengths using doppler shift instruments. The sound 'score' for each of these sound types are produced in two different ways. The csound instruments that i have used are publicly available. In the case of the doppler effect instrument I duplicated the right-left channel instrument to give a left-right channel movement instrument.
general operation
Input data is sampled and a number sequence is produced. This number sequence is manipulated to be in bounds for sound generator input and written to a file. The sound generator is invoked using the generated number sequence and a known set of sound generator instruments. The number sequences correlate to instruments within bounds that i have defined as schemes. Using a simplistic subroutine system, the input sequences are manipulated on a per-scheme basis. As the schemes are modular, they are simply reproduced and manipulated in a non-destructive way with a minimum of recoding between coding. This decreases the overhead of trying out new sounds and combinations. The sound is generated and written to the file-system as a 'wav' file.
Variation on this techniques are explained below, for each type.
type one
Type one generation follows the following procedure; input from external source (email message) transformed into a number sequence using a digest hash. This digest hash yields a sequence of twenty two characters from which numbers can be generated, then which can then be manipulated into giving correctly bounded input values for various instruments.
This hash will look something like this.
bhTyE96BwzKr9Ki11wzfuw znLwpKaqdQWghG8JvWn3hA
Rh+o3RBP3YcdyTZd2TCTYA c/OdF+95rBjYllwUGxy+4A
gQUbzCzxvt83giSwqT4odw UMhAgFjh7fg1DDyWikyldA
gQUbzCzxvt83giSwqT4odw RFVWNyQ6MO2EQrTibOA2Yw
MgywIaTjw0DnEggxkd8CEQ RFVWNyQ6MO2EQrTibOA2Yw
M12LKMUJHxUwcStly4Hk9w vVuVPFzXI0GobosAtWlrvA
gQUbzCzxvt83giSwqT4odw RFVWNyQ6MO2EQrTibOA2Yw
qbfT6xrzq6I3CGQwuRVWEw RFVWNyQ6MO2EQrTibOA2Yw
00GDmQj5GGUz9VudjLZGRQ nX65hHPqumLWifPAt5DChw
+zNzWHOfqkvO9M8J9/V1Tw ZLRhMRLGnW2OcT4cQ4tSAQ
The duplication that is apparent is a result of line duplication. The longer the message, the more of these sequences will be produced. After manipulation a file is produced with contents that will be similar to this.
i2 0 10 9800 9800
i2 1.25 . 9800 9800
i2 2 10 8400 8398
i2 3.25 . 8400 8398
i2 4 10 6900 6896
i2 5.25 . 6900 6896
i2 6 10 5400 5394
i2 7.25 . 5400 5394
i2 8 10 11900 11892
i2 9.25 . 11900 11892
i2 10 10 7500 7490
i2 11.25 . 7500 7490
i2 12 10 5700 5688
i2 13.25 . 5700 5688
i2 14 10 10500 10486
i2 15.25 . 10500 10486
i2 16 10 4900 4884
i2 17.25 . 4900 4884
i2 18 10 12200 12182
i2 19.25 . 12200 12182
i2 20 10 11700 11680
i2 21.25 . 11700 11680
i2 22 10 0 -22
i2 23.25 . 0 -22
This is the score and includes details for an instrument and the input data to 'play' this instrument. Building up layers of instruments and sounds defines each dataset individually.
type two
Type two number sequence generation relies on a genetic algorithm used to predict gene dominance. At the end of a certain number of generations, statistics are derived on dominance per generation, generations taken to achieve generation dominance and a derived value attained when achieving dominance. By manipulating the number of generations evaluated and the number of values sampled, a fixed upper and lower number of families can be derived.
A series of generations will give an about like this.
family
generation
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
00 00|00|34|00|56|00|00|00|00|00|00|00|00|47|00|00|37|00|00|43|00|00|00|00|00|00|00|00|00|00|00|51|
01 00|00|00|00|00|00|00|00|33|00|00|00|00|00|52|00|00|00|46|00|00|00|46|00|00|00|00|00|00|00|00|00|
02 00|00|00|00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|48|38|50|00|
03 00|00|58|00|00|00|44|00|00|00|00|00|00|00|00|54|00|00|00|00|00|00|00|36|44|00|00|00|00|00|00|00|
04 00|00|00|00|00|00|43|00|46|00|00|00|00|00|00|00|00|00|00|36|00|00|39|00|00|00|00|58|00|00|00|00|
05 00|00|00|00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|48|38|50|00|
06 00|00|00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|00|00|00|46|00|00|00|53|00|00|00|00|00|00|37|
07 00|00|00|00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|48|38|50|00|
08 00|00|00|00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|48|38|50|00|
09 51|57|00|00|00|00|00|00|00|00|00|37|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|
10 51|57|00|00|00|00|00|00|00|00|00|37|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|
11 51|57|00|00|00|00|00|00|00|00|00|37|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|
12 51|57|00|00|00|00|00|00|00|00|00|37|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|
13 00|00|00|00|00|00|00|57|00|48|00|00|00|00|00|00|00|00|37|00|00|00|00|00|41|00|41|49|57|00|00|00|
14 00|00|00|00|00|00|00|00|00|39|00|00|00|00|38|00|00|00|00|00|00|43|00|46|00|41|00|00|00|00|00|47|
15 00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|48|00|00|43|00|00|00|00|00|00|00|44|40|00|00|
16 54|00|00|00|00|00|00|00|00|52|48|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|
17 00|00|00|00|41|00|00|00|00|00|00|00|00|00|36|00|00|00|00|00|48|00|00|00|00|00|00|00|00|38|00|00|
18 38|00|00|00|00|00|00|00|00|00|00|55|00|41|00|00|00|00|33|00|00|00|00|00|00|52|00|00|00|00|00|00|
19 00|00|00|00|00|48|00|37|00|00|42|00|00|00|00|00|00|00|00|00|00|58|00|00|00|00|46|00|00|00|00|00|
20 00|00|00|00|00|48|00|37|00|00|42|00|00|00|00|00|00|00|00|00|00|58|00|00|00|00|46|00|00|00|00|00|
21 00|00|00|00|00|48|00|37|00|00|42|00|00|00|00|00|00|00|00|00|00|58|00|00|00|00|46|00|00|00|00|00|
22 00|00|00|00|00|48|00|37|00|00|42|00|00|00|00|00|00|00|00|00|00|58|00|00|00|00|46|00|00|00|00|00|
23 00|00|00|00|00|48|00|37|00|00|42|00|00|00|00|00|00|00|00|00|00|58|00|00|00|00|46|00|00|00|00|00|
24 00|00|00|00|00|48|00|37|00|00|42|00|00|00|00|00|00|00|00|00|00|58|00|00|00|00|46|00|00|00|00|00|
25 00|00|45|00|00|34|00|41|00|00|49|38|00|00|36|00|53|00|00|00|35|00|00|50|00|00|00|39|00|00|00|00|
26 00|00|00|00|00|00|46|00|00|33|00|00|00|00|00|00|00|53|00|00|00|00|00|00|00|00|34|00|55|00|00|00|
27 00|00|00|00|00|00|00|00|00|00|00|00|43|00|00|42|00|00|00|44|52|00|00|00|00|00|00|00|53|00|00|00|
28 00|00|57|00|00|00|00|00|00|47|00|00|00|00|00|00|00|00|00|00|41|52|00|00|00|00|00|00|00|00|00|00|
29 00|00|57|00|00|00|00|00|00|47|00|00|00|00|00|00|00|00|00|00|41|52|00|00|00|00|00|00|00|00|00|00|
30 00|00|57|00|00|00|00|00|00|47|00|00|00|00|00|00|00|00|00|00|41|52|00|00|00|00|00|00|00|00|00|00|
31 00|00|00|00|00|00|00|00|00|00|00|37|00|00|00|00|00|00|00|00|00|52|00|00|00|00|00|00|00|00|00|51|
32 00|00|57|00|00|00|00|00|00|47|00|00|00|00|00|00|00|00|00|00|41|52|00|00|00|00|00|00|00|00|00|00|
33 00|00|57|00|00|00|00|00|00|47|00|00|00|00|00|00|00|00|00|00|41|52|00|00|00|00|00|00|00|00|00|00|
34 00|00|00|00|00|00|00|00|00|00|00|00|00|57|00|00|57|39|00|00|33|35|00|00|00|37|00|00|00|45|56|57|
35 00|00|57|00|00|00|00|00|00|47|00|00|00|00|00|00|00|00|00|00|41|52|00|00|00|00|00|00|00|00|00|00|
36 00|00|57|00|00|00|00|00|00|47|00|00|00|00|00|00|00|00|00|00|41|52|00|00|00|00|00|00|00|00|00|00|
37 00|00|57|00|00|00|00|00|00|47|00|00|00|00|00|00|00|00|00|00|41|52|00|00|00|00|00|00|00|00|00|00|
38 00|58|00|00|35|00|00|00|00|00|46|00|00|00|00|00|00|00|00|42|00|43|38|00|00|00|00|00|00|00|00|00|
39 00|00|00|00|00|55|53|00|00|00|57|00|00|00|00|00|00|00|00|00|00|35|00|36|00|00|00|00|00|00|00|00|
40 00|00|00|00|00|50|00|00|00|38|40|56|00|00|00|00|00|48|46|00|00|00|00|00|00|00|00|00|00|00|00|00|
Gene Sample 1
Gene Sample 1
Gene Sample 1
Gene Sample 2
Gene Sample 2
Gene Sample 2
Gene Sample 3
Gene Sample 3
Gene Sample 3