Diffusion-Limited AggregationAs part of my preparation for my PhD, I've decided to have a look at other programming languages, partially just out of curiosity, but also partly due to the frustrating length of time it seems to take to get code up and running in Java/C++. Python is often mentioned as suitable scientific programming language so I decided to dive straight in. I've only been using it for about a week and already I've been very impressed with the speed with which I can get prototypes up and running. Coding in python seems more eloquent, concise, almost like writing pseudo-code at times. The community encourages writing "pythonic" code where the finding simplest, cleanest (and often fastest) method is highly valued.

So to test out the new language I decided to have a go at implementing a basic lattice-based Diffusion-Limited Aggregation model. The basic idea is set off a series of random walkers around a central "seed" - if they come into contact with the seed they stick to it and a new walker is released. The colors in the above diagram show how new that part of the crystal is (hotter - new, colder - old). The code is available over at github; the curious should also have a look at the faster version rewritten in the NumPy numerical library.

I have finally completed my masters thesis on modelling valve distortion in guitar amplifiers. It's been a fascinating project that has introduced me to many interesting modelling techniques. A large portion of the project has been looking at Volterra series representations, and although these have revealed some intruiging behaviour, I have not yet managed to use them to produce acceptable audio output. I had a bit more success using neural networks, particularly using the nnsysid toolbox. You can download the main report below along with the preparation report (supplement with some more of the theory). 

Download: Main Project Report [pdf]
Download: Project Prepartion Report [pdf]

exponential sine sweeps

Spectrogram showing the response of a valve amplifier to exponentially swept sine signals.

Today marks the end of a 2 month investigation into various techniques of simulating reverberant sound. Using MATLAB, I developed two contrasting models:

  • Image Source method
  • Monte Carlo Ray Tracing method

The report in full is available to read here, though for a lighter overview, this poster is recommended. All sample output, including the odd phasing behaviour described in Section 4.1.2 can be downloaded here. Any feedback is greatly appreciated!