diff --git a/tool/humdrum/tool-humdrum-complex.txt b/tool/humdrum/tool-humdrum-complex.txt
new file mode 100644
index 0000000..d700afa
--- /dev/null
+++ b/tool/humdrum/tool-humdrum-complex.txt
@@ -0,0 +1,33 @@
+**one **two **three **four **five
+1 2 3 4 5
+* *- * *- *
+*v *v *v
+1&3&5
+*-
+
+**one **two **three **four
+1 2 3 4
+* * *v *v
+* *x *x
+*v *v *
+1&3&4 2
+*- *-
+
+**one **two **three **four
+1 2 3 4
+*v *v *^ *^
+1&2 3a 3b 4a 4b
+* *v *v * *
+* * *v *v
+*- *- *-
+
+**one **two **three **four **five
+1 2 3 4 5
+* *- * * *
+*v *v * *
+* *^ *
+* * *+ *
+* * * **six *
+1&3 4a 4b 6 5
+* *v *v * *
+*- *- *- *-
diff --git a/tool/humdrum/tool-humdrum-diagnostics.txt b/tool/humdrum/tool-humdrum-diagnostics.txt
new file mode 100644
index 0000000..79c0b66
--- /dev/null
+++ b/tool/humdrum/tool-humdrum-diagnostics.txt
@@ -0,0 +1,37 @@
+
+| Error | Description |
+| ----- | ----------- |
+| ERROR 1: | Record containing add-spine indicator has not been followed by exclusive interpretation for that spine in line |
+| ERROR 2: | Illegal empty record in line |
+| ERROR 3: | Leading tab in line |
+| ERROR 4: | Trailing tab in line |
+| ERROR 5: | Consecutive tabs in line |
+| ERROR 6: | Missing initial asterisk in interpretation keyword in line |
+| ERROR 7: | Null exclusive interpretation found in line |
+| ERROR 8: | Incorrect number of spines in interpretation record in line |
+| ERROR 9: | Local comment precedes first exclusive interpretation record in line |
+| ERROR 10: | Number of sub-comments in local comment does not match the number of currently active spines in line |
+| ERROR 11: | Missing initial exclamation mark in local comment in line |
+| ERROR 12: | Data record appears before first exclusive interpretation record in line |
+| ERROR 13: | Number of tokens in data record does not match the number of currently active spines in line |
+| ERROR 14: | All spines have not been properly terminated in file |
+| ERROR 15: | First exclusive interpretation record contains a null interpretation in line |
+| ERROR 16: | First exclusive interpretation record contains a spine-path indicator in line |
+| ERROR 17: | First exclusive interpretation record contains a non-exclusive interpretation in line |
+| ERROR 18: | Spine-path indicators mixed with keyword interpretations in line |
+| ERROR 19: | Improper number of exchange-path indicators in line |
+| ERROR 20: | Single join-path indicator found at end of interpretation record in line |
+| ERROR 21: | Join-path indicator is not adjacent to another join-path indicator in line |
+| ERROR 22: | Exclusive interpretations do not match for designated join spines in line |
+| ERROR 23: | Leading spaces in token in line |
+| ERROR 24: | Trailing spaces in token in line |
+| ERROR 25: | Consecutive spaces in token in line |
+| ERROR 26: | Multiple-stop contains null token in line |
+| WARNING 1: | Local comment may be mistaken for global comment in line |
+| WARNING 2: | Data token may be mistaken for global comment in line |
+| WARNING 3: | Data token may be mistaken for local comment in line |
+| WARNING 4: | Data token may be mistaken for exclusive interpretation in line |
+| WARNING 5: | Data token may be mistaken for tandem interpretation in line |
+
+
+
diff --git a/tool/humdrum/tool-humdrum-example-01.txt b/tool/humdrum/tool-humdrum-example-01.txt
new file mode 100644
index 0000000..cc876fc
--- /dev/null
+++ b/tool/humdrum/tool-humdrum-example-01.txt
@@ -0,0 +1,19 @@
+**one **two **three
+1 2 3
+* *+ *
+* * **four *
+1 2 4 3
+1 2 4 3
+* * *- *
+1 2 3
+* *- *
+1 2 3
+* *^ *
+1 2a 2b 3
+1 2 3
+* *v *v
+1 2&3
+1 2&3
+*x *x
+2&3 1
+*- *-
diff --git a/tool/humdrum/tool-humdrum-good.txt b/tool/humdrum/tool-humdrum-good.txt
new file mode 100644
index 0000000..910be01
--- /dev/null
+++ b/tool/humdrum/tool-humdrum-good.txt
@@ -0,0 +1,34 @@
+!! This is a global comment.
+!! The following line specifies three
+!! interpretations called "inter":
+**inter **inter **inter
+!! The next line has three local comments.
+! flute ! oboe ! fingering
+We are ASCII
+data tokens .
+We are data as well.
+!! The above three lines are data records.
+!! More examples of data records:
+76.3 x+y L(-)%4^
+___ __ _____
+> < |||
+!! The next data record contains
+!! only null tokens:
+. . .
+!! Some spine-path exchanges:
+!Spine1 !Spine2 !Spine3
+*x *x *
+* *x *x
+!Spine2 !Spine3 !Spine1
+Monday Tuesday Wednesday
+4:00 5:00 6:00PM
+!! Some null comments follow:
+!!
+! ! !
+!! New exclusive interpretations:
+**foo **bar **ding
+!! A tandem interpretation in spine #2:
+* *bop *
+More data tokens.
+!! Some spine-path terminators:
+*- *- *-
diff --git a/tool/humdrum/tool-humdrum-options.txt b/tool/humdrum/tool-humdrum-options.txt
new file mode 100644
index 0000000..350244b
--- /dev/null
+++ b/tool/humdrum/tool-humdrum-options.txt
@@ -0,0 +1,6 @@
+
+| Option | Meaning |
+| ------ | ------- |
+| h | displays a help screen summarizing the command syntax |
+| v | verbose mode |
+
diff --git a/tool/humdrum/tool-humdrum-table-spine.txt b/tool/humdrum/tool-humdrum-table-spine.txt
new file mode 100644
index 0000000..adf986a
--- /dev/null
+++ b/tool/humdrum/tool-humdrum-table-spine.txt
@@ -0,0 +1,9 @@
+
+| Token | Meaning |
+| ----- | ----------------------------------- |
+| `*+` | start a new spine |
+| `*-` | terminate a current spine |
+| `*^` | split a spine (into two) |
+| `*v` | join (two or more) spines into one |
+| `*x` | exchange the position of two spines |
+
diff --git a/tool/humdrum/tool-humdrum-terminology.txt b/tool/humdrum/tool-humdrum-terminology.txt
new file mode 100644
index 0000000..88e14e1
--- /dev/null
+++ b/tool/humdrum/tool-humdrum-terminology.txt
@@ -0,0 +1,15 @@
+
+
+| Term | Meaning |
+| --- | --- |
+| *record* | A line of text; a sequences of (zero or more) ASCII characters terminated by a carriage return or newline character
+| *data record* | Any *record* which is not a *comment* or an *interpretation*
+| *comment* | A *global* or *local comment*
+| *global comment* | Any *record* beginning with two exclamation marks (!!)
+| *local comment* | Any *record* beginning with a single exclamation mark (!)
+| *interpretation* | An *exclusive* or *tandem interpretation*, or a *spine-path indicator*
+| *exclusive interpretation* | Any *record* beginning with one or more asterisks (\*\*) and having at least one active spine beginning with two asterisks
+| *tandem interpretation* | Any *record* in which each active spine begins with a single asterisk, excluding spine-path indicators
+| *spine-path indicator* | One of the following five *interpretations*: `*+`, `*-`, `*v`, `*^`, `*x`.
+| *null token* | The period (.) either alone on a single *record* or separated from other characters by tabs
+| *spine* | A column of information — including *data records, local* *comments*, and *interpretations.*
diff --git a/tool/humdrum/tool-humdrum-verbose.txt b/tool/humdrum/tool-humdrum-verbose.txt
new file mode 100644
index 0000000..b8c7192
--- /dev/null
+++ b/tool/humdrum/tool-humdrum-verbose.txt
@@ -0,0 +1,25 @@
+Inventory of Interpretations: HUMDRUM FILE SUMMARY
+
+Interpretations Occurrences
+**inter 3
+**foo 1
+**bar 1
+**ding 1
+* 2
+*bop 1
+
+Inventory of data token signifiers: %()+-.034567:<>
+ACILMPSTW^_
+adeklnorstuwxy
+
+Number of global comments: 14 Number of local comments: 4
+Maximum # of concurrent spines: 3 Minimum # of concurrent spines: 3
+Number of data records: 10 Number of null tokens: 4
+
+
+Changes in number of spines:
+New spines: 0
+Terminated spines: 3
+Split spines: 0
+Joined spines: 0
+Exchanges spines: 4