from midiutil import MIDIFile # Параметры tempo = 112 # BPM оригинала volume = 100 # Создаём MIDI файл: 1 трек midi = MIDIFile(1) track = 0 channel = 0 # Пианино time = 0 midi.addTempo(track, time, tempo) # Функция для добавления нот (note, duration в долях такта, volume) def add_notes(notes, duration=1, vol=volume): global time for pitch in notes if isinstance(notes, list) else [notes]: midi.addNote(track, channel, pitch, time, duration, vol) time += duration # Простая версия Verse (Куплет) - 4 повторения прогрессии # Аккорды: Bdim7 (бас Ab), Gm6, F#m7, Bm7 # Мелодия упрощённая, фокус на мотиве A A B B (A4=69, B4=71) # Один цикл куплета (4 такта) for _ in range(4): # x4 # 1. Bdim7 с басом Ab3 (44) add_notes(44, 1) # бас Ab3 add_notes([71, 74, 77, 80], 0.5) # B4 D5 F5 Ab5 (пример voicing) add_notes([69, 69, 71, 71], 0.5) # мотив A A B B в мелодии # 2. Gm6 add_notes(43, 1) # бас G3=43 add_notes([67, 70, 74, 76], 1) # G Bb D E # 3. F#m7 add_notes(42, 1) # бас F#3=42 add_notes([66, 69, 73, 76], 1) # F# A C# E # 4. Bm7 add_notes(47, 1) # бас B3=47 add_notes([71, 74, 78, 81], 1) # B D F# A (выше) # Chorus (Припев) - упрощённо 4 цикла # Аккорды: GM7 - F#m7 - Em7 - Dmaj7 for _ in range(4): # GM7 add_notes(55, 1) # бас G3 add_notes([71, 74, 78, 81], 1) # G B D F# # F#m7 add_notes(54, 1) # F#3 add_notes([69, 73, 76, 78], 1) # Em7 add_notes(52, 1) # E3 add_notes([64, 67, 71, 74], 1) # Dmaj7 с развитием мелодии add_notes(50, 1) # D3 add_notes([69, 71, 73, 74], 0.5) # A B C# D (развитие мотива) add_notes([74], 0.5) # финал # Записываем в файл with open("kimi_no_kioku_simple.mid", "wb") as output_file: midi.writeFile(output_file) print("MIDI файл успешно создан: kimi_no_kioku_simple.mid")