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.
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
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.
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
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
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.
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.
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.
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
Sunday, August 30, 2015
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.
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.
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.
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.
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.
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
Friday, May 8, 2015
Monday, February 23, 2015
Thursday, February 5, 2015
Tuesday, February 3, 2015
Monday, February 2, 2015
Sunday, February 1, 2015
Friday, January 30, 2015
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...).
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...).
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.
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
Tuesday, January 20, 2015
Monday, January 19, 2015
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.
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.
Sunday, January 18, 2015
Friday, January 16, 2015
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.