When the system is ready (in about hundred years), I plan to include parts of the editor within my future games so that one can modify every sprite/texture, sound, music etc. inside the game. It might also end up as a standalone tool, who knows...

And yes, I have taken a lot of inspiration from Genetica when it comes to the procedural texture stuff

Thanks for the comments!The materials/heightmap are manually made but are easy to modify dynamically by varying the seeds, offsets etc. but you one could also build more sophisticated materials that have smarter parameters and let the game vary those.

The plan for the future is to add more procedural model nodes such as trees/plants, hills/mountains and make them all look good using shadow maps, environment maps, and even raytracing. Then I would also add animation for the generated 3D models so you can make nice-looking animated sprites. Then I would like to add a node that is similar to the Canvas node in Genetica where you can design with bezier curves/areas. Then sound effects, then music, then fonts, then particle systems, and then finally a game that uses all this! Like I said, a hundred years

Yes!But I only plan to generate that texture grid that is one of the standard approaches for adding text in OpenGL (which I currently use).The idea is that you start with an existing font and extract the glyphs from it. Then you simply render your first grid in some way and then you add the image transformation nodes that you want. You might have to apply different transformations to subsets of the grid but that is just details... I also plan to add nodes that can place pictures into the grid that you want to have closely mixed with text, which is just a simple way to add images when you draw text but it is sure useful for adding key icons, powerup icons etc.

But... You will be able to design your own fonts within the system when I add proper support for editing curves, but that does not feel very procedural

YES!!! Definitely. I wish there was more generative music in games. Pretty impressive work you've done there.You might also consider using SuperCollider... but anything will be better than the GM sounds

Thanks!

I'll probably take a good look at SuperCollider sometime in the future but I have some previous experience with VST filters and instruments that I want to take advantage of first.

I can recommend JVSTHost if any of you want to use VST stuff using Java. The filter part seems to be pretty stable, I have tested 8 different filters so far and they all worked. I'll soon test some of my synths as well.

I'll probably take a good look at SuperCollider sometime in the future but I have some previous experience with VST filters and instruments that I want to take advantage of first.

I can recommend JVSTHost if any of you want to use VST stuff using Java. The filter part seems to be pretty stable, I have tested 8 different filters so far and they all worked. I'll soon test some of my synths as well.

Probably very sensible to use VST, especially since you're doing relatively 'normal' music. I may well try out that library at some point (actually, I have other code in C# that I'd like to use with VSTs, so maybe I'll look into .NET alternatives in the short term).

Your system would potentially lend itself quite naturally to building synthesisers with Supercollider. Could be useful for making sound effects. In terms of just using it as a more normal midi style synthesiser, it wouldn't necessarily be a bad fit, but you may do better with VSTs.

Probably very sensible to use VST, especially since you're doing relatively 'normal' music. I may well try out that library at some point (actually, I have other code in C# that I'd like to use with VSTs, so maybe I'll look into .NET alternatives in the short term).

Your system would potentially lend itself quite naturally to building synthesisers with Supercollider. Could be useful for making sound effects. In terms of just using it as a more normal midi style synthesiser, it wouldn't necessarily be a bad fit, but you may do better with VSTs.

Sound effects was the first thing I started to make with the node system, but back then I did not know so much about filters and I just made pure procedural or so called "acausal" system then. Now I have a few causal filters implemented like all the biquad variants with adjustable parameters and also oscillators and all the VST effects that are compatible.

I will start to dig in the SFX area soon again but this time I will try to analyze existing SFX with spectrograms etc. and try to mimic the results with noise, oscillators and filters. I guess that this is a reasonable approach?BTW, the JvstHost seems to work with all the synths I have tested so far as well I tested StringZ2, Synth1 and ersdrums.

Sound effects was the first thing I started to make with the node system, but back then I did not know so much about filters and I just made pure procedural or so called "acausal" system then. Now I have a few causal filters implemented like all the biquad variants with adjustable parameters and also oscillators and all the VST effects that are compatible.

I will start to dig in the SFX area soon again but this time I will try to analyze existing SFX with spectrograms etc. and try to mimic the results with noise, oscillators and filters. I guess that this is a reasonable approach?BTW, the JvstHost seems to work with all the synths I have tested so far as well I tested StringZ2, Synth1 and ersdrums.

