Class:            Scale

Environment:      Siren
Superclass:         Object
Category:         Music-PitchScales
Instance variables:   root notes
Class variables:      AllNotes

accessing

allNotes
   

noteAfter: aNote
   aNote can be a pitchClass, a pitch (ODNote) or even a PlayableNote.
   coputation takes into accont circularity and is approximative wrt aNote
   alterations

noteBefore: aNote
   aNote can be a pitchClass, a pitch (ODNote) or even a PlayableNote.
   coputation takes into accont circularity and is approximative wrt aNote
   alterations

notes
   

root
   

root: value
   

scale tone chords

arpeggioFrom: startNote poly: n interval: int
   yields n notes from startNote by intervals of int

chordFromNotes: l
   

following: noteDepart by: x
   rend la x ieme note a partir de noteDepart dans mes notes

generateChordsPoly: n
   generate the list of 7 scale tone chords from my notes with polyphony n

generateChordsPoly: n inOctave: oct
   generate the list of 7 scale tone chords from my notes with polyphony n

indexDe: uneNote
   

scaleToneTriads
   N C majorScale scaleToneTriads
   (NeapolitanMinor root: N D ) scaleToneTriads

octave-dependent notes

ascendingFromOctave: o
   first note is in octave o. others follow (and may shift octave!)

asPitchesInOctave: o
   

closestPitchClassTo: aPc
   

decendingFromOctave: o
   first note is in octave o. others follow (and may shift octave!)

diatonicNotesFrom: dep to: arr
   assumes a and b belong to the scale.
   N re minorScale diatonicNotesFrom: (N do sharp octave: 3) to: (N re octave: 4)

octave: o
   

computing notes

computeNotes
   intervalList depends on the type of the scale. It is redefined in each
   subclass of Scale

intervalList
   yields the list of interval. Redefined in subclasses

leadingNote
   N la minorScale leadingNote

reverseNotes
   first is root, others following descending order

tonic
   N re minorScale tonic

printing

printOn: s
   

storeOn: s
   

degres

degreDeAccord: unAccord
   

degreeOfNote: aNote
   

transpose

transposeOf: anInterval
   

testing

= g
   

containsAllOfTheseNotes: listOfNotes
   

containsNote: n
   

isMajor
   

isMinor
   

isValid
   

querying

flatNotesInSignature
   Warning: doubles sharps are not sharps!

numberOfFlats
   Attention les doubles bemols ne sont pas des bemols!

numberOfSharps
   Attention les doubles dieses ne sont pas des dieses!

sharpNotesInSignature
   Warning: doubles sharps are not sharps!

comparing

hash
   

Paleo

costForPitch: n
   

enharmonicScale
   

pitchClassFor: p
   N C majorScale pitchClassFor: N A

MetaClass:         Scale class

creation

askScale
   self askScale

root: aNote
   

standardScales
   

warn: s
   

examples

example
   
   N la flat majorScale notes -> #(Lab Sib Do Reb Mib Fa Sol )
   N do harmonicMinorScale notes -> #(Do Re Mib Fa Sol Lab Si )
   
   N re majorScale numberOfSharps -> 2

   N do majorScale generateChordsPoly: 4 ->
OrderedCollection ([Do #maj7 ] [Re #min 7 ] [Mi #min 7 ] [Fa #maj7 ] [Sol 7 ] [La #min 7 ] [Si #halfDim7 ] )

   N do majorScale generateChordsPoly: 6
-> OrderedCollection (Do #maj7 9 11 Re #min 7 9 11 Mi #min 7 #dim9 11 Fa #maj7 9 #aug11 Sol 7 9 11 La #min 7 9 11 Si #min #dim5 7 #dim9 11 )

   N do majorScale generateChordsPoly: 7
-> OrderedCollection (Do #maj7 9 11 13 Re #min 7 9 11 13 Mi #min 7 #dim9 11 #dim13 Fa #maj7 9 #aug11 13 Sol 7 9 11 13 La #min 7 9 11 #dim13 Si #min #dim5 7 #dim9 11 #dim13 )

N re HarmonicMinorScale generateChordsPoly: 3

   N do majorScale degreDeAccord: (FPChord new fromString: 'Fa min 7')
-> 4

interval list

intervalList
   

Paleo class initialize

initialize