def reharmonize(chords, scores, bars, key, mode): if mode == 'minor': new_key = Keys.relative_minor(key) for i in range(0, len(chords)): if (chords[i] == 'bbbbbI'): continue if random.random() > 0.2: subs = Progressions.substitute([chords[i]], 0) for j in range(0, 5): sub = random.choice(subs) if not (sub.endswith('dim')) and not ( sub.endswith('dim7')) and score(sub, bars[i], new_key): if i == 0: if sub == chords[i + 1]: continue if i == len(chords) - 1: if sub != chords[i - 1]: continue if sub != chords[i - 1] and sub != chords[i + 1]: chords[i] = sub break
def get_progression(self, iteration): res = Block.get_progression(self, iteration) # Mutate if random() < 0.5 * self.wildness: change = choice(range(len(res))) if self.wildness > 0.5: depth = 1 else: depth = 0 r =progressions.substitute(res, change, depth) if r != []: res[change] = choice(r) p = self.progressions for i in range(len(p)): if i < len(p) - 1: if p[i][0] <= iteration and p[i + 1][0] > iteration: p[i] = (p[i][0], res) print res return res
def test_substitute(self): self.assertTrue('III' in progressions.substitute(['I'], 0)) self.assertTrue('VI' in progressions.substitute(['I'], 0)) self.assertTrue('V' in progressions.substitute(['VII'], 0)) self.assertTrue('V7' in progressions.substitute(['VII'], 0)) self.assertTrue('VII' in progressions.substitute(['V7'], 0)) self.assertTrue('VIIdim7' in progressions.substitute(['V7'], 0)) self.assertTrue('IIdim7' in progressions.substitute(['V7'], 0)) self.assertTrue('IIdim7' in progressions.substitute(['VIIdim7'], 0)) self.assertTrue('bIIdim7' in progressions.substitute(['bVIIdim7'], 0)) self.assertTrue('I' in progressions.substitute(['VI'], 0)) self.assertTrue('IIM' in progressions.substitute(['VIIm'], 0))
def test_substitute(self): self.assertTrue("III" in progressions.substitute(["I"], 0)) self.assertTrue("VI" in progressions.substitute(["I"], 0)) self.assertTrue("V" in progressions.substitute(["VII"], 0)) self.assertTrue("V7" in progressions.substitute(["VII"], 0)) self.assertTrue("VII" in progressions.substitute(["V7"], 0)) self.assertTrue("VIIdim7" in progressions.substitute(["V7"], 0)) self.assertTrue("IIdim7" in progressions.substitute(["V7"], 0)) self.assertTrue("IIdim7" in progressions.substitute(["VIIdim7"], 0)) self.assertTrue("bIIdim7" in progressions.substitute(["bVIIdim7"], 0)) self.assertTrue("I" in progressions.substitute(["VI"], 0)) self.assertTrue("IIM" in progressions.substitute(["VIIm"], 0))
if len(progression) == 0: firstChord = ProgressionPart(firstScalechord, scale, key) progression.append(firstChord) else: lastChord = progression[-1] nextChord = lastChord.next() progression.append(nextChord) ## Convert to MIDI flatList = [] for part in progression: modChord = part.chord # random chord substitution if random() > 0.9: substitutions = progressions.substitute(modChord, 0) #modChord = choice(substitutions) flatList.append(modChord) print(flatList) builtChords = progressions.to_chords(flatList, key) ## Create bars for each chord comp = [] lead = [] for chord in builtChords: modChord = chord
def test_substitute(self): self.assert_('III' in progressions.substitute(['I'], 0)) self.assert_('VI' in progressions.substitute(['I'], 0)) self.assert_('V' in progressions.substitute(['VII'], 0)) self.assert_('V7' in progressions.substitute(['VII'], 0)) self.assert_('VII' in progressions.substitute(['V7'], 0)) self.assert_('VIIdim7' in progressions.substitute(['V7'], 0)) self.assert_('IIdim7' in progressions.substitute(['V7'], 0)) self.assert_('IIdim7' in progressions.substitute(['VIIdim7'], 0)) self.assert_('bIIdim7' in progressions.substitute(['bVIIdim7'], 0)) self.assert_('I' in progressions.substitute(['VI'], 0)) self.assert_('IIM' in progressions.substitute(['VIIm'], 0))
def test_substitute(self): self.assert_("III" in progressions.substitute(["I"], 0)) self.assert_("VI" in progressions.substitute(["I"], 0)) self.assert_("V" in progressions.substitute(["VII"], 0)) self.assert_("V7" in progressions.substitute(["VII"], 0)) self.assert_("VII" in progressions.substitute(["V7"], 0)) self.assert_("VIIdim7" in progressions.substitute(["V7"], 0)) self.assert_("IIdim7" in progressions.substitute(["V7"], 0)) self.assert_("IIdim7" in progressions.substitute(["VIIdim7"], 0)) self.assert_("bIIdim7" in progressions.substitute(["bVIIdim7"], 0)) self.assert_("I" in progressions.substitute(["VI"], 0)) self.assert_("IIM" in progressions.substitute(["VIIm"], 0))