Publications
ScoreCard: Generative music programs as QR codes — WAC 2024
Ian Clester, Jason Freeman — pdf
Distributing Generative Music With Alternator — JAES Volume 71 Issue 11 (Nov. 2023)
Ian Clester, Jason Freeman — pdf
Hack the Show: Design and Analysis of Three Interaction Modes for Audience Participation — JAES Volume 71 Issue 11 (Nov. 2023)
Matthias Jung, Ian Clester — pdf
Flexible Instruction-Set Semantics via Abstract Monads — ICFP 2023
Thomas Bourgeat, Ian Clester, Andres Erbsen, Samuel Gruetter, Pratap Singh, Andy Wright, Adam Chlipala — pdf, video
LambDAW: Towards a Generative Audio Workstation — ICLC 2023
Ian Clester, Jason Freeman — pdf, video
Composing with Generative Systems in the Digital Audio Workstation — MILC 2023
Ian Clester, Jason Freeman — pdf, demo
Computer-Assisted Measure Detection in a Music Score-Following Application — WoRMS 2022
Eran Egozy, Ian Clester — pdf, video
Alternator: A General-Purpose Generative Music Player — WAC 2022 — Best Paper Award
Ian Clester, Jason Freeman — pdf, video
Composing the Network with Streams — AM 2021 — IWIS Best Poster Award
Ian Clester, Jason Freeman — pdf, video
kilobeat: low-level collaborative livecoding — WAC 2021
Ian Clester — pdf, video
Robotic Grasping of Fully-Occluded Objects using RF Perception — ICRA 2021
Tara Boroushaki, Junshan Leng, Ian Clester, Alberto Rodriguez, Fadel Adib — pdf, video
Projects
EarSketch
EarSketch is a platform for making music with code. By providing a free, web-based environment with a large sample library and an introductory CS curriculum, it aims to empower students to create music and write programs for themselves using Python or JavaScript. I develop EarSketch in the Computational Music for All lab under Jason Freeman; my work has included overhauling much of the interface and implementation of EarSketch during the move from Angular 1 to React and from JS to TypeScript. Try it out here!
BackTrack
BackTrack (Backscatter Tracker) is a system for RFID localization I developed in the Signal Kinetics group under Fadel Adib, building on the lab’s work on RFind and TurboTrack. RFID tags are normally used to determine the identity of people and goods, but this system enables determining their position in space as well. RFID tags are particularly useful as localization targets due to their low cost, ubiquity, and battery-free operation. I built a frequency-hopping system that provided higher framerates while requiring lower sampling rates, compared to prior systems, with the goal of exploring and enhancing the feasibility of RFID localization as an input for interactive applications.
ConcertCue
ConcertCue is a system for streaming synchronized program notes during a live musical performance, with the goal of enriching the concert-going experience with text and images designed to aid in musical appreciation and understanding. I worked on this project with Professor Eran Egozy and Diane Zhou throughout the 2018-2019 academic year.
Among other things, this work involved making improvements to the Director (the interface used by the human operator to keep ConcertCue in sync with the live performance) and doing the work necessary to operate ConcertCue at a few concerts with the BSO (and one concert all the way over at Michigan Tech!).
Notable features I worked on include the ability to determine the visual locations of measures in sheet music (and to highlight the current measure on the page when operating the Director) and initial work on automatic performance synchronization via real-time dynamic time warping.
The project code isn’t currently publicly available, but the web application can be found here, and more information can be found here.
RISC-V Formal Semantics
RISC-V is an open instruction set architecture designed to be practical. Basically, it’s a cool open standard that also aims for practicality and extensibility.
From Spring 2017 through IAP 2019, I worked with Professor Adam Chlipala and Thomas Bourgeat to develop a formal, friendly, and runnable RISC-V specification. The idea is to clearly define the correct behavior from RISC-V in a format that is both human-readable and machine-readable. At present, this is in the form of an emulator written in Haskell. This project is available on GitHub!