SONiVOX JETCreator 사용자 매뉴얼

JET 양방향 음악 엔진용 콘텐츠 제작 애플리케이션

1 서문

1.1 개요

이 문서에는 JET 파일을 만들고 오디션하는 제작 애플리케이션인 SONiVOX JET Creator의 사용자 가이드라인이 포함되어 있습니다. JET는 Android 플랫폼을 실행하는 기기를 포함하여 소형 내장형 기기용 대화형 음악 플레이어입니다. 이를 통해 애플리케이션은 게임플레이 이벤트 및 사용자 상호작용에 실시간으로 응답하는 대화형 음악 사운드트랙을 MIDI 형식으로 포함할 수 있습니다.

JET는 Android용 MIDI 재생 기기인 SONiVOX의 삽입된 오디오 신시사이저 (EAS)와 함께 작동합니다. JET 및 EAS 엔진은 모두 JetPlayer 클래스를 통해 Android 삽입 플랫폼에 통합될 뿐 아니라 JET Creator 애플리케이션에 내재되어 있습니다. 따라서 JET 콘텐츠 제작자는 JET Creator와 Android 휴대기기에서 재생되는 최종 Android 애플리케이션에서 모두 재생이 정확히 동일하게 들리도록 할 수 있습니다.

그래픽 사용자 인터페이스 외에도 JET Creator에는 두 가지 주요 기능이 있습니다. 첫 번째는 모든 소스 데이터 (MIDI 파일 및 DLS 파일)를 수집하고, JET의 실시간 속성을 추가하고, Android 애플리케이션에서 사용할 JET(.jet) 파일을 빌드하는 것입니다. 두 번째 기능에는 양방향 재생 요소가 Android 애플리케이션에서 발생할 때 오디션하는 것이 포함됩니다.

JET Creator 애플리케이션은 Python 프로그래밍 언어로 작성되므로 최신 버전의 Python 및 WXWidgets가 설치되어 있어야 합니다. Mac과 Windows 버전이 모두 있습니다.

1.2 약어 및 일반 용어

혼동을 최소화하기 위해 공통 용어를 사용하는 것이 중요합니다. JET는 고유한 방식으로 MIDI를 사용하므로 일반적인 업계 용어로는 충분하지 않을 수도 있습니다. 다음은 이 페이지와 JET Creator 애플리케이션에서 사용되는 용어의 정의입니다.

채널: 특정 MIDI 채널과 연결된 MIDI 데이터. 표준 MIDI는 일반적으로 특정 악기와 연결된 16개 채널의 MIDI 데이터를 허용합니다.

컨트롤러: 채널 번호, 컨트롤러 번호, 컨트롤러 값으로 구성된 MIDI 이벤트. MIDI 사양은 여러 컨트롤러 번호를 볼륨, 표현식, 서스테인 페달 등의 특정 기능과 연결합니다. JET는 또한 오디오 동기화를 제공하기 위해 MIDI 시퀀스에 특수 제어 정보를 삽입하는 수단으로 컨트롤러 이벤트를 사용합니다.

DAW: 디지털 오디오 워크스테이션. Logic, SONAR, Cubase 등의 MIDI 및 오디오 시퀀싱 애플리케이션의 일반적인 용어입니다.

EAS: 삽입된 MIDI 신시사이저. SONiVOX MIDI 신시사이저 엔진의 이름입니다.

JET: Jet 양방향 엔진. SONiVOX JET 양방향 음악 엔진의 이름입니다.

M/B/T: 마디, 비트, 틱

세그먼트: 전체 음악작품의 구성요소인 코러스 또는 구절과 같은 음악 섹션입니다. JET에서 세그먼트는 전체 MIDI 파일일 수도 있고 MIDI 파일의 일부에서 파생된 것일 수도 있습니다.

SMF-0: 표준 MIDI 파일 형식 0. 단일 트랙을 포함하는 MIDI 파일이지만 여러 채널의 MIDI 데이터로 구성될 수 있습니다.

SMF-1: 표준 MIDI 파일 형식 1. 트랙을 하나 더 포함하는 MIDI 파일이며 각 트랙은 결과적으로 하나 이상의 MIDI 데이터 채널로 구성될 수 있습니다. 규칙에 따라 각 채널은 SMF-1 파일의 개별 트랙에 저장됩니다. 그러나 단일 트랙에 여러 MIDI 채널이 있거나 동일한 MIDI 채널의 데이터가 포함된 여러 트랙에 있을 수 있습니다.

트랙: 시간이 정해진 이벤트 시퀀스가 포함된 DAW의 단일 트랙. 트랙과 채널을 혼동하지 않도록 주의하세요. MIDI 파일에는 동일한 MIDI 채널을 사용하는 트랙이 여러 개인 트랙이 여러 개 포함될 수 있습니다.

2 JET 양방향 음악 개념

양방향 음악은 사용자 상호작용이나 게임플레이 이벤트와 같이 예측할 수 없는 이벤트에 따라 실시간으로 변경되는 음악으로 정의할 수 있습니다. 이런 식으로 양방향 음악은 절대 변경되지 않는 사전 구성된 음악작품보다 게임의 에너지와 분위기에 훨씬 더 근접하게 일치시킬 수 있으므로 훨씬 더 많은 참여를 유도합니다. 일부 애플리케이션과 게임에서는 양방향 음악이 게임플레이의 핵심입니다. Guitar Hero는 매우 인기 있는 게임 중 하나입니다. 최종 사용자가 프렛 보드에 내려오는 음표를 성공적으로 캡처하면 음악이 저절로 조정되며 동시에 성공과 실패 점수를 기록합니다. JET는 이러한 유형의 음악 주도 게임도 허용합니다.

