Sunday, October 28, 2012

ochre

Copperbox revision 2872.

Work on ref-cells so I can implement the FM gong I wrote in Csound last year. Unfortunately the current design of ref-cells looks like a dead end and the code in this commit needs a rethink.


ochre

Copperbox revision 2871.

I've improved the phantom type layer - user code was mandating type annotations that I didn't expect.

Also I've fixed a bug printing floats - unfortunately Wumpus has this too.

Monday, October 22, 2012

ochre

Copperbox revision 2870.

I've added pure let - previously I just had effectful let, but it wasn't named as such. I've also added effectful let for 2,3 and 4 tuples. The introduction form is actually more like Scheme's let-values than proper tuples - Csound doesn't have tuples itself so I have to be very careful about their introduction and elimination in the embedded language.

Sunday, October 21, 2012

majalan & om-shell

Copperbox revision 2869.

Minor updates to Majalan - as I wrote a lot of code before I had demos / tests, quite a few errors have crept in. I've corrected some now.

I've added a new module to OM-shell for Doc builders that depend on Majalan and Ochre. I don't want Majalan to depend on Ochre, so they have to be implemented here. 

om-shell

Copperbox revision 2868.

New package om-shell to help work with Ochre and Majalan at the GHCi prompt. The demo is the first time I've had Majalan and Ochre working together.

ochre

Copperbox revision 2867.

I've reworked Ochre's API so that global variables are now bound using the do-notation. I've also reduced client imports to a single top-level module.

Saturday, October 20, 2012

majalan


Copperbox revision 2866.

Work on improving the API of Majalan. Some of the changes are quite gratuitous - e.g. wrapping lists and using monoidal concat to make the specification of column headers and widths less cryptic rather than using lists of pairs.

I've started using Majalan and Ochre together so hopefully they should both start improving.


Sunday, October 14, 2012

majalan

Copperbox revision 2865.

I've refactored the EventM class to allow up to four time varying behaviours. Probably I should go up to fourteen or so, but as I don't have any instruments defined yet four will do for now.

majalan

Copperbox revision 2864.

I've added Wumpus style parametric time units. The implementation is the same as Wumpus, but because the primitive event operations are simpler in Majalan than images are in Wumpus, I think it will be easier to program with. At some point the programming style could be adopted by Wumpus.

Saturday, October 13, 2012

majalan

Copperbox revision 2863.

I've added an introspective TimeSpan to the event list monad (where TimeSpan works like a bounding box). This allows events to depend on the time span of previous event - e.g. setting up a delay processor to work on another instrument.

Wednesday, October 10, 2012

majalan

Copperbox revision 2862.

I've added more Behavior combinators and defined more class instances for Behavior following the example in Paul Hudak's SOE.

Tuesday, October 9, 2012

majalan

Copperbox revision 2861.

I've added behaviours in the style of Paul Hudak's FAL (and thus Conal Elliott's Fran?). This feels like a big step that will add a lot of expressive power to Majalan - it's the first time I've ever managed to incorporate FRP style programming into one of my own projects, fourteen years (I think) after being totally beguiled by the FRP animations in Conal's Dr Dobbs Journal article.

Sunday, October 7, 2012

majalan

Copperbox revision 2859.

Work towards interpolating "columns" in event lists. The idea was to have parametrize the Event type so it could have a payload as either a normal list of params or a function from an interpolating value to a list of params - but I don't think this is practical. I suspect using a symbolic number type and overloading the Num classes will be simpler.

Copperbox revision 2860.

I've reverted the interpolation changes from the last commit, but kept in the changes that implement advancing c.f advance vectors in computer typesetting and Csound's (+) symbol in score files.

Saturday, October 6, 2012

majalan

Copperbox revision 2858.

I've added a few more GEN routines. The only one that is interesting from an embedding perspective is GEN11 which has optional arguments. I've chosen to require all arguments - the documentation lists the default values.

Optional arguments are more heinous in orchestras than scores, where there are fewer primitives that make use of them. As this is the only occurrence I've found so far, requiring all which doesn't restrict expressiveness seems the best solution.

Tuesday, October 2, 2012

majalan

Copperbox revision 2857.

I've added a couple more GENs - GEN01 which loads a file and GEN02 which stores user supplied data.

GEN01 particularly is an interesting case - should Majalan imitate Csound (e.g. use numeric enums rather than enum types) or provide a higher level (but not idiomatic) API? At the moment imitating Csound seems a better choice as GENs are usually invoked only a few times in a score and following the Csound means its documentation is mostly appropriate.


Monday, October 1, 2012

majalan

Copperbox revision 2856.

I've split Gen into two modules - one for the primitive functions and types and the other for the catalogue of table-gens matching Csounds GEN functions. Also I've changed gen07 to use a fence list.


Blog Archive

About Me

My photo
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.