I’m splitting this off my other thread since it will be developed as a separate project/game than the Limbo4k stuff.
I’ve managed to get some complex musical soundscapes (eerie sounding “drones”) out of a small amount of code. The duration, stretch amount, etc. is all easy to change without resulting in any larger of a JAR filesize. Right now it’s under 3,182 bytes using proguard and pack200, although there is still some room for optimization and further compression.
Test applet: (larger JAR size due to input, flexibility, etc)
Download (run HTML to view)
You can press SPACE to randomize the parameters and sample rate.
Currently the input uses the techniques described here. It randomly chooses from one of three “tracks”, and stretches a window of it to 10 seconds:
Track 1: (t*(5+((t>>11)&5)))&(t>>7)
Track 2: (t9&t>>8|t5&t>>5|t3&t/1024)-1
Track 3: (t3)&t>>8|(t>>4)
However, the input could be anything, including a home-brew soft synth. Here is an example where I used sine waves of varying frequencies (a super basic soft synth) to create a melody, then stretched it to a longer output.
Input.wav -> Output.wav
The effect is achieved by using the PaulStretch algorithm. The algorithm is explained visually here – his code is open source, too. For the FFT, I extracted the core components of badlogic’s audio-analysis library.
Still lots more testing to be done. Next I want to use string input on the algorithmic one-liner to create a fixed melody. I also would like to filter the frequencies in order to create some more visualization (right now the visuals only rely on amplitude). Then, as per usual, I need to actually turn this into a game… : If you hear anything cool from the given parameters, please post them (in the Java Console you can see which “Track” is playing and its starting index).
I will post some code at a later point.