Hi !
Featured games (91)
games approved by the League of Dukes
Games in Showcase (804)
Games in Android Showcase (237)
games submitted by our members
Games in WIP (867)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Complex soundscapes from a single line of code  (Read 4235 times)
0 Members and 1 Guest are viewing this topic.
Offline davedes
« Posted 2012-11-21 21:54:05 »

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.

Example 1
Example 2

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: (t*9&t>>8|t*5&t>>5|t*3&t/1024)-1
Track 3: (t*3)&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... Roll Eyes 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.

Offline forthx

Junior Devvie

Medals: 1
Projects: 1

« Reply #1 - Posted 2013-02-03 16:46:25 »

It's really interesting, an ambient song like this could change the feeling of the game.

And you make me discover "PaulStretch algorithm" thanks !
Offline Roquen

JGO Kernel

Medals: 518

« Reply #2 - Posted 2013-02-05 14:52:01 »

I'm a sound idiot, but I'd be attempted to try some super-cheap transforms for say some of the most basic wavelets.
Pages: [1]
  ignore  |  Print  

Riven (463 views)
2019-09-04 15:33:17

hadezbladez (5323 views)
2018-11-16 13:46:03

hadezbladez (2249 views)
2018-11-16 13:41:33

hadezbladez (5599 views)
2018-11-16 13:35:35

hadezbladez (1164 views)
2018-11-16 13:32:03

EgonOlsen (4600 views)
2018-06-10 19:43:48

EgonOlsen (5474 views)
2018-06-10 19:43:44

EgonOlsen (3138 views)
2018-06-10 19:43:20

DesertCoockie (4033 views)
2018-05-13 18:23:11

nelsongames (4782 views)
2018-04-24 18:15:36
A NON-ideal modular configuration for Eclipse with JavaFX
by philfrei
2019-12-19 19:35:12

Java Gaming Resources
by philfrei
2019-05-14 16:15:13

Deployment and Packaging
by philfrei
2019-05-08 15:15:36

Deployment and Packaging
by philfrei
2019-05-08 15:13:34

Deployment and Packaging
by philfrei
2019-02-17 20:25:53

Deployment and Packaging
by mudlee
2018-08-22 18:09:50

Java Gaming Resources
by gouessej
2018-08-22 08:19:41

Deployment and Packaging
by gouessej
2018-08-22 08:04:08 is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!