Sheetmusic is a spreadsheet software for integrated data musicification and conventional music composition.
Making music from data tables
The basic idea is to think of music as data tables. So let's start by talking about data tables.
Here's a data table.
In a tidy data table, rows correspond to things. (You might also call them "observations" or "records".) For example, each row in this table is a country.
Columns correspond to attributes about each thing. You might also call them "variables", "fields", "properties", or "dimensions".
Spreadsheets as musical scores
We can use data tables to represent musical scores.
In this figure we see music represented in two forms: as a data table and as conventional sheet music.
Each row in the table corresponds to a beat in the music. That is, the two regions with red boxes around them correspond to the same data. Different notes come from different columns. G2 is G2, G3 is G3, B5 is B5, and the lyrics aren't in the sheet music.
Music is often divided into measures. In sheet music, this is typically represented with bars. That's also how I do it in my spreadsheet.
And that sheet music you saw was actually generated inside the spreadsheet.
Spreadsheets as instruments
As I said before, I like tables. I just showed you how we can think of music as a representation of the data in a spreadsheet.
But spreadsheets are also code, so let's also think about musical functions as spreadsheet functions.
For example, sheetmusic provides a
third_interval function for making
a third interval in a particular key. Here are some other functions.
chord_progression(<the progression>, <base note>)
For example, if I type "=ionian_scale('C4')", I'll get an Ionian scale starting at middle C.
Sheetmusic is implemented as a bunch of custom functions for the Gnumeric spreadsheet. I don't exactly recommend doing this; Gnumeric is quite buggy and that the plugin system leaves much to be desired.