양방향 음악을 만들고 제어하는 방법에는 여러 가지가 있으며 JET는 이러한 방법 중 하나입니다. 이 섹션에서는 JET의 기능과 게임 또는 소프트웨어 애플리케이션에서 이 기능을 사용하는 방법을 설명합니다. JET를 사용하여 Android 지원 휴대기기와 같은 소형 풋프린트 기기에서 메모리를 절약하는 방법도 설명합니다.

2.1.1 데이터 압축

JET는 최소한의 데이터로 확장된 음악 시퀀스를 만드는 데 사용할 수 있는 유연한 음악 형식을 지원합니다. 음악 작품은 세그먼트로 나뉘며 이러한 세그먼트는 시퀀싱을 거쳐 더 긴 작품을 만들 수 있습니다. 시퀀싱은 음악 파일이 작성되는 시점에 수정하거나 프로그램을 제어하여 동적으로 만들 수 있습니다.

2.1.2 선형적 음악 예


그림 1: 선형적 음악 작품

이 다이어그램은 음악 세그먼트가 저장되는 방식을 보여줍니다. 각 세그먼트는 별도의 MIDI 파일로 작성됩니다. 후처리 도구는 파일을 단일 컨테이너 파일로 결합합니다. 각 세그먼트에는 음소거 또는 음소거 해제하여 관심을 더 끌 수 있는 대체 음악 트랙이 포함될 수 있습니다. 마지막에만 연주되는 코러스의 금관악센트를 예로 들 수 있습니다. 또한 세그먼트를 위나 아래로 조치할 수 있습니다

다이어그램 하단 부분은 음악 세그먼트를 재결합하여 선형적 음악 작품을 만드는 방법을 보여줍니다. 이 예에서 브리지는 반음 키 변조로 끝날 수 있고 나머지 세그먼트는 반음 위로 조옮김되어 일치시킬 수 있습니다.

2.1.3 비선형적 음악 예


그림 2: 비선형적 음악 작품

이 다이어그램에는 비선형 악보가 있습니다. 시나리오는 1인칭 슈팅 게임 (FPS)이며 JET가 배경 음악을 제공합니다. 레벨이 로드되는 동안 인트로가 재생된 다음 프로그램의 제어 하에 검색 세그먼트로 전환됩니다. 이 세그먼트는 게임 내 활동이 변경을 지시할 때까지 음소거/음소거 해제 기능을 사용하여 약간의 변형으로 무기한 반복됩니다.

플레이어가 괴물 은신처에 가까워지면 프로그램은 위험 세그먼트로 동기화된 전환을 시작하여 오디오의 긴장 수준을 높입니다. 플레이어가 은신처에 가까워질수록 긴장감을 높이기 위해 추가 트랙이 음소거 해제됩니다.

플레이어가 몬스터와 전투를 시작하면 프로그램은 전투 세그먼트로 동기화된 전환을 시작합니다. 이 세그먼트는 전투가 계속되면 무제한으로 반복됩니다. 보너스 히트는 플레이어에게 공격 성공을 알리는 장식 트랙을 일시적으로 음소거 해제합니다. 마찬가지로 플레이어가 특수 대미지를 받았을 때 이를 나타내기 위해 다른 트랙은 일시적으로 음소거 해제됩니다.

전투가 끝나면 음악은 전투의 결과에 따라 승리 또는 패배 세그먼트로 전환됩니다.

2.1.4 음소거/음소거 해제 동기화

JET는 트랙의 음소거 및 음소거 해제를 음악의 이벤트에 동기화할 수도 있습니다. 예를 들어 FPS 게임에서는 보너스 및 데미지와 관련된 음악 이벤트를 실제 게임 이벤트에 최대한 가깝게 배치하는 것이 좋습니다. 그러나 게임 이벤트가 발생하는 순간 단순히 트랙을 음소거 해제하면 음악 클립이 중간에 시작될 수 있습니다. 또는 클립을 처음부터 시작할 수 있지만 그러면 다른 음악 트랙과 동기화되지 않습니다.

그러나 JET 동기화 엔진을 사용하면 적절한 다음 순간에 클립을 시작하고 동기화를 유지할 수 있습니다. 이렇게 하려면 장식용 트랙에 짧은 음악 클립을 여러 개 배치하면 됩니다. 스트림의 MIDI 이벤트는 클립의 시작을 나타내고 두 번째 이벤트는 클립의 끝을 나타냅니다. 애플리케이션이 JET 클립 함수를 호출하면 트랙의 다음 클립이 음악에 완전히 동기화되어 재생할 수 있습니다. 원하는 경우 두 번째 MIDI 이벤트에서 트랙을 자동으로 음소거할 수 있습니다.


그림 3: 동기화된 음소거/음소거 해제

2.2 오디오 동기화

JET는 게임플레이를 오디오의 이벤트에 동기화할 수 있는 오디오 동기화 API를 제공합니다. 이 메커니즘은 콘텐츠가 작성될 때 MIDI 파일에 삽입된 데이터에 의존합니다. JET 엔진은 재생 중에 이벤트를 감지하면 애플리케이션 프로그램에 콜백을 생성합니다. 콜백 타이밍을 조정하여 오디오 재생 시스템의 지연 시간을 보완할 수 있으므로 오디오와 동영상을 동기화할 수 있습니다. 아래의 다이어그램은 음악에 맞춰 왼쪽 및 오른쪽 화살표를 누르는 간단한 음악 게임의 예를 보여줍니다.


그림 4: 음악 게임

