안녕하세요
최근엔 마비노기와 마비노기 모바일을 오가는 코더 에취군입니다

이번에 마비노기와 모바일의 작곡 시스템에는 어떤 차이가 있고, 그로 인해 어떤 버그가 발생하는지에 대한 분석이 어느 정도 완료되어 글을 작성하게 되었습니다.

 

우선 기초적인 것부터 알아볼까요


1. MML 시스템의 차이


같은 MML을 채용했지만 상당히 열화된 버전이었던 로스트 아크와는 다르게 마비노기 모바일의 MML 시스템은 마비노기에 가깝지 않을까라는 기대가 있었습니다만...

실제론 전혀 그렇지 않았습니다. 로스트 아크보다 덜 열화된 버전의 MML 시스템을 가져왔는데요.
마비노기에서 개선되고 1/n단위로 박자를 쪼개쓸 수 있는 절대 음표가 들어간 버전이 아닌, 기본적인 버전의 MML 시스템이 들어갔습니다.

그렇기에 잇단음표(12,24,48)를 제외하고 2의 배수로 떨어지지 않는 음표 길이나 N이 들어가면 오류가 발생하며 악보로 등록할 수 없게 됩니다.

이외에는 64분 음표까지 정상적으로 재생이 가능하기때문에 이론 상 마비노기의 코드 최적화가 적용되지 않은 코드면 아무 문제없이 재생이 가능합니다.


2. 어긋난 틱 계산


실제론 틱을 이렇게 계산하진 않지만, 이해를 돕기 위해 조금 다르게 설명하겠습니다.

1마디에 들어가는 틱을 템포와 같다고 가정하겠습니다.
120템포라면 1마디 = 120틱이라고 치는거죠.

 

 


만약 템포가 도중에 바뀌게 된다면 어떻게 될까요?
마비노기에선 코드에 문제가 없다면 자동으로 트랙의 템포를 조절하고 틱도 거기에 맞춰 변경합니다.
하지만 모바일의 MML 시스템은 틱을 이상하게 계산하는데요...

 

 


템포 120으로 시작한 곡을 4마디부터 180으로 변경한다고 가정해봅시다.

 


멜로디 라인은 큰 문제없이 템포에 맞춰 틱이 계산됩니다.
120 - 120 - 120 - 180.. 으로요
다만 화음 1부터 이 계산에 심각한 문제가 발생합니다.
120 - 120 - 120까지는 잘 계산이 됩니다.


그런데 템포 변경 구문이 나타나는 순간, 멜로디의 템포만 변경되고 화음의 템포는 새로운 템포로 갱신이 되지 않는 문제가 발생합니다!

그래서 120틱을 진행했음에도 불구하고 마디가 끝나지 않자 다음 마디로 넘어갔다고 판단되어 아무 내용이 없는 빈 마디를 1회차 더 반복하는 결과가 나타나게 됩니다.
이러면 어떻게 될까요?

 

본래 180틱만큼 진행했어야할 구간을 120틱으로 2번 진행해버렸습니다.

그렇게해서 180 - 120 = 60. 원래 템포인 120보다 1.5배나 차이가 나는 빈 마디가 발생해버렸죠?
이제 어떻게 될까요? 네. 정확히 0.5마디만큼 화음이 밀려버립니다.

 

업로드하고나서 0.25마디를 덜 밀었다는 사실을 깨달습니다... 0.25마디가 더 밀려있다고 생각해주세요

 


단순히 수치로 따지자면 이렇게 됩니다.
정상 틱 : 120 / 120 / 120 / 180
버그 틱 : 120 / 120 / 120 / (120 + 120) / 180

더 쉽게 계산해볼까요?

정상 틱 : 120 / 240 / 360 / 540
버그 틱 : 120 / 240 / 360 / 600(+60)

이와 반대의 경우도 성립합니다.

앞의 템포보다 뒤의 템포가 더 빠르면 그 차이만큼 더 빠르게 연주가 되죠.
이 문제를 회피하기 위해서는 중간에 템포를 변경하면 안됩니다. 변박곡이라면 해당 템포에 맞춰 음의 길이를 모두 수정해야하죠.

 

 


3. 동시발음 제한

 


Polyphony, 동시발음은 동시에 몇개까지의 음을 출력할 수 있는가를 의미하는 시스템입니다.
일단은 MML도 가상의 악기이기때문에 동시에 출력 가능한 음에 제한이 있습니다. 이런 제한이 없다면 소리가 다 섞여서 이상하게 출력될테니까요.

 

 

음표 1개가 반드시 1개의 동시발음을 차지한다는 법은 없습니다.

위 이미지에 나오는 것처럼 말이죠.

그렇다면 동시발음은 어떻게 계산하는걸까요?
이건 미디의 ADSR 개념을 이해해야합니다.
자세한 설명은 리세드리카님께서 운영 중이신 마비노기 MML 연구소의 ADSR을 참고해주세요.

마비노기의 동시발음은 192-256 사이로 추정되는지라 어지간히 트랙을 심하게 겹치지 않으면 동시발음의 한계치를 초과하는 일은 거의 없습니다만...

마비노기 모바일의 경우, 여러 실험을 거쳐 알아낸 값이 1인당 동시발음 15라는 애매한 값이었습니다.
16을 초과하는 순간 얄짤없이 화음 중 하나가 랜덤하게 실종되죠.

다만 이걸 넘길 수 있는 방법도 있는데요. 합주입니다.

 

합주 시 참가자들이 곡에 있는 화음을 각자 나눠서 연주하게 되는데요.

이 경우 연주 인원 수마다 동시 발음이 별도로 적용됩니다.


즉, 끊기지 않는 좋은 MML을 만드려면 연주를 계속 반복하고 동시발음 한계치를 꼼꼼하게 체크하면서 15 x 연주 인원 수가 넘지 않도록 주의해야겠죠. 그래서 어지간한 독주곡은 2화음 이내로 만드는게 좋습니다.


4. 특정 화음의 지나치게 긴 릴리즈로 인한 동시발음 감소 (검증 중)

 

 

'마비노기 > ' 카테고리의 다른 글

손쉬운 디바인 링크 - 부활의 권능 수련법  (0) 2023.02.13
Posted by Edgestorm
: