Advanced user: uses many tools (both Humdrum and UNIX), utilizes the flexibility of the tools (command line parameters, environment), bases the interactive use on pipes and automatic clean-up of temporary files. He or she builds advanced shell scripts and small AWK scripts. Designer/Developer: designs new representations, and new commands in a clever way using appropriate programming languages (AWK, perl, c, java, etc.), regards existing efforts (maintainability). As an example consider a beginner’s and advanced user’s way of comparing harmonic and melodic intervals:
Beginner’s way of using Humdrum:
hint chor024.krn >temp.1 mint chor024.krn >temp.2 assemble temp.1 temp.2 >out rm temp.1 temp.2 |
Advanced user’s way of using Humdrum:
assemble <(hint chor024.krn) <(mint chor024.krn) >out |
2.2 A Distributed Support Model
It must be stressed that - not only because of the comparably difficult usage of a UNIX shell, but also because of the high potential of the tools - to use the tools effectively, users have to spend some time in learning the tools and skills. Luckily there are already useful references:
- As a beginner one should at least follow the tutorials and try and modify the given examples. This will lead to a sense for the tools.
- As an advanced user one should read manual pages and foreign code to quickly develop own solutions.
- As a designer/developer one should study the architecture of Humdrum commands and representations in order to design representations and write good tools that can be of use for others, and one should keep maintainability in mind.
Currently the Humdrum tools are collected by David Huron and Craig Stuart Sapp, thoroughly testet and released as a simply installable package. While this effort must be highly appreciated, both cannot be expected to give general support for the Humdrum tools. Therefore, from my point of view, central communicational infrastructures such as mailing lists should be established, where users can support one another. Advanced users may also argue that development and maintenance of their own new tools should happen in collaborative development environments, such as professionally hosted OpenSource-projects (SourceForge etc.).