화살표는 게임 이벤트를 동기화해야 하는 음악 시퀀스의 이벤트를 나타냅니다. 이 경우 파란색 화살표는 플레이어가 왼쪽 버튼을 눌러야 하는 시간을 나타내고 빨간색 화살표는 오른쪽 버튼입니다. 노란색 화살표는 게임 엔진에 시퀀스가 완료되었음을 알려줍니다. 플레이어는 이벤트 전후에 특정 키를 눌러 적절한 키를 누를 수 있습니다.

이벤트가 수신되고 플레이어가 버튼을 누르지 않으면 타이머가 창의 절반 길이로 설정됩니다. 타이머가 만료되기 전에 플레이어가 버튼을 누르면 게임이 성공으로 등록되고, 그러지 않으면 게임에서 실패를 등록합니다.

이벤트가 수신되기 전에 플레이어가 버튼을 누르면 타이머가 창의 절반 길이로 설정됩니다. 타이머가 만료되기 전에 이벤트가 수신되면 게임이 성공으로 등록하고, 그러지 않으면 게임은 실패를 등록합니다. 게임 플레이에는 실제 이벤트 타이밍에 가까워지면 보너스가 포함될 수도 있습니다.

3 JET 콘텐츠 제작 개요

JET 파일을 작성하고 대화형으로 재생되는 것을 들으려면 콘텐츠 작성자가 원활하게 함께 작동하도록 설계된 두 애플리케이션에서 작업합니다. 첫 번째 애플리케이션은 VST (PC용) 또는 AU (Mac용) 플러그인을 지원하는 기성품 MIDI 시퀀싱 애플리케이션입니다. 여기서 제작자는 플러그인을 신시사이저 기기로 사용하여 MIDI 음악 파일을 작성합니다. 두 번째 애플리케이션은 JET Creator 애플리케이션입니다. 여기서 제작자는 MIDI 음악 파일(및 DLS2 사운드 세트(선택사항))을 가져오고 JET 지원 게임 내에서 양방향 재생 조건을 설정합니다. 선택적으로 콘텐츠 작성자는 DLS 레벨 2 형식을 지원하는 악기 편집기를 사용하여 맞춤 DLS 악기 세트를 만들 수 있습니다. 이러한 애플리케이션 중 하나가 MJSoft의 Awave입니다.

콘텐츠 제작에 관한 자세한 내용은 JET 콘텐츠 제작 가이드라인 문서를 참고하세요.

4. JET Creator 설치 및 실행

JET Creator는 Python 언어 애플리케이션이므로 머신에 Python 및 wxPython이 설치되어 있어야 합니다.

JetCreator는 다음을 사용하여 만들고 테스트했습니다.

Python 버전 2.5.4

wxPython 버전 2.8.7.1

여기에서 다운로드할 수 있습니다.

PC:

  • http://www.python.org/download/releases/2.5.4/
  • http://www.wxpython.org/download.php

MAC:

  • http://wiki.python.org/moin/MacPython/Leopard
  • http://www.wxpython.org/download.php

Python과 wxPython을 설치한 후에 JET Creator 애플리케이션 디렉터리의 모든 파일을 하드 드라이브의 폴더에 압축해제하거나 복사하면 됩니다.

JET Creator를 실행하려면 명령 프롬프트로 이동하여 Python을 설치한 디렉터리를 설정합니다. 다음으로 다음 명령어로 python을 실행합니다.

python jetcreator.py

5 JET Creator 사용

5.1 파일 형식

JET Creator와 관련된 몇 가지 파일 형식이 있습니다.

.jtc JET 생성자 프로젝트 파일입니다. 이 파일에는 JET Creator 프로젝트와 관련된 모든 정보가 포함되어 있습니다. JET Creator에서 저장하거나 다른 이름으로 저장하면 이 파일 형식이 저장됩니다.

.jet JET 파일. 이 출력 파일은 JET Creator 프로젝트를 저장할 때마다 JET Creator에서 자동으로 생성됩니다. 이 파일은 모든 JET 애셋을 Android 애플리케이션에서 사용할 단일 파일로 함께 묶는 파일입니다. 이 파일을 Android 애플리케이션 개발자에게 제공합니다.

.mid 파일. 이는 JET Creator가 세그먼트를 만드는 데 사용할 표준 MIDI 유형 1 파일입니다.

.seg 세그먼트 파일입니다. JET 세그먼트 파일입니다. 참조하는 MIDI 파일과 이름이 같지만 추가 세그먼트 정보를 포함합니다.

.zip Zip 아카이브 파일. JET 보관 파일을 내보내면 JET Creator에 필요한 모든 애셋 (파일)이 포함된 ZIP 파일이 생성됩니다. 이 파일을 사용하여 JET Creator 프로젝트를 다른 사용자에게 전송합니다.

5.2 열기 대화상자

JET Creator를 처음 실행하면 다음과 같은 열린 대화상자가 표시됩니다.

<img <=""Border="0" height="285" p="" src="/static/images/jet/jc_open_dlg.png" width="450" />

열기는 기존 .jtc(JET Creator 파일) 파일을 엽니다. 브라우저 버튼을 사용하여 .jtc 파일을 저장한 디렉터리를 찾습니다.

새로 만들기는 새로운 .jtc 파일을 만듭니다.

가져오기는 JET 보관 파일 (.zip)을 가져옵니다.

취소는 대화상자를 취소하고 애플리케이션을 종료합니다.

5 기본 창

JET Creator 애플리케이션의 기본 창은 아래 그림과 같습니다. 위에서 아래로 세 가지 기본 섹션인 세그먼트 뷰, 이벤트 뷰, 타임라인이 있습니다.

