Home > Projects > Statistical Audio Synthesis
Statistical Audio Synthesis
While I was working on the statistical image processing functionality in The Mirror's Surface Breaks (see Statistical Greyscale Images), I began to wonder if the same statistical functions could provide an interesting mechanism for digital audio synthesis, and/or effects processing.
I've only begun to scratch the surface, but my experience so far is that it is possible to obtain very surprising and complex results by running sets of sine waves through the standard statistical functions. The result is shifting, changing pad-type sounds that evolve in dramatic and surprising ways over time.
Background
I love synthesizers, and electronic music/sound in general. However, one of the most frequent weaknesses for all of them is sound which lacks the timbral variety of acoustic (or electroacoustic) instruments. There are certainly ways to reduce this factor, but in my experience they tend to be limited (e.g. the use of LFOs in subtractive synthesis, which introduce change over time, but usually in a very predictable manner) or time-consuming to make use of (e.g. additive synthesis). Adding noise or random values isn't enough for me - I've always been interested in ways of making synthesizers as responsive to the method in which they're played as a violin or guitar, such as physical-modeling synthesis.
For illustrative purposes, here is a comparison of the frequency spectrum of a number of synthesized and physical instruments:
Spectrum Comparison | ||||||||
|
|
|||||||
Frequency spectrum comparisons of selected musical instruments and electronic music. |
The physical instruments all have one thing in common - their sound is extremely imprecise compared to the conventional synthetic sounds. It is basically a "smear" around the frequencies that make up the sound. There is no practical mathematical predictability.
In extreme cases (as shown in the second image), this can result in entire pieces of music where sections could have been copied-and-pasted around. Don't get me wrong - I love all three of the example tracks that I used there - but how much better might they be if they were played using synthesizers that introduced a bit more "living" behaviour into the sound?
Synthesis Using Statistical Functions
The three examples at the top of the first image were created using the experimental synthesis utility from this article, and you can see that the first one in particular is much closer to that "physical instrument behaviour" than any of the conventionally-synthesized sounds. The second two display some repetition, but each iteration is at least subtly changed. If they had been created using an instrument with realtime modulation capabilities (velocity/aftertouch/breath/bite/knobs/sliders/pedals/et cetera, controlling aspects like number of additional sine waves around the fundamental tone, as well as their separation from it, the range of small random walk pitch variations that are introduced, and so on), I suspect they would be even more like the spectrum of the acoustic and electroacoustic instruments.
I haven't had time to learn how to program a realtime software synthesizer, so my work to date has been using a simple command-line sound generator, which is available at the bottom of this page.
The mechanism for this synthesis method is conceptually very simple - start with a number of sine waves, but instead of adding them together (additive synthesis), use their value at each sample as the set of input values for the (mostly) standard statistical functions - minimum, maximum, median, range, average deviation, standard deviation, variance, skewness, and kurtosis. Taking the average (and then normalizing it) was functionally equivalent to adding the waves together (and then normalizing them) in every test I performed, which was a bit of a surprise to me.
The result is often sound that evolves over time (in both subtle and dramatic ways), and often has a pleasing (to my ears) set of frequencies, even without filtering. The most successful line of experimentation that I've performed has been using sine waves spaced very closely in frequency (within a fraction of 1 Hz of the center frequency).
For those who aren't familiar with the various statistical functions, here are a few reference illustrations:
Here is a dramatic illustration of the effect that changes in the spacing of the waves can have:
Waveform Comparison | ||||||||||
|
|
|
||||||||
The change in waveform as the 38 sine waves used to generate an example sound increase in distance from each other. From the top: 0.000001 Hz, 0.0001 Hz, 0.001 Hz, 0.01 Hz, 0.1 Hz distance between each wave. |
The parameter sets for reproducing that set of output are available as a zip file at the bottom of this page.
So far, I haven't found any information about other people who have used this method. I suspect this is at least partly because most current synthesis methods were developed when computational power was not nearly as great as it is today. Sum and difference of two waveforms are a lot faster to calculate, for example, than finding the median value out of 32+ waves (which requires a sort operation). I suppose it's also possible that it's because it's some sort of bizarre dead-end, but given the utility that statistical functions have been put to in the satellite imaging field, I have to imagine this is something that's at least useful to keep in the synthesizer "bag of tricks", assuming it's not there already.
Audio Examples
The most successful line of experimentation that I've performed was using sine waves spaced very closely in frequency as the input, with the best variation being when several of the sine waves were gradually pitch-shifted. In particular, if you download the first file at the end of this page and listen to any of this type that are based on the median function, you may need to look outside to make sure you haven't been transported through time to one of the unimaginably huge aircraft formations of World War II, or that one of your neighbours isn't playing an electric guitar with an E-Bow at high volume. Some of the other variations (such as the kurtosis file included in the "2011-02-21" set) may convince you that a gargantuan, utterly featureless black monolith is teaching proto-human apes how to use primitive weapons in the next room.
There are now numerous other sets of samples available at the bottom of this page - see the individual descriptions there.
The Experimental Synthesis Utility
I've included a barebones .NET 2.0 command-line utility at the bottom of this page which can be used for experimental purposes (it's the same tool I used for all of the audio samples on this page). It works in an offline mode, accepting parameters and then generating output in the form of 48KHz mono WAV files. Like an "art car" or the x86 instruction set, it is very obviously something that grew in an organic fashion, with various new features being bolted or glued on with no regard for creating a sleek, unified final product.
It seems to work fine under Mono - I've tested it on openSUSE and encountered no problems, so hopefully it can work for any MacOS X users with Intel chips as well, as long as they install the Mac port of Mono. Just prepend mono to the beginning of any of the example commands below (mono StatisticalAudio.exe -l 30 -w 1 -shc "65.3944:::65.3944:::0.320584229870937:::0.0:::15", et cetera).
This is not a comprehensive tool for performing synthesis of this type. Some features which would be nice to have, but are not included:
...however, it will probably be the last version that I release, because I feel that the main avenue of exploration from this point should be in terms of realtime control. I don't have time at the moment to learn how to write a StudioFactory plugin, or any other type of plugin, for that matter. If no one else is interested in doing so, I may find the time sooner or later, but it will probably be awhile. I believe the existing version is good enough for people who are interested to determine if it's a synthesis method they want to use or not.
No matter which mode the utility is used in, it will always generate ten output files in the working directory (Output-Average.wav, Output-AverageDeviation.wav, Output-Kurtosis.wav, Output-Maximum.wav, Output-Median.wav, Output-Minimum.wav, Output-Range.wav, Output-Skewness.wav, Output-StandardDeviation.wav, and Output-Variance.wav). It will overwrite existing files of these names without prompting, so be careful. It will also crash if any of the files have a write lock on them from another process.
Syntax
There are four major ways that the 0.3 release of the utility can be called: "sine wave", "sine wave (hertz)", "sine wave (hertz - complex)", and "WAV file input". Only the latter two are recommended - the first two are preserved for legacy compatibility, or in the case of the second, for users who want to squeeze as many sine waves into a single command line as the command line buffer will hold. Therefore, the last two will be described first.
Parameters That Apply To All Modes
Regardless of the mode being used, the -l [number] parameter always specifies the length (in seconds) of sound that should be generated, and the -w [number] parameter specifies the window size that should be used for each statistical sample. For example, StatisticalAudio.exe -w 1 -l 30 would specify a window size of 1, and a length of 30 seconds. I recommend using a window size of 1, because higher values generally only act as a low-pass filter. For more information on the "window size" concept, see Statistical Greyscale Images.
Parameters That Apply To Both Sine Wave (Hertz) Modes
Both the "simple" and "complex" sine wave (hertz) modes accept the following optional parameters:
-rw [number] specifies the amount that each sine wave's pitch is allowed to perform a "random walk" at each sample. When set to extremely small values (e.g. 0.0001), this allows the sound to evolve in even more interesting ways over time, without wandering far enough to sound out-of-tune. I believe this is more "organic sounding" than simply adding or subtracting a different random value to the intended tone at each sample. In the current version of the utility, the units for this value are not hertz, but larger values are still equal to larger differences in pitch.[1]
-rwg [number] specifies a "gravity" which pulls the pitch of each sine wave back towards its intended value at each sample. It is specified as a percentage (from 0.0 - 1.0) of whatever the current distance is between the intended and current values. For example, if the intended pitch was 100 Hz, and it had "walked" to 101 Hz, then a gravity of 0.1 would cause it to be reduced to 100.9 Hz at the next sample.
-rws [number] specifies the seed value for the pseudorandom number generator. Using a fixed seed instead of initializing based on the start time (or other factors) allows reproducible/deterministic results. If this value is not explicitly specified, it defaults to 26354.
Sine Wave (Hertz - Complex)
This mode allows an arbitrary number of component sine waves to be specified, using this syntax:
StatisticalAudio.exe -l [window size] -l [length in seconds] -shc "[wave 1 parameters]" "[wave 2 parameters]" ... "[wave n parameters]"
...where the wave parameters are defined using this syntax:
[starting frequency in hertz]:::[ending frequency in hertz]:::[initial phase angle, in multiples of 2 pi radians]:::[pitch slide start time in seconds]:::[pitch slide end time in seconds]
...for example, "65.3944:::65.3944:::0.0:::0.0:::15" would specify a constant pitch of 65.3944 hertz (a low C note), with an initial phase angle of 0 degrees. The pitch slide parameters are irrelevant in this case because the frequency is constant, but just to be safe, make sure they are within the range of the length specified using the -l parameter.
"65.3944:::130.7888:::0.0:::5:::15" would specify a tone that began at 65.3944 hertz, remained there for five seconds, then increased over the next ten seconds (until the overall fifteen second mark had been reached) to double its original pitch.
Whatever your position is on the "humans can't hear differences in phase!" debate (see "A Side Discussion on Phase", below), it should be clear after even trivial experimentation that changing the relative phase of the component sine waves can have a very audible effect on the result, especially with statistical functions other than average, which is why this mode requires that the initial phase angle be explicitly specified.
WAV File Input
This mode causes the software to read 48 KHz, uncompressed, mono WAV files as the input instead of synthesizing from scratch. If any of the WAV files are shorter than the length specified by the -l parameter, silence is used to pad the end to the required length. The syntax is:
StatisticalAudio.exe -w [window size] -l [length in seconds] -f [list of input WAV files]
For example, to synthesize 4 minutes of sound with a statistical window size of 1, from 5 WAV files:
StatisticalAudio.exe -w 1 -l 240 -f "somefile1.wav" "somefile2.wav" "somefile3.wav" "somefile4.wav" "somefile5.wav"
Using this utility with complex source sounds (e.g. speech, music) is likely to just result in an "Imperial Probe Droid" effect. If you want that, try recording yourself saying "third to the fifth", make a bunch of copies of it, do the pitch-shifting thing suggested above, and use that as the input (or download the "Imperial Probe Droid Construction Kit" at the bottom of this page). It will most certainly generate a code that is not in use by the Rebel Alliance. Some mp3 output samples are provided too - in the example zip file, the "10pc-Minus_Biased-Output-StandardDeviation" variation is the one that sounds closest to the "authentic" version to me.
Sine Wave (Hertz)
This mode is probably the most confusing one available (because of the optional arguments), so I do not encourage its use. However, the syntax is:
StatisticalAudio.exe -l [window size] -l [length in seconds] -sh [wave 1 starting frequency] [wave 2 starting frequency] ... [wave n starting frequency]
Optional arguments:
-ps [number] specifies that over the course of each wave, its pitch should shift from the initial value to that value multiplied by this number.
-psn [number] specifies that as each wave is processed, the -ps value will have this number added to it. For example, if -ps 2 -psn 1 is specified, then the first wave's ending pitch will be twice its starting value, the second will be three times its starting value, etc.
-mod [integer] will cause the pitch shift to only occur when the modulus condition is met. For example, if -mod 2 is specified, then only every other wave will have its ending pitch modified.
-mult will cause the value specified by -ps to be multiplied by -psn at each step, rather than adding the two together.
-mirror - when -mod is specified, adding this flag will cause the wave numbers which do not meet the modulus condition to be shifted in the opposite direction instead of not being shifted.
Sine Wave (Legacy)
This mode works like the sine wave (hertz) mode (minus the optional parameters), with one exception - the frequencies are not specified in hertz, but as the "divisor" value in this function:
sample[i] = (float)Math.Sin(((float)i / divisor));
...for example:
StatisticalAudio.exe -w 1 -l 240 -s 80.00 80.01 80.02 80.03 80.04 80.05 79.99 79.98 79.97 79.96 79.95 80.10 77.63
Example Synthesis Configurations (0.3 Syntax)
The Theatre Patrons Are Paying Attention To The Sound
To recreate the "TH-esque" example requires two runs of the utility, with the results of the first run panned left and the other right.
First:
StatisticalAudio.exe -w 1 -l 30 -shc -rws 26354 -rw 0.001 -rwg 0.03 "130.813:::65.4064:::0.279713601960394:::3.1:::18.1" "130.813:::261.6256:::0.664428919213686:::3.1:::18.1" "130.813:::523.2512:::0.119864501062377:::3.1:::18.1" "163.51625:::130.8128:::0.870896464719888:::3.2:::18.2" "163.51625:::523.2512:::0.528277101631008:::3.2:::18.2" "163.51625:::1046.5024:::0.933625289345403:::3.2:::18.2" "196.2195:::196.2192:::0.877826018006895:::3.3:::18.3" "196.2195:::784.8768:::0.570843324682234:::3.3:::18.3" "196.2195:::1569.7536:::0.564185943651252:::3.3:::18.3" "228.92275:::261.6256:::0.948447783377302:::3.4:::18.4" "228.92275:::1046.5024:::0.350747385896515:::3.4:::18.4" "228.92275:::2093.0048:::0.86195747577625:::3.4:::18.4" "261.626:::327.032:::0.142162479795577:::3.5:::18.5" "261.626:::1308.128:::0.967099174837723:::3.5:::18.5" "261.626:::2616.256:::0.225163589034003:::3.5:::18.5" "294.32925:::392.4384:::0.914434176026294:::3.6:::18.6" "294.32925:::1569.7536:::0.793341655444272:::3.6:::18.6" "294.32925:::3139.5072:::0.908096465077995:::3.6:::18.6" "327.0325:::457.8448:::0.499864450329147:::3.7:::18.7" "327.0325:::1831.3792:::0.786541638643976:::3.7:::18.7" "327.0325:::3662.7584:::0.991846350105593:::3.7:::18.7" "359.73575:::523.2512:::0.494890569891176:::3.8:::18.8" "359.73575:::2093.0048:::0.420943478044715:::3.8:::18.8" "359.73575:::4186.0096:::0.762536863761459:::3.8:::18.8" "130.813:::65.4064:::0.279713601960394:::3.1:::18.1" "130.813:::261.6256:::0.664428919213686:::3.1:::18.1" "130.813:::523.2512:::0.119864501062377:::3.1:::18.1" "163.51625:::130.8128:::0.870896464719888:::3.2:::18.2" "163.51625:::523.2512:::0.528277101631008:::3.2:::18.2" "163.51625:::1046.5024:::0.933625289345403:::3.2:::18.2" "196.2195:::196.2192:::0.877826018006895:::3.3:::18.3" "196.2195:::784.8768:::0.570843324682234:::3.3:::18.3" "196.2195:::1569.7536:::0.564185943651252:::3.3:::18.3" "228.92275:::261.6256:::0.948447783377302:::3.4:::18.4" "228.92275:::1046.5024:::0.350747385896515:::3.4:::18.4" "228.92275:::2093.0048:::0.86195747577625:::3.4:::18.4" "261.626:::327.032:::0.142162479795577:::3.5:::18.5" "261.626:::1308.128:::0.967099174837723:::3.5:::18.5" "261.626:::2616.256:::0.225163589034003:::3.5:::18.5" "294.32925:::392.4384:::0.914434176026294:::3.6:::18.6" "294.32925:::1569.7536:::0.793341655444272:::3.6:::18.6" "294.32925:::3139.5072:::0.908096465077995:::3.6:::18.6" "327.0325:::457.8448:::0.499864450329147:::3.7:::18.7" "327.0325:::1831.3792:::0.786541638643976:::3.7:::18.7" "327.0325:::3662.7584:::0.991846350105593:::3.7:::18.7" "359.73575:::523.2512:::0.494890569891176:::3.8:::18.8" "359.73575:::2093.0048:::0.420943478044715:::3.8:::18.8" "359.73575:::4186.0096:::0.762536863761459:::3.8:::18.8" "392.439:::588.6576:::0.355942085240959:::4:::19" "392.439:::2354.6304:::0.0224683582930183:::4:::19" "392.439:::4709.2608:::0.200003274569974:::4:::19" "130.813:::654.064:::0.19287957030475:::4.1:::19.1" "130.813:::2616.256:::0.210868800918536:::4.1:::19.1" "130.813:::5232.512:::0.966818735660565:::4.1:::19.1" "163.51625:::719.4704:::0.0987254929686685:::4.2:::19.2" "163.51625:::2877.8816:::0.337884310826351:::4.2:::19.2" "163.51625:::5755.7632:::0.687542367059352:::4.2:::19.2" "196.2195:::784.8768:::0.0344224535650943:::4.3:::19.3" "196.2195:::3139.5072:::0.554407628179784:::4.3:::19.3" "196.2195:::6279.0144:::0.890353754984246:::4.3:::19.3" "228.92275:::850.2832:::0.809537858778622:::4.4:::19.4" "228.92275:::3401.1328:::0.888437347649102:::4.4:::19.4" "228.92275:::6802.2656:::0.717579631689793:::4.4:::19.4" "261.626:::915.6896:::0.872942770432692:::4.5:::19.5" "261.626:::3662.7584:::0.469730648117189:::4.5:::19.5" "261.626:::7325.5168:::0.275649627341658:::4.5:::19.5" "294.32925:::981.096:::0.157690245393197:::4.6:::19.6" "294.32925:::3924.384:::0.567651461491758:::4.6:::19.6" "294.32925:::7848.768:::0.325014614755974:::4.6:::19.6" "327.0325:::1046.5024:::0.880175818541158:::4.7:::19.7" "327.0325:::4186.0096:::0.980982923981008:::4.7:::19.7" "327.0325:::8372.0192:::0.625730423296816:::4.7:::19.7" "359.73575:::1111.9088:::0.647058577150283:::4.8:::19.8" "359.73575:::4447.6352:::0.128081894407803:::4.8:::19.8" "359.73575:::8895.2704:::0.0460372710346544:::4.8:::19.8" "392.439:::1177.3152:::0.751191545856317:::4.9:::19.9" "392.439:::4709.2608:::0.996366180029553:::4.9:::19.9" "392.439:::9418.5216:::0.53518655871888:::4.9:::19.9" "130.813:::1242.7216:::0.508276590744317:::5.1:::20.1" "130.813:::4970.8864:::0.0412953806733705:::5.1:::20.1" "130.813:::9941.7728:::0.425677278861222:::5.1:::20.1" "163.51625:::1308.128:::0.253770073422587:::5.2:::20.2" "163.51625:::5232.512:::0.270196735832664:::5.2:::20.2" "163.51625:::10465.024:::0.100345920670333:::5.2:::20.2" "196.2195:::1373.5344:::0.0172857837787612:::5.3:::20.3" "196.2195:::5494.1376:::0.904725656336818:::5.3:::20.3" "196.2195:::10988.2752:::0.009158270504805:::5.3:::20.3" "228.92275:::1438.9408:::0.440226432864083:::5.4:::20.4" "228.92275:::5755.7632:::0.264936127572177:::5.4:::20.4" "228.92275:::11511.5264:::0.158251342586566:::5.4:::20.4" "261.626:::1504.3472:::0.215920427872973:::5.5:::20.5" "261.626:::6017.3888:::0.423578079251095:::5.5:::20.5" "261.626:::12034.7776:::0.387347927776833:::5.5:::20.5" "294.32925:::1569.7536:::0.824040894830163:::5.6:::20.6" "294.32925:::6279.0144:::0.491474184810076:::5.6:::20.6" "294.32925:::12558.0288:::0.107740218845998:::5.6:::20.6"
Second:
StatisticalAudio.exe -w 1 -l 30 -shc -rws 1911 -rw 0.001 -rwg 0.03 "130.813:::65.4064:::0.620605661266227:::3.1:::18.1" "130.813:::261.6256:::0.100342723286811:::3.1:::18.1" "130.813:::523.2512:::0.758771158358853:::3.1:::18.1" "163.51625:::130.8128:::0.437290565351623:::3.2:::18.2" "163.51625:::523.2512:::0.249134277759038:::3.2:::18.2" "163.51625:::1046.5024:::0.167035220772672:::3.2:::18.2" "196.2195:::196.2192:::0.456300248923127:::3.3:::18.3" "196.2195:::784.8768:::0.569670361881603:::3.3:::18.3" "196.2195:::1569.7536:::0.786489958354906:::3.3:::18.3" "228.92275:::261.6256:::0.589095315854617:::3.4:::18.4" "228.92275:::1046.5024:::0.281715900846784:::3.4:::18.4" "228.92275:::2093.0048:::0.558291979093562:::3.4:::18.4" "261.626:::327.032:::0.11928838999619:::3.5:::18.5" "261.626:::1308.128:::0.64134606151763:::3.5:::18.5" "261.626:::2616.256:::0.208229038245233:::3.5:::18.5" "294.32925:::392.4384:::0.141163341351526:::3.6:::18.6" "294.32925:::1569.7536:::0.599813155331946:::3.6:::18.6" "294.32925:::3139.5072:::0.805324469676246:::3.6:::18.6" "327.0325:::457.8448:::0.0407930923067268:::3.7:::18.7" "327.0325:::1831.3792:::0.563221307588132:::3.7:::18.7" "327.0325:::3662.7584:::0.809136843121474:::3.7:::18.7" "359.73575:::523.2512:::0.647063698908517:::3.8:::18.8" "359.73575:::2093.0048:::0.779265963575476:::3.8:::18.8" "359.73575:::4186.0096:::0.313677420201782:::3.8:::18.8" "130.813:::65.4064:::0.620605661266227:::3.1:::18.1" "130.813:::261.6256:::0.100342723286811:::3.1:::18.1" "130.813:::523.2512:::0.758771158358853:::3.1:::18.1" "163.51625:::130.8128:::0.437290565351623:::3.2:::18.2" "163.51625:::523.2512:::0.249134277759038:::3.2:::18.2" "163.51625:::1046.5024:::0.167035220772672:::3.2:::18.2" "196.2195:::196.2192:::0.456300248923127:::3.3:::18.3" "196.2195:::784.8768:::0.569670361881603:::3.3:::18.3" "196.2195:::1569.7536:::0.786489958354906:::3.3:::18.3" "228.92275:::261.6256:::0.589095315854617:::3.4:::18.4" "228.92275:::1046.5024:::0.281715900846784:::3.4:::18.4" "228.92275:::2093.0048:::0.558291979093562:::3.4:::18.4" "261.626:::327.032:::0.11928838999619:::3.5:::18.5" "261.626:::1308.128:::0.64134606151763:::3.5:::18.5" "261.626:::2616.256:::0.208229038245233:::3.5:::18.5" "294.32925:::392.4384:::0.141163341351526:::3.6:::18.6" "294.32925:::1569.7536:::0.599813155331946:::3.6:::18.6" "294.32925:::3139.5072:::0.805324469676246:::3.6:::18.6" "327.0325:::457.8448:::0.0407930923067268:::3.7:::18.7" "327.0325:::1831.3792:::0.563221307588132:::3.7:::18.7" "327.0325:::3662.7584:::0.809136843121474:::3.7:::18.7" "359.73575:::523.2512:::0.647063698908517:::3.8:::18.8" "359.73575:::2093.0048:::0.779265963575476:::3.8:::18.8" "359.73575:::4186.0096:::0.313677420201782:::3.8:::18.8" "392.439:::588.6576:::0.267328995995028:::4:::19" "392.439:::2354.6304:::0.155930797895257:::4:::19" "392.439:::4709.2608:::0.364221687961964:::4:::19" "130.813:::654.064:::0.431119213924133:::4.1:::19.1" "130.813:::2616.256:::0.730475371199688:::4.1:::19.1" "130.813:::5232.512:::0.356829663573822:::4.1:::19.1" "163.51625:::719.4704:::0.495844410379908:::4.2:::19.2" "163.51625:::2877.8816:::0.695534932855016:::4.2:::19.2" "163.51625:::5755.7632:::0.563373537228217:::4.2:::19.2" "196.2195:::784.8768:::0.33466010782701:::4.3:::19.3" "196.2195:::3139.5072:::0.912375970380969:::4.3:::19.3" "196.2195:::6279.0144:::0.883475554765849:::4.3:::19.3" "228.92275:::850.2832:::0.0688283146394202:::4.4:::19.4" "228.92275:::3401.1328:::0.556835427825929:::4.4:::19.4" "228.92275:::6802.2656:::0.748998954027977:::4.4:::19.4" "261.626:::915.6896:::0.882779324495477:::4.5:::19.5" "261.626:::3662.7584:::0.990272574944911:::4.5:::19.5" "261.626:::7325.5168:::0.39685631461288:::4.5:::19.5" "294.32925:::981.096:::0.873049382636768:::4.6:::19.6" "294.32925:::3924.384:::0.772761046377955:::4.6:::19.6" "294.32925:::7848.768:::0.541110450144978:::4.6:::19.6" "327.0325:::1046.5024:::0.952163266436036:::4.7:::19.7" "327.0325:::4186.0096:::0.655233637860517:::4.7:::19.7" "327.0325:::8372.0192:::0.0115186075664528:::4.7:::19.7" "359.73575:::1111.9088:::0.824130488956657:::4.8:::19.8" "359.73575:::4447.6352:::0.0577805527737132:::4.8:::19.8" "359.73575:::8895.2704:::0.703439418287931:::4.8:::19.8" "392.439:::1177.3152:::0.903634967668911:::4.9:::19.9" "392.439:::4709.2608:::0.751827973379463:::4.9:::19.9" "392.439:::9418.5216:::0.625991612944034:::4.9:::19.9" "130.813:::1242.7216:::0.011855233045029:::5.1:::20.1" "130.813:::4970.8864:::0.165945648660164:::5.1:::20.1" "130.813:::9941.7728:::0.510584415141735:::5.1:::20.1" "163.51625:::1308.128:::0.613279772193634:::5.2:::20.2" "163.51625:::5232.512:::0.134804346569646:::5.2:::20.2" "163.51625:::10465.024:::0.662466308066324:::5.2:::20.2" "196.2195:::1373.5344:::0.722551648870485:::5.3:::20.3" "196.2195:::5494.1376:::0.698751807203207:::5.3:::20.3" "196.2195:::10988.2752:::0.727861213485729:::5.3:::20.3" "228.92275:::1438.9408:::0.544990647352337:::5.4:::20.4" "228.92275:::5755.7632:::0.553882285879886:::5.4:::20.4" "228.92275:::11511.5264:::0.668731492829844:::5.4:::20.4" "261.626:::1504.3472:::0.924418073102521:::5.5:::20.5" "261.626:::6017.3888:::0.970925898859057:::5.5:::20.5" "261.626:::12034.7776:::0.999957825234676:::5.5:::20.5" "294.32925:::1569.7536:::0.0119355610650813:::5.6:::20.6" "294.32925:::6279.0144:::0.0517680950641051:::5.6:::20.6" "294.32925:::12558.0288:::0.43121188334725:::5.6:::20.6"
Power Up the UFO!
Creating the sound files which are the survivors of a disintegrated solar system is another example that requires a manual stereo mix.
First:
StatisticalAudio.exe -w 1 -l 60 -shc -rw 0.001 -rwg 0.05 "55:::13.75:::0:::0:::60" "55:::220:::0:::0:::60" "110:::13.75:::0:::0:::60" "110:::3520:::0:::0:::60" "110:::5.15625:::0:::0:::60" "110:::21120:::0:::0:::60" "110:::1.71875:::0:::0:::60" "110:::112640:::0:::0:::60" "110:::0.537109375:::0:::0:::60" "110:::563200:::0:::0:::60" "220:::0.322265625:::0:::0:::60" "220:::5406720:::0:::0:::60"
Second:
StatisticalAudio.exe -w 1 -l 60 -shc -rws 1911 -rw 0.001 -rwg 0.05 "55:::13.75:::0:::0:::60" "55:::220:::0:::0:::60" "110:::13.75:::0:::0:::60" "110:::3520:::0:::0:::60" "110:::5.15625:::0:::0:::60" "110:::21120:::0:::0:::60" "110:::1.71875:::0:::0:::60" "110:::112640:::0:::0:::60" "110:::0.537109375:::0:::0:::60" "110:::563200:::0:::0:::60" "220:::0.322265625:::0:::0:::60" "220:::5406720:::0:::0:::60"
The "UFO" sound is also one of my favourites because it has what I like to think of as a "Missile Command spectrum":
Power Up the Lightcycles!
StatisticalAudio.exe -w 1 -l 60 -psn 0.5 -mod 2 -mirror -mult -sh 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0
The spectrum of this sound shows off how this synthesis method is at least vaguely like the "smear" attribute of sounds produced by physical instruments. It is easy to see the basic pitches that are present, but they are "blurry" and punctuated by unexpected noise and other features:
Imperial Probe Droid Transmission
Using the "Imperial Probe Droid Construction Kit" files, some examples are:
StatisticalAudio.exe -w 1 -l 3 -f TTTF-M10.wav TTTF-M20.wav TTTF-M30.wav TTTF-P10.wav TTTF-P20.wav TTTF-P30.wav TTTF-M01.wav TTTF-M02.wav TTTF-M03.wav TTTF-P01.wav TTTF-P02.wav TTTF-P03.wav TTTF-M00d01.wav TTTF-M00d02.wav TTTF-M00d03.wav TTTF-M00d04.wav TTTF-M00d05.wav TTTF-M00d06.wav TTTF-M00d07.wav TTTF-M00d08.wav TTTF-M00d09.wav TTTF-P00d01.wav TTTF-P00d02.wav TTTF-P00d03.wav TTTF-P00d04.wav TTTF-P00d05.wav TTTF-P00d06.wav TTTF-P00d07.wav TTTF-P00d08.wav TTTF-P00d09.wav
StatisticalAudio.exe -w 1 -l 3 -f TTTF-M10.wav TTTF-M20.wav TTTF-M30.wav TTTF-P10.wav TTTF-P20.wav TTTF-P30.wav TTTF-M01.wav TTTF-M02.wav TTTF-M03.wav TTTF-P01.wav TTTF-P02.wav TTTF-P03.wav
StatisticalAudio.exe -w 1 -l 3 -f TTTF-M10.wav TTTF-M20.wav TTTF-M30.wav TTTF-P10.wav TTTF-P20.wav TTTF-P30.wav
Spectral Dive-Bombers 3
StatisticalAudio.exe -w 1 -l 240 -shc -rw 0.001 -rwg 0.05 "261.4816:::59.4276363636364:::0.906263846466074:::5:::200" "261.4836:::62.258:::0.56981767672077:::5:::200" "261.4856:::65.3714:::0.440764838124478:::5:::200" "261.4876:::68.8125263157895:::0.274028115516767:::5:::200" "261.4896:::72.636:::0.701474445110288:::5:::200" "261.4916:::76.9092941176471:::0.200391769005299:::5:::200" "522.9872:::31.1301904761905:::0.419570870380198:::5:::200" "522.9912:::31.8897073170732:::0.630339661625993:::5:::200" "522.9952:::32.6872:::0.629483516229864:::5:::200" "522.9992:::33.5255897435897:::0.403273575414556:::5:::200" "523.0032:::34.4081052631579:::0.190900517665984:::5:::200" "523.0072:::35.3383243243243:::0.25408370901309:::5:::200" "130.7528:::130.7528:::0.758425169362917:::5:::200" "130.7538:::130.7538:::0.348784288735987:::5:::200" "130.7548:::130.7548:::0.636864708634417:::5:::200" "130.7558:::130.7558:::0.0946747664771321:::5:::200" "130.7568:::130.7568:::0.625926122656803:::5:::200" "130.7578:::130.7578:::0.177067432077656:::5:::200" "130.7588:::130.7588:::0.915309336169906:::5:::200" "130.7598:::130.7598:::0.0177247600926036:::5:::200" "130.7608:::130.7608:::0.992735569162986:::5:::200" "130.7618:::130.7618:::0.559564727707157:::5:::200" "130.7628:::130.7628:::0.184660474345977:::5:::200" "130.7638:::130.7638:::0.74393729990747:::5:::200" "130.7648:::130.7648:::0.75845835660251:::5:::200" "130.7658:::130.7658:::0.00512691160454226:::5:::200" "130.7668:::130.7668:::0.921599850733848:::5:::200" "130.7678:::130.7678:::0.0353081387587091:::5:::200" "130.7688:::130.7688:::0.0501011335135857:::5:::200" "130.7698:::130.7698:::0.555405584631012:::5:::200" "130.7708:::130.7708:::0.170593160577451:::5:::200" "130.7718:::130.7718:::0.911350427223879:::5:::200" "130.7728:::130.7728:::0.665095840130508:::5:::200" "130.7738:::130.7738:::0.566922830222004:::5:::200" "130.7748:::130.7748:::0.489514429605076:::5:::200" "130.7758:::130.7758:::0.419543296821126:::5:::200" "130.7768:::130.7768:::0.160449483730412:::5:::200" "130.7778:::130.7778:::0.78592712793998:::5:::200" "130.7788:::130.7788:::0.0442771200932497:::5:::200" "130.7798:::130.7798:::0.371147007470834:::5:::200" "130.7808:::130.7808:::0.282021138232123:::5:::200" "130.7818:::130.7818:::0.785016329121698:::5:::200" "130.7828:::130.7828:::0.565887269612143:::5:::200" "130.7838:::130.7838:::0.416153164759529:::5:::200" "130.7848:::130.7848:::0.330605251169279:::5:::200" "130.7858:::130.7858:::0.837656977596903:::5:::200" "130.7868:::130.7868:::0.529106729106745:::5:::200" "130.7878:::130.7878:::0.6345200281416:::5:::200"
Spectral Dive-Bombers 5
StatisticalAudio.exe -w 1 -l 240 -shc -rw 0.001 -rwg 0.05 "130.7168:::29.7083636363636:::0.910811184745357:::5:::200" "130.7188:::31.1235238095238:::0.933171920399436:::5:::200" "130.7208:::32.6802:::0.917785675652736:::5:::200" "130.7228:::34.4007368421053:::0.319699072776265:::5:::200" "130.7248:::36.3124444444444:::0.97932780985082:::5:::200" "130.7268:::38.4490588235294:::0.371448402654887:::5:::200" "261.4576:::15.5629523809524:::0.897930747323824:::5:::200" "261.4616:::15.9427804878049:::0.00257791111098893:::5:::200" "261.4656:::16.3416:::0.743335699607342:::5:::200" "261.4696:::16.7608717948718:::0.290908549290755:::5:::200" "261.4736:::17.2022105263158:::0.752973043141789:::5:::200" "261.4776:::17.6674054054054:::0.253108103801647:::5:::200" "65.3704:::65.3704:::0.130867638874462:::5:::200" "65.3714:::65.3714:::0.226731001076276:::5:::200" "65.3724:::65.3724:::0.0718582082922961:::5:::200" "65.3734:::65.3734:::0.986948547968262:::5:::200" "65.3744:::65.3744:::0.916914051491622:::5:::200" "65.3754:::65.3754:::0.499705290962871:::5:::200" "65.3764:::65.3764:::0.21680584028342:::5:::200" "65.3774:::65.3774:::0.224876659958679:::5:::200" "65.3784:::65.3784:::0.48200242786188:::5:::200" "65.3794:::65.3794:::0.129682295967402:::5:::200" "65.3804:::65.3804:::0.967079780368187:::5:::200" "65.3814:::65.3814:::0.128721671598241:::5:::200" "65.3824:::65.3824:::0.426317464445773:::5:::200" "65.3834:::65.3834:::0.218833258509958:::5:::200" "65.3844:::65.3844:::0.274784209363034:::5:::200" "65.3854:::65.3854:::0.339416630957661:::5:::200" "65.3864:::65.3864:::0.268359610974932:::5:::200" "65.3874:::65.3874:::0.347038082250958:::5:::200" "65.3884:::65.3884:::0.346935909148477:::5:::200" "65.3894:::65.3894:::0.373981244563144:::5:::200" "65.3904:::65.3904:::0.49796461052386:::5:::200" "65.3914:::65.3914:::0.953393354073501:::5:::200" "65.3924:::65.3924:::0.703002887517106:::5:::200" "65.3934:::65.3934:::0.871140153471857:::5:::200" "130.7888:::29.7247272727273:::0.28283470750663:::5:::200" "130.7908:::31.1406666666667:::0.759084677098667:::5:::200" "130.7928:::32.6982:::0.282491928214621:::5:::200" "130.7948:::34.4196842105263:::0.559419276167835:::5:::200" "130.7968:::36.3324444444444:::0.184350891479968:::5:::200" "130.7988:::38.4702352941176:::0.234426829518158:::5:::200" "261.6016:::15.5715238095238:::0.991535452605582:::5:::200" "261.6056:::15.9515609756098:::0.635390799810422:::5:::200" "261.6096:::16.3506:::0.478930369708705:::5:::200" "261.6136:::16.7701025641026:::0.27362009065012:::5:::200" "261.6176:::17.2116842105263:::0.796192559852863:::5:::200" "261.6216:::17.6771351351351:::0.299597969190682:::5:::200"
Bowed String Simulation
StatisticalAudio.exe -w 1 -l 15 -shc -rw 0.001 -rwg 0.02 "20.3824:::65.2924:::0.829009973589326:::0:::0.05" "25.3824:::65.3024:::0.349016267752159:::0:::0.05" "30.3824:::65.3124:::0.428428306803009:::0:::0.05" "35.3824:::65.3224:::0.158371009909538:::0:::0.05" "40.3824:::65.3324:::0.908168078034315:::0:::0.05" "45.3824:::65.3424:::0.268942519754356:::0:::0.05" "50.3824:::65.3524:::0.273592109253507:::0:::0.05" "55.3824:::65.3624:::0.815003686428235:::0:::0.05" "60.3824:::65.3724:::0.510728486781473:::0:::0.05" "65.3824:::65.3824:::0.0708767562823622:::0:::0.05" "70.3824:::65.3924:::0.0157958125262576:::0:::0.05" "75.3824:::65.4024:::0.282037587194635:::0:::0.05" "80.3824:::65.4124:::0.413424132093336:::0:::0.05" "85.3824:::65.4224:::0.690968138593846:::0:::0.05" "90.3824:::65.4324:::0.0814700494043006:::0:::0.05" "95.3824:::65.4424:::0.641624958397577:::0:::0.05" "100.3824:::65.4524:::0.191789460039797:::0:::0.05" "105.3824:::65.4624:::0.489634809420125:::0:::0.05" "110.3824:::65.4724:::0.498627288337096:::0:::0.05" "20.3824:::65.2924:::0.789274380492499:::0:::0.05" "25.3824:::65.3024:::0.793861206356634:::0:::0.05" "30.3824:::65.3124:::0.376410533256864:::0:::0.05" "35.3824:::65.3224:::0.0766100814373587:::0:::0.05" "40.3824:::65.3324:::0.719234600956257:::0:::0.05" "45.3824:::65.3424:::0.417511595093557:::0:::0.05" "50.3824:::65.3524:::0.624165461039907:::0:::0.05" "55.3824:::65.3624:::0.605250349231916:::0:::0.05" "60.3824:::65.3724:::0.725743756488882:::0:::0.05" "65.3824:::65.3824:::0.169075748396358:::0:::0.05" "70.3824:::65.3924:::0.763309484440651:::0:::0.05" "75.3824:::65.4024:::0.845344477161915:::0:::0.05" "80.3824:::65.4124:::0.48302153010229:::0:::0.05" "85.3824:::65.4224:::0.620887480306643:::0:::0.05" "90.3824:::65.4324:::0.264102270674369:::0:::0.05" "95.3824:::65.4424:::0.0760066929815046:::0:::0.05" "100.3824:::65.4524:::0.0864817776581281:::0:::0.05" "105.3824:::65.4624:::0.553955203522501:::0:::0.05" "110.3824:::65.4724:::0.175812962645582:::0:::0.05"
Sawblade
StatisticalAudio.exe -w 1 -l 240 -sh 55.0 55.01 55.02 55.03 55.04 55.05 55.06 55.07 55.08 55.09 54.99 54.98 54.97 54.96 54.95 54.94 54.93 54.92 54.91
Sawblade 2
StatisticalAudio.exe -w 1 -l 60 -psn -0.10 -mod 2 -sh 55 110.01 220.03 440.07 880.11
Eerie Extended Pad
StatisticalAudio.exe -w 1 -l 240 -sh 55.00333 55.00666 55.00999 55.01332 55.01665 55.01998 55.02331 55.02664 55.02997 55.03330 55.03663 55.03996 55.04329 55.04662 55.04995 55.05328 55.05661 55.05994 55.06327 55.06660 55.06993 55.07326 55.07659 55.07992 55.08325 55.08658 55.08991 55.09324 55.09657 55.09990 55.10323 55.10656 55.10989 55.11322 54.99667 54.99334 54.99001 54.98668 54.98335 54.98002 54.97669 54.97336 54.97003 54.96670 54.96337 54.96004 54.95671 54.95338 54.95005 54.94672 54.94339 54.94006 54.93673 54.93340 54.93007 54.92674 54.92341 54.92008 54.91675 54.91342 54.91009 54.90676 54.90343 54.90010 54.89677 54.89344 54.89011 54.88678
Even if I didn't love the sound of this one, its spectrum alone would be enough to keep me interested:
Spectrum - "Eerie Extended Pad" | ||||||
|
||||||
Using non-pseudorandom input often results in these sorts of strange geometric patterns to the spectrum (and the waveforms). I call this kind a "Gil Hibben spectrum", although younger readers probably have no idea why. |
Ethereal Extended Pad
StatisticalAudio.exe-w 1 -l 480 -sh 110.173 110.346 110.519 110.692 110.865 111.038 111.211 111.384 111.557 111.73 111.903 112.076 112.249 112.422 112.595 112.768 112.941 113.114 113.287 113.46 109.827 109.654 109.481 109.308 109.135 108.962 108.789 108.616 108.443 108.27 108.097 107.924 107.751 107.578 107.405 107.232 107.059 106.886 106.713 106.54
Strings
StatisticalAudio.exe -w 1 -l 360 -psn 0.7171225 -mod 2 -mirror -mult -sh 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0
Strings 2
StatisticalAudio.exe -w 1 -l 360 -psn 0.90 -mod 2 -mirror -mult -sh 55.0 55.0 55.0 55.0 55.0 55.0 55.0 55.0 55.0 55.0 55.0 55.0 55.0 55.0 55.0 55.0 55.0 55.0 55.0 55.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 110.0 220.0 220.0 220.0 220.0 220.0 220.0 220.0 220.0 220.0 220.0 220.0 220.0
Converge
StatisticalAudio.exe -w 1 -l 240 -shc -rw 0.001 -rwg 0.05 "65.3704:::130.7408:::0.474591707423002:::20:::140" "65.3719:::130.7438:::0.506385602116824:::20:::140" "65.3734:::130.7468:::0.635850145391644:::20:::140" "65.3749:::130.7498:::0.862918496260782:::20:::140" "65.3764:::130.7528:::0.0854974583495107:::20:::140" "65.3779:::130.7558:::0.268476391525292:::20:::140" "65.3794:::130.7588:::0.514997485691911:::20:::140" "65.3809:::130.7618:::0.245944975511219:::20:::140" "65.3824:::130.7648:::0.734264517789129:::20:::140" "65.3839:::130.7678:::0.762884220463017:::20:::140" "65.3854:::130.7708:::0.755909700267969:::20:::140" "65.3869:::130.7738:::0.793775872385489:::20:::140" "65.3884:::130.7768:::0.669519772690194:::20:::140" "65.3899:::130.7798:::0.352846385691282:::20:::140" "65.3914:::130.7828:::0.797987758213037:::20:::140" "65.3929:::130.7858:::0.884857955210556:::20:::140" "65.3944:::130.7888:::0.623730178739331:::20:::140" "65.3959:::130.7918:::0.973615991901276:::20:::140" "65.3974:::130.7948:::0.392740454533281:::20:::140" "65.3989:::130.7978:::0.89211627892608:::20:::140" "65.4004:::130.8008:::0.812211097157973:::20:::140" "65.4019:::130.8038:::0.547473802744122:::20:::140" "65.4034:::130.8068:::0.551712105471272:::20:::140" "65.4049:::130.8098:::0.732920218328926:::20:::140" "523.2512:::130.8128:::0.447719335580057:::20:::140" "523.2562:::130.81405:::0.11506779347045:::20:::140" "523.2612:::130.8153:::0.66245251312099:::20:::140" "523.2662:::130.81655:::0.746321499516305:::20:::140" "523.2712:::130.8178:::0.798965755781064:::20:::140" "523.2762:::130.81905:::0.333976354764548:::20:::140" "523.2812:::130.8203:::0.452311276864582:::20:::140" "523.2862:::130.82155:::0.61777605901459:::20:::140" "523.2912:::130.8228:::0.423090935614361:::20:::140" "523.2962:::130.82405:::0.0933251008823808:::20:::140" "523.3012:::130.8253:::0.449692064249232:::20:::140" "523.3062:::130.82655:::0.264351776924588:::20:::140" "523.3112:::130.8278:::0.938229415062111:::20:::140" "523.3162:::130.82905:::0.820597603932095:::20:::140" "523.3212:::130.8303:::0.748936441750027:::20:::140" "523.3262:::130.83155:::0.683553028134644:::20:::140" "523.3312:::130.8328:::0.530566599902829:::20:::140" "523.3362:::130.83405:::0.671803123645258:::20:::140" "523.3412:::130.8353:::0.352673821359395:::20:::140" "523.3462:::130.83655:::0.301963133799909:::20:::140" "523.3512:::130.8378:::0.793593640269848:::20:::140" "523.3562:::130.83905:::0.023365145851455:::20:::140" "523.3612:::130.8403:::0.989097667116871:::20:::140" "523.3662:::130.84155:::0.64583336604675:::20:::140"
Diverge
StatisticalAudio.exe -w 1 -l 240 -shc -rw 0.001 -rwg 0.05 "130.7888:::65.3944:::0.07059453907062:::20:::140" "130.7898:::65.3949:::0.36300248286397:::20:::140" "130.7908:::65.3954:::0.0822908792427928:::20:::140" "130.7918:::65.3959:::0.176725647867879:::20:::140" "130.7928:::65.3964:::0.445006570892703:::20:::140" "130.7938:::65.3969:::0.0642804671072454:::20:::140" "130.7948:::65.3974:::0.647137114669307:::20:::140" "130.7958:::65.3979:::0.326186590861179:::20:::140" "130.7968:::65.3984:::0.156163747197054:::20:::140" "130.7978:::65.3989:::0.320320492474504:::20:::140" "130.7988:::65.3994:::0.146173986850708:::20:::140" "130.7998:::65.3999:::0.913975238636614:::20:::140" "130.8008:::65.4004:::0.451538605596026:::20:::140" "130.8018:::65.4009:::0.837447122836715:::20:::140" "130.8028:::65.4014:::0.237729553847655:::20:::140" "130.8038:::65.4019:::0.686000073361292:::20:::140" "130.8048:::65.4024:::0.59384620291441:::20:::140" "130.8058:::65.4029:::0.695453687170847:::20:::140" "130.8068:::65.4034:::0.914306926927729:::20:::140" "130.8078:::65.4039:::0.782099000433851:::20:::140" "130.8088:::65.4044:::0.196565918257935:::20:::140" "130.8098:::65.4049:::0.959366188668867:::20:::140" "130.8108:::65.4054:::0.761166600885761:::20:::140" "130.8118:::65.4059:::0.444178465576993:::20:::140" "130.8128:::523.2512:::0.742346259710293:::20:::140" "130.8138:::523.2552:::0.686850172022127:::20:::140" "130.8148:::523.2592:::0.0462695351448925:::20:::140" "130.8158:::523.2632:::0.415153837639886:::20:::140" "130.8168:::523.2672:::0.694834137234442:::20:::140" "130.8178:::523.2712:::0.621950183107639:::20:::140" "130.8188:::523.2752:::0.977458037546611:::20:::140" "130.8198:::523.2792:::0.651641723710144:::20:::140" "130.8208:::523.2832:::0.867593499154913:::20:::140" "130.8218:::523.2872:::0.0109231380567376:::20:::140" "130.8228:::523.2912:::0.734626005029084:::20:::140" "130.8238:::523.2952:::0.0490348006684505:::20:::140" "130.8248:::523.2992:::0.302002526511837:::20:::140" "130.8258:::523.3032:::0.822632178940883:::20:::140" "130.8268:::523.3072:::0.710979561072506:::20:::140" "130.8278:::523.3112:::0.054995833220493:::20:::140" "130.8288:::523.3152:::0.212136451710254:::20:::140" "130.8298:::523.3192:::0.535333795297141:::20:::140" "130.8308:::523.3232:::0.122128982129547:::20:::140" "130.8318:::523.3272:::0.825777850320037:::20:::140" "130.8328:::523.3312:::0.0338892790616852:::20:::140" "130.8338:::523.3352:::0.866607486937861:::20:::140" "130.8348:::523.3392:::0.21330881959285:::20:::140" "130.8358:::523.3432:::0.225120602704538:::20:::140"
This one's spectrum is another great example of the unexpected variations that the various statistical functions introduce into the sound:
Spectrum - "Diverge" | ||||||
|
||||||
A complex four-minute sound with no repetition, generated by 48 simple sine waves. |
Example Synthesis Configurations (Legacy Syntax)
I misplaced my notes on the exact parameters I used for the original mp3s, but here is a close approximation for getting the "enormous propeller-driven airplane armada" sound from the original zip files.
First, run this command:
StatisticalAudio.exe -w 1 -l 240 -s 80.00 80.01 80.02 80.03 80.04 80.05 80.06 80.07 80.08 80.09 80.10 80.11 80.12 80.13 79.99 79.98 79.97 79.96 79.95 79.94 79.93 79.92 79.91 79.90 79.89 79.88 79.87
Copy all of the "SineWave-x.y.wav"-named files somewhere else. Rename them to replace "SineWave" with "InSW" (so they are named e.g. InSW-79.9, etc.). Open five or six of them in a digital audio editor and perform a sliding pitch shift (e.g. Audacity's Sliding Time Scale/Pitch Shift effect), so that they go up or down by a significant amount over their entire length (down is best if you want the "authentic" sound of a million spectral dive bombers flying overhead). E.g. make one of them start at -12 semitones and end up at +12 semitones, another start at -7 semitones and end up at +7 semitones, another start at -11 and end at +11, another start at +12 and end at -12, et cetera. Do not change the overall length (tempo) of the file, just the pitch over time. Save the modified files, then copy all of the "InSW" files to the same directory as StatisticalAudio.exe. Then run it again like this:
StatisticalAudio.exe -w 1 -l 240 -f InSW-79.87.wav InSW-79.88.wav InSW-79.89.wav InSW-79.9.wav InSW-79.91.wav InSW-79.92.wav InSW-79.93.wav InSW-79.94.wav InSW-79.95.wav InSW-79.96.wav InSW-79.97.wav InSW-79.98.wav InSW-79.99.wav InSW-80.01.wav InSW-80.02.wav InSW-80.03.wav InSW-80.04.wav InSW-80.05.wav InSW-80.06.wav InSW-80.07.wav InSW-80.08.wav InSW-80.09.wav InSW-80.1.wav InSW-80.11.wav InSW-80.12.wav InSW-80.13.wav InSW-80.wav
All of the example files in the "2011-02-21" file below were generated using this method.
A Side Discussion on Phase
A few years ago, as part of a debate/discussion on Synth DIY mailing list, I discovered that there was a bit of dogma (or "accepted, well-researched fact", depending on your perspective) in much of the audio world: supposedly, humans are capable of perceiving changes in the phase of the constituent frequencies of a complex sound, but are incapable of perceiving an objective timbral quality related to any particular combination of phases, as long as those phases remain constant. That is, if someone synthesizes two sounds using an additive method, and the only difference between them is that one has all of the sine waves in phase, and the other has some of the sine waves out of phase with the others, a second person who listens to them individually will hear them as indentical in timbre. If that person has an A/B switch to flip immediately between them (or is listening to the sounds on headphones, with one panned hard-right and the other hard-left), they will notice that there is a difference.
This belief is based on research by Georg Ohm in 1843 (obviously well before the invention of any sort of electronic synthesis technology - mechanical sound generation was used). Ohm is deserving of his stature as a legendary figure, and his work was certainly groundbreaking, but it's baffling to me that so many people are willing to accept this particular claim without it at least being verified using modern technology and methods. Fortunately, I am not alone in this, and Arthur C Ludwig Sr. has done a great write-up of objections and qualifications to Ohm's acoustic "law".
I'm no expert on digital synthesis, but as part of my "sanity checking" for a couple of aspects of the utility on this page, I made some discoveries that were interesting to me. When examining only the average output of the utility (equivalent to using it as an additive synthesizer), configured to generate the additive approximation of a square wave (odd harmonics only):
Phase Comparison | ||||||
|
||||||
Changes in spectrum as the starting phase angles of the constituent sine waves are altered in various ways |
I don't know if this is simply an artifact of the method I used (or aliasing, etc.), but it seems pretty clear to me that at least in a simple digital additive synthesis scenario, it is possible for the phase of the component sine waves to have an audible effect on the resulting sound.
The parameters to call the utility with to generate the same files are provided as a download below, in case anyone would like to reproduce the results.
Audio File | ||
File | Size | Author |
StatisticalAudio Examples - 2010-12-31 | 9 MiB | Ben Lincoln |
Early examples of audio created by this method, in mp3 format. |
Audio File | ||
File | Size | Author |
StatisticalAudio Examples - 2011-02-21 | 48 MiB | Ben Lincoln |
More recent (and longer) examples of audio created by this method, in mp3 format. |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - TH-Esque | 5 MiB | Ben Lincoln |
AKA "A Tone That Is The Opposite Of Shallow", this is a set of sounds that some people might describe as "TH-esque", if they wanted to avoid being contacted by the legal departments of companies whose names rhyme with "Duke Plus Kiln, Prim-Mitted". |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - Power Up The UFO! | 10 MiB | Ben Lincoln |
Every 1950s science fiction film director will be in awe of the sound coming out of your computer if you download and listen to this set of files. |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - Power Up The Light Cycles! | 4 MiB | Ben Lincoln |
This is what happens when you synthesize the sound of an engine, rising in pitch, but take it to excessive levels. |
Audio File | ||
File | Size | Author |
StatisticalAudio Examples - Imperial Probe Droid Effect | 490 KiB | Ben Lincoln |
The same technique as applied to a speech sample. |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - Spectral Dive-Bombers 3 | 15 MiB | Ben Lincoln |
Unearthly downward-spiraling tones, volume 3. |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - Spectral Dive-Bombers 5 | 11 MiB | Ben Lincoln |
Unearthly downward-spiraling tones, volume 5. |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - Bowed String Simulation | 1 MiB | Ben Lincoln |
This is an extremely basic example of what happens when the pitches of the constituent waves converge on a very short time-scale. |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - Power Saw-Esque Pad 1 | 6 MiB | Ben Lincoln |
A synthetic sound that is remarkably like a band or circular saw cutting hard wood or metal. |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - Power Saw-Esque Pad 2 | 3 MiB | Ben Lincoln |
A synthetic sound that is even more remarkably like a band or circular saw cutting hard wood or metal. |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - Eerie Extended Pad | 6 MiB | Ben Lincoln |
These samples are fairly long - the intent is to show the change over time in the timbre. |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - Ethereal Extended Pad | 24 MiB | Ben Lincoln |
These samples are fairly long - the intent is to show the change over time in the timbre. |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - Strings Extended Pad 1 | 21 MiB | Ben Lincoln |
These samples are fairly long - the intent is to show the change over time in the timbre. |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - Strings Extended Pad 2 | 14 MiB | Ben Lincoln |
These samples are fairly long - the intent is to show the change over time in the timbre. |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - Converging Pitches | 12 MiB | Ben Lincoln |
Audio File | ||
File | Size | Author |
StatisticalAudio Example - Diverging Pitches | 17 MiB | Ben Lincoln |
Download | ||||
File | Size | Version | Release Date | Author |
Experimental Statistical Audio Synthesis Utility | 154 KiB | 0.3 | 2011-03-26 | Ben Lincoln |
Requires the .NET Framework. Incorporates advanced new features like the ability to specify pitch in hertz. |
Download | ||||
File | Size | Version | Release Date | Author |
Experimental Statistical Audio Synthesis Utility | 80 KiB | 0.2 | 2011-02-22 | Ben Lincoln |
Requires the .NET Framework. This is a bug-fix release that corrects an issue which could cause the application to crash when used on systems configured to use a character other than a period as the decimal separator. |
Download | ||||
File | Size | Version | Release Date | Author |
Experimental Statistical Audio Synthesis Utility | 51 KiB | 0.1 | 2011-02-21 | Ben Lincoln |
Requires the .NET Framework. |
Download | ||||
File | Size | Version | Release Date | Author |
Imperial Probe Droid Construction Kit | 4 MiB | 1.0 | 2011-03-27 | Ben Lincoln |
A set of pitch-shifted WAV files of myself saying "third to the fifth", for anyone who wants to build their own probe droid transmission from scratch. |
Download | ||||
File | Size | Version | Release Date | Author |
Phase Example Parameter Sets | 4 KiB | 1.0 | 2011-03-27 | Ben Lincoln |
The parameter sets to call the utility with for those who want to reproduce the results discussed in the "A Side Discussion on Phase" section. |
Download | ||||
File | Size | Version | Release Date | Author |
Pitch Spread Example Parameter Sets | 2 KiB | 1.0 | 2011-03-27 | Ben Lincoln |
The parameter sets to call the utility with for those who want to reproduce the results discussed in the "Synthesis Using Statistical Functions" section. |
1. | Specifically, internally the application is keeping track of the number of radians to add to the current value at each sample (the "step"). When the random walk feature is in use, it is generating a random double-precision floating-point value between -1.0 and 1.0, multiplying this number by the value specified for -rw, multipling that by the "step" value and adding the result to the "step" value. This is just a complicated way of varying the pitch. |