201-01. Re-Sequencing, 순차적 방식을 통한 변주곡 만들기
이 글은 AudiKineic의 교육자료를 참고해서 작성했다.
01. Re-Sequencing, 순차적 방식을 통한 변주곡 만들기.
게임은 플레이되는 상황에 맞는 음악을 필요로 한다.
플레이되는 상황은 플레이어의 행동에 직접적인 영향을 받게 됨으로,
게임 음악은 플레이되는 상황에 맞추어 유동적으로 변화할 수 있어야 한다.
게임의 분위기에 큰 영향을 끼치는 트리거가 존재할수도있지만,
트리거와 트리거 사이의 빈 여백을 단순히 음악을 루프 시킴으로써 채워 넣는다면
음악은 금방 파악되고 지겨워질것이다.
이를 해결하기 위해 Wwise Interactive Music Hierarchy를 사용하여 다양한 세그먼트를 리 시퀀싱 하여 음악의
예측 가능성을 최소화 해야한다.
이러한 방법을 순차적방식(Sequential approach)으로 구성된 상호작용 음악(Interactive music)이라고 부른다.
에셋 가져오기.
음악을 Wwise프로젝트에 가져오는것이 첫 번째 단계이다.
효과음과 유사한 방식으로 음악을 가져오지만,
Actor-Mixer Hierarchy에 에셋을 가져오는 것이 아니라 음악 통합에 필요한 기능이 있는
Interactive Music Hierarchy에 에셋을 가져와야 한다.
Interactive Music Hierarchy를 선택 - 새로운 Work Unit 생성
위 과정을 통해 새로운 Work Unit을 생성한다.
Default Work Unit을 사용해도 되지만 다른 계층에서 만들게 될 다른 Music Work Unit과 일관되도록 하기 위함이다.
Sound SFX에 Audio File을 Import하는 것과 같은 방식으로 음악을 Import 할 수 있다.
이때, Audio File Importer 창의 Object Type/Action열을 보면
Object Type이 Music Segment로 자동 설정되어 있을 것이다.
Music Segment
이것은 박자표나 템포와 같은 음악적 속성을 제공한다.
이러한 속성들은 Wwise가 오디오 파일의 마디와 박자같은 정보를 이해할 수 있게 해 준다.
Wwise가 오디오 파일의 마디와 박자같은 정보를 이해해야 하는 이유는
그렇게 해야만 Wwise가 음악의 여러 섹션을 부드럽게 transition(전환) 할 수 있기 때문이다.
Sound SFX와 Music Segment의 차이점
오브젝트와 오디오파일이 연결되어있다는 점에서 비슷하다.
하지만 Music Segment의 경우 오브젝트와 오디오 파일 사이에 개념적 층이 하나 더 존재한다.
이 층을 Music Track이라고 부른다.
또한 Music Segment는 여러개의 Music Track을 가질 수 있다.
타임라인에서 파형 보기.
Designer 레이아웃에서 낯선 것은 가져온 오디오를 파형으로 볼 수 있는 타임라인이 없다는 것이다.
Wwise는 음악 작업을 위한 레이아웃을 제공하고 있다.
메뉴바 - Layouts - Interactive Music (단축키 F10)
위 과정을 거쳐 Interactive Music Layout을 열수 있다.
화면의 하단부에 Muisc Segment Editor가 생기는데
DAW와 비슷한 외형을 가지고 있다.
타이밍 격자선 정의하기.
기본적으로 Music Segment Editor의 타임라인은 시간 값으로 표시되어있다.
하지만 음악의 경우 마디와 박자로 시간을 확인하는 것이 더 직관적이다.
타임라인 우클릭 - Bar and Beats 선택
위 과정을 거쳐 타임라인을 마디와 박자를 기준으로 맞출 수 있다.
하지만 여전히 오디오 파형과 그리드가 일치하지 않는다.
이는 오디오 파형의 BPM과 Wwise에 설정된 BPM이 다르기 때문에 생기는 현상이다.
Wwise에서 템포는 오디오 파일이나 Music Track수준에서 정의되지 않는다.
Muisc Segment 레벨이나 그 이상 계층의 오브젝트에서 정의된다.
Music Segment Property Editor - Time Settings 그룹
에서 템포와 박자를 설정할 수 있다.
보다 효율적인 작업을 위해
오디오 파일명에 bpm과 박자, 길이, 못갖춘마디의 길이를 포함시키는 것이 좋다.
Explore-Arpeggio_138bpm4-4_L16M-P1M
이라는 오디오 이름의 뜻은
Explore에 사용되는 음악이며 (용도)
Arpeggio이다. (송폼)
138 bpm이며 (bpm)
4/4박자이다. (박자)
총 16마디이며 (길이)
1마디의 못갖춘마디를 추가로 가지고 있다. (못갖춘마디의 길이)
위 양식을 지켜 오디오 파일의 이름을 정한다면
오디오 파일의 이름만으로 많은 정보를 전달할 수 있다.
Entry Cue와 Exit Cue 위치 지정하기.
순차적 방식으로 곡에 랜덤 성을 증가시키려면
곡을 일정 단위로 쪼개고 각 단위가 재생되는 순서를 변화시켜야 한다.
이를 위해선 각 단위가 어느 순서로 재생되어도 자연스럽게 이어져야 한다.
단위를 자연스럽게 이어지게 하기 위해 작곡가는
단위가 시작되기 이전에 못 갖춘마디를 추가하며, 단위가 끝나고 남는 Decay를 포함시켜야 한다.
이렇게 만들어진 오디오 파일에서 각 단위를 Wwise가 정확히 인식하도록 설정해야 한다.
이를 위해 Entry Cue와 Exit Cue의 위치를 지정해야 한다.
Music Segment Editor - Ctrl+클릭하여 각각의 Cue를 알맞은 위치로 이동
위 방식으로 Wwise가 단위의 시작과 끝을 정확히 인식하도록 만들 수 있다.
Music Segment Editor의 좌상단에서 Bars/Beats 버튼을 클릭하여 큐의 위치를 그리드의 격자선에 맞춰 이동시킬 수도 있다.
Music Playlist Container 사용하기.
Music Playlist Container는 각 단위를 특정한 규칙에 따라 재생하도록 하는데 필요한 오브젝트이다.
이를 위해선 Music Playlis Container 하위에 Music Segment가 포함되어야 한다.
Music Playlist Container를 생성 - 컨테이너 안에 Music Segment를 드래그&드롭 - 용도에 맞게 컨테이너의 이름 설정
위 과정을 통해 Music Playlist Container를 생성하고,
Container 하위에 Music Segment를 포함시킬 수 있다.
템포와 박자표의 상속 성질 이해하기.
Music Playlist Container에서 중요하게 고려해야 할 점은
Music Playlist Container에도 템포와 박자 속성을 가진다는 것이다.
Music Playlist Container Property Editor - General Settings - Time Settings 그룹
에서 Music Playlist Container의 템포, 박자 속성을 변경할수있다.
이렇게 설정하면 Music Playlist Container에 포함된 모든 Music Segment의 템포,박자 속성이 변경된다.
Music Segment가 Music Playlist Container에 포함되어 있지만 Music Playlist Container의 속성을 따라가지 않게 하려면
Music Segment의 Time Settings그룹 - Override parent 체크
위 과정을 거쳐 각각의 Music Segment가 개별적인 템포,박자 속성을 가질 수 있게 된다.
음악 재생 목록 구성하기.
위의 준비 과정을 모두 완료하면
Music Segment를 어떤 순서로 재생할지 정의하는 재생목록을 제작할 준비가 완료된 것이다.
Wwise에서는 Music Playlist Container안에 하나 이상의 Group이 존재한다.
Group은 재생 목록 안에 존재하는 재생목록이라 할 수 있다.
예를 들면,
1번 그룹에서 하나의 음악을 랜덤 하게 선택하여 재생하고
이어서 2번 그룹에서 하나의 음악을 랜덤 하게 선택하여 재생하고
다시 1번 그룹에서 하나의 음악을 랜덤 하게 선태하여 재생하고
이어서...
위 예시처럼 Group을 활용할 수 있는 것이다.
Music Playlist Container의 Group에 Music Segment를 포함시키는 방법은 다음과 같다.
Music Playlist Container 선택 - 각 Group에 원하는 Music Segment 드래그&드롭
Sequence Continuous.
Sequence Continuois는 해당 Group에 포함된 Music Segment가 열거된 순서대로 재생된다
Loop Count
Loop Count를 설정함으로써 Group 혹은 Music Segment의 재생 회수를 설정할 수 있다.
0 대신 Infinite가 있으며 이 경우 무제한 반복 재생될 수 있다.
단, 이렇게 설정할 경우 음악이 계속 똑같은 순서로 반복되기 때문에 지루해질 수도 있다.
Random Continuous.
Random Countinuous는 playlist에 포함된 Music Segment가 랜덤 하게 재생된다.
하지만, 이 경우 각 단위 중 곡의 도입부를 담당하는 Music Segment가 가장 먼저 재생되지 않을 수가 있다.
또한 자주 반복되면 이상한 단위가 너무 자주 재생되는 경우가 생길 수도 있다.
Weight
이 값은 가중치이며, 랜덤 하게 재생했을 때 각각의 Music Segment가 선택될 확률을 의미한다.
Avoid Repeat
이 값은 각 Music Segment가 가중치에 상관없이 연속적으로 재생되지 않도록 해준다.
즉, Avoid Repeat 값이 1이라면-
A가 재생되고 최소 한 번은 다른 Music Segment가 재생되는 것이다.
다중 그룹 재생 목록 구성하기.
하나의 그룹을 사용하는 단순한 재생목록이 아니라,
더 많은 그룹을 사용하면 더욱 복잡한 구조를 가진 재생목록을 만들어낼 수 있다.
이 방법을 활용하여 확률에 의존하지 않고
항상 곡의 도입부를 재생하고 나머지 Music Segment를 무작위로 재생할 수도 있다.
재생 목록에 새로운 Group 추가하기.
Music Playlist Editor - New Group 클릭
위 과정을 통하여 새로운 그룹을 생성할 수 있다.
Loop Count 무작위화 설정하기
Loop Count 역시 무작위로 설정할 수 있다.
Loop Count의 Randomizer 버튼 더블클릭 - 값을 설정
위 과정을 통해 Loop Count도 랜덤 하게 변경할 수 있다.
이를 응용하면
곡의 도입부 재생 - 각 단위를 ?번 재생 - 곡의 도입부 재생 - 각 단위를 ?번 재생...
하도록 설정할 수도 있다.
심화된 Group 중첩 기법
Group 안에 Group을 포함시킬 수 있다.
이렇게 하면,
1. 곡의 도입부 재생
1-1. Music Segment 랜덤 선택 재생
1-2-1. Bridge에 해당하는 MusicSegment재생
1-2-2. 전환 효과가 추가된 Bridge재생
이런 식으로 설정할 수 있다.