MidiScript: midi processing with Python


MidiScript is a Python programming environment for processing MIDI. I developed the software during my dissertation to test methods of increasing learnability.

With simple commands users can start creating effects and generating music:

# Turn notes into chords...
outputs.append (MidiNote (NOTE))
outputs.append (MidiNote (NOTE + 4))
outputs.append (MidiNote (NOTE + 7))
# Add random notes from a scale...
NOTE = randNoteFromScale (Bb_Major, 4, 5)
outputs.append (MidiNote (NOTE))
Have a go, make something new:
Click this link to download MidiScript and the commented example project.
The source code is also available here.


C++, JUCE, PythonC API, Xcode

C++ / JUCE

Interadditive Synth

The Interactive Additive Synth is an additive synthesiser written in C++ with JUCE.
It has a simple to use graphical interface and inbuild programmer. Users can add harmonic and inharmonic partials to the synth; each with their own amplitude and frequency envelopes. The programmer allows for the quick and iterative design of sounds.

Download the aplication with instructions by clicking here.
The source code is available here.

Impulse Hack-a-thon 2016

This was one of my first JUCE projects. Made over a weekend for the Impulse Hack-a-thon, this application takes sections of images and uses the pixel data to generate a wavetable and a series of notes to play. As can be heard below, this often results in a more avant-garde sound.
Warning: very loud.

Impulse Hack-a-thon 2017

This entry takes 3 random sentences from a .txt file (or failing that, Lorem Ipsum) and uses them to generate 2 additive synths and the notes to play in a score. Musically, this was definitely a step up from 2016's entry.


Smart cubes

A small project that experiments with evolutionary computation. Each cycle the cubes learn from the previous interations performance to reach the goal.
You can download the project by clicking here.

GMTK Game Jam

One of my first game jams with the theme Duel Purpose Design, I worked with an artist and a sound designer to see what we could make over a weekend.
The only control is to dash in a direction.
The dash is how the ninja moves and attacks.
It’s also tied to his number of charges (effectively life) with dashes losing charges and kills replenishing them.
Staying still also loses charges which means the character has to move and has to kill.
Art: Thomas Bethell
Sound: Toby Misselbrook - misselbrookaudio.com
Gameplay footage and downloads are aviable at my itch.io page.

Just for fun...

Loopin' Louie

A box to contol Louie's speed and direction. An overdue upgrade for my favourite toy growing up. This project simply uses an Arduino and a motor controller to change the current and polarity given to the motor.

Spotlight Hex/Bin/Dec converter

This spotlight plugin uses flashlight and allows for quick conversion between base 2, 10, and 16.
Grab the bundle here.

Bluetooth buggy

A bluetooth controlled buggy.
This one and a few other like it went on to fight in a mini robot wars... mine didn't return.

C64 Joystick

After getting sick and tired with my old sticky Commodore joystick that barely worked I finally built my own. A surprisingly simple but incredibly rewarding project.
There's a helpful article here.