Piano Heatmap Analysis (Part 3)

Published November 7, 2020 on Chandler Swift's Blog Source


A third post in a series (part 1, part 2) on exploring what keys of a piano I use the most.

I’m a sucker for data. Doesn’t really matter about what—lately, election polling has been interesting to watch—but I really like seeing numbers about things I do. Music is one interesting thing, and I like that I can see my stats on last.fm, or the annual email from Spotify with my year in review. Whether it’s using time-tracking software or using a fitness app to track duration/pace/heart rate/etc when running or using GPS data and OBD sensors to figure out what part of my commute burns the most gas1, I really enjoy being able to see changes even in fairly useless data. With that in mind, here’s an update on my attempt to keep track of the keys I play.

We left off with a page that would keep track of keys played, but every time the page was reloaded (which wasn’t infrequent, given that Edge2 crashed more than occasionally when MIDI devices were added and removed) the data would be reset, so it was difficult to keep a running total.

To mitigate this, I added support for saving data per-session. If Edge decides to stop accepting MIDI data, I can simply save the session and restart the browser. This uses Dexie as an easy wrapper for IndexedDB, and stores that data in the browser’s storage3. I added some options to save the current play session, and a few extra page links:

same page as last time, but now with buttons!

I can then see my per-day/per-session stats:

summaries of my last few sessions

This probably isn’t the endgame for this project, but it’s a nice move in the direction of collecting more data. Like I said, I like data! And it’s much easier to do any kind of analysis later if I’ve already been collecting the data than it would be if I wasn’t already keeping track! Here’s the aggregated total of the first few days’ collected data:

key totals over the last few days

As usual, the source and the application are available to view or modify!


  1. Unfortunately, this one was starting to bubble up to the top of my project list just as full COVID-19 stay-at-home measures started, so it hasn’t borne any fruit yet. Someday! ↩︎

  2. Since the laptop I’m using occasionally also needs to run Hauptwerk, I’m kind of stuck running Windows. Now that Edge is Chromium-based, I don’t have a strong need to install Firefox as a default browser, if all I’m doing is occasional browsing. ↩︎

  3. This does mean that you can’t (easily?) sync your sessions across devices, nor share your data with anyone else. That said, it wouldn’t be too difficult to automatically upload and share this data publicly, à la WhatPulse. I just haven’t done that. ↩︎


I don't have a formal commenting system set up. If you have questions or comments about anything I've written, send me an email and I'd be delighted to hear what you have to say!