Caitlin Wilks

Caitlin Wilks

Lead Developer and Tech Polyglot

cat@cat.bio
github.com/catchouli

Functional ear trainer

Functional ear training is learning to identify notes by their scale degree (i.e, what note they are in the major or minor scale). It's an alternative to typical ear training that's based around identifying relative intervals between notes, and can be used to quickly recognise and transcribe melodies.

It works by playing an initial 'cadence' (or chord progression) to get the scale's key 'in your ear'. It then plays a note from the scale and it's your job to identify the note played by scale degree.

I recently became interested in training my ear but I couldn't find an application that connected to my keyboard through midi, so I quickly threw this one together. It supports any key, notes from a single octave or any octave, playback of multiple notes, and more. It trains you to recognise the scale degrees of notes within a key.

Read more...

Realtime cloud volume rendering

A realtime sky renderer with path-traced clouds.

Based on this fantastic paper: Physically Based Sky, Atmosphere and Cloud Rendering (2016)

Read more...

Isomorphic keyboard

I designed this neat hexagonal isomorphic midi keyboard in Fusion 360 and 3D printed the parts.

The switches are cherry-like low actuation force 'clear' switches and it's fun to play with.

The underside is wired up as a diode matrix and an arduino pro mini is used to sense the pressed keys and act as a USB midi interface.

Read more...

Hexapod design

I designed this cute hexapod model in Fusion 360 with the intention to one day build it.

Here's a video from the test app I put together to experiment with the kinematics.

I chose a hexapod because the kinematics are simple but quite interesting and it seems like it makes for quite a versatile walker design.

Read more...

CNC Machine

A mostly-3d-printed CNC machine.

Based on an open source thingiverse design, I built this mostly-3d-printed CNC machine out of:

  • About *2kg* of 3d printed parts
  • Structural steel tubing
  • Motors, bearings, and a 3d printer control board

It has a roughly 100cm x 100cm work area, with about 30cm of Z movement.

So far I've used it for plotting using a pen, and routing using a dremel. The accuracy is quite good and it's large and solid although it could use some calibration. I've also toyed with the idea of setting up a 3d printing head and doing large prints with it due to the large build area I'd have available.

Read more...

Tyke

My (wip) toy Haskell game project Tyke. The plan is to make an OpenTTD-style simulation game that uses voxel terrain.

Features:

  • fast minecraft-style blocky terrain
  • functional reactive programming
  • seamless perspective/isometric view transition

Read more...

Neuron

A Haskell MNIST recognition neural network trainer and solver.

I implemented this a few years ago when I was trying to learn the basics of neural networks and machine learning. It's a feed-forward neural network, optimised using gradient descent. I also implemented an accelerated version using matrices and hmatrix.

It's quite pleasant to implement this kind of thing in haskell since a lot of the required calculations are implemented naturally as pure functions, and in some cases it's possible to use automatic differentation to derive the necessary derivatives.

Read more...

Ocean simulation

This is an ocean I made in UnrealEngine 4.0 to try out material blueprints, which proved very powerful.

The entire ocean effect including the vertex displacement is done in a material blueprint and the buoyancy is simulated in C++.

Read more...

Heterogeneous sparse voxel octree raytracing

This volume renderer was made as part of the dissertation I completed for my bachelors degree.

It first converts the scene into a sparse voxel octree format, which can then be traversed efficiently for real-time raytracing.

The transparency works by sampling iteratively at points through refractive mediums and the volume can even have a heterogeneous refractive index (i.e. it changes throughout the medium).

My dissertation itself can be read at the link above and the source code is also available.

Read more...

Perspective/isometric interpolation

I created this effect for a game I was working on at the time.

Basically, the game can be viewed in both perspective and isometric views, and I desired a smooth transition when switching between them.

This makes use of the dolly pan technique and does the math to make it seamless.

Read more...