SEIREN 블로그

AI 작곡 3년차, 결국 만든 건 곡이 아니라 검사기였음;;

AI작곡 AI음악 음원심사 미디작곡 라우드니스 마스터링 음원유통 파이썬미디 홈레코딩 작곡프로그램

1편에서 작곡 프로그램을 못 다뤄서 파이썬으로 우회한 얘기를, 2편에서 그 우회가 어디까지 갔는지를 썻다

이번 편은 그래서 결국 뭘 만들게 됐는지다

AI 작곡을 시작했을 때 나는 곡을 만들고 싶었다. 지금은 음원 심사하는 서비스를 만들고 있음;; 이럴 생각 진짜 없었는데

만드는 건 금방인데

파이썬으로 미디를 만들면 몇 초면 나온다. 코드 진행 넣고 돌리면 .mid 파일이 악기별로 떨어진다

문제는 그다음이었다

들어보면 뭔가 어색한데 뭐가 어색한지를 몰랏다

그래서 피아노롤을 열어봤다

피아노롤에 실제 노트와 벨로시티

열어보니까 화음이 이상하게 쌓여있었다. 코드 톤이 동시에 울려야 하는데 제멋대로 배치돼 있는 거

그때 캡처 떠서 물어본 게 아직 남아있는데 내가 이렇게 썻더라

이렇게 다 화음이 순서가 안겹쳐있어

"이렇게 다 화음이 순서가 안겹쳐있어"

"얘는 더 가관인데?"

지금 보니까 좀 웃김 ㅋㅋ 근데 그때는 진지했다

원인은 라이브러리가 코드를 넣을 때 음마다 미세한 시간차를 두고 배열하는 거였다. 0.1~0.2박씩 벌어져서 아르페지오처럼 들린 것

그래서 매번 눈으로 봤다

이게 문제의 시작이었음

곡을 만들 때마다 이걸 다 봤다

확인할 것 뭘 보는가
화음이 제대로 쌓였나 코드 톤이 동시에 울리는지
보컬이 코드를 벗어나지 않나 그 시점 코드의 구성음인지
저음이 뭉치지 않나 베이스와 킥이 같은 대역에서 부딪히는지
볼륨이 튀지 않나 구간마다 세기가 널뛰는지

한두 번은 괜찮다. 근데 곡이 늘어나니까 이게 매번이었음

그리고 눈으로 보는 건 놓친다. 마디 60개짜리를 하나씩 보다보면 뒤로 갈수록 대충 보게 된다. 나는 특히 그렇다

나는 원래 이렇게 안 고친다

이것도 짚고 가야 함

집중해서 끝까지 보자, 표를 만들어서 체크하자, 두 번 보자. 다 해봤고 다 며칠 갔다. 컨디션 좋은 날만 되는 방법은 방법이 아니더라

그래서 이번에도 같은 걸 했다. 나를 고치는 대신 내가 판단할 자리를 없애는 것

검수를 코드로 넘겼다

보컬 미디를 열어서, 각 노트가 그 시점에 울리는 코드의 구성음인지 자동으로 대조하는 스크립트를 짰다

먼저 섹션별로 어떤 코드가 깔리는지를 적어둔다

SECTION_CHORDS = {
    'Intro':   [('A',1), ('Esus2',1), ('F#m',1), ('D',1)] * 2,
    'Verse1':  [('A',1), ('E',1), ('F#m',1), ('D',1),
                ('A',1), ('E',1), ('F#m',1), ('D',1), ...],
    'Chorus1': [('D',1), ('E',1), ('A',1), ('F#m',1), ...],
}

그리고 코드마다 구성음을 숫자로 둔다

CHORD_TONES = {
    'A': {9, 1, 4},   # A C# E
    ...
}

이제 보컬 노트를 하나씩 꺼내서, 그 노트가 시작하는 비트에 깔린 코드를 찾고, 구성음에 들어 있는지 본다

돌리면 몇 번 마디 몇 번 노트가 코드에서 벗어났는지 목록으로 나온다. 눈으로 30분 볼 걸 몇 초에 끝냄

이때 좀 허무햇다. 이걸 왜 진작 안 했지 싶어서;;

근데 생각해보면 진작 못 했다. 처음엔 뭘 검사해야 하는지를 몰랏으니까. 화음이 이상하다는 것도 몇 곡 만들고 나서야 알앗고, 저음이 뭉친다는 것도 스피커 바꾸고 알앗다

뭘 확인해야 하는지 아는 것 자체가 시간이 걸린다. 그걸 모르면 자동화할 것도 없음

근데 이게 곡마다 필요했다

한 번 만들면 끝일 줄 알았는데 아니었다

저음이 뭉치는 것도 봐야 했고, 볼륨이 튀는 것도 봐야 했고, 트랙끼리 겹치는 것도 봐야 했다

그러다 스크립트가 스무 개쯤 됐다

analyze_vocal_chords.py    보컬이 코드에서 벗어나는지
fix_vocal_chords.py        벗어난 걸 고치기
fix_lowend.py              베이스와 킥 충돌
fix_lowend2.py             "저음 충돌 진짜 해결"   ← 한 번에 안 됐다
fix_dynamics.py            완급 조절
mix_vocal_pro.py           보컬 믹싱
swap_instruments.py        808 → 909 교체

fix_lowend 다음에 fix_lowend2 가 있는 게 보일 텐데, 주석에 "진짜 해결"이라고 써놨더라 ㅜㅜ

남들도 같은 데서 막혀 있었다

이게 결정적이었다

음원을 내려는 사람들이 다 같은 자리에서 막힌다. 소리가 작다고 반려당하거나, 클리핑이 났는데 모르고 올렸거나, 기준이 뭔지 몰라서 감으로 냈다가 다시 하거나

기준을 아무도 안 알려준다는 게 제일 컸다. 심사에서 떨어져도 왜 떨어졌는지를 안 알려주니까 다음에도 똑같이 낸다

이게 진짜 이상한 거다. 라우드니스가 몇이어야 하는지, 클리핑이 몇 개까지 괜찮은지는 재면 나오는 숫자다. 근데 그걸 안 알려주고 "반려"만 통보한다

AI 작곡으로 곡을 만드는 사람이 늘어나는데, 만드는 도구만 늘고 맞는지 봐주는 건 그대로였다

그래서 제품이 됐다

내가 만든 건 내 곡을 보려고 만든 거였는데, 그게 남들 곡도 볼 수 있는 거였다

요금제 - 음원 심사는 무료

올리면 라우드니스·클리핑·다이내믹 레인지를 재서 측정값이랑 목표값을 같이 준다. 기발매곡이랑 대조한 결과도 같이 주고

심사는 무료다. 돈은 유통에만 붙는다. 그렇게 정한 이유가 있는데, 내가 제일 아쉬웠던 게 떨어진 이유를 모르는 것이었지 심사 자체가 아니었거든

정리하면

AI 작곡을 시작할 때 나는 곡을 만들고 싶었다

근데 실제로 시간을 제일 많이 쓴 건 나온 결과를 의심하는 일이었다. AI가 뭘 만들어주는 것보다, 만들어준 게 맞는지 확인하는 게 훨씬 오래 걸린다

그 확인을 손으로 하다가 코드로 넘겼고, 코드로 넘긴 걸 남들도 쓸 수 있게 만들었다

곡을 만들려다 검사기를 만든 셈인데, 지금 와서 보면 이게 더 나한테 맞는 일이긴 하다;;

X페이스북

댓글

    로그인 없이 쓸 수 있어요. 이메일도 받지 않습니다.