|
8 | 8 |
|
9 | 9 | # Initialize the Melody RNN model
|
10 | 10 | model_name = 'attention_rnn'
|
11 |
| -melody_rnn = melody_rnn_sequence_generator.MelodyRnnSequenceGenerator(model_name=model_name) |
| 11 | +melody_rnn = melody_rnn_sequence_generator.MelodyRnnSequenceGenerator( |
| 12 | + model_name=model_name) |
12 | 13 |
|
13 | 14 | # Set the temperature for music generation (higher values lead to more randomness)
|
14 | 15 | temperature = 1.0
|
|
20 | 21 | steps_per_music_piece = 128
|
21 | 22 |
|
22 | 23 | # User input for preferred genre and tempo
|
23 |
| -preferred_genre = input("Enter your preferred genre (e.g., classical, jazz, rock): ") |
| 24 | +preferred_genre = input( |
| 25 | + "Enter your preferred genre (e.g., classical, jazz, rock): ") |
24 | 26 | preferred_tempo = int(input("Enter your preferred tempo (BPM): "))
|
25 | 27 |
|
26 | 28 | # Chord progression for the chosen genre (you can add more genres and progressions)
|
|
32 | 34 |
|
33 | 35 | # Basic drum pattern for accompaniment
|
34 | 36 | drum_pattern = mm.DrumTrack(
|
35 |
| - [36, 0, 42, 0, 36, 0, 42, 0], # Kick drum and Hi-hat pattern (adjust as needed) |
| 37 | + # Kick drum and Hi-hat pattern (adjust as needed) |
| 38 | + [36, 0, 42, 0, 36, 0, 42, 0], |
36 | 39 | start_step=0,
|
37 | 40 | steps_per_bar=steps_per_music_piece // 4,
|
38 | 41 | steps_per_quarter=4,
|
|
46 | 49 | steps=steps_per_music_piece,
|
47 | 50 | primer_sequence=None
|
48 | 51 | )
|
49 |
| - |
| 52 | + |
50 | 53 | # Add chords to the melody sequence based on the preferred genre
|
51 |
| - chords = [chord_progressions.get(preferred_genre, ["C"])[i % len(chord_progressions.get(preferred_genre, ["C"]))] for i in range(steps_per_music_piece)] |
| 54 | + chords = [chord_progressions.get(preferred_genre, ["C"])[i % len( |
| 55 | + chord_progressions.get(preferred_genre, ["C"]))] for i in range(steps_per_music_piece)] |
52 | 56 | chord_sequence = mm.ChordSequence(chords)
|
53 |
| - melody_with_chords_sequence = mm.sequences_lib.concatenate_sequences(melody_sequence, chord_sequence) |
54 |
| - |
| 57 | + melody_with_chords_sequence = mm.sequences_lib.concatenate_sequences( |
| 58 | + melody_sequence, chord_sequence) |
| 59 | + |
55 | 60 | # Create a MIDI file from the melody with chords sequence and drum pattern
|
56 |
| - music_sequence = mm.sequences_lib.concatenate_sequences(melody_with_chords_sequence, drum_pattern) |
| 61 | + music_sequence = mm.sequences_lib.concatenate_sequences( |
| 62 | + melody_with_chords_sequence, drum_pattern) |
57 | 63 | music_sequence.tempos[0].qpm = preferred_tempo
|
58 |
| - |
| 64 | + |
59 | 65 | midi_file = os.path.join(output_dir, f'music_piece_{i + 1}.mid')
|
60 | 66 | mm.sequence_proto_to_midi_file(music_sequence, midi_file)
|
61 | 67 | print(f'Music piece {i + 1} generated and saved as {midi_file}')
|
|
0 commit comments