diff --git a/music21/scale/__init__.py b/music21/scale/__init__.py index 9dc898f0f..6e298ee90 100644 --- a/music21/scale/__init__.py +++ b/music21/scale/__init__.py @@ -1016,7 +1016,7 @@ def buildNetwork(self, mode: t.Any = None) -> None: intervalSum = interval.add(mode) iComplement = intervalSum.complement if iComplement is not None: - mode.append(iComplement) + mode = [*mode, iComplement] # a copy: mode is the caller's list # steps wider than an octave complete a pattern spanning several # octaves, which does not repeat every octave diff --git a/music21/scale/test_scale_main.py b/music21/scale/test_scale_main.py index 96876fc2c..e8aac4c8a 100644 --- a/music21/scale/test_scale_main.py +++ b/music21/scale/test_scale_main.py @@ -233,6 +233,15 @@ def testBasic(self): ], 'notMatched': [, ]}''', pformat(sc1.match(sc2))) + def testOctaveRepeatingScaleLeavesModeAlone(self): + mode = ['M3', 'M3'] + sc = scale.OctaveRepeatingScale('c4', mode) + self.assertEqual(mode, ['M3', 'M3']) + self.assertEqual(self.pitchOut(sc.pitches), '[C4, E4, G#4, C5]') + + again = scale.OctaveRepeatingScale('c4', mode) + self.assertEqual(self.pitchOut(again.pitches), '[C4, E4, G#4, C5]') + def testOctaveRepeatingScaleWiderThanAnOctave(self): sc = scale.OctaveRepeatingScale('c4', ['P5', 'P5']) self.assertEqual(self.pitchOut(sc.pitches), '[C4, G4, D5, C6]')