|
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