Sunday, September 27, 2009

Mullein

Copperbox revision 825.

I've updated Mullein to use the 'official' definition of the class Groupoid from Data.Groupoid.

groupoid-0.1.0

Copperbox revision 824.

I've been working on 1-dimensional geometry which hasn't been going too well, but it did make me finally package up my Groupoid class and put it on Hackage.

Thursday, September 24, 2009

Bala

Copperbox revision 823.

I've added fret diagrams to the Blues example. This was done by making beat patterns parametric so they can carry chord names or drum beats.

Bala

Copperbox revision 822.

Some refactoring - I've taken the more general functions out of the example Blues.hs.

Bala and Mullein

Copperbox revision 821.

More work on LilyPond output - extra pretty printers and type to represent time signatures.

Wednesday, September 23, 2009

Bala and Mullein

Copperbox revision 820.

I've added a new Bala example Blues. The definition of the bass and melody is a good bit more compact than in Afoxe.

Mullein and Bala

Copperbox revision 819.

Minor tidying up - I've added a new type synonym StdGlyph that shortens a few type signatures. Also added a new LilyPond pretty printer for the override command.

Tuesday, September 22, 2009

Mullein and Bala

Copperbox revision 818.

Improvements to annotations in Mullein. For Mullein, annotations now seem to be adequate - following the examples in the module Extended its simple enough to create and render new annotations. Annotations don't place much burden on other code - I've got rid of a the MakeNote typeclass that was a burden previously.

Annotations in Bala are still unsatisfactory - I've added temporary functionality (distAnnos) to annotate notes after they have been assembled into tunes, but really I need a comfortable means* to annotate whilst I construct tunes.

* i.e. some means that lets me separate pitch content from string numbers at least til I want to zip them.

Mullein and Bala

Copperbox revision 817.

Some work on making annotations (e.g. string number, finger number) in Mullein more usable.

It still needs some working out - string number annotations in the Afoxe example are a long way off being exemplary.

joinlist-0.1.0

Copperbox revision 816.

I've added haddock docs and packaged up joinlist. To Hackage or not to Hackage?

It's slimmer on functionality than similar libraries (DList, RandomAccessList), but not as slim as the low-tide mark* ones.




* Struggling for a non-judgemental term here.

Monday, September 21, 2009

JoinList

Copperbox revision 815.

I've added a new library implementing a JoinList. The Kleene list in Bala was too complicated to traverse, a JoinList is simpler but it is still amenable to bottom-up construction.

Sunday, September 20, 2009

Bala

Copperbox revision 814.

A new version of BeatPattern. This one is first-order and based on a novel sequence type - a Kleene list. Repetition, alternation and sequencing (concatenation) are represented as constructors in the list type so the representation is compact for beat patterns that have a very regular construction. Hopefully the Kleene list will be useful for building other patterned data such as the chord lists as working out abstractions for them has been a big struggle recently.

Thursday, September 17, 2009

Bala

Copperbox revision 813.

I've added two type classes PitchContent and IntervalContent for extracting pitches and intervals from objects (e.g. chords, tunings and chord diagrams).

Bala

Copperbox revision 812.

I've added module signatures / export lists to all the modules.

Bala

Copperbox revision 811.

I've removed the RetroInt module which used to handle counting arithmetic distances. Arithmetic distance counting should be localized to the Interval module (but it isn't quite yet, so code in Pitch is due a refactoring).

Wednesday, September 16, 2009

Bala

Copperbox revision 810.

Further tidying up as per the previous comment.

Bala

Copperbox revision 809.

A round of tidying up on the Afoxe example, deleting redundant modules and moving useful functions from Afoxe.hs into library modules.

Tuesday, September 15, 2009

Bala

Copperbox revision 808.

Work making the Afoxe more compact by using 'expansion patterns' of the chord sequence. At the moment the expansion patterns aren't very tangible...

Sunday, September 13, 2009

Mullein

Copperbox revision 807.

More work generalizing annotations (string number and fingering). Printing a string number annotation is now possible for any glyph type that has an instance of the HasStringNumber class (previously only TabGlyphs could be printed with string annotations). Finger numbers have been similarly generalized.

Mullein

Copperbox revision 806.

I've unwound note annotations in the glyph type. Previously the glyph type had two parameters pch and drn for Pitch and Duration. To represent say a note with string number the pitch would be wrapped with the string number, something like type SPitch = (Pitch,StringNumber). I've now separated out the pitch annotations so the glyph type now has three parameters.

Mullein and Bala

Copperbox revision 805.

I've changed the function that pretty prints glyphs - renderPhrase - to dispatch on a function passed in as an argument rather than a type class. This means particular glyph types can now be rendered in multiple ways - e.g. a note with string number for tablature can also be rendered as a normal note in standard notation.

Saturday, September 12, 2009

Mullein and Bala

Copperbox revision 804.

I've renamed various functions now that the Mullein major version number has incremented. Also it looks like rendering to LilyPond or ABC (the function renderPhrase) will be more useful with a passed-in function for rendering glyphs rather than dispatch via a type class.

Mullein-0.3.0

Copperbox revision 803.

I've added a new release archive of Mullein that supports dividing into bars without beam grouping.

