Various Small Fires and Code

Tuesday, October 21, 2014


Copperbox revision 3256.

Some more work on the parser and top-level syntax. I've still to resolve where forms should be in the syntax (in relation to expressions).

Monday, October 20, 2014


Copperbox revision 3255.

Initial work on the parser and syntax for Oboe. The work is cribbed from Ochre, it always helps if you've written the code before...

Due to work commitments I still don't have much time for open source, but at least this month won't be a duck either.

Monday, September 29, 2014


Copperbox revision 3254.

I've started a new project Oboe to supersede Ochre. Oboe intends to be compositional through forms (as per the language Piccola) rather than traits.

The code so far is very tentative and is little more than a placeholder, but I'm desperate to make a commit to Copperbox this month. Due to work I've had almost no time for open-source, but I didn't want to mark the month with a "duck". 

Sunday, August 31, 2014


Copperbox revision 3253.

I've added a notelist module to base. Unlike the notelists in Majalan.Symbolic, this notelist is simply a list of bars containing notes or rests - it is not built within a monad.

The purpose of this notelist is to support developmental transformations - inversion, retrograde etc. None of these transformations has been implemented yet...

Friday, August 29, 2014


Copperbox revision 3252.

I've added a second pitch type - Centaur. This is Kraig Grady's 12-note scale.

Having an alternative pitch type to ET12, should hopefully help with coding "musically useful" transformations to Base.Melody - i.e. it should stop me thinking with an ET12 bias.

Thursday, August 28, 2014


Copperbox revision 3251.

I've moved the ET12 pitch modules into their own namespace and renamed the Base.PitchString module to Base.Melody.  

Base.Melody now allows rests in the pitch string, my expectation is that this will let it represent more "musically useful" sequences without being burdened by note duration - all notes in a melody are unit length until they are transposed with a beat pattern or impulse map.

Wednesday, August 27, 2014


Copperbox revision 3250.

Some simplification of beat and arpeggio patterns.

Beat patterns no longer contain rests - handling rests should be devolved to an object representing melody.

Arpeggio patterns are now a pair of the as-played notes and the pattern the arpeggiation follows.

Chain is now broken, but it was a bad abstraction anyway, so it will be replaced not fixed.

Blog Archive

About Me

Disambiguating biog as there are a few Stephen Tetley's in the world. I'm neither a cage fighter or yachtsman. I studied Fine Art in the nineties (foundation Bradford 1992, degree Cheltenham 1992 - 95) then Computing part-time at Leeds Met graduating in 2003. I'm the Stephen Tetley on Haskell Cafe and Stackoverflow.