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.
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.
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.
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”.
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.
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.
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 %matplotlib inline 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.
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).