Mullein is due some API changes, so it seems wise to release the current version as is and bump up to the next version number. Note that the Afoxe example in Bala generates good LilyPond with this revision (803) , with 802 the LilyPond output ran but generated warnings.

Mullein and Bala

Copperbox revision 802.

Guitar tab is now mostly working - the output works, but there a LilyPond warnings as it is rendered. The warnings are due to stems interfering with each other even though they aren't printed. Mullein needs extending so that it can just segment music into bars rather than segmenting into both bars and pulsations (beam groups within bars).

Friday, September 11, 2009

Mullein and Bala

Copperbox revision 801.

Work towards supporting LilyPond guitar tab notation (still some more to do).

Thursday, September 10, 2009

Bala and Mullein

Copperbox revision 800.

I've added SpacerMark as an alternative glyph type. This gives an easy mechanism to add fretboard diagrams to scores - a staff can be divided into two context one contains the melody as normal the other fretboard diagrams timed with spacer rests. This gives a useful separation between the fretboard diagrams and the melody - the diagrams don't have to be attached to a specific note (which would mean elaborating the glyph type with some annotation mechanism).

Wednesday, September 9, 2009

Bala and Mullein

Copperbox revision 799.

I've changed the examples Afoxe and BossaNova to output MIDI as well as notation from their LilyPond scores.

Bala2 - Bala

Copperbox revision 797 & 798.

I've replaced the original Bala (that worked with HNotate) with Bala2 (that works with Mullein). As Bala2 wasn't a proper Subversion branch I've just done a delete on Bala (revision 797) and a directory rename Bala2 to Bala (revision 798).

Bala2 and Mullein

Copperbox revision 796.

The bossa nova drum notation example now produces drum chords, so it is now working.

Tuesday, September 8, 2009

Bala2 and Mullein

Copperbox revision 795.

I've added a new example that to generate a bossa nova rhythm with LilyPond drum output.

It doesn't work properly at the moment as I need a mechanism to merge beat patterns into drum chords rather than list each one as an overlay.

Bala2

Copperbox revision 794.

Some tidying up - moving general functions out of the Afoxe example.

Bala2

Copperbox revision 793.

I've added a new module Bala.BeatPattern which is intended to replace Bala.RhythmPattern. BeatPattern takes a different view of specifying rhythms, which is a bit higher level. So far it seems easier to work with.

Monday, September 7, 2009

Bala2 and Mullein

Copperbox revision 792.

More work on the Bala2 examples. Afoxe now produces the output I want, thought the code to do it is desperate for some golfing. Also, I've changed the export modules for ABC and LilyPond in Mullein to bit a bit more careful vis name clashes.

Sunday, September 6, 2009

Bala2

Copperbox revision 791.

I've made more use of streams in RhythmExample. The code is pretty dense (its not really clear how it works, or what its doing), but it is nearer to how I wanted it to work. I'll have to look at factoring it into some decent combinators which will increase readability.

Bala2 and Mullein

Copperbox revision 790.

More minor changes. I've added a duration module to Bala2.

Saturday, September 5, 2009

Bala2 and Mullein

Copperbox revision 789.

Some minor changes, plus a bugfix to LilyPond chord output which was returning the wrong pitch as the initial state.

Bala2 and Mullein

Copperbox revision 788.

Work on the interface between Bala and Mullein - functions to covert Bala pitch and duration to Mullein pitch and duration, simple templates for music in free meter.

Friday, September 4, 2009

Bala2 and Mullein

Copperbox revision 787.

More work on rhythm patterns - I'm actually using the subset pattern with this revision (rather than ignoring it).

Mullein

Copperbox revision 786.

I've changed tie status to be a element of the Note and Chord constructors in the Glyph type, rather than have it as a separate constructor. This allows bracketing (beam grouping and bar splitting) to be oblivious of ties. Previously during bar splitting, ties were enqueue at the front of a new bar rather than at the end of an old bar.

Thursday, September 3, 2009

Bala2

Copperbox revision 785.

I've reworked rhythm patterns - though the code is better, its not useful - it was easier to ignore the rhythm pattern in the example!

What I want to do is distribute pitch material over a rhythm with some fmap like device. At the moment I haven't discovered what a rhythm is (or a least how to usefully and succinctly define it).

Wednesday, September 2, 2009

Bala2

Copperbox revision 784.

I've added functions to generate scales and modes from a root pitch and some complementary functions to generate triad sets for major and minor scales.

Bala2

Copperbox revision 783.

Work on the chord building using the grammar presented in Francois Pachet:
An Object-Oriented Representation of Pitch-Classes, Intervals, Scales and Chords: The basic MusES.

I'm a bit unhappy with my implementation as it seems ambiguous in a couple of cases, I'll have to think about this code again and it might change significantly.

Tuesday, September 1, 2009

Bala2

Copperbox revision 782.

Initial work on chord and scale modules - a chord is a root note plus a map of intervals, a scale is a root note plus a list of intervals.

Bala2

Copperbox revision 781.

I've reimplemented the affine pitch/interval operations. The new versions are simpler as I don't consider negative intervals. I allowed negative intervals before, as they indicated the direction and seemed to make more sense for the affine operations. Now I think it is arithmetically sound not to consider them.

Bala2

Copperbox revision 780.

I put the interval code into a separate module, and added arbitrary instances for Pitch and Interval.

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.