세그먼트 뷰 섹션에는 현재 세그먼트, 각 세그먼트가 파생된 MIDI 파일 및 DLS2 파일(선택사항) 목록이 표시됩니다. 또한 각 세그먼트의 시작 및 중지 시간과 각 세그먼트의 양자화, 조옮김, 반복 및 음소거 플래그 설정도 보여줍니다.

세그먼트 뷰 바로 아래에 이벤트 뷰가 있습니다. 이벤트 뷰 섹션에는 지정된 세그먼트와 연결된 모든 이벤트가 표시됩니다. 이벤트는 할당된 세그먼트가 강조 표시될 때만 표시됩니다. 각 이벤트에는 유형, 시작 및 종료 지점, 트랙 및 MIDI 채널 할당, 이벤트 ID가 표시됩니다.

이벤트 뷰 바로 아래에는 타임라인 디스플레이가 있습니다. 타임라인에는 지정된 세그먼트의 측정 수와 해당 세그먼트와 연결된 이벤트가 표시됩니다. 타임라인이 변경되어 현재 선택되었거나 재생 중인 세그먼트가 표시됩니다. 타임라인 디스플레이에서 이벤트를 클릭하기만 하면 세그먼트가 재생되는 동안 이 창에서 이벤트를 트리거할 수 있습니다.


JET 크리에이터 기본 창

기본 창의 왼쪽에 있는 버튼은 다음을 실행합니다.

추가: 새 세그먼트나 이벤트를 추가하기 위한 세그먼트 또는 이벤트 창을 표시합니다.

수정: 기존 세그먼트나 이벤트를 업데이트하기 위한 세그먼트 창 또는 이벤트 창을 표시합니다.

삭제: 선택한 세그먼트 또는 이벤트를 삭제합니다 (확인 요청 메시지가 표시됨).

이동: 선택한 세그먼트나 이벤트를 제 시간에 이동할 수 있는 이동 창을 표시합니다.

모두 대기열에 추가: 모든 세그먼트를 재생 대기열에 추가(선택)합니다.

모두 대기열에서 제외: 모든 세그먼트를 대기열에서 제외(선택 해제)합니다.

재생: 대기 중인 모든 세그먼트의 재생을 시작합니다. 재생 중인 세그먼트가 있는 경우 이 버튼은 'Stop'으로

오디션: 오디션 창을 표시합니다 (아래 참조).

5.1 세그먼트 창

세그먼트 창에서는 아래 그림과 같이 지정된 세그먼트의 속성이 할당되고 오디션됩니다. 창의 왼쪽에는 JET 파일에 저장된 세그먼트 속성이 표시됩니다. 창 오른쪽에서는 작성자가 음소거 플래그를 설정하고, 설정을 반복 및 조옮기고, JET 게임에서 재생할 세그먼트를 오디션할 수 있습니다.

참고: 오디션 속성 (음소거 플래그, 반복, 조옮김)은 JET 콘텐츠 파일(.jet)에 저장되지 않고 게임이나 애플리케이션 자체에서 정의됩니다. 프로그래밍 언어에서 이러한 설정은 JET 엔진에 대한 API 호출과 직접적으로 일치합니다. JET 콘텐츠 작성자는 여기에 이를 포함하여 게임플레이 중에 세그먼트가 애플리케이션 API 명령어에 응답하는 방식을 시뮬레이션할 수 있습니다.

세그먼트 매개변수는 다음을 실행합니다.

  • 세그먼트 이름 - 세그먼트 이름을
  • MIDI 파일 - 세그먼트가 파생된 MIDI 파일의 이름 및 위치입니다. 바로 오른쪽에 있는 버튼을 누르면 하드 드라이브에서 MIDI 파일을 찾을 수 있는 브라우저가 나타납니다.
  • DLS 파일 - MIDI 파일이 세그먼트에 사용하는 DLS2 파일의 이름과 위치(있는 경우)
  • M/B/T 시작 - 세그먼트의 마디, 비트, 틱 시작
  • M/B/T 종료 - 세그먼트의 마디, 비트, 틱 종료
  • 양자화 - 재생 중에 현재 세그먼트를 양자화하는 양자화 값

오디션 필드는 다음과 같습니다.

  • 트랙 음소거 - MIDI 파일에서 채널이 아닌 MIDI 트랙을 표시합니다. 트랙의 체크박스를 클릭하면 트랙이 음소거됩니다.
  • 채널 - 각 트랙에 할당된 MIDI 채널을 표시합니다.
  • 이름 - 각 트랙의 트랙 이름 메타 이벤트 (있는 경우)를 표시합니다.
  • 반복 - 재생 중에 세그먼트를 반복해야 하는 횟수를 나타냅니다.
  • 조옮김 - 재생 중에 세그먼트가 조옮겨야 하는 반음 조옮김을 나타냅니다.
  • 오디션 창의 오른쪽에는 추가 버튼이 몇 개 있습니다. 이 버튼으로는 다음 작업을 실행합니다.
  • 확인 - 확인을 선택하면 모든 세그먼트 설정을 확인하고 세그먼트 창을 닫습니다.
  • 취소 - 취소를 선택하면 변경사항이 모두 취소되고 세그먼트 창이 닫힙니다.
  • 복제 - 한 번에 여러 세그먼트를 입력하는 복제 세그먼트 창을 표시합니다. 아래를 참고하세요.
  • 세그먼트 재생/중지 - 할당된 세그먼트 속성을 사용하여 세그먼트 재생을 시작하거나 중지합니다.
  • MIDI 파일 재생/중지 - 세그먼트가 할당된 MIDI 파일의 재생을 시작하거나 중지합니다.
  • 일시중지/다시 시작 - 재생을 일시중지하거나 다시 시작합니다.

