혼자한다.
아니다. 지피티와 함께 한다.
파이썬으로 음원 만들기
만들수 있지만, 써먹기는 어렵다.!!!
해피송을 만들어 달라고 지피티한테 요청했지만, 그냥 어이없는 음원이 만들어졌다.
고생은 엄청했는데, 결과물은 대실망
하지만, 이 과정에서
미디파일 > 웨이브 > MP3 로 전환하는 과정에서 필요한 작업들을 했다.
from midiutil import MIDIFile
import subprocess
def create_happy_midi(filename):
midi = MIDIFile(1) # 하나의 트랙
track = 0
time = 0 # 시작 시간
midi.addTrackName(track, time, "Happy Track")
midi.addTempo(track, time, 180) # 템포를 더 빠르게: 분당 180박
# 메이저 스케일 노트를 사용, 하지만 리듬과 순서를 다양하게 조정
notes = [60, 62, 64, 65, 67, 69, 71, 72] # C 메이저 스케일 노트 + 하이 C
durations = [1, 0.5, 0.5, 1, 1, 0.5, 0.5, 1] # 노트 지속 시간을 다양하게
start_times = [0, 1, 1.5, 2, 3, 4, 4.5, 5] # 시작 시간 설정
for i, (note, duration, start_time) in enumerate(zip(notes, durations, start_times)):
midi.addNote(track, 0, note, start_time, duration, 100)
# 파일로 저장
with open(filename, "wb") as output_file:
midi.writeFile(output_file)
def convert_midi_to_mp3(midi_file, soundfont_path, output_mp3, fluidsynth_path, ffmpeg_path):
temp_wav = "temp_output.wav"
try:
# MIDI를 WAV로 변환
fluidsynth_command = [fluidsynth_path, '-F', temp_wav, soundfont_path, midi_file]
subprocess.run(fluidsynth_command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# WAV를 MP3로 변환
ffmpeg_command = [ffmpeg_path, '-i', temp_wav, output_mp3]
subprocess.run(ffmpeg_command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except subprocess.CalledProcessError as e:
print(f"명령 실행 중 오류 발생: {e}")
if e.stderr:
print(f"오류 출력: {e.stderr.decode()}")
finally:
# 임시 WAV 파일 삭제
subprocess.run(['del', temp_wav], shell=True) # Windows에서 파일 삭제 명령은 'del'
# 실행 파일 경로 설정
fluidsynth_path = "C:/Users/admin/Downloads/fluidsynth-2.3.4-win10-x64/bin/fluidsynth.exe" # fluidsynth 실행 파일의 실제 경로로 수정
ffmpeg_path = "C:/Users/admin/Downloads/ffmpeg-6.1.1-essentials_build/ffmpeg-6.1.1-essentials_build/bin/ffmpeg.exe" # ffmpeg 실행 파일의 실제 경로로 수정
# MIDI 파일 생성 및 MP3 변환 실행
midi_filename = "happy_melody.mid"
create_midi(midi_filename)
soundfont_path = "C:/Users/admin/Downloads/GeneralUser_GS_1.471/GeneralUser_GS_1.471/GeneralUser_sf.sf2"
output_mp3 = "C:/users/admin/happy_melody.v2.mp3"
convert_midi_to_mp3(midi_filename, soundfont_path, output_mp3, fluidsynth_path, ffmpeg_path)
'python' 카테고리의 다른 글
[혼자하는 파이썬] 구글 뉴스 검색...키워드 입력&기간 조정 (1) | 2024.04.21 |
---|---|
[혼자하는 파이썬] 파이썬으로 무료 쇼츠 만들기 (1) | 2024.03.29 |
[혼자하는 파이썬] 파이썬으로 네이버 뉴스 검색 마스터: 검색어와 기간 설정하기 (0) | 2024.03.08 |
[혼자하는 파이썬] 중기부 보도자료 파일 다운로드 크롤링 (0) | 2024.03.07 |
[혼자하는 파이썬] 금융감독원 보도자료 목록 크롤링 (0) | 2024.03.06 |