The lucid use of Humdrum depends on understanding how each of the tools works and how it is possible to connect the tools to perform particular tasks. The power and creativity of Humdrum truly lies in the hands of the user.
As we've seen, there are two parts to Humdrum: the Humdrum syntax and the Humdrum toolkit. The Humdrum syntax simply provides a formal framework for representing any kind of sequential symbolic data. A number of representation schemes are pre-defined in Humdrum, but you are free to construct your own representations as demanded by the tasks. In several of the tutorial examples in the previous chapters we saw various ad hoc representations that were concocted as temporary or intermediate representations. You should now feel comfortable with the possibilities of devising your own representations to assist you in whatever task you are interested.
The Humdrum Toolkit is a set of inter-related software tools. These tools manipulate text data conforming to the Humdrum syntax. If the data represents music-related information, then we can say that the Humdrum tools manipulate music-related information. Each Humdrum tool carries out a fairly modest process.
By way of review, we can group the various Humdrum (and UNIX) tools according to the type of operation. There are roughly a dozen or so classes of tasks:
Not all of the existing Humdrum Tools were covered in this book. Nor were all of the available options described for all of the tools discussed. Exploring the Humdrum Reference Manual is recommended for readers interested in continuing to develop facility with Humdrum.
If you have made it this far in the book, you will now have a fairly sophisticated knowledge of Humdrum. With this background, we might review some general principles and specific tips for making effective use of Humdrum when pursuing some musicological project. The following seven questions provide useful guidelines:
115 instances of ...
28 instances of ...
Do I want to output a found pattern?
pattern found in line ...
pattern not found ...
Do I want a comparison?
file X is the same as file Y
X is similar to Y
X and Y are different
Use find and grep to locate useful materials.
Use encode to create new data. Use humdrum and proof to check the data. If necessary, define your own Humdrum representation for a given purpose.
Use recode and humsed to classify data into various classes -- such as up, down, leap, long, short, difficult, easy, clarion register, dominant, etc.
Use context to generate contextual information. Use assemble, rend and cleave to link information together.