Categories
blog

Having grown up with video games in the 8 and 16-bit eras (e.g., NES, SNES, Megadrive, C64), I am attracted to retro graphics and sounds from this era. Music with a limited palette of blips, beeps, noise, and such, can be surprisingly versatile – just look at scores from Mario to Zelda, and 8-bit/blip/chiptunes are definitely emerging as an popular alternative style (check out lsdj). My recent work with Beads has led me to build an 8-bit inspired sound synthesizer that runs in a web browser – Jsfxr. It is a clone of sfxr, a nifty retro sound effect generator. While Jsfxr doesn’t compare to the original, it is fun to play with and demonstrates that Beads and Processing can play nice together. Building it also taught me how the coin blip from Mario can be generated. :)

 

Categories
blog

Over the last month and a bit I’ve been working part-time on Beads, a UGen based sound synthesis and analysis library for Java. The library is under heavily development, but if you’re interested in making crazy sounds and music you should definitely check it out. It is a native Java library, but can be used from within Processing without any hassles. There are a set of Beads tutorials available both for pure java and Processing (available on the website.)

Beads: “This is the website for Beads, an open-source project for computer music and sonic art in realtime performance, installation artworks, web content, and anywhere else you can think of putting it.”

Categories
blog

various blobby forms
Categories
blog

Categories
blog

 generative starfish

Categories
blog

gpu based math image synthesis


Generating images via the evaluation of a complex mathematical function in the cartesian plane has been done to death, see e.g., Karl Sims’ Genetic Images. But with the explosion of GPU based computing we can now rapidly explore these spaces. I whipped up a short program that does this. The basic procedure is:

  • Construct a string defining the function, for example:

“pow(p.y*9.5*p.y/p.x/p.y,acos(sqrt(p.x*p.x + p.y*p.y)))”

  • insert this into a function within a fragment program;
  • compile and use the program;
  • draw a rectangle covering the screen so that each fragment is fired.

The image generation is practically instantaneous. In my implementation I randomly generate functions as a key is pressed so you can quickly get a glimpse at the possibilities.


I also attempted an implementation in PixelBender, however as you cannot compile shader code at runtime the above method does not work. I began work on a general shader that reads in the function information (encoded in an image) and evaluates it at runtime, however I became stuck upon realising that recursive function calls are not possible and hence a manual stack has to be implemented. Gah.

Categories
blog

SDS3 First Prototype

It’s been just over a year now since the idea of a volumetric developmental system coupled with physical simulation (the Simplicial Developmental System) became the focus of my PhD. Since then I have built a 2d prototype and have been working out the theory and implementation details for a usable 3d version. I still have much more work to go trying to get something interesting done by January, but here is a sneak preview of the system I’ve been building.

Categories
blog

Why don’t we see more generative methods in modern games?

Playing through Fable 2 this week, I was awe struck by the large vivid world and its numerous trees, flowers, grasses, hills, rivers, buildings, etc. It has been beautifully constructed by an army of artists, each of the (10 million plus) flowers placed by hand. In scope it falls behind Oblivion, but it is much more beautiful and the elements more tightly integrated. Both of these games, to my knowledge, do not use any runtime generative methods to generate their worlds. If only part of the cpu was used to generate additional detail when requested, these worlds would appear infinitely more complex.

Imagine walking up to a tree and being able to examine the subtle geometry and texture of the bark. In implementation, we can either store the bark geometry (but imagine the space requirements for that) or generate it whenever we need it. When a player walks close enough to a tree, the cpu cycles devoted to procedural content would begin the process of generating the finer bark detail. There are simulation methods that will generate the necessary texture and geometry (albeit they need some work to run quickly.) When the player moves away the detail would then be either thrown away and regenerated again when needed or cached for later. This technique allows trees to have unique texture, takes up zero storage space, and costs nothing when trees aren’t examined.

I believe the poor uptake of generative methods lies in their poor integration into existing tools and lack of intuitive parameters for artists. More and more tools are appearing now which adopt some procedural methodology (CityEngine, GML, Xfrog) so hopefully we will soon see the integration of more advanced generative techniques into virtual worlds and games.

Categories
blog

random image dump

some unfinished creations

click to enlarge




Categories
blog

mrs porter

I am now a married man. I decided to keep my name, my wife however has changed hers. Luckily there’s no other Mrs Porter in my immediate family otherwise it could have been weird. Having a common family name unites us (against the evil military-industrial complex), however why should we take one name over the other? Hyphenation can only lead to confusion after two or so generations as the surnames increase exponentially in length. A better alternative in my opinion is to create a third name that both parties changes their family name to. This third name could be a mashed version of the two surnames, or alternatively a new, more superior, name. For instance, mash Buckley and Porter and get Bucter or Portley. I wonder how other cultures handle this issue? No doubt they are as phallocentric as ours.

Our wedding was in the Royal Botanical Gardens of Melbourne, a strange choice for the middle of winter. The weather on the day was clear and sunny, raining the moment after we said our I dos. The event went smoothly and I think all our guests had a great time. I am very humbled to now be formally wed to my soulmate.


We honeymooned in Vietnam, which was a compromise between my choice of Madagascar and Steph’s choice of Hawaii. It was no compromise, we absolutely loved the country. It’s an awe-inspiring and very dynamic country, seemlessly blending the authentic and traditional with self-organised cities and a rapidly developing economy. We spent three weeks exploring Vietnam with a full itenary the entire trip. In brief we started at Ho Chi Minh city, where the 3 million + motorbike owners (hello, moto?) and their self-organised traffic really opened my eyes to the stability of apparently chaotic systems. We toured around the Mekong Delta on a boat and visited Cu Chi where the Vietcong had established 200km of underground tunnels to live in and fight from during the American War. Here I am climbing into a secret entrance, there is no way I could have climbed through the tunnels it lead to though, wayyyyy too small.


Snaaake, snaaake, it’s a snake…


At the Temple of Literature in Hanoi there are numerous stone stelae with the names of students who had graduated with a doctor of philosophy. The earliest one is from the 15th century. They rest on giant tortoises. A tool poses in front of them.


Yes, a kangaroo with glowing red eyes. To be mysterious I won’t say where this is … but it’s definitely in Vietnam.

I observed a few things while abroad. These are my naive generalisations…

One: the fish sauce in Ho Chi Minh city is much nicer than the fish sauce in Hanoi.

Two: Everybody in Vietnam has a very specific job. Proof by example, while sitting on a beach a man would come by every 10 minutes, collect the shells and sea debri that had washed onto the shore, then throw them back into the ocean. The waves kept throwing more stuff onto the beach, but his job was to keep it spotless. Also, whilst eating at a restaurant one girl had the sole job of maintaining the level of fish sauce in our fish sauce receptacle. An extreme example of the generalist-specialist social theory?

Three: Everyone says “Hello!”. It is not uncommon to have this said to you many times on a walk around a town or city. Sometimes it is a curious poll. Sometimes it is a friendly greeting. Othertimes (though rarely) it is a barbed insult.

Four: You can’t fit five people on a motorbike.

Five: Four people on one motorbike is the strangest thing I’ve ever seen on a bike. Except for this:

… and maybe this Choco Pie. Originating in Korea, the Choco Pie is similar to a Wagon Wheel, but imho not as tasty. Props to the manufacturer for giving it such a clear name, it’s quite obvious what you are getting yourself into when you purchase this food ware, and it does not pretend to be anything else (unlike Nutri-Grain…) And how can resist their website…? (sound on)