.. _moduleScale:

music21.scale
=============

.. WARNING: DO NOT EDIT THIS FILE: AUTOMATICALLY GENERATED.  Edit the .py file directly

.. module:: music21.scale

The various Scale objects provide a bi-directional object representation of octave repeating and non-octave repeating scales built by network of :class:`~music21.interval.Interval` objects as modeled in :class:`~music21.intervalNetwork.BoundIntervalNetwork`. The main public interface to these resources are subclasses of :class:`~music21.scale.ConcreteScale`, such as :class:`~music21.scale.MajorScale`, :class:`~music21.scale.MinorScale`, and :class:`~music21.scale.MelodicMinorScale`. More unusual scales are also available, such as :class:`~music21.scale.OctatonicScale`, :class:`~music21.scale.SieveScale`, and :class:`~music21.scale.RagMarwa`. All :class:`~music21.scale.ConcreteScale` subclasses provide the ability to get a pitches across any range, get a pitch for scale step, get a scale step for pitch, and, for any given pitch ascend or descend to the next pitch. In all cases :class:`~music21.pitch.Pitch` objects are returned. 

>>> from music21 import *
>>> sc1 = scale.MajorScale('a')
>>> sc1.getPitches('g2', 'g4')
[G#2, A2, B2, C#3, D3, E3, F#3, G#3, A3, B3, C#4, D4, E4, F#4] 
>>> sc2 = scale.MelodicMinorScale('a')
>>> sc2.getPitches('g2', 'g4', direction='descending')
[G4, F4, E4, D4, C4, B3, A3, G3, F3, E3, D3, C3, B2, A2, G2] 
>>> sc2.getPitches('g2', 'g4', direction='ascending')
[G#2, A2, B2, C3, D3, E3, F#3, G#3, A3, B3, C4, D4, E4, F#4] 
>>> # a sieve-based scale using Xenakis's representation of the Major scale
>>> sc3 = scale.SieveScale('a', '(-3@2 & 4) | (-3@1 & 4@1) | (3@2 & 4@2) | (-3 & 4@3)')
>>> sc3.getPitches('g2', 'g4')
[G#2, A2, B2, C#3, D3, E3, F#3, G#3, A3, B3, C#4, D4, E4, F#4] 








ConcreteScale
-------------

Inherits from: :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: ConcreteScale(tonic=None)

    A concrete scale is specific scale formation with a defined pitch collection (a `tonic` Pitch) that may or may not be bound by specific range. For example, a specific Major Scale, such as G Major, from G2 to G4. This class is not generally used directly but is used as a base class for all concrete scales. 

    **ConcreteScale** **attributes**

        Attributes without Documentation: `boundRange`

        Attributes inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.type`

        Attributes inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.classSortOrder`, :attr:`~music21.base.Music21Object.hideObjectOnPrint`, :attr:`~music21.base.Music21Object.id`

    **ConcreteScale** **properties**

        .. attribute:: abstract

            Return the AbstractScale instance governing this ConcreteScale. 

            >>> from music21 import *
            >>> sc1 = scale.MajorScale('d')
            >>> sc2 = scale.MajorScale('b-')
            >>> sc1 == sc2
            False 
            >>> sc1.abstract == sc2.abstract
            True 

        .. attribute:: chord

            Return a Chord object form this harmony over a default range 

        .. attribute:: isConcrete

            Return True if the scale is Concrete, that is, it has a defined Tonic. 

            >>> from music21 import *
            >>> sc1 = scale.MajorScale('c')
            >>> sc1.isConcrete
            True 
            >>> sc2 = scale.MajorScale()
            >>> sc2.isConcrete
            False 

            

        .. attribute:: musicxml

            Return a complete musicxml representation. 

        .. attribute:: name

            Return or construct the name of this scale. 

            >>> from music21 import *
            >>> sc = scale.DiatonicScale() # abstract, as no defined tonic
            >>> sc.name
            'Abstract Diatonic' 

        .. attribute:: pitches

            Get a default pitch list from this scale. 

        Properties inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.activeSite`, :attr:`~music21.base.Music21Object.beat`, :attr:`~music21.base.Music21Object.beatDuration`, :attr:`~music21.base.Music21Object.beatStr`, :attr:`~music21.base.Music21Object.beatStrength`, :attr:`~music21.base.Music21Object.classes`, :attr:`~music21.base.Music21Object.derivationHierarchy`, :attr:`~music21.base.Music21Object.duration`, :attr:`~music21.base.Music21Object.measureNumber`, :attr:`~music21.base.Music21Object.offset`, :attr:`~music21.base.Music21Object.priority`

        Properties inherited from :class:`~music21.base.JSONSerializer`: :attr:`~music21.base.JSONSerializer.json`

    **ConcreteScale** **methods**

        .. method:: derive(other, comparisonAttribute=pitchClass)

            Return the closest-matching :class:`~music21.scale.ConcreteScale` based on the pitch collection provided as a :class:`~music21.stream.Stream`, a :class:`~music21.scale.ConcreteScale`, or a list of :class:`~music21.pitch.Pitch` objects. 

            >>> from music21 import *
            >>> sc1 = scale.MajorScale()
            >>> sc1.derive(['c#', 'e', 'g#'])
            <music21.scale.MajorScale B major> 
            >>> sc1.derive(['e-', 'b-', 'd'], comparisonAttribute='name')
            <music21.scale.MajorScale B- major> 

        .. method:: deriveByDegree(degree, pitch)

            Given a scale degree and a pitch, return a new :class:`~music21.scale.ConcreteScale` that satisfies that condition. 

            >>> from music21 import *
            >>> sc1 = scale.MajorScale()
            >>> sc1.deriveByDegree(7, 'c') # what scale has c as its 7th degree
            <music21.scale.MajorScale D- major> 

            

        .. method:: deriveRanked(other, resultsReturned=4, comparisonAttribute=pitchClass)

            Return a list of closest-matching :class:`~music21.scale.ConcreteScale` objects based on this :class:`~music21.scale.AbstractScale`, provided as a :class:`~music21.stream.Stream`, a :class:`~music21.scale.ConcreteScale`, or a list of :class:`~music21.pitch.Pitch` objects. Returned integer values represent the number of mathces. 

            >>> from music21 import *
            >>> sc1 = scale.MajorScale()
            >>> sc1.deriveRanked(['c', 'e', 'b'])
            [(3, <music21.scale.MajorScale G major>), (3, <music21.scale.MajorScale C major>), (2, <music21.scale.MajorScale B major>), (2, <music21.scale.MajorScale A major>)] 
            >>> sc1.deriveRanked(['c', 'e', 'e', 'e', 'b'])
            [(5, <music21.scale.MajorScale G major>), (5, <music21.scale.MajorScale C major>), (4, <music21.scale.MajorScale B major>), (4, <music21.scale.MajorScale A major>)] 
            >>> sc1.deriveRanked(['c#', 'e', 'g#'])
            [(3, <music21.scale.MajorScale B major>), (3, <music21.scale.MajorScale A major>), (3, <music21.scale.MajorScale E major>), (3, <music21.scale.MajorScale C- major>)] 

            

            

        .. method:: findMissing(other, comparisonAttribute=pitchClass, minPitch=None, maxPitch=None, direction=ascending, alteredDegrees={})

            Given another object of various forms (e.g., a :class:`~music21.stream.Stream`, a :class:`~music21.scale.ConcreteScale`, a list of :class:`~music21.pitch.Pitch` objects), return a list of pitches that are found in this Scale but are not found in the provided object. 

            >>> from music21 import *
            >>> sc1 = scale.MajorScale('g4')
            >>> sc1.findMissing(['d'])
            [G4, A4, B4, C5, E5, F#5, G5] 

        .. method:: getChord(minPitch=None, maxPitch=None, direction=ascending, **keywords)

            Return a realized chord containing all the pitches in this scale within a particular inclusive range defined by two pitches. All keyword arguments are passed on to the Chord, permitting specification of `quarterLength` and similar parameters. 

        .. method:: getDegreeMaxUnique()

            Convenience routine to get this from the AbstractScale. 

        .. method:: getPitches(minPitch=None, maxPitch=None, direction=ascending)

            Return a list of Pitch objects, using a deepcopy of a cached version if available. 

            

        .. method:: getScaleDegreeFromPitch(pitchTarget, direction=ascending, comparisonAttribute=name)

            For a given pitch, return the appropriate scale degree. If no scale degree is available, None is returned. Note -- by default comparse on NAME not on PitchClass because this is used so commonly by tonal functions 

            

            >>> from music21 import *
            >>> sc = scale.MajorScale('e-')
            >>> sc.getScaleDegreeFromPitch('e-2')
            1 
            >>> sc.getScaleDegreeFromPitch('d')
            7 
            >>> sc.getScaleDegreeFromPitch('d#', comparisonAttribute='name') == None
            True 
            >>> sc.getScaleDegreeFromPitch('d#', comparisonAttribute='pitchClass')
            1 

            
            >>> sc = scale.HarmonicMinorScale('a')
            >>> sc.getScaleDegreeFromPitch('c')
            3 
            >>> sc.getScaleDegreeFromPitch('g#')
            7 
            >>> sc.getScaleDegreeFromPitch('g')

        .. method:: getTonic()

            Return the tonic. 

            >>> from music21 import *
            >>> sc = scale.ConcreteScale('e-4')
            >>> sc.getTonic()
            E-4 

        .. method:: intervalBetweenDegrees(degreeStart, degreeEnd, direction=ascending, equateTermini=True)

            Given two degrees, provide the interval 

            >>> from music21 import *
            >>> sc = scale.MajorScale('e-')
            >>> sc.intervalBetweenDegrees(3, 7)
            <music21.interval.Interval P5> 

            

        .. method:: isNext(other, pitchOrigin, direction=ascending, stepSize=1, getNeighbor=True, comparisonAttribute=name)

            Given another pitch, as well as an origin and a direction, determine if this other pitch is in the next in the scale. 

            >>> from music21 import *
            >>> sc1 = scale.MajorScale('g')
            >>> sc1.isNext('d4', 'c4', 'ascending')
            True 

        .. method:: match(other, comparisonAttribute=pitchClass)

            Given another object of various forms (e.g., a :class:`~music21.stream.Stream`, a :class:`~music21.scale.ConcreteScale`, a list of :class:`~music21.pitch.Pitch` objects), return a named dictionary of pitch lists with keys 'matched' and 'notMatched'. 

            >>> from music21 import *
            >>> sc1 = scale.MajorScale('g')
            >>> sc2 = scale.MajorScale('d')
            >>> sc3 = scale.MajorScale('a')
            >>> sc4 = scale.MajorScale('e')
            >>> sc1.match(sc2)
            {'notMatched': [C#5], 'matched': [D4, E4, F#4, G4, A4, B4, D5]} 
            >>> sc2.match(sc3)
            {'notMatched': [G#5], 'matched': [A4, B4, C#5, D5, E5, F#5, A5]} 
            >>> sc1.match(sc4)
            {'notMatched': [G#4, C#5, D#5], 'matched': [E4, F#4, A4, B4, E5]} 

            

        .. method:: next(pitchOrigin=None, direction=ascending, stepSize=1, getNeighbor=True)

            Get the next pitch given a `pitchOrigin` or None. If the `pitchOrigin` is None, the tonic pitch is returned. This is useful when starting a chain of iterative calls. The `direction` attribute may be either ascending or descending. Default is `ascending`. Optionally, positive or negative integers may be provided as directional stepSize scalars. An optional `stepSize` argument can be used to set the number of scle steps that are stepped through. The `getNeighbor` will return a pitch from the scale if `pitchOrigin` is not in the scale. This value can be True, 'ascending', or 'descending'. 

            >>> from music21 import *
            >>> sc = scale.MajorScale('e-')
            >>> sc.next('e-5')
            F5 
            >>> sc.next('e-5', stepSize=2)
            G5 
            >>> sc.next('e-6', stepSize=3)
            A-6 
            >>> from music21 import *
            >>> sc = scale.HarmonicMinorScale('g')
            >>> sc.next('g4', 'descending')
            F#4 
            >>> sc.next('F#4', 'descending')
            E-4 
            >>> sc.next('E-4', 'descending')
            D4 
            >>> sc.next('E-4', 'ascending', 1)
            F#4 
            >>> sc.next('E-4', 'ascending', 2)
            G4 

        .. method:: pitchFromDegree(degree, minPitch=None, maxPitch=None, direction=ascending, equateTermini=True)

            Given a scale degree, return a deepcopy of the appropriate pitch. 

            >>> from music21 import *
            >>> sc = scale.MajorScale('e-')
            >>> sc.pitchFromDegree(2)
            F4 
            >>> sc.pitchFromDegree(7)
            D5 

        .. method:: pitchesFromScaleDegrees(degreeTargets, minPitch=None, maxPitch=None, direction=ascending)

            Given one or more scale degrees, return a list of all matches over the entire range. 

            >>> from music21 import *
            >>> sc = scale.MajorScale('e-')
            >>> sc.pitchesFromScaleDegrees([3,7])
            [G4, D5] 
            >>> sc.pitchesFromScaleDegrees([3,7], 'c2', 'c6')
            [D2, G2, D3, G3, D4, G4, D5, G5] 
            >>> sc = scale.HarmonicMinorScale('a')
            >>> sc.pitchesFromScaleDegrees([3,7], 'c2', 'c6')
            [C2, G#2, C3, G#3, C4, G#4, C5, G#5, C6] 

        .. method:: romanNumeral(degree)

            Return a RomanNumeral object built on the specified scale degree. 

            >>> from music21 import *
            >>> sc1 = scale.MajorScale('a-4')
            >>> h1 = sc1.romanNumeral(1)
            >>> h1.root()
            A-4 
            >>> h5 = sc1.romanNumeral(5)
            >>> h5.root()
            E-5 
            >>> h5
            <music21.roman.RomanNumeral V> 

        .. method:: transpose(value, inPlace=False)

            Transpose this Scale by the given interval note: it does not makes sense to transpose an abstract scale; thus, only concrete scales can be transposed. 

            >>> from music21 import *
            >>> sc1 = scale.MajorScale('C')
            >>> sc2 = sc1.transpose('p5')
            >>> sc2
            <music21.scale.MajorScale G major> 
            >>> sc3 = sc2.transpose('p5')
            >>> sc3
            <music21.scale.MajorScale D major> 

        Methods inherited from :class:`~music21.base.Music21Object`: :meth:`~music21.base.Music21Object.searchParentByAttr`, :meth:`~music21.base.Music21Object.getContextAttr`, :meth:`~music21.base.Music21Object.setContextAttr`, :meth:`~music21.base.Music21Object.addContext`, :meth:`~music21.base.Music21Object.addLocation`, :meth:`~music21.base.Music21Object.addLocationAndActiveSite`, :meth:`~music21.base.Music21Object.freezeIds`, :meth:`~music21.base.Music21Object.getAllContextsByClass`, :meth:`~music21.base.Music21Object.getCommonSiteIds`, :meth:`~music21.base.Music21Object.getCommonSites`, :meth:`~music21.base.Music21Object.getContextByClass`, :meth:`~music21.base.Music21Object.getOffsetBySite`, :meth:`~music21.base.Music21Object.getSiteIds`, :meth:`~music21.base.Music21Object.getSites`, :meth:`~music21.base.Music21Object.getSpannerSites`, :meth:`~music21.base.Music21Object.hasContext`, :meth:`~music21.base.Music21Object.mergeAttributes`, :meth:`~music21.base.Music21Object.purgeLocations`, :meth:`~music21.base.Music21Object.removeLocationBySite`, :meth:`~music21.base.Music21Object.removeLocationBySiteId`, :meth:`~music21.base.Music21Object.setOffsetBySite`, :meth:`~music21.base.Music21Object.show`, :meth:`~music21.base.Music21Object.splitAtDurations`, :meth:`~music21.base.Music21Object.splitAtQuarterLength`, :meth:`~music21.base.Music21Object.splitByQuarterLengths`, :meth:`~music21.base.Music21Object.unfreezeIds`, :meth:`~music21.base.Music21Object.unwrapWeakref`, :meth:`~music21.base.Music21Object.wrapWeakref`, :meth:`~music21.base.Music21Object.write`

        Methods inherited from :class:`~music21.base.JSONSerializer`: :meth:`~music21.base.JSONSerializer.jsonAttributes`, :meth:`~music21.base.JSONSerializer.jsonComponentFactory`, :meth:`~music21.base.JSONSerializer.jsonPrint`, :meth:`~music21.base.JSONSerializer.jsonRead`, :meth:`~music21.base.JSONSerializer.jsonWrite`


AbstractScale
-------------

Inherits from: :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: AbstractScale()

    An abstract scale is specific scale formation, but does not have a defined pitch collection or pitch reference. For example, all Major scales can be represented by an AbstractScale; a ConcreteScale, however, is a specific Major Scale, such as G Major. These classes provide an interface to, and create and manipulate, the stored :class:`~music21.intervalNetwork.BoundIntervalNetwork` object. Thus, they are rarely created or manipulated directly by most users. The AbstractScale additionally stores an `_alteredDegrees` dictionary. Subclasses can define altered nodes in AbstractScale that are passed to the :class:`~music21.intervalNetwork.BoundIntervalNetwork`. 

    

    **AbstractScale** **attributes**

        Attributes without Documentation: `octaveDuplicating`, `deterministic`, `tonicDegree`

        Attributes inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.type`

        Attributes inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.classSortOrder`, :attr:`~music21.base.Music21Object.hideObjectOnPrint`, :attr:`~music21.base.Music21Object.id`

    **AbstractScale** **properties**

        .. attribute:: networkxGraph

            Return a networks Graph object representing a realized version of this :class:`~music21.intervalNetwork.BoundIntervalNetwork`. 

        Properties inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.isConcrete`, :attr:`~music21.scale.Scale.name`

        Properties inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.activeSite`, :attr:`~music21.base.Music21Object.beat`, :attr:`~music21.base.Music21Object.beatDuration`, :attr:`~music21.base.Music21Object.beatStr`, :attr:`~music21.base.Music21Object.beatStrength`, :attr:`~music21.base.Music21Object.classes`, :attr:`~music21.base.Music21Object.derivationHierarchy`, :attr:`~music21.base.Music21Object.duration`, :attr:`~music21.base.Music21Object.measureNumber`, :attr:`~music21.base.Music21Object.offset`, :attr:`~music21.base.Music21Object.priority`

        Properties inherited from :class:`~music21.base.JSONSerializer`: :attr:`~music21.base.JSONSerializer.json`

    **AbstractScale** **methods**

        .. method:: getDegreeMaxUnique()

            Return the maximum number of scale steps, or the number to use as a modulus. 

        .. method:: getNewTonicPitch(pitchReference, nodeName, direction=ascending, minPitch=None, maxPitch=None)

            Define a pitch target and a node. 

        .. method:: getPitchFromNodeDegree(pitchReference, nodeName, nodeDegreeTarget, direction=ascending, minPitch=None, maxPitch=None, equateTermini=True)

            Get a pitch for desired scale degree. 

        .. method:: getRealization(pitchObj, stepOfPitch, minPitch=None, maxPitch=None, direction=ascending, reverse=False)

            Realize the abstract scale as a list of pitch objects, given a pitch object, the step of that pitch object, and a min and max pitch. 

        .. method:: getRelativeNodeDegree(pitchReference, nodeName, pitchTarget, comparisonAttribute=pitchClass, direction=ascending)

            Expose functionality from :class:`~music21.intervalNetwork.BoundIntervalNetwork`, passing on the stored alteredDegrees dictionary. 

        .. method:: nextPitch(pitchReference, nodeName, pitchOrigin, direction=ascending, stepSize=1, getNeighbor=True)

            Expose functionality from :class:`~music21.intervalNetwork.BoundIntervalNetwork`, passing on the stored alteredDegrees dictionary. 

        .. method:: plot(*args, **keywords)

            Create and display a plot. 

        .. method:: realizePitchByDegree(pitchReference, nodeId, nodeDegreeTargets, direction=ascending, minPitch=None, maxPitch=None)

            Given one or more scale degrees, return a list of all matches over the entire range. 

        Methods inherited from :class:`~music21.base.Music21Object`: :meth:`~music21.base.Music21Object.searchParentByAttr`, :meth:`~music21.base.Music21Object.getContextAttr`, :meth:`~music21.base.Music21Object.setContextAttr`, :meth:`~music21.base.Music21Object.addContext`, :meth:`~music21.base.Music21Object.addLocation`, :meth:`~music21.base.Music21Object.addLocationAndActiveSite`, :meth:`~music21.base.Music21Object.freezeIds`, :meth:`~music21.base.Music21Object.getAllContextsByClass`, :meth:`~music21.base.Music21Object.getCommonSiteIds`, :meth:`~music21.base.Music21Object.getCommonSites`, :meth:`~music21.base.Music21Object.getContextByClass`, :meth:`~music21.base.Music21Object.getOffsetBySite`, :meth:`~music21.base.Music21Object.getSiteIds`, :meth:`~music21.base.Music21Object.getSites`, :meth:`~music21.base.Music21Object.getSpannerSites`, :meth:`~music21.base.Music21Object.hasContext`, :meth:`~music21.base.Music21Object.mergeAttributes`, :meth:`~music21.base.Music21Object.purgeLocations`, :meth:`~music21.base.Music21Object.removeLocationBySite`, :meth:`~music21.base.Music21Object.removeLocationBySiteId`, :meth:`~music21.base.Music21Object.setOffsetBySite`, :meth:`~music21.base.Music21Object.show`, :meth:`~music21.base.Music21Object.splitAtDurations`, :meth:`~music21.base.Music21Object.splitAtQuarterLength`, :meth:`~music21.base.Music21Object.splitByQuarterLengths`, :meth:`~music21.base.Music21Object.unfreezeIds`, :meth:`~music21.base.Music21Object.unwrapWeakref`, :meth:`~music21.base.Music21Object.wrapWeakref`, :meth:`~music21.base.Music21Object.write`

        Methods inherited from :class:`~music21.base.JSONSerializer`: :meth:`~music21.base.JSONSerializer.jsonAttributes`, :meth:`~music21.base.JSONSerializer.jsonComponentFactory`, :meth:`~music21.base.JSONSerializer.jsonPrint`, :meth:`~music21.base.JSONSerializer.jsonRead`, :meth:`~music21.base.JSONSerializer.jsonWrite`


AbstractCyclicalScale
---------------------

Inherits from: :class:`~music21.scale.AbstractScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: AbstractCyclicalScale(mode=None)

    A scale of any size built with an interval list of any form. The resulting scale may be non octave repeating. 


AbstractDiatonicScale
---------------------

Inherits from: :class:`~music21.scale.AbstractScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: AbstractDiatonicScale(mode=None)


    **AbstractDiatonicScale** **attributes**

        Attributes without Documentation: `relativeMajorDegree`, `relativeMinorDegree`, `dominantDegree`

        Attributes inherited from :class:`~music21.scale.AbstractScale`: :attr:`~music21.scale.AbstractScale.octaveDuplicating`, :attr:`~music21.scale.AbstractScale.deterministic`, :attr:`~music21.scale.AbstractScale.tonicDegree`

        Attributes inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.type`

        Attributes inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.classSortOrder`, :attr:`~music21.base.Music21Object.hideObjectOnPrint`, :attr:`~music21.base.Music21Object.id`

    **AbstractDiatonicScale** **properties**

        Properties inherited from :class:`~music21.scale.AbstractScale`: :attr:`~music21.scale.AbstractScale.networkxGraph`

        Properties inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.isConcrete`, :attr:`~music21.scale.Scale.name`

        Properties inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.activeSite`, :attr:`~music21.base.Music21Object.beat`, :attr:`~music21.base.Music21Object.beatDuration`, :attr:`~music21.base.Music21Object.beatStr`, :attr:`~music21.base.Music21Object.beatStrength`, :attr:`~music21.base.Music21Object.classes`, :attr:`~music21.base.Music21Object.derivationHierarchy`, :attr:`~music21.base.Music21Object.duration`, :attr:`~music21.base.Music21Object.measureNumber`, :attr:`~music21.base.Music21Object.offset`, :attr:`~music21.base.Music21Object.priority`

        Properties inherited from :class:`~music21.base.JSONSerializer`: :attr:`~music21.base.JSONSerializer.json`

    **AbstractDiatonicScale** **methods**

        Methods inherited from :class:`~music21.scale.AbstractScale`: :meth:`~music21.scale.AbstractScale.getDegreeMaxUnique`, :meth:`~music21.scale.AbstractScale.getNewTonicPitch`, :meth:`~music21.scale.AbstractScale.getPitchFromNodeDegree`, :meth:`~music21.scale.AbstractScale.getRealization`, :meth:`~music21.scale.AbstractScale.getRelativeNodeDegree`, :meth:`~music21.scale.AbstractScale.nextPitch`, :meth:`~music21.scale.AbstractScale.plot`, :meth:`~music21.scale.AbstractScale.realizePitchByDegree`

        Methods inherited from :class:`~music21.base.Music21Object`: :meth:`~music21.base.Music21Object.searchParentByAttr`, :meth:`~music21.base.Music21Object.getContextAttr`, :meth:`~music21.base.Music21Object.setContextAttr`, :meth:`~music21.base.Music21Object.addContext`, :meth:`~music21.base.Music21Object.addLocation`, :meth:`~music21.base.Music21Object.addLocationAndActiveSite`, :meth:`~music21.base.Music21Object.freezeIds`, :meth:`~music21.base.Music21Object.getAllContextsByClass`, :meth:`~music21.base.Music21Object.getCommonSiteIds`, :meth:`~music21.base.Music21Object.getCommonSites`, :meth:`~music21.base.Music21Object.getContextByClass`, :meth:`~music21.base.Music21Object.getOffsetBySite`, :meth:`~music21.base.Music21Object.getSiteIds`, :meth:`~music21.base.Music21Object.getSites`, :meth:`~music21.base.Music21Object.getSpannerSites`, :meth:`~music21.base.Music21Object.hasContext`, :meth:`~music21.base.Music21Object.mergeAttributes`, :meth:`~music21.base.Music21Object.purgeLocations`, :meth:`~music21.base.Music21Object.removeLocationBySite`, :meth:`~music21.base.Music21Object.removeLocationBySiteId`, :meth:`~music21.base.Music21Object.setOffsetBySite`, :meth:`~music21.base.Music21Object.show`, :meth:`~music21.base.Music21Object.splitAtDurations`, :meth:`~music21.base.Music21Object.splitAtQuarterLength`, :meth:`~music21.base.Music21Object.splitByQuarterLengths`, :meth:`~music21.base.Music21Object.unfreezeIds`, :meth:`~music21.base.Music21Object.unwrapWeakref`, :meth:`~music21.base.Music21Object.wrapWeakref`, :meth:`~music21.base.Music21Object.write`

        Methods inherited from :class:`~music21.base.JSONSerializer`: :meth:`~music21.base.JSONSerializer.jsonAttributes`, :meth:`~music21.base.JSONSerializer.jsonComponentFactory`, :meth:`~music21.base.JSONSerializer.jsonPrint`, :meth:`~music21.base.JSONSerializer.jsonRead`, :meth:`~music21.base.JSONSerializer.jsonWrite`


AbstractHarmonicMinorScale
--------------------------

Inherits from: :class:`~music21.scale.AbstractScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: AbstractHarmonicMinorScale(mode=None)

    A true bi-directional scale that with the augmented second to a leading tone. 

    **AbstractHarmonicMinorScale** **attributes**

        Attributes without Documentation: `dominantDegree`

        Attributes inherited from :class:`~music21.scale.AbstractScale`: :attr:`~music21.scale.AbstractScale.octaveDuplicating`, :attr:`~music21.scale.AbstractScale.deterministic`, :attr:`~music21.scale.AbstractScale.tonicDegree`

        Attributes inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.type`

        Attributes inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.classSortOrder`, :attr:`~music21.base.Music21Object.hideObjectOnPrint`, :attr:`~music21.base.Music21Object.id`

    **AbstractHarmonicMinorScale** **properties**

        Properties inherited from :class:`~music21.scale.AbstractScale`: :attr:`~music21.scale.AbstractScale.networkxGraph`

        Properties inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.isConcrete`, :attr:`~music21.scale.Scale.name`

        Properties inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.activeSite`, :attr:`~music21.base.Music21Object.beat`, :attr:`~music21.base.Music21Object.beatDuration`, :attr:`~music21.base.Music21Object.beatStr`, :attr:`~music21.base.Music21Object.beatStrength`, :attr:`~music21.base.Music21Object.classes`, :attr:`~music21.base.Music21Object.derivationHierarchy`, :attr:`~music21.base.Music21Object.duration`, :attr:`~music21.base.Music21Object.measureNumber`, :attr:`~music21.base.Music21Object.offset`, :attr:`~music21.base.Music21Object.priority`

        Properties inherited from :class:`~music21.base.JSONSerializer`: :attr:`~music21.base.JSONSerializer.json`

    **AbstractHarmonicMinorScale** **methods**

        Methods inherited from :class:`~music21.scale.AbstractScale`: :meth:`~music21.scale.AbstractScale.getDegreeMaxUnique`, :meth:`~music21.scale.AbstractScale.getNewTonicPitch`, :meth:`~music21.scale.AbstractScale.getPitchFromNodeDegree`, :meth:`~music21.scale.AbstractScale.getRealization`, :meth:`~music21.scale.AbstractScale.getRelativeNodeDegree`, :meth:`~music21.scale.AbstractScale.nextPitch`, :meth:`~music21.scale.AbstractScale.plot`, :meth:`~music21.scale.AbstractScale.realizePitchByDegree`

        Methods inherited from :class:`~music21.base.Music21Object`: :meth:`~music21.base.Music21Object.searchParentByAttr`, :meth:`~music21.base.Music21Object.getContextAttr`, :meth:`~music21.base.Music21Object.setContextAttr`, :meth:`~music21.base.Music21Object.addContext`, :meth:`~music21.base.Music21Object.addLocation`, :meth:`~music21.base.Music21Object.addLocationAndActiveSite`, :meth:`~music21.base.Music21Object.freezeIds`, :meth:`~music21.base.Music21Object.getAllContextsByClass`, :meth:`~music21.base.Music21Object.getCommonSiteIds`, :meth:`~music21.base.Music21Object.getCommonSites`, :meth:`~music21.base.Music21Object.getContextByClass`, :meth:`~music21.base.Music21Object.getOffsetBySite`, :meth:`~music21.base.Music21Object.getSiteIds`, :meth:`~music21.base.Music21Object.getSites`, :meth:`~music21.base.Music21Object.getSpannerSites`, :meth:`~music21.base.Music21Object.hasContext`, :meth:`~music21.base.Music21Object.mergeAttributes`, :meth:`~music21.base.Music21Object.purgeLocations`, :meth:`~music21.base.Music21Object.removeLocationBySite`, :meth:`~music21.base.Music21Object.removeLocationBySiteId`, :meth:`~music21.base.Music21Object.setOffsetBySite`, :meth:`~music21.base.Music21Object.show`, :meth:`~music21.base.Music21Object.splitAtDurations`, :meth:`~music21.base.Music21Object.splitAtQuarterLength`, :meth:`~music21.base.Music21Object.splitByQuarterLengths`, :meth:`~music21.base.Music21Object.unfreezeIds`, :meth:`~music21.base.Music21Object.unwrapWeakref`, :meth:`~music21.base.Music21Object.wrapWeakref`, :meth:`~music21.base.Music21Object.write`

        Methods inherited from :class:`~music21.base.JSONSerializer`: :meth:`~music21.base.JSONSerializer.jsonAttributes`, :meth:`~music21.base.JSONSerializer.jsonComponentFactory`, :meth:`~music21.base.JSONSerializer.jsonPrint`, :meth:`~music21.base.JSONSerializer.jsonRead`, :meth:`~music21.base.JSONSerializer.jsonWrite`


AbstractMelodicMinorScale
-------------------------

Inherits from: :class:`~music21.scale.AbstractScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: AbstractMelodicMinorScale(mode=None)

    A directional scale. 

    **AbstractMelodicMinorScale** **attributes**

        Attributes without Documentation: `dominantDegree`

        Attributes inherited from :class:`~music21.scale.AbstractScale`: :attr:`~music21.scale.AbstractScale.octaveDuplicating`, :attr:`~music21.scale.AbstractScale.deterministic`, :attr:`~music21.scale.AbstractScale.tonicDegree`

        Attributes inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.type`

        Attributes inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.classSortOrder`, :attr:`~music21.base.Music21Object.hideObjectOnPrint`, :attr:`~music21.base.Music21Object.id`

    **AbstractMelodicMinorScale** **properties**

        Properties inherited from :class:`~music21.scale.AbstractScale`: :attr:`~music21.scale.AbstractScale.networkxGraph`

        Properties inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.isConcrete`, :attr:`~music21.scale.Scale.name`

        Properties inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.activeSite`, :attr:`~music21.base.Music21Object.beat`, :attr:`~music21.base.Music21Object.beatDuration`, :attr:`~music21.base.Music21Object.beatStr`, :attr:`~music21.base.Music21Object.beatStrength`, :attr:`~music21.base.Music21Object.classes`, :attr:`~music21.base.Music21Object.derivationHierarchy`, :attr:`~music21.base.Music21Object.duration`, :attr:`~music21.base.Music21Object.measureNumber`, :attr:`~music21.base.Music21Object.offset`, :attr:`~music21.base.Music21Object.priority`

        Properties inherited from :class:`~music21.base.JSONSerializer`: :attr:`~music21.base.JSONSerializer.json`

    **AbstractMelodicMinorScale** **methods**

        Methods inherited from :class:`~music21.scale.AbstractScale`: :meth:`~music21.scale.AbstractScale.getDegreeMaxUnique`, :meth:`~music21.scale.AbstractScale.getNewTonicPitch`, :meth:`~music21.scale.AbstractScale.getPitchFromNodeDegree`, :meth:`~music21.scale.AbstractScale.getRealization`, :meth:`~music21.scale.AbstractScale.getRelativeNodeDegree`, :meth:`~music21.scale.AbstractScale.nextPitch`, :meth:`~music21.scale.AbstractScale.plot`, :meth:`~music21.scale.AbstractScale.realizePitchByDegree`

        Methods inherited from :class:`~music21.base.Music21Object`: :meth:`~music21.base.Music21Object.searchParentByAttr`, :meth:`~music21.base.Music21Object.getContextAttr`, :meth:`~music21.base.Music21Object.setContextAttr`, :meth:`~music21.base.Music21Object.addContext`, :meth:`~music21.base.Music21Object.addLocation`, :meth:`~music21.base.Music21Object.addLocationAndActiveSite`, :meth:`~music21.base.Music21Object.freezeIds`, :meth:`~music21.base.Music21Object.getAllContextsByClass`, :meth:`~music21.base.Music21Object.getCommonSiteIds`, :meth:`~music21.base.Music21Object.getCommonSites`, :meth:`~music21.base.Music21Object.getContextByClass`, :meth:`~music21.base.Music21Object.getOffsetBySite`, :meth:`~music21.base.Music21Object.getSiteIds`, :meth:`~music21.base.Music21Object.getSites`, :meth:`~music21.base.Music21Object.getSpannerSites`, :meth:`~music21.base.Music21Object.hasContext`, :meth:`~music21.base.Music21Object.mergeAttributes`, :meth:`~music21.base.Music21Object.purgeLocations`, :meth:`~music21.base.Music21Object.removeLocationBySite`, :meth:`~music21.base.Music21Object.removeLocationBySiteId`, :meth:`~music21.base.Music21Object.setOffsetBySite`, :meth:`~music21.base.Music21Object.show`, :meth:`~music21.base.Music21Object.splitAtDurations`, :meth:`~music21.base.Music21Object.splitAtQuarterLength`, :meth:`~music21.base.Music21Object.splitByQuarterLengths`, :meth:`~music21.base.Music21Object.unfreezeIds`, :meth:`~music21.base.Music21Object.unwrapWeakref`, :meth:`~music21.base.Music21Object.wrapWeakref`, :meth:`~music21.base.Music21Object.write`

        Methods inherited from :class:`~music21.base.JSONSerializer`: :meth:`~music21.base.JSONSerializer.jsonAttributes`, :meth:`~music21.base.JSONSerializer.jsonComponentFactory`, :meth:`~music21.base.JSONSerializer.jsonPrint`, :meth:`~music21.base.JSONSerializer.jsonRead`, :meth:`~music21.base.JSONSerializer.jsonWrite`


AbstractOctatonicScale
----------------------

Inherits from: :class:`~music21.scale.AbstractScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: AbstractOctatonicScale(mode=None)

    Abstract scale representing the two octatonic scales. 


AbstractOctaveRepeatingScale
----------------------------

Inherits from: :class:`~music21.scale.AbstractScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: AbstractOctaveRepeatingScale(mode=None)

    A scale of any size built with an interval list that assumes octave completion. An additional interval to complete the octave will be added to the provided intervals. This does not guarantee that the octave will be repeated in one octave, only the next octave above the last interval will be provided. 


AbstractRagAsawari
------------------

Inherits from: :class:`~music21.scale.AbstractScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: AbstractRagAsawari()

    A pseudo raga-scale. 

    **AbstractRagAsawari** **attributes**

        Attributes without Documentation: `dominantDegree`

        Attributes inherited from :class:`~music21.scale.AbstractScale`: :attr:`~music21.scale.AbstractScale.octaveDuplicating`, :attr:`~music21.scale.AbstractScale.deterministic`, :attr:`~music21.scale.AbstractScale.tonicDegree`

        Attributes inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.type`

        Attributes inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.classSortOrder`, :attr:`~music21.base.Music21Object.hideObjectOnPrint`, :attr:`~music21.base.Music21Object.id`

    **AbstractRagAsawari** **properties**

        Properties inherited from :class:`~music21.scale.AbstractScale`: :attr:`~music21.scale.AbstractScale.networkxGraph`

        Properties inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.isConcrete`, :attr:`~music21.scale.Scale.name`

        Properties inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.activeSite`, :attr:`~music21.base.Music21Object.beat`, :attr:`~music21.base.Music21Object.beatDuration`, :attr:`~music21.base.Music21Object.beatStr`, :attr:`~music21.base.Music21Object.beatStrength`, :attr:`~music21.base.Music21Object.classes`, :attr:`~music21.base.Music21Object.derivationHierarchy`, :attr:`~music21.base.Music21Object.duration`, :attr:`~music21.base.Music21Object.measureNumber`, :attr:`~music21.base.Music21Object.offset`, :attr:`~music21.base.Music21Object.priority`

        Properties inherited from :class:`~music21.base.JSONSerializer`: :attr:`~music21.base.JSONSerializer.json`

    **AbstractRagAsawari** **methods**

        Methods inherited from :class:`~music21.scale.AbstractScale`: :meth:`~music21.scale.AbstractScale.getDegreeMaxUnique`, :meth:`~music21.scale.AbstractScale.getNewTonicPitch`, :meth:`~music21.scale.AbstractScale.getPitchFromNodeDegree`, :meth:`~music21.scale.AbstractScale.getRealization`, :meth:`~music21.scale.AbstractScale.getRelativeNodeDegree`, :meth:`~music21.scale.AbstractScale.nextPitch`, :meth:`~music21.scale.AbstractScale.plot`, :meth:`~music21.scale.AbstractScale.realizePitchByDegree`

        Methods inherited from :class:`~music21.base.Music21Object`: :meth:`~music21.base.Music21Object.searchParentByAttr`, :meth:`~music21.base.Music21Object.getContextAttr`, :meth:`~music21.base.Music21Object.setContextAttr`, :meth:`~music21.base.Music21Object.addContext`, :meth:`~music21.base.Music21Object.addLocation`, :meth:`~music21.base.Music21Object.addLocationAndActiveSite`, :meth:`~music21.base.Music21Object.freezeIds`, :meth:`~music21.base.Music21Object.getAllContextsByClass`, :meth:`~music21.base.Music21Object.getCommonSiteIds`, :meth:`~music21.base.Music21Object.getCommonSites`, :meth:`~music21.base.Music21Object.getContextByClass`, :meth:`~music21.base.Music21Object.getOffsetBySite`, :meth:`~music21.base.Music21Object.getSiteIds`, :meth:`~music21.base.Music21Object.getSites`, :meth:`~music21.base.Music21Object.getSpannerSites`, :meth:`~music21.base.Music21Object.hasContext`, :meth:`~music21.base.Music21Object.mergeAttributes`, :meth:`~music21.base.Music21Object.purgeLocations`, :meth:`~music21.base.Music21Object.removeLocationBySite`, :meth:`~music21.base.Music21Object.removeLocationBySiteId`, :meth:`~music21.base.Music21Object.setOffsetBySite`, :meth:`~music21.base.Music21Object.show`, :meth:`~music21.base.Music21Object.splitAtDurations`, :meth:`~music21.base.Music21Object.splitAtQuarterLength`, :meth:`~music21.base.Music21Object.splitByQuarterLengths`, :meth:`~music21.base.Music21Object.unfreezeIds`, :meth:`~music21.base.Music21Object.unwrapWeakref`, :meth:`~music21.base.Music21Object.wrapWeakref`, :meth:`~music21.base.Music21Object.write`

        Methods inherited from :class:`~music21.base.JSONSerializer`: :meth:`~music21.base.JSONSerializer.jsonAttributes`, :meth:`~music21.base.JSONSerializer.jsonComponentFactory`, :meth:`~music21.base.JSONSerializer.jsonPrint`, :meth:`~music21.base.JSONSerializer.jsonRead`, :meth:`~music21.base.JSONSerializer.jsonWrite`


AbstractRagMarwa
----------------

Inherits from: :class:`~music21.scale.AbstractScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: AbstractRagMarwa()

    A pseudo raga-scale. 

    **AbstractRagMarwa** **attributes**

        Attributes without Documentation: `dominantDegree`

        Attributes inherited from :class:`~music21.scale.AbstractScale`: :attr:`~music21.scale.AbstractScale.octaveDuplicating`, :attr:`~music21.scale.AbstractScale.deterministic`, :attr:`~music21.scale.AbstractScale.tonicDegree`

        Attributes inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.type`

        Attributes inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.classSortOrder`, :attr:`~music21.base.Music21Object.hideObjectOnPrint`, :attr:`~music21.base.Music21Object.id`

    **AbstractRagMarwa** **properties**

        Properties inherited from :class:`~music21.scale.AbstractScale`: :attr:`~music21.scale.AbstractScale.networkxGraph`

        Properties inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.isConcrete`, :attr:`~music21.scale.Scale.name`

        Properties inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.activeSite`, :attr:`~music21.base.Music21Object.beat`, :attr:`~music21.base.Music21Object.beatDuration`, :attr:`~music21.base.Music21Object.beatStr`, :attr:`~music21.base.Music21Object.beatStrength`, :attr:`~music21.base.Music21Object.classes`, :attr:`~music21.base.Music21Object.derivationHierarchy`, :attr:`~music21.base.Music21Object.duration`, :attr:`~music21.base.Music21Object.measureNumber`, :attr:`~music21.base.Music21Object.offset`, :attr:`~music21.base.Music21Object.priority`

        Properties inherited from :class:`~music21.base.JSONSerializer`: :attr:`~music21.base.JSONSerializer.json`

    **AbstractRagMarwa** **methods**

        Methods inherited from :class:`~music21.scale.AbstractScale`: :meth:`~music21.scale.AbstractScale.getDegreeMaxUnique`, :meth:`~music21.scale.AbstractScale.getNewTonicPitch`, :meth:`~music21.scale.AbstractScale.getPitchFromNodeDegree`, :meth:`~music21.scale.AbstractScale.getRealization`, :meth:`~music21.scale.AbstractScale.getRelativeNodeDegree`, :meth:`~music21.scale.AbstractScale.nextPitch`, :meth:`~music21.scale.AbstractScale.plot`, :meth:`~music21.scale.AbstractScale.realizePitchByDegree`

        Methods inherited from :class:`~music21.base.Music21Object`: :meth:`~music21.base.Music21Object.searchParentByAttr`, :meth:`~music21.base.Music21Object.getContextAttr`, :meth:`~music21.base.Music21Object.setContextAttr`, :meth:`~music21.base.Music21Object.addContext`, :meth:`~music21.base.Music21Object.addLocation`, :meth:`~music21.base.Music21Object.addLocationAndActiveSite`, :meth:`~music21.base.Music21Object.freezeIds`, :meth:`~music21.base.Music21Object.getAllContextsByClass`, :meth:`~music21.base.Music21Object.getCommonSiteIds`, :meth:`~music21.base.Music21Object.getCommonSites`, :meth:`~music21.base.Music21Object.getContextByClass`, :meth:`~music21.base.Music21Object.getOffsetBySite`, :meth:`~music21.base.Music21Object.getSiteIds`, :meth:`~music21.base.Music21Object.getSites`, :meth:`~music21.base.Music21Object.getSpannerSites`, :meth:`~music21.base.Music21Object.hasContext`, :meth:`~music21.base.Music21Object.mergeAttributes`, :meth:`~music21.base.Music21Object.purgeLocations`, :meth:`~music21.base.Music21Object.removeLocationBySite`, :meth:`~music21.base.Music21Object.removeLocationBySiteId`, :meth:`~music21.base.Music21Object.setOffsetBySite`, :meth:`~music21.base.Music21Object.show`, :meth:`~music21.base.Music21Object.splitAtDurations`, :meth:`~music21.base.Music21Object.splitAtQuarterLength`, :meth:`~music21.base.Music21Object.splitByQuarterLengths`, :meth:`~music21.base.Music21Object.unfreezeIds`, :meth:`~music21.base.Music21Object.unwrapWeakref`, :meth:`~music21.base.Music21Object.wrapWeakref`, :meth:`~music21.base.Music21Object.write`

        Methods inherited from :class:`~music21.base.JSONSerializer`: :meth:`~music21.base.JSONSerializer.jsonAttributes`, :meth:`~music21.base.JSONSerializer.jsonComponentFactory`, :meth:`~music21.base.JSONSerializer.jsonPrint`, :meth:`~music21.base.JSONSerializer.jsonRead`, :meth:`~music21.base.JSONSerializer.jsonWrite`


AbstractWeightedHexatonicBlues
------------------------------

Inherits from: :class:`~music21.scale.AbstractScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: AbstractWeightedHexatonicBlues()

    A dynamic, probabilistic mixture of minor pentatonic and a hexatonic blues scale 

    **AbstractWeightedHexatonicBlues** **attributes**

        Attributes without Documentation: `dominantDegree`

        Attributes inherited from :class:`~music21.scale.AbstractScale`: :attr:`~music21.scale.AbstractScale.octaveDuplicating`, :attr:`~music21.scale.AbstractScale.deterministic`, :attr:`~music21.scale.AbstractScale.tonicDegree`

        Attributes inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.type`

        Attributes inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.classSortOrder`, :attr:`~music21.base.Music21Object.hideObjectOnPrint`, :attr:`~music21.base.Music21Object.id`

    **AbstractWeightedHexatonicBlues** **properties**

        Properties inherited from :class:`~music21.scale.AbstractScale`: :attr:`~music21.scale.AbstractScale.networkxGraph`

        Properties inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.isConcrete`, :attr:`~music21.scale.Scale.name`

        Properties inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.activeSite`, :attr:`~music21.base.Music21Object.beat`, :attr:`~music21.base.Music21Object.beatDuration`, :attr:`~music21.base.Music21Object.beatStr`, :attr:`~music21.base.Music21Object.beatStrength`, :attr:`~music21.base.Music21Object.classes`, :attr:`~music21.base.Music21Object.derivationHierarchy`, :attr:`~music21.base.Music21Object.duration`, :attr:`~music21.base.Music21Object.measureNumber`, :attr:`~music21.base.Music21Object.offset`, :attr:`~music21.base.Music21Object.priority`

        Properties inherited from :class:`~music21.base.JSONSerializer`: :attr:`~music21.base.JSONSerializer.json`

    **AbstractWeightedHexatonicBlues** **methods**

        Methods inherited from :class:`~music21.scale.AbstractScale`: :meth:`~music21.scale.AbstractScale.getDegreeMaxUnique`, :meth:`~music21.scale.AbstractScale.getNewTonicPitch`, :meth:`~music21.scale.AbstractScale.getPitchFromNodeDegree`, :meth:`~music21.scale.AbstractScale.getRealization`, :meth:`~music21.scale.AbstractScale.getRelativeNodeDegree`, :meth:`~music21.scale.AbstractScale.nextPitch`, :meth:`~music21.scale.AbstractScale.plot`, :meth:`~music21.scale.AbstractScale.realizePitchByDegree`

        Methods inherited from :class:`~music21.base.Music21Object`: :meth:`~music21.base.Music21Object.searchParentByAttr`, :meth:`~music21.base.Music21Object.getContextAttr`, :meth:`~music21.base.Music21Object.setContextAttr`, :meth:`~music21.base.Music21Object.addContext`, :meth:`~music21.base.Music21Object.addLocation`, :meth:`~music21.base.Music21Object.addLocationAndActiveSite`, :meth:`~music21.base.Music21Object.freezeIds`, :meth:`~music21.base.Music21Object.getAllContextsByClass`, :meth:`~music21.base.Music21Object.getCommonSiteIds`, :meth:`~music21.base.Music21Object.getCommonSites`, :meth:`~music21.base.Music21Object.getContextByClass`, :meth:`~music21.base.Music21Object.getOffsetBySite`, :meth:`~music21.base.Music21Object.getSiteIds`, :meth:`~music21.base.Music21Object.getSites`, :meth:`~music21.base.Music21Object.getSpannerSites`, :meth:`~music21.base.Music21Object.hasContext`, :meth:`~music21.base.Music21Object.mergeAttributes`, :meth:`~music21.base.Music21Object.purgeLocations`, :meth:`~music21.base.Music21Object.removeLocationBySite`, :meth:`~music21.base.Music21Object.removeLocationBySiteId`, :meth:`~music21.base.Music21Object.setOffsetBySite`, :meth:`~music21.base.Music21Object.show`, :meth:`~music21.base.Music21Object.splitAtDurations`, :meth:`~music21.base.Music21Object.splitAtQuarterLength`, :meth:`~music21.base.Music21Object.splitByQuarterLengths`, :meth:`~music21.base.Music21Object.unfreezeIds`, :meth:`~music21.base.Music21Object.unwrapWeakref`, :meth:`~music21.base.Music21Object.wrapWeakref`, :meth:`~music21.base.Music21Object.write`

        Methods inherited from :class:`~music21.base.JSONSerializer`: :meth:`~music21.base.JSONSerializer.jsonAttributes`, :meth:`~music21.base.JSONSerializer.jsonComponentFactory`, :meth:`~music21.base.JSONSerializer.jsonPrint`, :meth:`~music21.base.JSONSerializer.jsonRead`, :meth:`~music21.base.JSONSerializer.jsonWrite`


ChromaticScale
--------------

Inherits from: :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: ChromaticScale(tonic=None)

    A concrete cyclical scale, based on a cycle of intervals. These intervals do not have to be octave completing, and thus may produce scales that do no 

    >>> from music21 import *
    >>> sc = scale.ChromaticScale('g2')
    >>> sc.pitches
    [G2, A-2, A2, B-2, C-3, C3, D-3, D3, E-3, F-3, F3, G-3, G3] 
    >>> sc.getPitches('g2', 'g6')
    [G2, A-2, A2, B-2, C-3, C3, D-3, D3, E-3, F-3, F3, G-3, G3, A-3, A3, B-3, C-4, C4, D-4, D4, E-4, F-4, F4, G-4, G4, A-4, A4, B-4, C-5, C5, D-5, D5, E-5, F-5, F5, G-5, G5, A-5, A5, B-5, C-6, C6, D-6, D6, E-6, F-6, F6, G-6, G6] 
    >>> sc.abstract.getDegreeMaxUnique()
    12 
    >>> sc.pitchFromDegree(1)
    G2 
    >>> sc.pitchFromDegree(2)
    A-2 
    >>> sc.pitchFromDegree(3)
    A2 
    >>> sc.pitchFromDegree(8)
    D3 
    >>> sc.pitchFromDegree(12)
    G-3 
    >>> sc.getScaleDegreeFromPitch('g2', comparisonAttribute='pitchClass')
    1 
    >>> sc.getScaleDegreeFromPitch('F#6', comparisonAttribute='pitchClass')
    12 


CyclicalScale
-------------

Inherits from: :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: CyclicalScale(tonic=None, intervalList=['m2'])

    A concrete cyclical scale, based on a cycle of intervals. These intervals do not have to be octave completing, and thus may produce scales that do no 

    >>> from music21 import *
    >>> sc = scale.CyclicalScale('c4', 'p5') # can give one list
    >>> sc.pitches
    [C4, G4] 
    >>> sc.getPitches('g2', 'g6')
    [B-2, F3, C4, G4, D5, A5, E6] 
    >>> sc.getScaleDegreeFromPitch('g4') # as single interval cycle, all are 1
    1 
    >>> sc.getScaleDegreeFromPitch('b-2', direction='bi')
    1 


DiatonicScale
-------------

Inherits from: :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: DiatonicScale(tonic=None)

    A concrete diatonic scale. Each DiatonicScale has one instance of a  :class:`~music21.scale.AbstractDiatonicScale`. 

    **DiatonicScale** **attributes**

        Attributes inherited from :class:`~music21.scale.ConcreteScale`: :attr:`~music21.scale.ConcreteScale.boundRange`

        Attributes inherited from :class:`~music21.scale.Scale`: :attr:`~music21.scale.Scale.type`

        Attributes inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.classSortOrder`, :attr:`~music21.base.Music21Object.hideObjectOnPrint`, :attr:`~music21.base.Music21Object.id`

    **DiatonicScale** **properties**

        .. attribute:: musicxml

            Return a complete musicxml representation. 

        Properties inherited from :class:`~music21.scale.ConcreteScale`: :attr:`~music21.scale.ConcreteScale.abstract`, :attr:`~music21.scale.ConcreteScale.chord`, :attr:`~music21.scale.ConcreteScale.isConcrete`, :attr:`~music21.scale.ConcreteScale.name`, :attr:`~music21.scale.ConcreteScale.pitches`

        Properties inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.activeSite`, :attr:`~music21.base.Music21Object.beat`, :attr:`~music21.base.Music21Object.beatDuration`, :attr:`~music21.base.Music21Object.beatStr`, :attr:`~music21.base.Music21Object.beatStrength`, :attr:`~music21.base.Music21Object.classes`, :attr:`~music21.base.Music21Object.derivationHierarchy`, :attr:`~music21.base.Music21Object.duration`, :attr:`~music21.base.Music21Object.measureNumber`, :attr:`~music21.base.Music21Object.offset`, :attr:`~music21.base.Music21Object.priority`

        Properties inherited from :class:`~music21.base.JSONSerializer`: :attr:`~music21.base.JSONSerializer.json`

    **DiatonicScale** **methods**

        .. method:: getDominant()

            Return the dominant. 

            >>> from music21 import *
            >>> sc = scale.MajorScale('e-')
            >>> sc.getDominant()
            B-4 
            >>> sc = scale.MajorScale('F#')
            >>> sc.getDominant()
            C#5 

        .. method:: getLeadingTone()

            Return the leading tone. 

            >>> from music21 import *
            >>> sc = scale.MinorScale('c')
            >>> sc.pitchFromDegree(7)
            B-4 
            >>> sc.getLeadingTone()
            B4 
            >>> sc.getDominant()
            G4 

            

        .. method:: getParallelMajor()

            Return a concrete relative major scale 

            >>> from music21 import *
            >>> sc1 = scale.MinorScale(pitch.Pitch('g'))
            >>> sc1.pitches
            [G4, A4, B-4, C5, D5, E-5, F5, G5] 
            >>> sc2 = sc1.getParallelMajor()
            >>> sc2.pitches
            [G4, A4, B4, C5, D5, E5, F#5, G5] 

        .. method:: getParallelMinor()

            Return a parallel minor scale based on this concrete major scale. 

            >>> from music21 import *
            >>> sc1 = scale.MajorScale(pitch.Pitch('a'))
            >>> sc1.pitches
            [A4, B4, C#5, D5, E5, F#5, G#5, A5] 
            >>> sc2 = sc1.getParallelMinor()
            >>> sc2.pitches
            [A4, B4, C5, D5, E5, F5, G5, A5] 

        .. method:: getRelativeMajor()

            Return a concrete relative major scale 

            >>> sc1 = MinorScale(pitch.Pitch('g'))
            >>> sc1.pitches
            [G4, A4, B-4, C5, D5, E-5, F5, G5] 
            >>> sc2 = sc1.getRelativeMajor()
            >>> sc2.pitches
            [B-4, C5, D5, E-5, F5, G5, A5, B-5] 
            >>> sc2 = DorianScale('d')
            >>> sc2.getRelativeMajor().pitches
            [C5, D5, E5, F5, G5, A5, B5, C6] 

        .. method:: getRelativeMinor()

            Return a relative minor scale based on this concrete major scale. 

            >>> sc1 = MajorScale(pitch.Pitch('a'))
            >>> sc1.pitches
            [A4, B4, C#5, D5, E5, F#5, G#5, A5] 
            >>> sc2 = sc1.getRelativeMinor()
            >>> sc2.pitches
            [F#5, G#5, A5, B5, C#6, D6, E6, F#6] 

        .. method:: getTonic()

            Return the tonic. 

            >>> from music21 import *
            >>> sc = scale.MajorScale('e-')
            >>> sc.getDominant()
            B-4 
            >>> sc = scale.MajorScale('F#')
            >>> sc.getDominant()
            C#5 

        Methods inherited from :class:`~music21.scale.ConcreteScale`: :meth:`~music21.scale.ConcreteScale.derive`, :meth:`~music21.scale.ConcreteScale.deriveByDegree`, :meth:`~music21.scale.ConcreteScale.deriveRanked`, :meth:`~music21.scale.ConcreteScale.findMissing`, :meth:`~music21.scale.ConcreteScale.getChord`, :meth:`~music21.scale.ConcreteScale.getDegreeMaxUnique`, :meth:`~music21.scale.ConcreteScale.getPitches`, :meth:`~music21.scale.ConcreteScale.getScaleDegreeFromPitch`, :meth:`~music21.scale.ConcreteScale.intervalBetweenDegrees`, :meth:`~music21.scale.ConcreteScale.isNext`, :meth:`~music21.scale.ConcreteScale.match`, :meth:`~music21.scale.ConcreteScale.next`, :meth:`~music21.scale.ConcreteScale.pitchFromDegree`, :meth:`~music21.scale.ConcreteScale.pitchesFromScaleDegrees`, :meth:`~music21.scale.ConcreteScale.romanNumeral`, :meth:`~music21.scale.ConcreteScale.transpose`

        Methods inherited from :class:`~music21.base.Music21Object`: :meth:`~music21.base.Music21Object.searchParentByAttr`, :meth:`~music21.base.Music21Object.getContextAttr`, :meth:`~music21.base.Music21Object.setContextAttr`, :meth:`~music21.base.Music21Object.addContext`, :meth:`~music21.base.Music21Object.addLocation`, :meth:`~music21.base.Music21Object.addLocationAndActiveSite`, :meth:`~music21.base.Music21Object.freezeIds`, :meth:`~music21.base.Music21Object.getAllContextsByClass`, :meth:`~music21.base.Music21Object.getCommonSiteIds`, :meth:`~music21.base.Music21Object.getCommonSites`, :meth:`~music21.base.Music21Object.getContextByClass`, :meth:`~music21.base.Music21Object.getOffsetBySite`, :meth:`~music21.base.Music21Object.getSiteIds`, :meth:`~music21.base.Music21Object.getSites`, :meth:`~music21.base.Music21Object.getSpannerSites`, :meth:`~music21.base.Music21Object.hasContext`, :meth:`~music21.base.Music21Object.mergeAttributes`, :meth:`~music21.base.Music21Object.purgeLocations`, :meth:`~music21.base.Music21Object.removeLocationBySite`, :meth:`~music21.base.Music21Object.removeLocationBySiteId`, :meth:`~music21.base.Music21Object.setOffsetBySite`, :meth:`~music21.base.Music21Object.show`, :meth:`~music21.base.Music21Object.splitAtDurations`, :meth:`~music21.base.Music21Object.splitAtQuarterLength`, :meth:`~music21.base.Music21Object.splitByQuarterLengths`, :meth:`~music21.base.Music21Object.unfreezeIds`, :meth:`~music21.base.Music21Object.unwrapWeakref`, :meth:`~music21.base.Music21Object.wrapWeakref`, :meth:`~music21.base.Music21Object.write`

        Methods inherited from :class:`~music21.base.JSONSerializer`: :meth:`~music21.base.JSONSerializer.jsonAttributes`, :meth:`~music21.base.JSONSerializer.jsonComponentFactory`, :meth:`~music21.base.JSONSerializer.jsonPrint`, :meth:`~music21.base.JSONSerializer.jsonRead`, :meth:`~music21.base.JSONSerializer.jsonWrite`


DorianScale
-----------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: DorianScale(tonic=None)

    A natural minor scale, or the Aeolian mode. 

    >>> sc = DorianScale(pitch.Pitch('d'))
    >>> sc.pitches
    [D4, E4, F4, G4, A4, B4, C5, D5] 


HarmonicMinorScale
------------------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: HarmonicMinorScale(tonic=None)

    A harmonic minor scale 

    >>> sc = HarmonicMinorScale('e4')
    >>> sc.pitches
    [E4, F#4, G4, A4, B4, C5, D#5, E5] 
    >>> sc.getTonic()
    E4 
    >>> sc.getDominant()
    B4 
    >>> sc.pitchFromDegree(1) # scale degree 1 is treated as lowest
    E4 


HypoaeolianScale
----------------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: HypoaeolianScale(tonic=None)

    A hypoaeolian scale 

    >>> sc = HypoaeolianScale(pitch.Pitch('a'))
    >>> sc.pitches
    [E4, F4, G4, A4, B4, C5, D5, E5] 
    >>> sc = HypoaeolianScale(pitch.Pitch('c'))
    >>> sc.pitches
    [G3, A-3, B-3, C4, D4, E-4, F4, G4] 


HypodorianScale
---------------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: HypodorianScale(tonic=None)

    A hypodorian scale 

    >>> sc = HypodorianScale(pitch.Pitch('d'))
    >>> sc.pitches
    [A3, B3, C4, D4, E4, F4, G4, A4] 
    >>> sc = HypodorianScale(pitch.Pitch('c'))
    >>> sc.pitches
    [G3, A3, B-3, C4, D4, E-4, F4, G4] 


HypolocrianScale
----------------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: HypolocrianScale(tonic=None)

    A hypolocrian scale 

    >>> sc = HypolocrianScale(pitch.Pitch('b'))
    >>> sc.pitches
    [F4, G4, A4, B4, C5, D5, E5, F5] 
    >>> sc = HypolocrianScale(pitch.Pitch('c'))
    >>> sc.pitches
    [G-3, A-3, B-3, C4, D-4, E-4, F4, G-4] 


HypolydianScale
---------------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: HypolydianScale(tonic=None)

    A hypolydian scale 

    >>> sc = HypolydianScale(pitch.Pitch('f'))
    >>> sc.pitches
    [C4, D4, E4, F4, G4, A4, B4, C5] 
    >>> sc = HypolydianScale(pitch.Pitch('c'))
    >>> sc.pitches
    [G3, A3, B3, C4, D4, E4, F#4, G4] 


HypomixolydianScale
-------------------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: HypomixolydianScale(tonic=None)

    A hypolydian scale 

    >>> sc = HypomixolydianScale(pitch.Pitch('g'))
    >>> sc.pitches
    [D4, E4, F4, G4, A4, B4, C5, D5] 
    >>> sc = HypomixolydianScale(pitch.Pitch('c'))
    >>> sc.pitches
    [G3, A3, B-3, C4, D4, E4, F4, G4] 


HypophrygianScale
-----------------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: HypophrygianScale(tonic=None)

    A hypophrygian scale 

    >>> sc = HypophrygianScale(pitch.Pitch('e'))
    >>> sc.abstract.octaveDuplicating
    True 
    >>> sc.pitches
    [B3, C4, D4, E4, F4, G4, A4, B4] 
    >>> sc.getTonic()
    E4 
    >>> sc.getDominant()
    A4 
    >>> sc.pitchFromDegree(1) # scale degree 1 is treated as lowest
    B3 


LocrianScale
------------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: LocrianScale(tonic=None)

    A locrian scale 

    >>> sc = LocrianScale(pitch.Pitch('b'))
    >>> sc.pitches
    [B4, C5, D5, E5, F5, G5, A5, B5] 
    >>> sc = LocrianScale(pitch.Pitch('c'))
    >>> sc.pitches
    [C4, D-4, E-4, F4, G-4, A-4, B-4, C5] 


LydianScale
-----------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: LydianScale(tonic=None)

    A lydian scale 

    >>> sc = LydianScale(pitch.Pitch('f'))
    >>> sc.pitches
    [F4, G4, A4, B4, C5, D5, E5, F5] 
    >>> sc = LydianScale(pitch.Pitch('c'))
    >>> sc.pitches
    [C4, D4, E4, F#4, G4, A4, B4, C5] 


MajorScale
----------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: MajorScale(tonic=None)

    A Major Scale 

    >>> sc = MajorScale(pitch.Pitch('d'))
    >>> sc.pitchFromDegree(7).name
    'C#' 


MelodicMinorScale
-----------------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: MelodicMinorScale(tonic=None)

    A melodic minor scale 

    >>> sc = MelodicMinorScale('e4')


MinorScale
----------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: MinorScale(tonic=None)

    A natural minor scale, or the Aeolian mode. 

    >>> sc = MinorScale(pitch.Pitch('g'))
    >>> sc.pitches
    [G4, A4, B-4, C5, D5, E-5, F5, G5] 


MixolydianScale
---------------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: MixolydianScale(tonic=None)

    A mixolydian scale 

    >>> sc = MixolydianScale(pitch.Pitch('g'))
    >>> sc.pitches
    [G4, A4, B4, C5, D5, E5, F5, G5] 
    >>> sc = MixolydianScale(pitch.Pitch('c'))
    >>> sc.pitches
    [C4, D4, E4, F4, G4, A4, B-4, C5] 


OctatonicScale
--------------

Inherits from: :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: OctatonicScale(tonic=None, mode=None)

    A concrete Octatonic scale. Two modes 


OctaveRepeatingScale
--------------------

Inherits from: :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: OctaveRepeatingScale(tonic=None, intervalList=['m2', <music21.interval.Interval M7>, <music21.interval.Interval P1>])

    A concrete cyclical scale, based on a cycle of intervals. These intervals do not have to be octave completing, and thus may produce scales that do no 

    >>> from music21 import *
    >>> sc = scale.OctaveRepeatingScale('c4', ['m3', 'M3']) #
    >>> sc.pitches
    [C4, E-4, G4, C5] 
    >>> sc.getPitches('g2', 'g6')
    [G2, C3, E-3, G3, C4, E-4, G4, C5, E-5, G5, C6, E-6, G6] 
    >>> sc.getScaleDegreeFromPitch('c4')
    1 
    >>> sc.getScaleDegreeFromPitch('e-')
    2 


PhrygianScale
-------------

Inherits from: :class:`~music21.scale.DiatonicScale`, :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: PhrygianScale(tonic=None)

    A phrygian scale 

    >>> sc = PhrygianScale(pitch.Pitch('e'))
    >>> sc.pitches
    [E4, F4, G4, A4, B4, C5, D5, E5] 


RagAsawari
----------

Inherits from: :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: RagAsawari(tonic=None)

    A concrete pseudo-raga scale. 

    >>> from music21 import *
    >>> sc = scale.RagAsawari('c2')
    >>> sc.pitches
    [C2, D2, F2, G2, A-2, C3] 
    >>> sc.getPitches(direction='descending')
    [C3, B-2, A-2, G2, F2, E-2, D2, C2] 


RagMarwa
--------

Inherits from: :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: RagMarwa(tonic=None)

    A concrete pseudo-raga scale. 

    >>> from music21 import *
    >>> sc = scale.RagMarwa('c2')
    >>> # this gets a pitch beyond the terminus b/c of descending form max
    >>> sc.pitches
    [C2, D-2, E2, F#2, A2, B2, A2, C3, D-3] 


Scale
-----

Inherits from: :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: Scale()

    Generic base class for all scales, both abstract and concrete. 

    **Scale** **attributes**

        Attributes without Documentation: `type`

        Attributes inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.classSortOrder`, :attr:`~music21.base.Music21Object.hideObjectOnPrint`, :attr:`~music21.base.Music21Object.id`

    **Scale** **properties**

        .. attribute:: isConcrete

            To be concrete, a Scale must have a defined tonic. An abstract Scale is not Concrete, nor is a Concrete scale without a defined tonic. 

        .. attribute:: name

            Return or construct the name of this scale. 

            

        Properties inherited from :class:`~music21.base.Music21Object`: :attr:`~music21.base.Music21Object.activeSite`, :attr:`~music21.base.Music21Object.beat`, :attr:`~music21.base.Music21Object.beatDuration`, :attr:`~music21.base.Music21Object.beatStr`, :attr:`~music21.base.Music21Object.beatStrength`, :attr:`~music21.base.Music21Object.classes`, :attr:`~music21.base.Music21Object.derivationHierarchy`, :attr:`~music21.base.Music21Object.duration`, :attr:`~music21.base.Music21Object.measureNumber`, :attr:`~music21.base.Music21Object.offset`, :attr:`~music21.base.Music21Object.priority`

        Properties inherited from :class:`~music21.base.JSONSerializer`: :attr:`~music21.base.JSONSerializer.json`

    **Scale** **methods**

        Methods inherited from :class:`~music21.base.Music21Object`: :meth:`~music21.base.Music21Object.searchParentByAttr`, :meth:`~music21.base.Music21Object.getContextAttr`, :meth:`~music21.base.Music21Object.setContextAttr`, :meth:`~music21.base.Music21Object.addContext`, :meth:`~music21.base.Music21Object.addLocation`, :meth:`~music21.base.Music21Object.addLocationAndActiveSite`, :meth:`~music21.base.Music21Object.freezeIds`, :meth:`~music21.base.Music21Object.getAllContextsByClass`, :meth:`~music21.base.Music21Object.getCommonSiteIds`, :meth:`~music21.base.Music21Object.getCommonSites`, :meth:`~music21.base.Music21Object.getContextByClass`, :meth:`~music21.base.Music21Object.getOffsetBySite`, :meth:`~music21.base.Music21Object.getSiteIds`, :meth:`~music21.base.Music21Object.getSites`, :meth:`~music21.base.Music21Object.getSpannerSites`, :meth:`~music21.base.Music21Object.hasContext`, :meth:`~music21.base.Music21Object.mergeAttributes`, :meth:`~music21.base.Music21Object.purgeLocations`, :meth:`~music21.base.Music21Object.removeLocationBySite`, :meth:`~music21.base.Music21Object.removeLocationBySiteId`, :meth:`~music21.base.Music21Object.setOffsetBySite`, :meth:`~music21.base.Music21Object.show`, :meth:`~music21.base.Music21Object.splitAtDurations`, :meth:`~music21.base.Music21Object.splitAtQuarterLength`, :meth:`~music21.base.Music21Object.splitByQuarterLengths`, :meth:`~music21.base.Music21Object.unfreezeIds`, :meth:`~music21.base.Music21Object.unwrapWeakref`, :meth:`~music21.base.Music21Object.wrapWeakref`, :meth:`~music21.base.Music21Object.write`

        Methods inherited from :class:`~music21.base.JSONSerializer`: :meth:`~music21.base.JSONSerializer.jsonAttributes`, :meth:`~music21.base.JSONSerializer.jsonComponentFactory`, :meth:`~music21.base.JSONSerializer.jsonPrint`, :meth:`~music21.base.JSONSerializer.jsonRead`, :meth:`~music21.base.JSONSerializer.jsonWrite`


SieveScale
----------

Inherits from: :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: SieveScale(tonic=None, sieveString=2@0)

    A scale created from a Xenakis sieve logical string, based on the :class:`~music21.sieve.Sieve` object definition. The complete period of the sieve is realized as intervals and used to create a scale. 

    >>> from music21 import *
    >>> sc = scale.SieveScale('c4', '3@0')
    >>> sc.pitches
    [C4, E-4] 
    >>> sc = scale.SieveScale('d4', '3@0')
    >>> sc.pitches
    [D4, F4] 
    >>> sc = scale.SieveScale('c2', '(-3@2 & 4) | (-3@1 & 4@1) | (3@2 & 4@2) | (-3 & 4@3)')
    >>> sc.pitches
    [C2, D2, E2, F2, G2, A2, B2, C3] 

    


WeightedHexatonicBlues
----------------------

Inherits from: :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: WeightedHexatonicBlues(tonic=None)

    A concrete scale based on a dynamic mixture of a minor pentatonic and the hexatonic blues scale. 

    >>> from music21 import *


WholeToneScale
--------------

Inherits from: :class:`~music21.scale.ConcreteScale`, :class:`~music21.scale.Scale`, :class:`~music21.base.Music21Object`, :class:`~music21.base.JSONSerializer`

.. class:: WholeToneScale(tonic=None)

    A concrete whole-tone scale. 

    >>> from music21 import *
    >>> sc = scale.WholeToneScale('g2')
    >>> sc.pitches
    [G2, A2, B2, C#3, D#3, E#3, G3] 
    >>> sc.getPitches('g2', 'g6')
    [G2, A2, B2, C#3, D#3, E#3, G3, A3, B3, C#4, D#4, E#4, G4, A4, B4, C#5, D#5, E#5, G5, A5, B5, C#6, D#6, E#6, G6] 
    >>> sc.abstract.getDegreeMaxUnique()
    6 
    >>> sc.pitchFromDegree(1)
    G2 
    >>> sc.pitchFromDegree(2)
    A2 
    >>> sc.pitchFromDegree(6)
    E#3 
    >>> sc.getScaleDegreeFromPitch('g2', comparisonAttribute='pitchClass')
    1 
    >>> sc.getScaleDegreeFromPitch('F6', comparisonAttribute='pitchClass')
    6 


