Skip to main content

Compose music in your spreadsheet.

How to

Installing

Install lilypond, fluidsynth, gnumeric, maybe something else. Then

pip2 install sheetmusic
sheetmusic-installer
gnumeric

Sheetmusic is a Gnumeric plugin. The first time you use it, you might need to enable the plugin; go to the “Tools” menu, click “Plug-ins…”, and then make sure that “Sheetmusic” is checked.

How to use

Sheetmusic is a bunch of spreadsheet functions that manipulate notes. These notes must be written in scientific notation; for example, middle C is written as “C4”.

Some functions return more than one output cell (like chords). To run spreadsheet functions with multiple output cells, hit control + enter rather than just enter.

To play the music, run

import sheetmusic
sheetmusic.init()
sheetmusic.play('B2:C2')
sheetmusic.play('J1:M33', 'A', 4, 4, 200) # to change tempo

Function reference

Sheetmusic provides the following functions inside the Spreadsheet.

Chords and arpeggios:

I7_arpeggio(base note)
I7_chord(base note)
II7_arpeggio(base note)
II7_chord(base note)
III7_arpeggio(base note)
III7_chord(base note)
III_arpeggio(base note)
III_chord(base note)
II_arpeggio(base note)
II_chord(base note)
IV7_arpeggio(base note)
IV7_chord(base note)
IV_arpeggio(base note)
IV_chord(base note)
I_arpeggio(base note)
I_chord(base note)
V7_arpeggio(base note)
V7_chord(base note)
VI7_arpeggio(base note)
VI7_chord(base note)
VII7_arpeggio(base note)
VII7_chord(base note)
VII_arpeggio(base note)
VII_chord(base note)
VI_arpeggio(base note)
VI_chord(base note)
V_arpeggio(base note)
V_chord(base note)
augmented_major_seventh_arpeggio(base note)
augmented_major_seventh_chord(base note)
augmented_minor_seventh_arpeggio(base note)
augmented_minor_seventh_chord(base note)
augmented_triad_arpeggio(base note)
augmented_triad_chord(base note)
diminished_seventh_arpeggio(base note)
diminished_seventh_chord(base note)
diminished_triad_arpeggio(base note)
diminished_triad_chord(base note)
dominant7_arpeggio(base note)
dominant7_chord(base note)
dominant_arpeggio(base note)
dominant_chord(base note)
dominant_flat_five_arpeggio(base note)
dominant_flat_five_chord(base note)
dominant_flat_ninth_arpeggio(base note)
dominant_flat_ninth_chord(base note)
dominant_ninth_arpeggio(base note)
dominant_ninth_chord(base note)
dominant_seventh_arpeggio(base note)
dominant_seventh_chord(base note)
dominant_sharp_ninth_arpeggio(base note)
dominant_sharp_ninth_chord(base note)
dominant_sixth_arpeggio(base note)
dominant_sixth_chord(base note)
dominant_thirteenth_arpeggio(base note)
dominant_thirteenth_chord(base note)
eleventh_arpeggio(base note)
eleventh_chord(base note)
first_inversion_arpeggio(base note)
first_inversion_chord(base note)
half_diminished_seventh_arpeggio(base note)
half_diminished_seventh_chord(base note)
hendrix_chord_arpeggio(base note)
hendrix_chord_chord(base note)
lydian_dominant_seventh_arpeggio(base note)
lydian_dominant_seventh_chord(base note)
major_ninth_arpeggio(base note)
major_ninth_chord(base note)
major_seventh_arpeggio(base note)
major_seventh_chord(base note)
major_sixth_arpeggio(base note)
major_sixth_chord(base note)
major_thirteenth_arpeggio(base note)
major_thirteenth_chord(base note)
major_triad_arpeggio(base note)
major_triad_chord(base note)
mediant7_arpeggio(base note)
mediant7_chord(base note)
mediant_arpeggio(base note)
mediant_chord(base note)
minor_eleventh_arpeggio(base note)
minor_eleventh_chord(base note)
minor_major_seventh_arpeggio(base note)
minor_major_seventh_chord(base note)
minor_ninth_arpeggio(base note)
minor_ninth_chord(base note)
minor_seventh_arpeggio(base note)
minor_seventh_chord(base note)
minor_seventh_flat_five_arpeggio(base note)
minor_seventh_flat_five_chord(base note)
minor_sixth_arpeggio(base note)
minor_sixth_chord(base note)
minor_thirteenth_arpeggio(base note)
minor_thirteenth_chord(base note)
minor_triad_arpeggio(base note)
minor_triad_chord(base note)
second_inversion_arpeggio(base note)
second_inversion_chord(base note)
seventh_arpeggio(base note)
seventh_chord(base note)
sixth_ninth_arpeggio(base note)
sixth_ninth_chord(base note)
subdominant7_arpeggio(base note)
subdominant7_chord(base note)
subdominant_arpeggio(base note)
subdominant_chord(base note)
submediant7_arpeggio(base note)
submediant7_chord(base note)
submediant_arpeggio(base note)
submediant_chord(base note)
subtonic7_arpeggio(base note)
subtonic7_chord(base note)
subtonic_arpeggio(base note)
subtonic_chord(base note)
supertonic7_arpeggio(base note)
supertonic7_chord(base note)
supertonic_arpeggio(base note)
supertonic_chord(base note)
suspended_fourth_ninth_arpeggio(base note)
suspended_fourth_ninth_chord(base note)
suspended_fourth_triad_arpeggio(base note)
suspended_fourth_triad_chord(base note)
suspended_second_triad_arpeggio(base note)
suspended_second_triad_chord(base note)
suspended_seventh_arpeggio(base note)
suspended_seventh_chord(base note)
suspended_triad_arpeggio(base note)
suspended_triad_chord(base note)
third_inversion_arpeggio(base note)
third_inversion_chord(base note)
tonic7_arpeggio(base note)
tonic7_chord(base note)
tonic_arpeggio(base note)
tonic_chord(base note)
triad_arpeggio(base note)
triad_chord(base note)

