diff --git a/music21/scale/__init__.py b/music21/scale/__init__.py index 9dc898f0f..8804228a6 100644 --- a/music21/scale/__init__.py +++ b/music21/scale/__init__.py @@ -2486,7 +2486,8 @@ def derive(self, other, comparisonAttribute: str = 'pitchClass') -> ConcreteScal abstract = t.cast(AbstractScale, self._abstract) net = t.cast('intervalNetwork.IntervalNetwork', abstract._net) pairs = net.find(pitchTarget=otherPitches, - comparisonAttribute=comparisonAttribute) + comparisonAttribute=comparisonAttribute, + alteredDegrees=abstract._alteredDegrees) newScale = self.__class__(tonic=pairs[0][1]) if newScale.abstract is None: diff --git a/music21/scale/test_scale_main.py b/music21/scale/test_scale_main.py index 96876fc2c..4a831a0e4 100644 --- a/music21/scale/test_scale_main.py +++ b/music21/scale/test_scale_main.py @@ -286,6 +286,10 @@ def testHarmonicMinorDescendingRange(self): descending = sc.getPitches('c#4', 'g#4', direction=Direction.DESCENDING) self.assertEqual(self.pitchOut(descending), '[G-4, F4, E-4, D-4]') + def testDeriveHarmonicMinor(self): + sc = scale.HarmonicMinorScale() + self.assertEqual(sc.derive(['C', 'D', 'E-', 'B']).name, 'C harmonic minor') + def testDeriveByDegree(self): sc1 = scale.MajorScale() self.assertEqual(str(sc1.deriveByDegree(7, 'G#')),