Home
Eamonn Bell is Assistant Professor in the Department of Computer Science at Durham University. His research interests fall under the broad umbrella of the digital humanities and he now teaches across the computer science curriculum at Durham. Since 2019, his research has been funded by UK Research and Innovation (UKRI), the Irish Research Council, and a number of smaller institutional grants. He is most recently involved in the design and delivery of several DRI projects serving UK-based arts, humanities, and culture researchers.
Before coming to Durham, he was a postdoctoral Research Fellow at the Department of Music, Trinity College Dublin where he conducted research on how the once-ubiquitous audio Compact Disc (CD) format was designed, subverted, reproduced and domesticated for musical ends. He holds a PhD in Music Theory from Columbia University (2019), where he wrote a dissertation on the early use of digital computers in the analysis of musical scores under the supervision of Joseph Dubiel. Shortly before he began graduate studies in music at Columbia, he graduated from TCD with a joint honours degree (a “two-subject moderatorship”) in Music and Mathematics (2013).
This is my place on the web. Eventually, you’ll find below all manner of publications, blog posts, microblog posts, and essays. Some of this content was previously hosted on my academic website at Columbia and on a Jekyll blog that was hosted on GitHub Pages. You can also find me on Mastodon.
Blog
I’m delighted to announce that I have been awarded an Irish Research
Council (IRC) New Foundations grant for the project “Uses, reuses and
abuses of the compact disc at 40: an obsolete format and/or a new
opportunity for critical digital media literacy?”. This year, the New Foundations
programme supported projects that aim to “to bring science
(including social science) and art/design/humanities together to work on
new ways of communicating scientific concepts and/or complex societal
challenges for a lay audience,” and I’m pleased to say that this project
was funded under this STEAM strand.
This is a response to a
prompt over at the TAXIS blog, where we read the first chapter of
the classic Geoffrey C. Bowker and Susan Leigh Star, Sorting Things
Out: Classification and Its Consequences, (Cambridge, Mass.: MIT
Press, 2000).
Media in their broken states can tell us as much about their social
construction as they can in their putatively “normal” modes of
operation, so I’ve taken an interest in how the designers and
manufacturers of CD players and CD media have managed defects in their
engineering work. I’ll set aside the question of exactly where or what
the “infrastructure” is here—is it the defect-handling electronics? the
players? the damaged discs? the entire CD media “ecology”?—for the
moment and focus instead on the work of classification in the management
of defects in optical media. Most of the sources for the material in
this post are journal articles and published reports of research done at
various sites over the last 30 or 40 years, with a focus on the CD. I’m
drawing on the chosen reading for guidance about how to parse this
material as well as where I should look for more.
Doing some reading for my current project (a history of the CD Audio format), I stumbled
across a physical phenomenon that does not often crop up in discussions
of the history of gramophone recording: the Buchmann-Meyer effect. This
optical effect was once used to measure the quality of gramophone
records, both qualitatively and quantiatively, by shining a band of
light on a disc and capturing the characteristic “Christmas tree”–like
pattern that is reflected back to the viewer. If the pattern is clear
and distinct, the record is in good nick; if the “branches” of the
pattern are ill defined, the disc surface has perhaps become subject to
wear and disintegration, or, indeed, was never fabricated to a high
standard in the first place. In a figure from a very interesting recent
paper—interesting for other reasons!—we see three discs.
Visible are Buchmann-Meyer patterns reflected from the A and B sides of
an Audio Engineering Society test record from 2007 (well defined) and
one from an undated lacquer transcription disc, probably produced in
France (not as well-defined).
Short post tonight. I often feel quite defensive when I start off thinking or writing about what I like in minimalist music, because, let’s face it – even thanks to interesting work by Music Theorists™ – there’s a fair bit of residual snobbishness in academe when it comes to this repertoire. I think the problem is that there are some composers in this style who have written some pretty bad music, and its hard to get away from the idea that choosing to study someone’s musical works has this side-effect of inaugurating the person in some sort of music-analytical Hall of Fame: “this person’s work is worth analyzing”. Pop music tolerates one-hit wonders, as does – perhaps not coincidentally – opera. So why not twentieth-century minimalism?
Update: I recently learned that box.com plans to deprecate WebDAV support in October 2019, a decision which renderse part of the workflow described here unsustainable beyond October. As I come up with an alternative solition, I will change this post to reflect the new reality.
First things first, we need a reference manager. A reference manager stores bibliographic information for each reference, and most of them support associating the reference with a source file corresponding to the reference. Usually this is a PDF from the publisher or a scan you might have come across, but it can also be a HTML snapshot of a website or, indeed, other multimedia such as audio and video. I use Zotero.
This is a little helper that can be used in Python 3 to generate a set of dictionaries from a schema that specifies iterators that provide the values of the generated dictionaries.
It will generate one dictionary for every configuration (i.e. Cartesian product) of values specified by iterators in the schema. Non-iterable values are kept fixed. Generators may also be used in the schema (see code snippet).
This is useful for programmatically constructing keyword arguments when experimenting with the parameters of functions, because a dictionary can be unpacked into keyword arguments by using the double star operator (**some_dict
) in the last argument position. For this reason, I call the schema the optionset_schema
.
Follows exposition in Jason Yust, “Schubert’s Harmonic Language and Fourier Phase Space.” Journal of Music Theory. 59/1 (2015)
Import some modules and functions that will be useful later.
import itertools
import music21
import numpy as np
from matplotlib import pyplot as plt
from numpy.fft import fft
The Fourier transform decomposes a time-varying signal into a mixture of sinusoidal components.
To take advantage of the Fourier transform, we represent a pitch class (multi)set as a pitch-class vector, where the n-th entry in the vector correpsonds to the cardinality of the pc n in the multiset.
J is an APL-like array programming language. It was developed in collaboration with Ken Iverson. The documentation online, especially the tutorials and educational material, is exemplary. This weekend I worked through the J primer. If you can ignore the rhapsodic evangelism for the language, then it’s a robust and thought-provoking introduction to a very different way of programming.
One of my motivations for learning something about J is to understand this article about a combinatorics problem with an application in music theory. Because arrays (and their generalization, n-dimensional matrices) are of fundamental importance in J, it is possible to write a very terse program to compute a twelve-tone matrix. Not a “for” loop in sight!
A post on the Google Research blog today announced
the open-sourcing of Embedding Projector, a web application for interactive visualization and analysis of high-dimensional data
Over the summer, I presented work (co-authored with Jaan Altosaar) on the application of word embedding models to a large–and admittedly noisy–corpus of classical music. It appears that word embedding models capture something about sequences of chords. Our work, and related recent work with a different dataset, shows that that major triads are somewhat evenly distributed through the embedding space, in their circle-of-fifths order.
For a project I am currently working on using the Processing programming language, I use the provided Table class to read in data from a flat CSV file.
The column names in this file have to match parameters specified elsewhere in the code. As a consquence, when validating the data from the file, I need access to the column names.
There is an undocumented private field in all instances of the Table object which contains the column names (when the flag to treat the first line of the file as column headers is flipped in the Table constructor).