You might want to take a look at the book "Real Sound Synthesis for Interactive Applications" by Perry Cook. I've only dipped into it briefly, but it seems to be quite good - it is written with these kinds of applications in mind.

For experimentation with synthesis and prototyping things, I find ChucK very easy to use and expressive (easier than Supercollider, but not as mature, complete or CPU efficient); this is a music scripting language incorporating Cook's synthesis toolkit STK, and as such has some high-level 'physically inspired sonic modelling' type stuff to play with. Since you're taking a visual patching type approach, you should certainly take a look at pd if you haven't already (I recommend the 'pd-extended' release http://puredata.info/downloads).

All of the things I've mentioned are open source, btw (STK is permissive, but with some caveats that some things may be covered by patents, ChucK is GPL, PD is BSD but many extensions are GPL) and quite well documented through academic papers etc. See also JASS for pure Java implementation of modal synthesis and other things.

You can probably get quite far with noise, oscillators, filters... and envelopes, of course...

Another project that may be of interest is jMax, which is a member of the PD / Max/MSP family written in Java. I remember it looking quite nice a few years ago when I was getting into this stuff, it was 'resting' for a long while but apparently rumours of it's demise were exaggerated; development is happening again under LGPL. It's not at release stage, but since you're doing related things in Java you should probably take a look. http://www.jmax-phoenix.org/wiki/doku.php

Another thing occurred to me. If you do carry on implementing your own audio synthesis stuff from scratch, you could consider implementing some DSP in OpenCL or similar, if that's of interest. GPU should be able to make mincemeat of a lot of audio processing. In fact, I just did a bit of googling, and it seems even things like IIR filters, which are inherently quite sequential, can still benefit with appropriate cleverness (http://s-space.snu.ac.kr/bitstream/10371/6177/3/Digital%20Signal%20Processing%20Filtering%20with%20GPU.pdf).

It would be great to be able to use some hardware for audio processing The only problem is to make it work on many platforms, but for the first game that I use generative music in, I will probably stick with a pure software (or built in native) synth and find a good tradeoff between speed and sound quality.

Instructions:Right click with mouse to open menu. From there you can select one of the presets or add nodes (not documented in any way yet ). Zoom in and out with '+' and '-' and pan with arrow keys. Click on a node to show and edit its properties.

I am very curious about the following:

* Does it work on Mac? I have never tested any of my code on a Mac before * Is the music playing in the "Music 1" preset? Just click on the little green "play" button on the node that says something about reverb/chorus. It is visible when the node is selected. A short delay (5 seconds) before the music starts is normal.

Music preset works on my Vista box. Still playing now after I loaded another preset... I must admit I find the music a bit twee, but it does charm me nonetheless... I have a big soft spot for generative music.

It would be nice to have more indication of what kind of data the various inputs / outputs take; maybe tooltips or a status bar could be useful here, also perhaps different graphics on different types of plug - colour coded should be fairly simple?

It did get stuck grinding my CPU at some point... nothing very complicated was going on as far as I could tell, it happened shortly after adding a gaussian blur to a star & increasing radius but I doubt that was the cause.

Anyway, it's coming along really nicely. I'm interested where you plan to take this.

EDIT: and another thing... I reckon you should add the ability to put things into (reusable) sub-patches ASAP...

Yeah, the music is quite boring since there is really no variation in it. I have better examples that I am going to add but they are rather large

The color coding for data types are a little bit tricky since there is no one-to-one match of colors. A simple method would be to color the ports green when you hover the mouse over a port or drag a connection. And yes, tooltips is a very good suggestion even for me since there are so many nodes now that is hard to keep track of. The application version has probably four times as many nodes

The procedural gaussian blur has horrible performance. The fix image-based blur is much better since it makes a lot of simplifications.

Subpatches is actually available in the application version but then you have to save a graph first and add input and output nodes to it. Subpatches that can be part of a graph is coming since this is much easier to work with.

It is an excellent procedural content generator and a source of inspiration for WYSIWYG game editors. The GUI is really intuitive. Is it possible to add its own nodes with its own new outputs and inputs?

Is it possible to add its own nodes with its own new outputs and inputs?

It has limited support for this and you have to be able to save a graph to do that at the moment. You simply add input and output nodes (not available in the Applet) and then you can use it as a subnode.

java-gaming.org 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‑gaming.org