5.2 이벤트 창

이벤트 창에서는 아래 그림과 같이 지정된 세그먼트의 이벤트 속성이 할당되고 오디션됩니다. 세그먼트에 이벤트를 추가하려면 작성자가 먼저 이벤트가 포함될 세그먼트를 선택한 다음 추가 버튼을 선택해야 합니다. 그러면 이벤트 창이 나타납니다.

이벤트 창에는 두 개의 기본 섹션이 있습니다. 이벤트 창 왼쪽에 있는 세그먼트 섹션은 표시 전용입니다. 주어진 세그먼트의 세그먼트 속성이 무엇인지 표시합니다. 오른쪽의 이벤트 섹션에서는 이벤트를 할당할 수 있습니다. 다음 매개변수를 사용할 수 있습니다.

이벤트 이름 - 이벤트에 이름을 지정합니다.

이벤트 유형 - 할당할 이벤트 유형을 선택합니다.

M/B/T 시작 - 이벤트의 시작 마디, 비트, 틱을 설정합니다.

M/B/T 종료 - 해당하는 경우 이벤트의 종료 마디, 비트, 틱을 설정합니다.

트랙 - 지정된 세그먼트에서 이벤트가 적용될 트랙을 설정합니다.

채널 - 이벤트를 적용할 MIDI 채널을 설정합니다. MIDI 채널은 트랙의 MIDI 채널과 일치해야 합니다.

이벤트 ID - 이벤트의 이벤트 ID를 설정합니다. 여러 이벤트를 동일한 세그먼트에 할당할 수 있으므로 이벤트 ID를 이용해 이벤트를 식별합니다.

오디션 창의 오른쪽에는 추가 버튼이 몇 개 있습니다. 이 버튼으로는 다음 작업을 실행합니다.

확인 - 확인을 선택하면 모든 이벤트 설정을 확인하고 이벤트 창을 닫습니다.

취소 - 취소를 선택하면 변경사항이 모두 취소되고 이벤트 창이 닫힙니다.

복제 - 한 번에 여러 이벤트를 입력하기 위한 복제 이벤트 창을 표시합니다. 아래를 참고하세요.

재생/중지 - 할당된 세그먼트 속성을 사용하여 세그먼트 재생을 시작하거나 중지합니다. 세그먼트가 재생되는 동안 이벤트가 트리거 및 오디션될 수 있습니다.

트리거 - 할당된 이벤트를 트리거합니다. 이는 JET 게임에서 이벤트를 트리거하는 데 사용할 API 명령어를 복제하므로 콘텐츠 작성자에게 이벤트 동작을 오디션하는 메서드를 제공합니다.

음소거/음소거 해제 - 음소거/음소거 해제는 이벤트가 할당된 트랙을 음소거 또는 음소거 해제합니다.

일시중지/다시 시작 - 재생을 일시중지하거나 다시 시작합니다.

이벤트 동작을 오디션하려면 재생 버튼을 선택합니다. 그러면 재생이 시작됩니다. 트리거 버튼을 누르면 트리거 이벤트가 전송됩니다. 이는 타임라인에서 녹색 트리거 이벤트를 선택하는 것과 같습니다.

참고: 트리거 이벤트는 트리거될 때 세그먼트의 단일 트랙을 음소거 해제한 다음 트리거 세그먼트 끝에서 해당 트랙을 음소거하기 위한 것입니다. 따라서 트리거 이벤트를 수신할 때 트리거 이벤트가 음소거 해제할 트랙을 음소거하도록 음소거 플래그를 설정해야 합니다.

트리거 이벤트의 작동 방식에 대한 자세한 내용은 아래의 섹션 6 고급 설정을 참고하세요.

5.3 복제 창

JET 파일을 만들 때는 수십 또는 수백 개의 이벤트를 만들어야 하는 경우가 많습니다. 이벤트를 이동해야 할 수도 있습니다. 복제 및 이동 창에서 이 작업을 수행할 수 있습니다. 여러 세그먼트 또는 이벤트를 만들 수 있는 2개의 복제 창이 있습니다 다음과 같이 표시됩니다.

세그먼트 복제 창

이벤트 복제 창

두 복제 창의 기능은 모두 동일합니다. 초기 세그먼트 또는 이벤트를 만든 후 복제 버튼을 선택할 수 있습니다. 매개변수는 다음과 같습니다.

이름 프리픽스 - 생성된 각 세그먼트 또는 이벤트의 이름에 사용할 프리픽스를 설정합니다.

M/B/T 시작 - 첫 번째 세그먼트 또는 이벤트의 시작 시간을 설정합니다.

M/B/T 증가 - 생성된 세그먼트 또는 이벤트 사이의 시간을 설정합니다.

숫자 - 만들려는 세그먼트 또는 이벤트의 수를 설정합니다. 숫자가 MIDI 파일 (세그먼트의 경우) 또는 세그먼트 (이벤트의 경우)의 길이를 초과하면 객체가 생성되지 않습니다.

미리보기 - 미리보기를 사용하면 OK를 말하기 전에 만들어진 객체를 검사하여 삽입할 수 있습니다.

5.4 이동 창

이동 기능은 한 번에 여러 세그먼트 또는 이벤트를 수정할 수 있다는 점에서 복제 기능과 유사하게 작동합니다. 이 경우 세그먼트나 이벤트를 제시간에 이동할 수 있습니다. 복제와 마찬가지로 이동 창은 두 개가 있으며 하나는 세그먼트용이고 다른 하나는 이벤트용입니다. 창은 다음과 같이 표시됩니다.

