Various Small Fires and Code

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.

Monday, August 25, 2014


Copperbox revision 3249.

I've simplified arpeggiator patterns, removing the introspective operations and the list-like ones. These removed operations would seem to make more sense operating on a general pitch string object, rather than an arpeggio which musically speaking is coupled to it's generating pitch set.

Sunday, August 24, 2014


Copperbox revision 3248.

I've simplified ET12Chords, making it just functional rather than a weird monadic "command language".

It's disappointing that it has taken some reflection to realize the original design was so horrible (partial mitigation: I was trying to get a postfix notation without adding my own postfix application operator). It would be fair to expect that I've enough experience now to reject gawky, over-complicated code when I write it, rather than need a fortnight's hindsight to reveal it's problems.

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.