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}")
실행 방법
- 위 코드를
melody.py
로 저장합니다. - 명령 프롬프트에서 해당 파일이 있는 디렉터리로 이동 후 실행:
python melody.py
- 실행 후
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 파일로 저장하고, 직접 재생하는 방법을 배웠습니다.
이제 더 복잡한 멜로디와 악기를 추가하여 나만의 음악을 만들어 보세요!