이벤트 이동 창

이동을 사용하려면 먼저 제시간에 이동할 세그먼트나 이벤트를 선택한 다음 이동 버튼을 클릭합니다. 매개변수는 다음과 같습니다.

M/B/T 시작 - 첫 번째 세그먼트 또는 이벤트의 시작 시간을 설정합니다.

M/B/T 증가 - 객체를 이동할 M/B/T의 시간을 설정합니다.

미리보기 - 미리보기를 사용하면 OK를 말하기 전에 만들어진 객체를 검사하여 이동할 수 있습니다.

5.5 오디션 창

JET Creator 애플리케이션의 기본 창에서 오디션 버튼을 클릭하면 오디션 창이 열립니다. 여기에서 콘텐츠 제작자 또는 애플리케이션 프로그래머가 모바일 애플리케이션이나 게임 자체에서 발생할 수 있는 양방향 재생을 시뮬레이션할 수 있습니다.

JET 오디션 창

오디션 창에는 네 가지 기본 섹션이 있습니다 가장 왼쪽에 있는 섹션에는 사용 가능한 세그먼트와 길이가 초 단위로 표시됩니다. 가운데 섹션에는 재생 대기열에 있는 세그먼트와 재생 상태의 실행 목록이 표시됩니다. 맨 오른쪽 섹션에는 현재 재생 중인 세그먼트의 음소거 플래그가 표시됩니다. 하단의 타임라인 섹션은 기본 창에서와 동일합니다. 현재 재생 중인 세그먼트는 물론 해당 세그먼트와 연결된 이벤트 트리거의 시각적 디스플레이도 표시합니다.

오디션 창에서 모든 세그먼트를 재생 순서에 상관없이 대기열에 추가할 수 있습니다. 이렇게 하려면 신호를 보낼 세그먼트를 선택하고 대기열을 누르기만 하면 됩니다 세그먼트가 대기열 창에 표시되고 재생이 시작됩니다 (첫 번째 세그먼트인 경우). 이후에 다른 세그먼트나 세그먼트를 선택하고 재생을 위해 큐를 추가할 수 있습니다. 세그먼트 재생이 완료되면 대기열의 다음 세그먼트 재생이 시작됩니다. JET Creator의 다른 창과 마찬가지로 각 세그먼트가 재생되는 동안 실시간으로 이벤트 클립 등을 음소거, 음소거 해제, 트리거할 수 있습니다.

구체적으로 버튼은 다음과 같이 동작합니다.

대기열 - 선택한 세그먼트를 대기열에 로드하고 재생을 시작합니다.

취소 및 대기열 - 현재 재생 중인 세그먼트를 취소한 후 선택된 세그먼트를 재생 대기열에 추가

현재 재생 취소 - 현재 재생목록에서 현재 재생 중인 세그먼트를 취소하고 다음 세그먼트의 재생을 시작합니다.

중지 - 대기 중인 모든 세그먼트의 재생을 중지합니다.

모두 음소거 - 현재 세그먼트의 모든 트랙을 음소거합니다.

음소거 안함 - 현재 세그먼트의 모든 트랙을 음소거 해제합니다.

최초 음소거 - 현재 세그먼트의 원래 음소거 플래그를 설정합니다.

이러한 재생 옵션의 조합을 사용하면 작성자나 애플리케이션 프로그래머가 대화형 음악 애플리케이션에서 발생할 수 있는 모든 동작을 오디션할 수 있습니다.

5.6 JET Creator 메뉴

JET Creator 메뉴를 사용하면 기본 창의 여러 매개변수 및 몇 가지 추가 매개변수에 액세스할 수 있습니다.

5.6.1 파일 메뉴

파일 메뉴에는 다음 요소가 포함되어 있습니다.

새로 만들기 - 새 JET Creator 파일 (.jtc)을 만듭니다.

열기 - 기존 JET Creator 파일을 엽니다.

저장 - 현재 열려 있는 JET Creator 파일을 저장합니다.

다른 이름으로 저장 - 현재 열려 있는 JET Creator 파일을 새 파일로 저장합니다.

프로젝트 가져오기 - JET Creator 보관 파일(.zip)을 가져옵니다.

프로젝트 내보내기 - JET 크리에이터 보관 파일(.zip)을 내보냅니다.

종료 - 애플리케이션을 종료합니다.

5.6.2 수정 메뉴

수정 메뉴에는 다음 요소가 포함되어 있습니다.

실행취소 - 실행취소는 마지막으로 수정한 내용을 실행취소합니다.

다시 실행: 마지막 실행취소가 다시 실행됩니다.

잘라내기 - 선택한 매개변수를 클립보드에 복사하고 선택항목 삭제

복사 - 선택한 매개변수를 클립보드에 복사하고 선택 항목을 유지합니다.

붙여넣기 - 선택한 매개변수 붙여넣기

5.6.3 JET

수정 메뉴에는 다음 요소가 포함되어 있습니다.

속성 - JET Creator 우선순위 창이 표시됩니다. 이 창에서는 지정된 JET 파일에 다음 조건을 설정할 수 있습니다.

저작권 정보 - JET 파일에 삽입될 저작권 정보가 포함되어 있습니다.

추적 컨트롤러 - 컨트롤러를 추적하는 옵션입니다(켜기/끄기). 일반적으로 켜져 있어야 합니다.

빈 트랙 삭제 - 빈 MIDI 트랙을 모두 삭제합니다.

5.6.4 세그먼트

세그먼트 메뉴에는 다음 요소가 포함되어 있습니다.

세그먼트 추가 - 세그먼트 창을

세그먼트 업데이트 - 세그먼트 속성을 업데이트합니다.

세그먼트 삭제 - 세그먼트 목록에서 현재 세그먼트를 삭제합니다.

5.6.5 도움말

도움말 메뉴에는 최소한 다음 요소가 포함됩니다.

JET Creator 도움말 - PDF 도움말 문서를 실행하거나 온라인 도움말로 이동합니다.

정보 - JET Creator 버전 번호, SONiVOX 정보

6 트리거 이벤트 설명

MIDI 파일을 개별 (비선형) 세그먼트로 분할하고 게임 내 이벤트를 기반으로 게임에서 재생을 위해 이러한 세그먼트를 대기열에 추가하는 것은 JET 음악 파일이 양방향인 한 가지 방법입니다. 트리거 이벤트는 양방향 재생의 추가 메서드입니다. 양방향 게임이나 애플리케이션에서 두 방법이 모두 함께 사용될 수 있습니다.

트리거 이벤트는 다음을 허용합니다.

  1. MIDI 세그먼트 트랙은 게임 이벤트에 따라 켜거나 끌 수 있습니다. 예를 들어 작곡가는 빠른 트랙 하나와 느린 트랙 하나, 총 두 개의 드럼 트랙을 작성할 수 있습니다. 게임에서 동작이 빠르면 빠른 드럼 트랙이 재생될 수 있습니다. 게임에서 액션이 느리면 느린 드럼 트랙이 재생될 수 있습니다.
  2. 음악적으로 올바른 위치의 음악 파일에 미리 삽입된 트리거 이벤트와 사용자 작업을 비교할 수 있습니다. 결과에 따라 점수 또는 다른 게임 조치가 취해질 수 있습니다.
  3. 레벨 또는 액션 시퀀스 간의 음악 전환을 음악적으로 매끄럽게 동기화할 수 있습니다.

내부적으로 JET는 표준 MIDI CC 이벤트를 사용하여 이러한 작업을 실행하고 오디오를 동기화합니다. JET에서 사용하는 컨트롤러는 사양에 의해 특정한 용도로 정의되지 않은 컨트롤러 중 하나입니다. 구체적인 컨트롤러 정의는 다음과 같습니다.

컨트롤러 80~83 애플리케이션에서 사용하도록 예약됨

컨트롤러 102 JET 이벤트 마커

컨트롤러 103 JET 클립 마커

컨트롤러 104-119 나중에 사용하기 위해 예약됨

6.1 JET 클립 마커(CC103)

컨트롤러 103은 JET_TriggerClip API 호출로 트리거될 수 있는 MIDI 트랙의 클립을 표시하기 위해 예약되어 있습니다. 클립 ID는 컨트롤러 값의 하위 6비트로 인코딩됩니다. 비트 6은 클립의 시작을 나타내도록 1로 설정되고, 클립의 끝을 나타내려면 0으로 설정됩니다.

예를 들어 클립 ID가 1인 클립을 식별하려면 작성자는 클립 시작 부분에 컨트롤러가 103이고 값이 65인 MIDI 컨트롤러 이벤트를 삽입하고 클립 끝에 컨트롤러가 103이고 값이 1인 또 다른 이벤트를 삽입합니다. JET_TriggerClip() 함수가 클립 ID 1로 호출되면 컨트롤러 값 65가 발생하면 트랙이 음소거 해제되고 컨트롤러 값 1이 발생하면 트랙이 다시 음소거됩니다.

그림 5: 동기화된 클립

위 그림에서 JET_TriggerClip() 함수가 첫 번째 컨트롤러 이벤트 전에 호출되면 첫 번째 컨트롤러 이벤트가 발생할 때 트랙 3이 음소거 해제되고 첫 번째 클립이 재생되며 두 번째 컨트롤러 이벤트가 발생할 때 트랙이 음소거됩니다. 첫 번째 컨트롤러 이벤트가 발생한 후 JET_TriggerClip() 함수가 호출되면 트랙 3은 세 번째 컨트롤러 이벤트가 발생할 때 음소거가 해제되고 두 번째 클립이 재생되며 트랙은 네 번째 컨트롤러 이벤트가 발생할 때 다시 음소거됩니다.

참고: 일반적으로 클립이 포함된 트랙은 세그먼트가 JET_QueueSegment() 호출로 처음 대기열에 추가될 때 애플리케이션에서 음소거됩니다. 음소거되지 않은 경우 클립 ID를 사용하여 Jet_TriggerClip()을 호출할 때까지 클립이 항상 재생됩니다.

6.2 JET 이벤트 마커(CC102)

컨트롤러 102는 JET 기능과 관련된 MIDI 스트림의 이벤트를 표시하기 위해 예약되어 있습니다. 현재 유일하게 정의된 값은 0이며 타이밍 목적으로 세그먼트의 끝을 표시합니다.

일반적으로 JET는 MIDI 트랙 종료 메타 이벤트가 발생하면 다음 세그먼트의 재생을 시작하거나 현재 세그먼트를 반복합니다. 일부 MIDI 작성 도구는 트랙 끝 마커를 정확하게 배치하기 어렵게 하므로 세그먼트가 함께 결합될 때 동기화 문제가 발생합니다.

이 문제를 방지하기 위해 작성자는 세그먼트가 루프되어야 하는 지점에 JET 세그먼트 끝 마커 (컨트롤러=102, 값=0)를 배치할 수 있습니다. 세그먼트 끝 마커가 발생하면 다음 세그먼트가 트리거되거나 현재 세그먼트가 반복되면 세그먼트 시작 부분에서 재생이 다시 시작됩니다.

세그먼트 끝 마커를 사용하면 다음 세그먼트의 시작을 표시하는 마디의 끝을 넘어서 악보를 완성할 수 있습니다. 예를 들어 콘텐츠 작성자는 세그먼트의 자연스러운 끝을 넘어선 5번째 마디의 비트 1에서 끝나는 드럼 필이 있는 4마디 세그먼트를 만들 수 있습니다. 세그먼트 끝 마커를 네 번째 마디 끝에 배치하면 다음 세그먼트가 트리거되지만 드럼 필은 음악적 연속성을 위해 다음 세그먼트와 병렬로 계속됩니다.

그림 6: 세그먼트 끝 마커

6.3 애플리케이션 컨트롤러(CC80-83)

애플리케이션은 이 범위의 컨트롤러를 자체 목적으로 사용할 수 있습니다. 이 범위의 컨트롤러가 발생하면 이벤트가 애플리케이션에서 쿼리할 수 있는 이벤트 큐에 입력됩니다. 동영상 이벤트를 오디오와 동기화하고 MIDI 세그먼트의 지점을 표시하여 다음 세그먼트를 대기열에 추가하는 등의 용도로 사용할 수 있습니다. 애플리케이션에서 모니터링하는 컨트롤러 범위는 초기화 중에 애플리케이션에서 수정할 수 있습니다.

7 JET Creator 가이드라인

7.1 작업 순서

모든 프로젝트와 마찬가지로 작곡을 시작하기 전에 양방향 음악 구성표를 게임 디자이너 및 프로그래머와 논의하고 디자인하는 것이 가장 좋습니다. 개요 및 상술을 사용하면 게임이 준비된 후 여러 작업을 다시 실행하지 않아도 되므로 큰 도움이 됩니다.

일반적으로 먼저 익숙한 작곡 방식인 DAW로 음악을 작곡한 다음 애플리케이션에 필요한 대로 최종 MIDI 파일을 나누는 것이 좋습니다. 그런 다음 JET Creator로 이동하여 모든 음악 세그먼트를 차례로 재생할 때 미리보기 가장 쉬운 순서로 만듭니다. 마지막으로 JET 이벤트를 추가하여 Android 게임을 통해 세그먼트를 제어하고 JET Creator에서 필요에 따라 오디션합니다. 또한 JET Creator에 프로젝트를 저장하고 .jet 파일을 프로그래머에게 전달하여 게임에 통합합니다. 미리보기를 하고 나면 MIDI 파일 및 JET Creator 속성에 변경사항이 있을 수 있습니다.

7.2 메모리 절약

메모리를 절약하려면 MIDI 파일을 최대한 적게 작성하고 MIDI 파일에서 여러 세그먼트를 만듭니다. 예를 들어 A, B, C라는 네 마디로 된 섹션이 3개 있는 열두 마디 MIDI 파일로 훨씬 긴 노래를 만들 수 있습니다. 하나의 MIDI 파일을 참조하는 여러 세그먼트를 만든 다음 원하는 대로만 배열하면 됩니다. 예를 들어 A, A, B, A, C, A, B, A, A로 서른여섯 마디 노래를 만들 수 있습니다. JET를 사용하여 반복을 추가하고 세그먼트를 조옮김하며 트랙을 양방향으로 음소거 및 음소거 해제하여 노래에 재미를 더하세요.

7.3 복제

세그먼트 또는 이벤트를 더 빨리 추가하려면 복제 명령어를 사용합니다. 복제는 한 번에 여러 세그먼트나 이벤트를 추가할 수 있고 오프셋 매개변수와 접두사 이름 지정 규칙을 사용하여 쉽게 읽을 수 있습니다. MOVE 명령어도 설정된 수의 마디, 비트 또는 틱 만큼 여러 이벤트를 이동하는 데 유용합니다.

7.4 양방향 옵션

JET에서 가능한 양방향 오디오 개념이 몇 가지 있습니다. 다음은 그 예입니다. 이외에도 다른 개념을 생각할 수도 있습니다. 자세한 내용은 다음과 같습니다.

7.4.1 여러 세그먼트 트리거

이 메서드에서 애플리케이션은 게임의 이벤트에 기반해 특정 세그먼트를 트리거합니다. 예를 들어 전투가 많은 복도는 세그먼트 1을, 전투가 없는 복도는 세그먼트 2를 트리거할 수 있습니다. 이 메서드와 함께 JET TriggerClips를 사용하면 훨신 더 다양해집니다.

7.4.2 음소거 배열

이 메서드에서 애플리케이션은 단일 MIDI 시퀀스에서 특정 트랙에 음소거 및 음소거 해제 이벤트를 트리거합니다. 예를 들어 전투가 많은 복도는 MIDI 트랙 1-16을 재생할 수 있고 전투가 없는 복도는 동일한 MIDI 파일을 재생하지만 트랙 9-16을 음소거할 수 있습니다. 이 메서드와 함께 JET TriggerClips를 사용하면 훨신 더 다양해집니다.

7.4.3 음악 주도 게임플레이

음악 주도 게임은 음악 콘텐츠로 그래픽 이벤트를 어떻게 표시할지를 판단한다는 점에서 Guitar Hero 및 JETBOY와 유사합니다. 그런 다음 애플리케이션은 그래픽 이벤트에 대한 사용자 응답을 쿼리하고 이에 대응하여 음악을 양방향으로 수정합니다. 이 메서드에서 게임은 MIDI 파일에 삽입되고 게임에서 실시간으로 읽는 MIDI 컨트롤러인 JET 애플리케이션 이벤트를 사용합니다. 사용자 응답에 기반하여 여러 세그먼트 트리거 및 음소거 배열을 설정할 수 있습니다.