Copperbox revision 2923.
I've added a pitch shifting processor, unfortunately it seems rather uncontrollable.
Monday, December 31, 2012
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.
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
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.
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.
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.
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 - 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.
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.
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.
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
Sunday, December 23, 2012
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.
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.
I've updated the FM gong to use the do-notation / statement style. Notationally there seems to be an improvement.
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.
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
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.
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.
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.
Subscribe to:
Posts (Atom)
Blog Archive
About Me
- Stephen Tetley
- 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.