AI 작곡 3년차, 결국 만든 건 곡이 아니라 검사기였음;;
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가 뭘 만들어주는 것보다, 만들어준 게 맞는지 확인하는 게 훨씬 오래 걸린다
그 확인을 손으로 하다가 코드로 넘겼고, 코드로 넘긴 걸 남들도 쓸 수 있게 만들었다
곡을 만들려다 검사기를 만든 셈인데, 지금 와서 보면 이게 더 나한테 맞는 일이긴 하다;;
댓글
첫 댓글을 남겨 보세요.