def use_phrase(phrase_list, progression_list, nb_bars, pattern_index, mode='none', key="C"): print(str(progression_list)) t = Track() if nb_bars == 1 : nb_p = 0 for progression in progression_list[0] : if nb_p%4 == 0 : phrase = get_phrase(progression, phrase_list) print("boucle phrase doit apparaitre trois fois") last_note = None nb_bars = 0 for bars in phrase[1][3] : list_bar = generate_bar(last_note, bars, key, mode, progression, progression_list, nb_p+nb_bars, pattern_index) b = list_bar[0] last_note = list_bar[1] nb_bars+=1 t.add_bar(b) last_bar = bars if phrase[1][1] < 4 : # composer le reste TODO en attendant on met du vide last_bar_notes = list_bar[2] print("lala "+str(last_bar_notes)) next_index = nb_p+4 if next_index < 9 : next_progression = progression_list[0][next_index] next_phrase = get_phrase(next_progression, phrase_list) first_bar = next_phrase[1][3][0] first_bar_list = generate_bar(last_note, first_bar, key, mode, next_progression, progression_list, nb_p+4, pattern_index) first_bar_notes = first_bar_list[2] nb_notes_to_generate = get_nb_note_needed(last_bar, first_bar) print "****************** je vais generer la transition ! ****************" transition_bar = generate_transition(first_bar_notes, last_bar_notes, nb_notes_to_generate, pattern_index, key) print "***************************** Fini ! ******************************" for transition in transition_bar : t.add_bar(transition) """for i in range(len(transition_bar)): t.add_bar(transition_bar[i])""" else : list_end = generate_end_bars(bars, list_bar[2], pattern_index, key, mode) for end_bar in list_end : t.add_bar(end_bar) break nb_p +=1 else : nb_p +=1 continue return t
def generate_long_right_hand(phrase_list, progression_list, nb_bars, pattern_index, mode, key, chorus): t = Track() k = 0 # on parcours la liste de phrases for phrase in phrase_list : k += 1 previews_note = None nb_p = 0 for bar in phrase[1][3] : list_bar = generate_bar(previews_note, bar, key, mode, 'I', progression_list, nb_p, pattern_index) b = list_bar[0] last_note = list_bar[1] nb_bars+=1 t.add_bar(b) last_bar = bar nb_p+=1 if phrase[1][1] < 4 : # composer le reste TODO en attendant on met du vide last_bar_notes = list_bar[2] next_index = nb_p+4 if next_index < 9 : next_progression = progression_list[0][next_index] next_phrase = chorus[1] first_bar = next_phrase[1][3][0] first_bar_list = generate_bar(last_note, first_bar, key, mode, next_progression, progression_list, nb_p+4, pattern_index) first_bar_notes = first_bar_list[2] nb_notes_to_generate = get_nb_note_needed(last_bar, first_bar) print "****************** je vais generer la transition ! ****************" transition_bar = generate_transition(first_bar_notes, last_bar_notes, nb_notes_to_generate, pattern_index, key) print "***************************** Fini ! ******************************" for i in range(len(transition_bar)): t.add_bar(transition_bar[i]) # on ajoute le refrain for chorus_bars in chorus[0][2] : t.add_bar(chorus_bars) if k == len(phrase_list) : list_end = generate_end_bars(chorus[0][2][1], chorus[3], pattern_index, key, mode) for end_bar in list_end : t.add_bar(end_bar) #generer transition vers la phrase suivante #ou generer la fin for i in range(2): b = Bar(key, (4,4)) b.place_rest(1) t.add_bar(b) #generer phrase + genererer transition # ajouter refrain # si ce n'est pas la fin : generer transition entre refrain et prochaine phrase # sinon, generer fin return t