Skip to content

mgarriss/peas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Peas

Peas defines constants from music theory and allows one to perform math with them. Currently supports pitches (as MIDI values), pitch classes, and intervals using semitones, wholetones, chromatic, latin or diatonic abbreviations.

Coming soon: circles (as in ‘circle of fifths’), scales, chords and chord progressions.

Please ask questions or scold me about this here.

Features

  • Defines common music theory constants:

    • PitchClass: C, Ds, Eb, etc

    • Pitch (as a MIDI value): C4, Ds5, Gb8, etc

    • Intervals:

      • Semitone: S0, S1, S2 … S127

      • Wholetone: W0, W1, W2 … W63

      • Chromatic: d2, A1, d3, A2 … A7

      • Latin: S, T and TT (semi, whole and tritones)

      • Diatonic: P1, m2, M2, m3, M3, P4, A4, d5, P5, m6, M6, m7, M7 and P8

  • Constants output as their name (done using named_value_class)

  • Adds helpers to Fixnum: 2.octaves, 3.semitones, 4.major_seconds, etc.

Installation

gem install peas

Requirements

Requires ruby 1.9. Tested with:

  • ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin10.8.0]

  • jruby 1.6.4 (ruby-1.9.2-p136) (2011-08-23 17ea768) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_29) [darwin-x86_64-java]

Usage

require 'peas'

include Peas::Pitches
include Peas::Interval::NamedValues

def play_midi_note(pitch)
  # maybe use arirusso/micromidi here
end

[Ab3,G3,Ab3,C2].each do |root_pitch|
  [P1,m3,P5,P5,d5].each do |interval|
    play_midi_note(root_pitch + interval)
    play_midi_note(root_pitch + interval + 2.octaves)
    play_midi_note(root_pitch - 2.tritones)
  end
end

Issues

  • The “super from singleton method that is defined to multiple classes is not supported; this will be fixed in 1.9.3 or later” error from named_value_class shows it’s ugly head sometimes.

  • Still not sure how to best deal with the name collisions of A1-A7 as Intervals and as Pitches.

  • Weak documentation

Author

License

Apache 2.0, See the file LICENSE

Copyright © 2011 Michael Garriss

About

Peas defines constants from music theory and allows one to perform math with them.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages