I've begun a review of the existing documentation and code, and am looking at revising/updating some particular points. At the moment I'm primarily interested in some of the ways we can manipulate/analyze ABC notation. I think there are some powerful ways the existing toolset could be adapted to provide a "swiss army knife" of music creation and analysis, and am grateful to be on board. Stay tuned.
I've started playing around with SpiderMonkey for a Javascript engine. Much better packaged then it used to be. I might go with this instead of ngs-js since it is being actively maintained. What I need to evaluate:
Since the thing I could really use right now is something that translates MusicXML files output from Finale into ABC it makes sense to focus on this feature first. Combining SpiderMonkey with a libxml wrapper would make it very easy to implement. Might also simplify ABC to MusicXML output since I already have a Javascript prototype from Phiz web app framework project.
Need to think about this more.
Haven't done much work on this since this time last year. Need to get this out of moth balls. Fortunetly my experiences between then and now will add to this project.
Interactive (-i) mode now is working. Code is pretty crude but will do for prototype. Still need to cleanup data structures and wrapper native methods for Guile script access. Will have to update the documentation soon to include instructions on interactive mode.
The source code was updated for prototype 0.04. It should now use .abcshrc (a Guile based config file for abcsh) if it is found in the home directory. I've adapted the 0.02 ABC_OM* functions to use as low level function for reading and writing ABC content. This will eventually be replaced in an upcoming prototype. I've decided it makes sense to have the content saved as a multi-linked list and figure out a way to translate that into a native Guile (or other scripting language) data type. I am hope that going with a more flexable C data representation will lead to more interesting method evolution in abcsh.
Writing prototype now using Guile for processing the .abcshrc file. I've writen an outline of documentation in texinfo and that is now also in the cvs tree. Still debugging command line options handling.
abcsh has been accepted as a GNU program. autoproject seems to work now on my development machine so I have a outline of the next prototype started. I am cleaning up the documentation so I can write some test cases and start developing real code for the 0.04 prototype.
The idea of abcsh has evolved over time and continues to evolve and change. It started as a series of short, simple Perl scripts for processing ABC Music Notation files for a web site. Later these code more structured and rewritten in Python. They have been rewritten several times in python turning more and more into a shell like utility. About a year ago I thought I about writing a C program that would embed Python and other scripting languages so that I could extend the utility in a moduler fashion and possibilty interest others in using it as well.
Given the nature of C programs (and the fact that it has been many, many years since I did C programming) I think it is very important to correctly indentify core functionality for abcsh. I am probably going to prototype some of the functionality in a familair high level language. The question I need to decide on is do I write this completely in the high level language first or do I get a C wrapper around a scripting language (say Guile as I need to learn it anyway) and do the prototype that way? I'll need to decide this before I move forward.
This is project is still at the thinking through stage. I am in the process of learning Autotools and restructing my prototype code so nothing is working at the memoment.