Python music21 in Windows

Windows에서 music21을 사용하여 음악을 만들고 MIDI 파일로 저장하는 방법을 단계별로 설명하겠습니다.


1. music21 설치

먼저 music21이 설치되어 있어야 합니다. 명령 프롬프트(CMD)에서 다음 명령어를 실행하세요.

pip install music21

설치가 완료되었는지 확인하려면 Python에서 다음을 실행합니다.

import music21
print(music21.__version__)

에러 없이 버전이 출력되면 정상적으로 설치된 것입니다.


2. 기본적인 음표 생성 및 MIDI 파일 저장

다음은 music21을 사용하여 간단한 멜로디를 만들고 MIDI 파일로 저장하는 코드입니다.

from music21 import stream, note, tempo, instrument

# 1. 악보 생성
score = stream.Score()

# 2. 파트 추가 (피아노)
part = stream.Part()
part.insert(0, instrument.Piano())  # 피아노 설정
part.insert(0, tempo.MetronomeMark(number=120))  # BPM 120 설정

# 3. 음표 추가
melody = ['C4', 'D4', 'E4', 'F4', 'G4', 'A4', 'B4', 'C5']  # 도~높은 도
for pitch in melody:
    part.append(note.Note(pitch, quarterLength=1))  # 각 음표의 길이를 1 박자로 설정

# 4. 악보에 파트 추가
score.append(part)

# 5. MIDI 파일로 저장
midi_filename = "simple_melody.mid"
score.write('midi', fp=midi_filename)
print(f"MIDI 파일이 저장되었습니다: {midi_filename}")

실행 방법

  1. 위 코드를 melody.py로 저장합니다.
  2. 명령 프롬프트에서 해당 파일이 있는 디렉터리로 이동 후 실행: python melody.py
  3. 실행 후 simple_melody.mid 파일이 생성됩니다.

3. 생성한 MIDI 파일 재생하는 방법

Windows에서 MIDI 파일을 재생하려면 다음 방법을 사용할 수 있습니다.

1) Windows Media Player 사용

  • simple_melody.mid 파일을 더블 클릭하면 기본 미디어 플레이어에서 재생됩니다.

2) Python에서 직접 MIDI 재생

pygame을 사용하면 Python 코드에서 MIDI를 바로 재생할 수 있습니다.

설치

pip install pygame

MIDI 파일 재생 코드

import pygame

midi_file = "simple_melody.mid"

# 초기화 및 MIDI 재생
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(midi_file)
pygame.mixer.music.play()

# MIDI가 끝날 때까지 대기
while pygame.mixer.music.get_busy():
    pygame.time.Clock().tick(10)

pygame.quit()

4. 다양한 악기 추가하기

여러 악기를 추가하여 멜로디를 더욱 풍부하게 만들 수 있습니다.

from music21 import stream, note, instrument, tempo

score = stream.Score()

# 1. 피아노 멜로디
piano_part = stream.Part()
piano_part.insert(0, instrument.Piano())
piano_part.insert(0, tempo.MetronomeMark(number=100))

melody = ['C4', 'E4', 'G4', 'C5', 'G4', 'E4', 'C4']
for pitch in melody:
    piano_part.append(note.Note(pitch, quarterLength=0.5))  # 8분음표

# 2. 바이올린 추가
violin_part = stream.Part()
violin_part.insert(0, instrument.Violin())

harmony = ['G3', 'B3', 'D4', 'G4']
for pitch in harmony:
    violin_part.append(note.Note(pitch, quarterLength=1))  # 4분음표

# 3. 악보에 추가
score.append(piano_part)
score.append(violin_part)

# 4. MIDI 파일 저장
midi_filename = "multi_instrument.mid"
score.write('midi', fp=midi_filename)
print(f"MIDI 파일이 저장되었습니다: {midi_filename}")

위 코드를 실행하면 피아노와 바이올린이 함께 연주하는 MIDI 파일이 생성됩니다.


5. 음악을 코드로 구성하기

다음 예제는 코드 진행을 사용하여 음악을 만드는 방법입니다.

from music21 import stream, chord, instrument

score = stream.Score()
part = stream.Part()
part.insert(0, instrument.Guitar())  # 기타 설정

# 코드 진행 (C - G - Am - F)
chords = [
    chord.Chord(["C4", "E4", "G4"]),
    chord.Chord(["G3", "B3", "D4"]),
    chord.Chord(["A3", "C4", "E4"]),
    chord.Chord(["F3", "A3", "C4"])
]

for c in chords:
    c.quarterLength = 2  # 코드 길이 (2 박자)
    part.append(c)

score.append(part)
score.write('midi', fp="chord_progression.mid")
print("코드 진행 MIDI 파일이 생성되었습니다!")

6. 결론

이제 Windows에서 music21을 사용하여 음악을 만들고, MIDI 파일로 저장하고, 직접 재생하는 방법을 배웠습니다.
이제 더 복잡한 멜로디와 악기를 추가하여 나만의 음악을 만들어 보세요!

Leave a Reply

Your email address will not be published. Required fields are marked *