2024년 2월 12일 월요일

python mido 쓰기

파이썬 mido가 midi 파일을 다뤄주고 신디사이저 어쩌고 뭐그런거랜다.

음악하고 거리가 먼사람이라서 학교종이 땡땡땡 이나 만들어봤다..

ㅋㅋㅋㅋ

import mido

#
class gbb:
    def __init__(self, gname, duration):
        self._gname = gname
        self._duration = duration

# 음계 정보
gae_name = ['도','레','미','파','솔','라','시','도R']
gae_name_level = [48, 50 ,52, 53, 55, 57, 59, 60]

mynotes = [gbb('솔',1),gbb('솔',1),gbb('라',1),gbb('라',1),gbb('솔',1),
gbb('솔',1),gbb('미',2),gbb('솔',1),gbb('솔',1),gbb('미',1),
gbb('미',1),gbb('레',2),gbb('솔',1),gbb('솔',1),gbb('라',1),
gbb('라',1),gbb('솔',1),gbb('솔',1),gbb('미',2),gbb('솔',1),
gbb('미',1),gbb('레',1),gbb('미',1),gbb('도',2)]

#
filename = 'input.mid'

#
mid = mido.MidiFile()
track = mido.MidiTrack()
mid.tracks.append(track)

#
for vo in mynotes:
    note = gae_name_level[gae_name.index(vo._gname)]
    velocity = 100 #볼륨
    duration = 0.5 #길이
    note_on = mido.Message('note_on', note=note, velocity=velocity, time=0)
    note_off = mido.Message('note_off', note=note, velocity=0, time=int(vo._duration*500))
    track.append(note_on)
    track.append(note_off)

# 미디 파일 저장
mid.save(filename)


신디사이저의 계이름이  다음 그림과 관련이 있단다..



뭐.. 그렇다네.. -_-;


댓글 없음:

댓글 쓰기