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¶ ↑
-
Michael Garriss <mgarriss at gmail.com>
License¶ ↑
Apache 2.0, See the file LICENSE
Copyright © 2011 Michael Garriss