Exemplo n.º 1
0
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
Exemplo n.º 2
0
	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
Exemplo n.º 3
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))
Exemplo n.º 4
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))
Exemplo n.º 5
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
Exemplo n.º 6
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))
Exemplo n.º 7
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))