Exemplo n.º 1
0
def vader_jacob():

    theme1 = Measure(Tempo(120), Signature(4, 4)) \
        .add_note(Note('C', 3), 0, 1) \
        .add_note(Note('D', 3), 1, 1) \
        .add_note(Note('E', 3), 2, 1) \
        .add_note(Note('C', 3), 3, 1)

    theme2 = Measure(Tempo(120), Signature(4, 4)) \
        .add_note(Note('E', 3), 0, 1) \
        .add_note(Note('F', 3), 1, 1) \
        .add_note(Note('G', 3), 2, 2)

    theme3 = Measure(Tempo(120), Signature(4, 4)) \
        .add_note(Note('G', 3), 0, 0.5) \
        .add_note(Note('A', 3), 0.5, 0.5) \
        .add_note(Note('G', 3), 1, 0.5) \
        .add_note(Note('F', 3), 1.5, 0.5) \
        .add_note(Note('E', 3), 2, 1) \
        .add_note(Note('C', 3), 3, 1)

    theme4 = Measure(Tempo(120), Signature(4, 4)) \
        .add_note(Note('C', 3), 0, 1) \
        .add_note(Note('G', 2), 1, 1) \
        .add_note(Note('C', 3), 2, 2)

    track = Track([theme1] * 2 + [theme2] * 2 + [theme3] * 2 + [theme4] * 2)

    return track
Exemplo n.º 2
0
def generate_dataset(n_measures,
                     tempo=Tempo(120),
                     scale=GenericScale('C', [0, 2, 3, 5, 7, 8, 10]),
                     sampling_info=SamplingInfo(44100)):

    signature = Signature(4, 4)
    n_notes_per_measure = 4

    bass_instrument = make_bass_instrument(sampling_info)
    lead_instrument = make_lead_instrument(sampling_info)
    chord_instrument = make_accomp_instrument(sampling_info)

    chord_track = generate_chord_track(scale, tempo, signature, n_measures)
    y_chord = chord_instrument.generate_track(chord_track)

    lead_track = generate_lead_track(scale, tempo, signature, n_measures,
                                     n_notes_per_measure)
    y_lead = lead_instrument.generate_track(lead_track)

    bass_track = generate_bass_track(scale, tempo, signature, n_measures)
    y_bass = bass_instrument.generate_track(bass_track)

    mix = mixdown([y_bass, y_chord, y_lead])

    return [bass_track, chord_track, lead_track], [y_bass, y_chord,
                                                   y_lead], mix
Exemplo n.º 3
0
def test_measure_note_generate():
    measure = Measure(Tempo(120), Signature(4, 4))
    measure.add_note(Note('C#', 3), 0, 1)
    measure.add_note(Note('D', 3), 1, 1)
    measure.add_note(Note('E', 3), 2, 1)
    measure.add_note(Note('C#', 3), 3, 1)
    result = measure.generate_notes(Duration(1.5))
    assert result[0].offset.seconds == (measure.notes[0].offset +
                                        Duration(1.5)).seconds
    pass
Exemplo n.º 4
0
def test_measure():

    measure = Measure(Tempo(120), Signature(4, 4))

    measure.add_note(Note('C', 3), 0, 1)
    measure.add_note(Note('D', 3), 1, 1)
    measure.add_note(Note('E', 3), 2, 1)
    measure.add_note(Note('C', 3), 3, 1)

    assert len(measure.notes) == 4
Exemplo n.º 5
0
def test_max_duration():
    measure = Measure(Tempo(120), Signature(4, 4))
    measure.add_note(Note('C#', 3), 0, 1)
    measure.add_note(Note('F', 3), 2, 5)
    measure.add_note(Note('D', 3), 1, 1)
    measure.add_note(Note('E', 3), 2, 1)
    measure.add_note(Note('C#', 3), 3, 1)

    max_duration = get_max_duration(measure.generate_notes(Duration(1.5)))

    assert max_duration.seconds == 5.0
Exemplo n.º 6
0
    def generate_chord(self, chord: Chord, time: Duration):

        tempo = Tempo(120)
        measure = Measure(tempo, Signature(4, 4))

        for n in chord.notes:
            measure.add_note(n, 0, duration=time.beats(tempo))

        track = Track([measure])

        return self.generate_track(track)
Exemplo n.º 7
0
def generate(num_measures=64):

    tempo = Tempo(120)
    signature = Signature(4, 4)

    scale = GenericScale('C', [0, 2, 3, 5, 7, 8, 10])
    chords = generate_chords(scale, num_measures)

    trk_bass = generate_bass(chords, signature, tempo)

    return trk_bass

    pass
Exemplo n.º 8
0
def test_bass_with_chords():
    scale = GenericScale('C', [0, 2, 3, 5, 7, 8, 10])
    chords_track = random_lead.generate_chords(scale, 32, 4, 4)

    tempo = Tempo(120)
    signature = Signature(4, 4)

    trk_bass = random_lead.generate_bass(chords_track, signature, tempo)

    assert trk_bass.measures[0].str_summary() == \
        '4/4: (@120.0 bpm):' \
        '\nC1 at 0.0 s for 0.25 s\nC1 at 0.5 s for 0.25 s' \
        '\nC1 at 1.0 s for 0.25 s\nC1 at 1.5 s for 0.25 s'

    pass
Exemplo n.º 9
0
def generate_bass(chords, signature: Signature, tempo: Tempo):

    measures = []
    for c in chords:
        measure = Measure(tempo, signature)
        note = c.get_root().clone()
        note.set_octave(1)

        for i in range(int(signature.get_num_quarter_notes())):
            measure.add_note(note, i, 0.5)
        measures.append(measure)

    track = Track(measures)

    return track
Exemplo n.º 10
0
def test_bar():
    bar = Measure(Tempo(120), Signature(3, 4))
    assert bar.total_time().seconds == 1.5
Exemplo n.º 11
0
def test_signature():
    signature = Signature(4, 4)
    assert str(signature) == '4/4'

    signature = Signature(7, 8)
    assert str(signature) == '7/8'