Monday, December 31, 2012

om-shell

Copperbox revision 2923.

I've added a pitch shifting processor, unfortunately it seems rather uncontrollable.

om-shell and ochre

Copperbox revision 2922.

I've added a tremolo processor to OM-Shell. It is written in a slightly more "functional" style - i.e. the body of the processor is a function from signal to signal. Maybe this is a valid direction for defining instruments (processors) but the code actually isn't much shorter.

Ochre - I've fixed a very silly bug where I was using flip in Haskell for functions that built expression syntax in Ochre. Particularly, I was flipping the arguments for division, but division is not commutative so this was nonsensical.

Sunday, December 30, 2012

om-shell

Copperbox revision 2921.

I've updated all the instruments and demos to work with the envelope changes in Ochre and Majalan.

majalan

Copperbox revision 2920.

I've replaced the Fence Post List with an Envelope data type as per Ochre. The Fence Post List was a bit over-engineered.


ochre

Copperbox revision 2919.

I've moved the envelope data types into their own module and made them less polymorphic - the size unit is now fixed to an IFloat for durations.

This is because I want to remove the Fence Post List data type from Majalan and replace it with another envelope data type where the size unit is fixed to Int for array index / table size. I could share the envelopes in Ochre if I kept them polymorphic, but I don't want Majalan to depend on Ochre.

Saturday, December 29, 2012

om-shell

Copperbox revision 2917.

I've added the compressor instrument from chapter 30 of the Csound book. Potentially I have a bug due to amplitude calculation and using 0dbfs... if I don't then it is another sonically boring processor.

Copperbox revision 2918 - I had a bug.

om-shell

Copperbox revision 2916.

I've added delay and reverb processors. Unfortunately both are a bit boring sonically.

Friday, December 28, 2012

om-shell and ochre

Copperbox revision 2915.

OM-Shell - I've added a babo (ball in a box) reverb signal processor. This is quite exciting as it finally turns the FM gong into an attractive sound, if perhaps a bit watery.


Ochre - I've fixed a missing case for SigDef2 in the monadic translation and added babo as an opcode.

om-shell

Copperbox revision 2914.

I've updated the the instruments and examples to use Zak ports so they can be chained with effects processors (though currently I only have a wahwah effect).


om-shell

Copperbox revision 2913.

I've updated the om-shell code to work with the changes to Majalan. Hopefully code in om-shell should now start to become more idiomatic.

Thursday, December 27, 2012

majalan

Copperbox revision 2912.

I've changed the unified file (aka *.csd) building to use a writer monad rather than build a CsDoc directly. This means I have a bit more flexibility in using white space and I've also add some phantom typing to make the CsDoc building a bit more structured.

majalan

Copperbox revision 2911.

I've simplified rendering Event Lists (scores) to Docs. Particularly the internal types are now a bit simpler as I don't represent carry as a value - carried values are printed straight away, the separate translation step to low-level values has been eliminated.

Tuesday, December 25, 2012

om-shell

Copperbox revision 2910.

I've added two new FM instruments - versions of the bell and drum from the Common Lisp Music distribution.

Sunday, December 23, 2012

om-shell

Copperbox revision 2909.

I've now got the Zak FM gong to work in an effects chain with a wah-wah pedal.

Thursday, December 20, 2012

omshell, ochre

Copperbox revision 2908.

I've added some initial Zak instruments with the intention of building effects chains. Also I've removed the liftGens function in Ochre - this function should be unnecessary.

Monday, December 17, 2012

omshell, ochre

Copperbox revision 2907.

I've updated the FM gong to use the do-notation / statement style. Notationally there seems to be an improvement.

ochre

Copperbox revision 2906.

I've fixed the error, observed yesterday, in the translation from embedded monadic code to the compiler's expression language.

Sunday, December 16, 2012

ochre

Copperbox revision 2905.

I've changed the syntax of the embedded DSL to be statement oriented rather than expression oriented.

With expressions, I found that I couldn't get tuples "for free" - I would have had to embed them in the DSL even though they can't feature in the final code (Csound has no tuples). With a statement based language I can get more from Haskell's do-notation.

The compiler remains the same - instruments are still first-order expressions, but there is an additional translation step from the embedded language to the compiler's internal syntax. Currently the translation has errors and the 2 more complicated instruments in the demo don't compile.

Sunday, December 2, 2012

ochre

Copperbox revision 2904.

I've added global level opcode invocation, so initialization of global variables (via init) and zakinit are now supported.

zmidi-core - new release 0.6.0

Copperbox revision 2903.

I've made a new release of zmidi-core for Hackage - version 0.6.0. This release extends the parser to be able to handle files encoded with running status - previously if running status was set, the parser saw voice events as uninterpreted data.

Saturday, December 1, 2012

zmidi-core

Copperbox revision 2902.

I've added a module ZMidi.Core.Canonical to fully expand a syntax tree that uses Running Status. In practice the parser has already expanded Running Status so all the canonical translation needs to do is change Running Status On - NoteOn events with channel velocity 0 to NoteOff events.

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.