파이썬으로 음악 관련 프로그램을 공부해 보고 있다. 그중 하나로 메트로놈 제작을 스터디해 보았다. 메트로놈은 모두 알고 있듯이, 악기를 연주할 때 박자를 맞추는데 도움을 주는 기계이다. 일정한 리듬을 생성하여 연주자가 그 리즘에 맞춰 연주할 수 있도록 도와준다. 피아노 학원에서 많이 만날 수 있는 친구이다.
이러한 메트로놈을 파이썬으로 구현하는 방법을 알아보자.
* ChatGPT 이용 파이썬을 이용한 메트로놈
일단 chatGPT를 통해서 간단히 구현 코드를 받아 실행시켜 보았다. 자세히 물어볼 수록 원하는 정답을 더 잘 얻을 수 있다.
생각보다 잘 작동하는 것을 알수 있었다. 컴퓨터로 주파수를 발생시켜서 소리로 출력할 수 있도록 도와준다.
* 메트로놈 실행 파이썬 코드
import time
import winsound
def metronome(bpm, beats):
interval = 60 / bpm # 박자 간 시간 간격 계산
for _ in range(beats):
winsound.Beep(440, 100) # 클릭 소리 발생 (440 Hz, 0.1초)
time.sleep(interval - 0.1) # 박자 간 시간 간격 대기
print("메트로놈 종료")
# 테스트
bpm = 120 # 분당 박자 수
beats = 16 # 박자 수
metronome(bpm, beats)
소리가 조금 거슬리긴 하지만 잘 동작한다. 너무나 간단한 코드라서 음악 관련 라이브러리의 동작을 쉽게 이해할 수 있어서 좋았다. 하지만 비트를 바꿀 때마다 값을 일일이 코드에서 바꿔서 다시 실행해야 하는 것은 여간 불편한 일이 아니다.
* GUI가 포함된 메트로놈
인터넷 검색을 통해서 GUI로 구현된 메트로놈 코드를 확인할 수 있었다.
비프음으로 : https://github.com/Kwisses/Metronome/blob/master/main.py
실행시키면 tkinter를 이용하여 GUI를 구성해서 BPM 등을 수정할 수 있도록 만들어져 있다. 속도와 박자를 수정할 수 있어서 편리했다.
지금까지 컴퓨터의 비프음을 통해서 메트로놈을 실행시키는 코드들에 대해서 알아보았다. 소리를 내주는 모듈에 주파수를 할당하고 분당 박자 속도를 설정하면 손쉽게 메트로놈을 구현할 수 있었다.
하지만 컴퓨터의 비프음은 기계적인 소리라서 조금 거슬린다. 이럴 경우에 직접 녹음한 소리를 이용하여 메트로놈을 구현하는 방법도 알아보자.
* wav 파일을 이용한 메트로놈
simpleaudio라는 모듈을 통해서 박자를 녹음한 웨이브 파일(. wav)을 재생(play)시키는 방식으로 구현되어 있다.
wav파일로 : https://medium.com/@jackhuang.wz/building-a-metronome-in-python-c8e16826fe4f
조금 복잡하지만, 순차적으로 상세히 알려줘서 이해하기 좋았다. 앞으로 더 다양한 음악 관련 코드를 스터디해 보고 싶다.
'파이썬' 카테고리의 다른 글
파이썬 파일을 exe파일로 만들기 - pyinstaller (0) | 2024.03.10 |
---|---|
[파이썬] matplotlib 한글 깨짐 해결하기 (0) | 2022.06.20 |
댓글