def genPeriod(chords = default_chords, bi11 = None, real_end = False):
    if bi11 == None:
        bi11 = gbi.genBasicIdea(chords=chords[:4])
    bi21 = gbi.genBasicIdea(prev_note = bi11.pits[-1], chords=chords[4:8])
    bi21cells = bi21.cells
    bi21cells[-1] = genending.genEnding(bi21cells[-2].pits[-1], chord=chords[7], authentic=False)
    bi21 = Chunk(sub_chunks = bi21cells)
    bi12 = tf.alterBasicIdea(bi = bi11, prev_note = bi21.pits[-1], chords = chords[8:12])
    bi22 = tf.alterBasicIdea(bi = bi21, prev_note = bi12.pits[-1], chords = chords[12:], cadence='authentic', real_end = real_end)
    return Chunk(sub_chunks=[Chunk(sub_chunks=[bi11,bi21]), Chunk(sub_chunks=[bi12, bi22])])
instr_cells['Piano 2'].extend(gb.genBass(switcher))

sentence1 = gs.genSentence()
sentence1.setKey(7)
instr_cells['Flute'].extend(sentence1.cells)
instr_cells['Piano 1'].extend(counter.genCounter(sentence1, instr_cells['Piano 1'][-1].pits[-1]))
instr_cells['Piano 2'].extend(gb.genBass(sentence1))


transition_phrase = gt.genTransition()
instr_cells['Flute'].extend([gc.genBlankCell(2.0) for cell in transition_phrase.cells])
instr_cells['Piano 1'].extend(transition_phrase.cells)
instr_cells['Piano 2'].extend(acc.genAlbertiEighths(transition_phrase, leading_eighths = False))


period3 = gper.genPeriod(bi11 = tf.alterBasicIdea(period1phrase2.sub_chunks[0]), real_end=True)
period3phrase1 = period3.sub_chunks[0]
instr_cells['Flute'].extend(period3phrase1.cells)
instr_cells['Piano 1'].extend(counter.genCounter(period3phrase1))
instr_cells['Piano 2'].extend(gb.genBass(period3phrase1))

period3phrase2 = period3.sub_chunks[1]
instr_cells['Flute'].extend(period3phrase2.cells)
instr_cells['Piano 1'].extend(counter.genCounter(period3phrase2))
instr_cells['Piano 2'].extend(acc.genAlbertiEighths(period3phrase2, leading_eighths = False))


#create parts from instr_cells
parts = OrderedDict()
for instr in instrs:
    parts[instr] = stream.Part()