Poster presented at Digital Libraries for Musicology, July 2021
This paper describes a web-based interactive tool developed to explore a repository of sheet music visually. Starting with symbolic representations of the scores, we calculated high-level features like tempo, time signature, mode, and a composite measure of difficulty. Then we used a different visual element to represent each of those features, such as color, shape, and icons. With the interactive tool, you can explore the repository using the images, view the scores, and listen to MIDI versions and audio recordings. The use cases for this tool include organization of sheet music databases, similarity comparison and recommendations, and improving the user experience of searching for scores.
Tools: Humdrum, Python (music21, Jupyter), Javascript, HTML, CSS, JSON
2021, co-contributor: John McNamara
How has harmonic complexity in classical music changed over the past 200 years? Because the rules about "acceptable" types of harmonies relaxed over time, we hypothesized that more recent pieces would contain more extended chords (i.e., 7ths, 9ths, 11ths, and 13ths) than earlier pieces. A systematic analysis of solo piano works (40 pieces divided into 50-year epochs), showed that the proportion of extended chords increased significantly over time. However, the effect size was smaller than we might have expected, showing incremental change in tonal harmony trends.
Tools: Python (music21, scikit-learn, matplotlib), Photoscore
Score formats: MIDI, musicXML, pdf
Exhibited in the Clough Art Crawl, Spring 2021 Virtual Show
This interactive code-based piece is about connection to our auditory environment. What happens when we really listen to the noise or silence around us? The noise transforms into something beautiful, but only if you are quiet.
Interactive code available at https://editor.p5js.org/llight/sketches/qn9pFri4p (requires microphone access)
Tools: p5.js
ThinkLive, Inc.
To address a user request for more customization options, we created a set of color themes that students can apply to an interactive virtual turntable. Our goal was to allow for personal expression without distracting from the main functionality with too many options. Design goals included: 1) a set of pre-defined themes with colors chosen to complement each other, 2) palettes that are visually appealing without distracting from the functionality, and 3) ensuring all functions and buttons were still visible with consistent formatting across themes.
Javascript, HTML, CSS
2023, ThinkLive, Inc.
The average beats per minute (BPM) of a song helps users decide which song to choose next in their DJ set. However, sometimes users report that those estimated BPMs (calculated using a Python audio content analysis library) seem incorrect. I systematically compared our estimates against those in Spotify's metadata, matching songs by artist and title via a fuzzy matching algorithm. Our results revealed several clusters: approximate matches, and those that were off by a factor of two. This is consistent with common problems in human expert-annotated BPMs, where two reviewers might have different perceptions of the pulse - for example, one might estimate the tempo as 60 while the other estimates 120.
Tools: Python, Spotify API
Presented at the Future Directions of Music Cognition International Conference, March 2021
Co-contributor: Claire Arthur
This is a systematic analysis of how multiple voices move together in the choral works of the influential Renaissance composer Palestrina.
We found that Palestrina used different voice-leading patterns at different hierarchical levels (from one pulse beat to the next, vs. all note-to-note transitions). For example, moving to a perfect interval by parallel motion (a "forbidden" pattern in Renaissance music) occurred more often at the higher metric level. Factors associated with breaking the rules were similar at the different metric levels, but the directions of the effects were not always what we might expect from a traditional music theory perspective.
Tools: Python (music21, pandas), JMP, Excel
Presented at the Joint Statistical Meetings, 2017
Missing data is a common issue in survey research. If respondents skip some of the questions that are needed to calculate summary scales, we can use imputation to estimate those items. We compared imputation methods for a health-related quality of life measure, considering quantitative criteria such as bias and precision, as well as practical considerations like interpretability by a non-technical audience. We found that simple is best; weighing all the pros and cons, an easy-to-implement item substitution outperformed more complex methods like multiple imputation.
Tools: SAS, SQL, Excel
This game develops kids' listening and instrument recognition skills. The baby animals, each represented by a different instrument sound, are looking for their parents. Listen to the baby sing, then match it up with its parent's voice (the same instrument in a lower register).
Tools: Adobe Animate, Actionscript, MuseScore