Publications

ScoreCard: Generative music programs as QR codesWAC 2024
Ian Clester, Jason Freemanpdf

Distributing Generative Music With AlternatorJAES Volume 71 Issue 11 (Nov. 2023)
Ian Clester, Jason Freemanpdf

Hack the Show: Design and Analysis of Three Interaction Modes for Audience ParticipationJAES Volume 71 Issue 11 (Nov. 2023)
Matthias Jung, Ian Clesterpdf

Flexible Instruction-Set Semantics via Abstract MonadsICFP 2023
Thomas Bourgeat, Ian Clester, Andres Erbsen, Samuel Gruetter, Pratap Singh, Andy Wright, Adam Chlipalapdf, video

LambDAW: Towards a Generative Audio WorkstationICLC 2023
Ian Clester, Jason Freemanpdf, video

Composing with Generative Systems in the Digital Audio WorkstationMILC 2023
Ian Clester, Jason Freemanpdf, demo

Computer-Assisted Measure Detection in a Music Score-Following ApplicationWoRMS 2022
Eran Egozy, Ian Clesterpdf, video

Alternator: A General-Purpose Generative Music PlayerWAC 2022 — Best Paper Award
Ian Clester, Jason Freemanpdf, video

Composing the Network with StreamsAM 2021 — IWIS Best Poster Award
Ian Clester, Jason Freemanpdf, video

kilobeat: low-level collaborative livecodingWAC 2021
Ian Clesterpdf, video

Robotic Grasping of Fully-Occluded Objects using RF PerceptionICRA 2021
Tara Boroushaki, Junshan Leng, Ian Clester, Alberto Rodriguez, Fadel Adibpdf, 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!