XYZ ...

기믹패턴의 기초 (1)

본 포스트는 BMSE의 노트배치, 마디길이 변경, 마디 삽입 등 기본적인 조작법의 숙지를 필요로 합니다. 또한 제가 BMSE에 익숙해져있기에 BMSE 기준으로 설명하지만 iBMSC로도 거의 동일한 조작을 할 수 있을 것이라고 생각합니다.

기믹패턴이란?

위 동영상을 보는 것 만으로도 기믹패턴이 무엇인지 충분히 알 수 있을 것이라 생각합니다.


시작하기 전에 기초지식

위의 패턴을 언뜻보면 노트가 거꾸로 올라가거나 사이 간격이 변하는 것 같지만, BMS에서 노트 사이의 간격은 절대로 변하지 않으며, 노트를 아래 외의 방향으로 움직이게 할 수 없습니다. 아래 그림과 같이 아주 길쭉한 종이 위에 노트가 그려져 있고, 이것이 BPM에 비례하는 속도로 아래로 내려가고 있다고 생각하면 편합니다. Music Box


Wave 변속

빨라졌다 느려졌다하는 변속을 Wave 변속이라고 칭하겠습니다.

1/2배속 -> 1.5배속 형태

비교적 부드러운 느낌을 주는 원 bpm의 1/2배속이 각 구간에서 1/4, 1.5배속이 3/4을 차지하고 있는 꼴입니다. 1/4이 1/2의 속도로, 3/4가 3/2의 속도로 가서 (1/4) / (1/2) + (3/4) / (3/2)를 하면 1이 됩니다.

Wave

좌측과 같은 패턴이 우측으로 바뀐 것입니다. 배경키음의 변화도 주목해주세요.

2배속 -> 1/2배속 -> 1배속 형태

2배속이 각 구간의 1/2, 1/2배속이 각 구간의 1/4, 1배속이 각 구간의 1/4을 차지하고 있는 형태의 변속입니다. 배경키음이 있어도 움직임을 계산하기 쉬운 것이 장점입니다.

Wave2

위의 두 형태의 변속을 각 변속의 길이는 유지한채 위치만 바꿔쓰면 다른 효과를 낼 수 있습니다. 예를 들어, 아래의 1번키의 시간 간격은 모두 1/4마디로 동일합니다.

Wave Variation


워프

위의 영상처럼 노트가 갑자기 나타나거나 사라지게 하는 기믹을 ‘워프’라고 하겠습니다. 거의 모든 기믹들은 이 워프를 기반으로 작동합니다. 구현은 생각보다 간단한데, 사라지게 만들고 싶은 구간의 bpm을 아래와 같이 최대한 크게 하면 됩니다.

Warp

간단히 설명하자면, 스크래치 노트를 친 직후에 bpm이 65535(bmse에서 직접 입력할 수 있는 가장 큰 bpm)라는 매우 큰 값으로 바뀌면서 bpm이 120이 되기 전까지 한 순간에 이동하게 되어 순간이동한 것 처럼 보이게 되는 것입니다.

이 때 65535는 충분히 큰 bpm이 아니므로 더욱 큰 값으로 직접 수정해줘야합니다. bms 파일을 텍스트편집기로 열어 65535라는 값을 찾아 #BPMXX 65535를 적절히 큰 값으로 수정해줍니다. 이 때 새로운 값은 원 bpm의 1000배, 10000배와 같은 값이 좋습니다.

#WAVO0 gl16.ogg
#WAVO1 gl17.ogg
#WAVO2 gl18.ogg
#WAVO3 gl19.ogg

#BMP01 bga.mpg

#BPM02 1740000
#BPM03 1740000
#BPM04 1740000
#BPM05 1740000
#BPM06 1740000
#BPM07 1740000
#BPM08 1740000

저장해준뒤 bmse를 다시 실행시켜보면 다음과 같이 되어있습니다.

Warp BPM

이제부터는 저 값을 (ctrl + 드래그)로 끌어서 쓰면 다시 텍스트 편집기로 직접 편집해주는 수고를 덜 수 있습니다.


워프 정지 애니메이션

워프와 정지를 번갈아가면서 쓰면 위와 같은 효과를 낼 수 있습니다.

아래와 같은 원본 패턴을 예로 만들어보겠습니다.

Warp Stop Before

배경 키음에 따라 마디선이 바뀌게 하려고 하므로 간격을 계산해보면 한 칸이 1/16이므로 각 노트는 4/16, 6/16, 4/16만큼 떨어져 있습니다. BMSE에서 stop의 숫자는 1이 1/192을 의미하므로 계산해보면 각각 48, 72, 48이라는 수치만큼 떨어져있다고 볼 수 있습니다. 노트를 모두 bgm쪽으로 옮기고 (우클릭 -> 마디삽입) 기능을 이용해 마디를 많이 삽입해준 뒤, 마디 길이를 조절해 원하는 모양을 만들어줍니다.

Warp Stop Before2

이제 변속을 넣어야 합니다. 워프변속을 넣을 때의 요령으로 매우 큰 변속을(원래 변속의 1000배, 10000배인 것이 계산하기 편합니다) 넣어줍니다. 만약에 아래처럼 원 bpm이 180인 곡에 bpm 180000을 넣었다면 stop도 똑같이 1000배 해준 값을 넣어주면 됩니다. (만약 stop 값이 65535보다 크다면 역시 텍스트 편집기에서 직접 수정해줘야 합니다) 이 경우에는 각각 48000, 72000, 48000이 그 값이 됩니다.

Warp Stop

마지막에 원래 bpm으로 돌아가는 것도 잊지 않고 넣어주어야 합니다.


부록

bpm 65535를 쓰면 왜 안될까?

bpm 65535에서 4/4마디의 실제 시간은 60 * 4 / 65535가 되어 약 0.0037초가 됩니다. 이런 오차는 별 것 아닌것 같지만 이를 100번 쓰게되면 0.3초, 1000번 사용하게 되면 3초라는 엄청난 오차가 생기게 됩니다. 그러므로 적어도 1000000이상의 bpm을 사용하기를 권장합니다.

배경음에 키음이 있어 타이밍이 안맞을 경우

bgm problem

위와 같이 51, 52번 키음에 타이밍을 맞춰 애니메이션을 넣으려고 하는데 1~8번 키음이 사이사이에 들어있어 그대로 할 경우 배경음이 망가지는 경우가 있습니다. 이럴 때는 다음 두 가지 방법 중에서 선택하여 쓰시면 됩니다.

BMX2WAV등을 사용하여 배경 키음을 합치기

key bms

새로운 BMS파일을 만들고 위와 같이 방해가 되는 배경키음들을 모두 #000마디에 새로 배치하여 저장해줍니다. 그 뒤 BMX2WAV를 적절히 사용하여 위 BMS를 wav파일로 만들어주고, 원본 BMS에 새로 생긴 wav파일을 기존 키음대신 넣어주면 됩니다.

같은 프레임을 연달아 재생

key bms2

상당히 번거로운 방법이지만 위와 같이 같은 프레임을 나누어 가만히 있는 것처럼 보이지만 키음이 타이밍 맞게 재생되고 있게 만드는 방법도 있습니다.


쓰다보니 내용이 상당히 길어져서 일단은 여기까지만 적겠습니다. 다음 포스트에는 위의 워프 정지를 이용해서 더 부드러운 애니메이션을 구현하고 여기에 지뢰노트를 넣는 것과, 그 외 팁들을 적어보겠습니다.