Thursday, October 15, 2015

payasan

I've been working steadily on Payasan and I've now got chord note and fret diagram output working for fret diagrams.

As GitHub counts successive commits and helpfully tells you how long your current streak is I haven't felt the need to blog here about each commit. Also while I'm happy with the progress of Payasan, I think it is going to be a highly idiomatic system (i.e. it will make sense for me, but it will be too "special case" for other users) so publicly blogging about it is not a priority.

Friday, September 18, 2015

Payasan

I've implemented "chordmode" for Payasan patterned after LilyPond's chordmode.

Chordmode is intended as an intermediate layer for working with chords - LilyPond's chordmode is a bit inscrutable at some points and I believe I have a simpler representation for building and manipulating chords.

The implementation points to quite a few horrors in the module organization of Payasan that I will need to address. I already have 70 modules in the src directory which is excessive and I'll have to do something about combining some of them.


Monday, September 14, 2015

Payasan

Most of the work is now in place for LilyPond percussion notelists. Some work on rendering is still outstanding.

Sunday, September 13, 2015

Payasan

I've started to add support for LilyPond drum pitches. This work should point out what bits of Payasan need parameterizing on Pitch. The syntax is already polymorphic on pitch and duration, but so far I haven't treated the parsers and renderers systematically.


Friday, September 11, 2015

Payasan

I've implemented "full score" output for ABC and LilyPond rather than just output of note list fragments.

It is an expectation of Payasan that the output will be hand-edited after generation if the user wants to create proper scores. However, to "debug" note lists after they have been built, transformed, etc. a user needs to generate a "full score" that can be automatically rendered by LilyPond or ABC to see their work.


Thursday, September 10, 2015

Payasan

I've added transformations for augmentation and diminution to the monophonic note list.

It is a key goal that Payasan should support musical transformations so having these two implemented is a nod in favour of the utility of this version of Payasan.

Sunday, September 6, 2015

Payasan

I'm working towards adding debugging to the translation steps (LilyPond pitch conversion has had a bug for the best part of a week). I'm not sure what the API should be, but at least with the current temporary implementation I can see where the pitch conversion bug occurs.

Friday, September 4, 2015

Payasan

I'm working towards translating to ABC and LilyPond output via generic traversals over the Beam Syntax. This opens the door to special notations in LilyPond output like drum notes.

Thursday, September 3, 2015

Payasan

I've added a very rough implementation of Humdrum-like output printing. The output is for debugging purposes (there is a problem with pitch conversion to or from LilyPond) and so doesn't attempt to properly match Humdrum: the output has to be readable (obviously) and decipherable i.e. it has to preserve information so it works for showing bugs.

Strictly following Humdrum would impede the second goal.

Wednesday, September 2, 2015

Payasan

I've added interval addition and subtraction as per the algorithm in Francois Pachet's "An Object-Oriented Rerpresentation of Pitch-Classes, Intervals, Scales and Chords: The basic MusES" (page 9).

Both are a bit untested, I really should write Quick Check properties and tests at some point.

Tuesday, September 1, 2015

Payasan

I've worked on Pitch and Intervals as a prelude to sorting out the LilyPond relative pitch transformation.

A proper set of functions to manipulate pitches and intervals should provide the tools to encode the relative pitch transformation fairly simply. My previous ad hoc attempts were just confusing.

Monday, August 31, 2015

Payasan

I've commit the initial work on supporting quasiquoted LilyPond fragments as input syntax.

Outputting LilyPond is still to do.

Sunday, August 30, 2015

Payasan

I've pushed a new set of modules that implement a simpler, monophonic notelist - just notes and rests (and tuplets), no chords or grace notes.

This notelist should be able to support transformations like transposition.

Saturday, August 29, 2015

Payasan

I've added linebreaking to ABC output so that it only prints four bars per line.

It's an intention I have for Payasan that the score output should be good enough for "feedback" whilst using the system, but real scores are expected to be hand edited after generation. Fixing line length to four bars rather than making it configurable seems in tune with this.

My previous designs for score languages have always suffered from having too many configuration options.

Friday, August 28, 2015

Payasan

I've added rudimentary MIDI output to Payasan.

The implementation is hacked together from code in the initial version of Payasan, at some point I'd like to be able to have notes with individual velocity control and also to represent swing / quantization, so I'm not too unhappy that this code is quite rough (it will be replaced).

That said I suspect it has some errors as the demo "tune" isn't in the register I expect.

Thursday, August 27, 2015

Payasan

I've rebooted development on Payasan. The current implementation is completely new as I've decided that round-tripping through a subset of ABC (hopefully LilyPond later) is due to be Payasan's salient feature.

Quasiquoting ABC affords a very concise input syntax, outputting ABC generates immediate feedback - for instance if I applied a transposition to the input notelist, I will be able to see it's effect in the notated output I won't just have to trust my ears.

Tuesday, August 25, 2015

zmidi-core-0.8.1

I've updated ZMidi-Core on Hackage. This version 0.8.1 fixes a bug for GHC < 7.10 where I too eagerly removed an import for Data.Monoid.


Monday, August 24, 2015

zmidi-core 0.8.0

I've uploaded a new version of zmidi-core 0.8.0 to Hackage that compiles without warnings on GHC 7.10.

The changes relate to controlling the visibility of imports for Control.Applicative and Data.Monoid. Unfortunately I didn't test them on with a GHC < 7.10 as I don't readily have a setup to do this anymore. The Hackage build bot seems to indicate a problem, so I will make an 0.8.1 release soon.

Wednesday, August 12, 2015

oboe-lang

I've just pushed oboe-lang to GitHub. This is my latest synthesizer design language, basically it is ochre-lang except its module system is based on extensible records (known as forms - c.f Piccola and Gloo) rather than traits.

I'm intending to develop oboe-lang as a "Masters by Research" project so it is expected to be a long haul.

Sunday, May 24, 2015

payasan

Github push.

I've added Payasan to Github. I feel there's potential to Payasan that I haven't yet mined and while I'm not sure how much work I'll do on it over the summer, I'd like to have it under active version control.

Friday, May 8, 2015

Github

I'm now on Github:

https://github.com/stephentetley

So far, I've only uploaded zmidi-core. At the moment I'm working on closed source software so I haven't been committing to Copperbox and my commit rate to Github will be slow for a while at least.

Monday, February 23, 2015

payasan

Copperbox revision 3297.

I've fixed errors in the Melody parser and the pitch to MIDI conversion.

Thursday, February 5, 2015

payasan

Copperbox revision 3296.

I've added quasiquoted concrete syntax to the Melody model based on ABC notation. This probably makes Payasan.Symbolic.SimpleNoteList redundant.

Tuesday, February 3, 2015

payasan

Copperbox revision 3295.

I've added preliminary work on models for chord progressions and melodies. It's intended that these models will support transformations at some point.

Monday, February 2, 2015

payasan

Copperbox revisions 3293 and 3294.

I've moved Djembe and Metronome into the Payasan.Models namespace. My intention for Payasan is that music should be made from models - as the number of models increases this stops the top-level namespace being polluted.


payasan

Copperbox revision 3292.

I've unified the module organization and naming schemes across the "notations" for Djembe patterns and Simple Note List so they match Metronome.

Sunday, February 1, 2015

payasan

Copperbox revision 3291.

I've re-implemented trills so they don't depend on Trail. This makes Base.Trail and Base.Objects redundant, so I've deleted both.

payasan

Copperbox revision 3290.

I've removed the distinction between Events and Fixed-width Events - fixed-width events are now created with a special function, they are not a separate type. This removes a lot of duplication in the EventList and Advance APIs.

Friday, January 30, 2015

payasan

Copperbox revision 3289.

Work towards removing Objects and Trail from Payasan.Base. Initially I've moved chord writing functions into EventList and Advance; I'll have to work out what to do with trill and tremolo.

payasan

Copperbox revision 3288.

I've improved and unified the treatment of fixed-width events for the three note lists - Metronome, Djembe and SimpleNoteList.

Fixed-width events are an important feature carried over from Majalan that accommodate instruments where the sustain/decay is outside user control (e.g. struck percussion instruments, bells...).

payasan

Copperbox revision 3287.

I've reworked SimpleNoteList so it follows the API of Metronome and Djembe.

payasan

Copperbox revision 3286.

I've changed the Djembe API so it follows the Metronome API (i.e. hiding the note interpret function in the render function).

payasan

Copperbox revision 3285.

I've removed the parametric user context from the Ctx datatype. It hadn't been used so far and was adding complexity.

Thursday, January 29, 2015

payasan

Copperbox revision 3284.

I've added a new metronome object. This experiments with having two levels of representation - a higher symbolic level (like the current Djembe representation) and a low level representation that has easy tempo change and concatenation for assembling phrases together.

Tuesday, January 27, 2015

payasan

Copperbox revision 3283.

Work improving the Payasan.Base API. I've added an opaque Track datatype to shield client libraries like Djembe from exposing Advance directly.

Tuesday, January 20, 2015

payasan

Copperbox revision 3282.

Initial work improving the APIs of the EventList and Advance modules.

Monday, January 19, 2015

payasan

Copperbox revision 3281.

I've tweaked MIDI output to enable General MIDI percussion sounds. This is just preliminary work, there is more to do tidying up MIDI output.

payasan

Copperbox revision 3279.

I've add name modules for General MIDI instruments and drums to Payasan.Base.Names.


Update - Copperbox revision 3280.

I've added cabal files to enable Haddock doc generation.

payasan

Copperbox revision 3277.

More refactoring. I've moved the "names" modules from Payasan.Symbolic to Payasan.Base.Names.

Update - Copperbox revision 3278.

I've moved the chord "names" into Payasan.Base.Names. Strictly speaking these are functions not "names" but Payasan.Base.Names is the best place for them for the time being.

payasan

Copperbox revision 3276.

First part of a major reorganization / refactor. The focus will be using EventList or Advance exclusively to render a track. EventList and Advance are no longer going to be seen as components to make tracks via concatenation.

Sunday, January 18, 2015

payasan

Copperbox revision 3275.

Now generating MIDI from djembe notation. Needs a lot of tidying up - the API provided by Payasan.Base is far too complicated...

Friday, January 16, 2015

payasan

Copperbox revision 3274.

Initial work on a notation for djembe rhythms. Again using quasiquotation.

Wednesday, January 14, 2015

payasan

Copperbox revision 3279.

Work on a quasiquoted simple note list. The syntax is based on ABC notation.

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.