Scales:

aeolian_scale(base note)
chromatic_scale(base note)
diatonic_scale(base note)
diminished_scale(base note)
dorian_scale(base note)
harmonic_minor_scale(base note)
ionian_scale(base note)
locrian_scale(base note)
lydian_scale(base note)
melodic_minor_scale(base note)
mixolydian_scale(base note)
natural_minor_scale(base note)
phrygian_scale(base note)
whole_note_scale(base note)

Intervals:

unison_interval(base note, key)
major_unison_interval(base note)
minor_unison_interval(base note)
augmented_unison_interval(base note)
second_interval(base note, key)
major_second_interval(base note)
minor_second_interval(base note)
third_interval(base note, key)
major_third_interval(base note)
minor_third_interval(base note)
fourth_interval(base note, key)
major_fourth_interval(base note)
minor_fourth_interval(base note)
perfect_fourth_interval(base note)
fifth_interval(base note, key)
major_fifth_interval(base note)
minor_fifth_interval(base note)
perfect_fifth_interval(base note)
sixth_interval(base note, key)
major_sixth_interval(base note)
minor_sixth_interval(base note)
seventh_interval(base note, key)
major_seventh_interval(base note)
minor_seventh_interval(base note)
interval(major|minor, interval:[0-7], base note)
octave_down(base note)
octave_up(base note)

Other:

from_integer(integer) -> scientific note
progression(progression, base note) -> [[scientific note]]
rep(range, each) -> another range
to_integer(scientific note) -> integer

Bars

Sheetmusic ignores borders, but I recommend that you place horizontal borders where you would place bars in ordinary sheet music.

Slurred and tied notes

Notes are slurred within italicized regions.

Development

Helpful links

This requires Python 2 because mingus requires Python 2.

Metadata

Release files for sheetmusic 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sheetmusic 0.0.4
File Size Uploaded Provenance
sheetmusic-0.0.4.tar.gz 8.1 kB Without provenance Details

Release files / sheetmusic-0.0.4.tar.gz

Download URL sheetmusic-0.0.4.tar.gz
Size 8.1 kB
Tags Source
SHA-256 checksum
How to use checksums
627a4fe063ac95ed7130345b4bf13e02da77645be2f7a78c986df07fc0c0a3d0
BLAKE2b-256 checksum
How to use checksums
a2588235f6f6f86e60fa163a4f398857905870178a65aa5642daf975accb4223
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for sheetmusic 0.0.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page