Skip to main content

A package for exploring the fundamentals of how we define music.

Project description


Assists in the exploration of how we define music. Currently generates a set of frequencies for any number of notes in an octave. 10-keys-per-octave keyboard? Why not!

Installation (with pip)

pip install crazy-piano


List of Functions

  • compute_frequencies(m=12, f0=440, base=2, low_thresh=20, high_thresh=8000): Generates a set of frequencies corresponding to different numbers of notes per octave. Based on a modified version of the formula for computing frequencies in an octave.
    • m: The number of steps in an octave. 12 is standard.
    • f0: Baseline frequency. 440 Hz is conventional starting point for A4 pitch.
    • base: The base of growth for frequencies. Determines how fast the frequencies increase.
    • low_thresh: The lowest frequency allowed. 20 Hz is low limit of human hearing.
      • When low_thresh is met, still finishes the octave. i.e. If the 3rd note of an octave is below low_thresh, will still return the 1st and 2nd notes of that octave.
    • high_thresh: The highest frequency allowed. 8000 Hz traditionally the 8th octave.
      • When high_thresh is met, still finishes the octave. i.e. If the m-2 note of an octave is above high_thresh , will still return the m-1 and m notes of that octave.

Ideas for more? Create an issue, or email with feedback.


Creates a pandas dataframe containing the frequencies for each note, where 440 Hz is the base value. Uses default values for low and high frequency cut-offs.

from crazy_piano import compute_frequencies
keyboard_10_notes = compute_frequencies(m=10)

Output Dataframe Columns

Octave: f0 is the reference point. It is the 0th note of the 0th octave. Octaves lower are negative, and larger are positive. Integer. Note Number: f0 is the reference point. It is the 0th note of any octave. The largest Note Number is therefore m-1. Integer. Frequency (Hz): The frequency corresponding to the Octave and Note Number, in Hertz. Float.


  • Michael Altonji Interested in collaborating? Email, or submit issues for features you'd like to see in the future!


MIT License

Project details

Download files


Files for crazy-piano, version 0.0.1
Filename, size File type Python version Upload date Hashes
Filename, size crazy_piano-0.0.1-py3-none-any.whl (4.3 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size crazy-piano-0.0.1.tar.gz (2.8 kB) File type Source Python version None Upload date Hashes View

Supported by
