Some short news about various subjects I have been occupied with in the last 2-3 months. Though I would like to post much more on this blog, I realize it is quite time-consuming to write introductory articles. For example, the last post about rythmic canons took me 3-4 hours, what with all the images and small code to write. Until the end of this year, I plan on posting about Klumpenhouwer networks, and also about the Z-relation/homometry in music.
During the months of June and July, I have been mainly involved in a small personal (non-musical) project about data mining and data visualization of mesopotamian administrative texts, and more particularly about administrative texts from the 3rd dynasty of Ur. The Ur III period is characterized by an abundant administrative documentation, giving insights about the organization of its society. About 65,000 cuneiform clay tablets are known, which record various types of transactions. Below is an example of such a tablet.
The sumerian text of these tablets exhibit repeatable patterns, which makes it an interesting, though challenging, task for a data science project. Here is an example (which I took from the following paper: Jacob L. Dahl, Laurent F. Hebenstreit, “17 Ur III texts in a private collection in Paris”, Revue d’assyriologie et d’archéologie orientale 2007/1 (Vol. 101), p. 35-49)
Sumerian | Translation |
(obverse) | |
1. 3(u) udu | 30 sheep |
2. 2(disz) sila4 | 2 lambs |
3. u4 3(u)-kam | on the 30th day. |
4. ki ab-ba-sa6-ga-ta | From Abba-saga, |
5. in-ta-e3-a | Intae’a |
(reverse) | |
1. i3-dab5 | seized. |
2. iti ezen-{d}nin-a-zu | Month: “Ninazu festival” |
3. mu en-unu6-gal {d}inanna ba-hun | Year: “Enunugal(anna) was installed (as en-priest) of Inanna” |
The formulation “ki X-ta” indicates that ‘X’ is the person (or function, or place) giving the goods, whereas the formulation “Y i3-dab5” indicates that ‘Y’ received these goods. If one can successfully parse those instances in all the texts, a transactional network can be reconstructed, which is the goal of my project. In addition, since the year can often be identified in the texts, one obtains a time-varying graph.
The GitHub project is available here, and the visualization of the transactional network is here. I have not yet included the Python code for parsing and analyzing the texts, as it is quite dirty and also needs to be cleaned and probably refactored.
The number of texts makes for a quite big database, and therefore one needs an appropriate visualization tool. I had a lot of fun with d3.js, an extremely powerful Javascript library for data visualization. The current visualization approach gives control over the year, and dynamically updates the graph as it is changed. There is also the possibility to see the texts by hovering over the links, filter by keywords, and search for specific person names.
There are currently many limitations, which are listed on the GitHub project page. The next steps would be to write more robust code, and to delve into deeper analyses of this transactional network.
I have just received the latest book by Frank Lehman, “Hollywood Harmony” !
I have been following the work of Lehman for some time, though I have not posted about it in this blog. I have not yet read the book, just flipped through the book, so I complete review will be due for a later post, although I can already tell that Lehman makes prominent use of neo-Riemannian theory to analyze various film scores.
Finally, a small word about rhythmic canons. I was going through some old results about rhythmic canons mod p, (see here, here, here, and here for a refresher), and I noticed something interesting from the musical point of view (though trivial mathematically).
Recall that, by a result of Amiot, for any polynomial (the motive), there exists an integer
and a polynomial
(the entries) such that we have
in .
This means that the motive with the entries
form a rhythmic canon modulus 2 of length
.
If we now multiply both sides by , we get that
in
. In other words, the motive
with entries
form a different sort of canon, one with the same length but where all the beats have zero value modulus 2, i.e. either no beat at all or exactly two.
Constructing these canons for a given motive can be achieved either algebraically, by identifying the correct and then obtaining
by polynomial division, or using a modification of the algorithm of Amiot which has been presented in previous posts.
For example, we consider the motive , or
. This new canon will have length 21. We first put the motive at entry 0, as shown below.
Then, we look for the first non-zero entry (this is the difference with the initial algorithm, where we would look for the first zero entry modulus 2), in this case 1, and we add a copy of the motive there.
The next non-zero entry is 2, so we repeat this operation,
until we obtain the complete canon, as shown below.
The last beat (which is deliberately pictured to fall outside the grid) will be in fact wrapped to the beat at 0, since we are working in , and we thus obtain a canon where all the beats are zero modulus 2.
It would definitely be interesting to see musical applications of such “zero” canons !