Software development is my primary career direction. This is my website for mostly music, so I'll just list some quick projects and demos. If you're interested if any of those projects then please feel free to look and click around the links.

I have most experience with C++, know some Java and BASIC. I specialise in (decreasing order):

  • Computer graphics (real-time)
  • Algorithm design and analysis
  • Embedded operating systems
  • Artificial neural networks
  • Computer vision & image processing

Ambiance - Real-Time Graphics Demo

Ambiance is a real-time graphics demo, showcasing recent advanced techniques in the field of computer graphics. Developed in C++ using DirectX 9.0 with HLSL.

This was my project for COMP3901 Special Project A at University of New South Wales, Semester 2 2011.

Notable Features:

  • HDR
  • GPU Volume Raycasting
  • Real-time planetary atmospheric scattering
  • Distance raymarched Julia set fractals
  • Procedural terrain
  • Preetham's sky
  • NVIDIA Skin Shader
  • Chromatic dispersion
  • Film grain
  • BDRF texture based lighting models
  • MLAA ( Morphologial Anti-aliasing )

If you just want to run the program, download the binaries (contains all models + textures needed to run). If you'd like to take a look at the C++ source code, download the source code zip. If you're interested in the HLSL shader code, they're included in the binary download in data folders.

Download ambiance (Binaries)

Source Code - MSVS2005

Detailed Report

hyperSTACK - Polyphonic Chorus-based Software Subtractive Synthesizer

hyperSTACK is a polyphonic chorus-based software VST subtractive synthesizer. It is able to create a rich chorus effect by stacking up numerous oscillators, each with slightly different pitch, tone, and development. These oscillators are perceived as one single instrument with a "fat" sound, much like a choir or an ensemble of strings.

This was my major project for COMP4121 'Advanced and Parallel Algorithms' course at UNSW, 2010.

screenshot of hyperSTACK VST

The main features of hyperSTACK:

  • Up to 64 polyphonic audio oscillators, available in fast low-quality mode or alias-free high-quality mode using the BLIT algorithm.
  • Sawtooth or Square waveforms.
  • Complete pitch vibrato engine, which is run individually for each oscillator;
    • Individual fast sine-estimation pitch modulation LFO for each oscillator.
    • LFOs controllable by ADSR envelope, to simulate violin vibrato coming in at the end of the note.
    • Variation from pitch modulation LFO using cosine interpolated Perlin noise functions, also controlled by the LFO ADSR envelope.
  • Chorus detune feature, which automatically evenly detunes every oscillator.
  • 8-voice MIDI polyphony.
  • Volume ADSR envelope, individual for each oscillator. The individual envelopes can be modulated via the Deviation knobs, which control how much each parameter evenly deviates from the mean. Resonating 24dB Butterworth Low-Pass filter, controllable by an ADSR envelope.

Audio Demo - MP3

VST Plugin Binaries - x86 Win32

VST Plugin Source - MSVS2005

User Manual

Source Code Reference

Image Inpainter - GPU Accelerated Image Inpainting Tool

image before inpaintingimage after inpainting

Image Inpainter is a tool that implements a number of algorithms to let the user do the task of image inpainting. These algorithms take difference approaches, and have various properties that make them suited to different types of image inpainting tasks.

Willy Mai was my partner for this project. This was our major project for COMP9517 'Computer Vision' course at UNSW, 2010.

Available algorithms:

  • Gaussian Pyramid Blur
  • Fast Digital Image Inpainting
  • Bertalmio
  • A. Telea - Fast Marching Method
  • Navier-Stokes, Fluid Dynamics, and Image and Video Inpainting
  • Exemplar-Based Image Inpainting
  • Image Inpainting Based on Local Optimisation

GUI Screenshot

x86 Win32 Binaries

Source Code - MSVS2005

Detailed Report

Presentation Slides

Aeron - Air Combat Maneuvering Simulator

screenshot of Aeron

Aeron is a combat flight simulator that focuses strongly on air combat maneuvering, artificial intelligence, and flight dynamics. Aeron minimizes focus on aspects such as intensive graphics, complex avionics, story/campaigns, and setting. This project really seems to be getting some attention; the youtube vid above alone has 40k views o_O...

Link to Aeron project website

Handwriting Digit Recognition using Multi-Layer Perceptron Neural Network

screenshot of MLP handwriting recognition demo

Handwriting digit recognition, implemented using a multi-layer perceptron feed-forward back-propagation neural network.

Link to project website

DLX Sodoku Solver

Solves sodokus extremely fast using Donald Knuth's dancing links algorithm. It turns the sodoku problem into the exact cover problem with candidates and contraints, then searches recursively for a solution optimised using a 2D circular doubly linked array.

The demo code solves almost all sodokus extremely fast; the given example code has even been tested to solve 16x16 and even 25x25 sodokus in a few seconds.

Link to project website

Astra - Minimalist Co-operative Arcade Shooter

An old project I did some time during high school. Pretty awesome party crasher, I crashed someones birthday party with it. Good times! Heres the short marketing-bloated description from the sourceforge site which I copy pasted:

Astra is a Top-Down semi-arcade action game that has its major focus upon co-operative multiplayer teamplay. Made with surrealistic, simplistic top-down style graphics, a full soundtrack and deep, balanced gameplay, Astra is sure to liven your hypes up, and the hypes of any friends/more-than-friends you're playing with!

Link to project website

Vectra - Simple arcade 3D shooting-blocks game.

An even older project I also did during my junior years at high school. Saw a mini-game in Ratcher and Clank and got inspired to make this. Pretty awesome.

Link to project website


Promote your Page too