Manual del usuario de SONiVOX JET Creator

App de creación de contenido para el motor de música interactiva JET

1 Introducción

1.1 Descripción general

Este documento contiene las pautas para el usuario de SONiVOX JET Creator, una app para crear y probar archivos JET. JET es un reproductor de música interactivo para pequeños dispositivos incorporados, incluidos los que ejecutan la plataforma de Android. Permite que las aplicaciones incluyan bandas sonoras de música interactivas, en formato MIDI, que responden en tiempo real a los eventos de juegos y a la interacción del usuario.

JET funciona en conjunto con el sintetizador de audio incorporado (EAS) de SONiVOX, que es el dispositivo de reproducción MIDI de Android. Los motores de JET y EAS están integrados en la plataforma incorporada de Android por medio de la clase JetPlayer, y también son inherentes en la aplicación JET Creator. Por lo tanto, el autor del contenido de JET puede asegurarse de que la reproducción suene exactamente igual en JET Creator y en la app para Android final que se reproduce en dispositivos móviles Android.

Además de la interfaz gráfica de usuario, JET Creator tiene dos funciones principales. La primera implica recopilar todos los datos de origen (archivos MIDI y DLS), agregar los atributos en tiempo real de JET y compilar un archivo JET (.jet) que usará la aplicación para Android. La segunda funcionalidad consiste en escuchar los elementos de reproducción interactiva tal como se realizarán en la aplicación para Android.

Como la app de JET Creator está escrita en el lenguaje de programación Python, debes tener instalada la versión actual de Python y WXWidgets. Hay versiones para Mac y Windows.

1.2 Abreviaturas y términos comunes

Es importante utilizar un conjunto común de términos para minimizar la confusión. Dado que JET usa MIDI de una manera única, los términos normales de la industria no siempre son suficientes. Esta es la definición de los términos tal como se usan en esta página y en la app de JET Creator:

Canal: Datos MIDI asociados con un canal MIDI específico. El formato MIDI estándar permite 16 canales de datos MIDI, que generalmente se asocian con un instrumento específico.

Controlador: Es un evento MIDI que consta de un número de canal, un número de controlador y un valor de controlador. La especificación MIDI asocia muchos números de controlador con funciones específicas, como volumen, expresión, pedal de sustain, etc. JET también usa eventos del controlador como una forma de incorporar información de control especial en una secuencia MIDI para proporcionar la sincronización de audio.

DAW: Estación de trabajo de audio digital. Término común para las aplicaciones de secuenciación de audio y MIDI, como Logic, SONAR, Cubase y otras.

EAS: Sintetizador MIDI incorporado. Es el nombre del motor del sintetizador MIDI SONiVOX.

JET: Motor de música interactiva Jet. El nombre del motor de música interactiva SONiVOX JET.

M/B/T: Compases, tiempos y pulsos.

Segmento: Una sección musical, como un coro o un verso, que es un componente de la composición general. En JET, un segmento puede ser un archivo MIDI completo o derivado de una parte de un archivo MIDI.

SMF-0: Es un archivo MIDI estándar tipo 0, que contiene una sola pista, pero que puede estar formado por varios canales de datos MIDI.

SMF-1: Un archivo MIDI estándar tipo 1; un archivo MIDI que contiene una pista más, y cada pista puede estar compuesta por uno o más canales de datos MIDI. Por convención, cada canal se almacena en una pista separada en un archivo SMF-1. Sin embargo, es posible tener varios canales MIDI en una sola pista o varias pistas que contengan datos para el mismo canal MIDI.

Pista: Una pista de un DAW que contiene una secuencia sincronizada de eventos. Ten cuidado de no confundir pistas con canales. Un archivo MIDI puede contener muchas pistas, y varias de ellas utilizan el mismo canal MIDI.

2 El concepto de música interactiva de JET

La música interactiva se puede definir como música que cambia en tiempo real de acuerdo con eventos no predecibles, como la interacción del usuario o los eventos de una partida de juego. De esta manera, la música interactiva es mucho más atractiva, ya que tiene la capacidad de igualar la energía y el estado de ánimo de un juego mucho más que una composición precompuesta que nunca cambia. En algunos juegos y apps, la música interactiva es fundamental. Guitar Hero es un juego tan popular. Cuando el usuario final registra con éxito las notas musicales que salen por el diapasón, la música se adapta y registra de forma simultánea los éxitos y los fracasos. JET también permite este tipo de juegos basados en la música.

Existen varios métodos para crear y controlar música interactiva, y JET es uno de ellos. En esta sección, se describen las funciones de JET y cómo se pueden usar en un juego o una aplicación de software. También se describe cómo se puede usar JET para ahorrar memoria en dispositivos de tamaño pequeño, como los teléfonos móviles compatibles con Android.

2.1.1 Compresión de datos

JET admite un formato de música flexible que se puede usar para crear secuencias musicales extendidas con una cantidad mínima de datos. Una composición musical se divide en segmentos que se pueden secuenciar para crear una pieza más larga. La secuencia se puede corregir en el momento en que se crea el archivo de música, o se puede crear de forma dinámica bajo el control del programa.

2.1.2 Ejemplo de música lineal


Figura 1: Pieza de música lineal

En este diagrama, se muestra cómo se almacenan los segmentos musicales. Cada segmento se crea como un archivo MIDI independiente. Una herramienta de posprocesamiento combina los archivos en un único archivo contenedor. Cada segmento puede contener pistas de música alternativas que se pueden silenciar o activar para generar interés adicional. Un ejemplo podría ser un acento de metal en el estribillo que solo se reproduce la última vez. Además, los segmentos se pueden transponer hacia arriba o hacia abajo.

La parte inferior del diagrama muestra cómo se pueden recombinar los segmentos musicales para crear una pieza musical lineal. En este ejemplo, el puente podría terminar con una modulación de clave de medio paso y los segmentos restantes se podrían transponer un medio paso para coincidir.

2.1.3 Ejemplo de música no lineal


Figura 2: Pieza de música no lineal

En este diagrama, vemos una pieza musical no lineal. Se trata de un juego de disparos en primera persona (FPS) y JET proporciona la música de fondo. La introducción se reproduce a medida que se carga el nivel y, luego, pasa bajo el control del programa al segmento de búsqueda. Este segmento se repite indefinidamente, quizás con pequeñas variaciones (mediante la función para silenciar/activar sonido) hasta que la actividad del juego indique un cambio.

A medida que el jugador se acerca a una guarida de monstruos, el programa inicia una transición sincronizada hacia el segmento de peligro, lo que aumenta el nivel de tensión del audio. A medida que el jugador se acerca a la guarida, se activan las pistas adicionales para aumentar la tensión.

Cuando el jugador entra en combate con el monstruo, el programa inicia una transición sincronizada hacia el segmento de combate. Se repite indefinidamente este segmento a medida que continúa el combate. Un golpe extra activa temporalmente el sonido de una pista decorativa que notifica al jugador sobre un ataque exitoso y, del mismo modo, otra pista se activa temporalmente para indicar que el jugador recibe daño especial.

Al final del combate, la música pasa a un segmento de victoria o derrota según el resultado de la batalla.

2.1.4 Sincronización de silenciamiento/activación de sonido

JET también puede sincronizar el silenciamiento y la activación de sonido de las pistas con los eventos de la música. Por ejemplo, en el juego FPS, es probable que sea conveniente colocar los eventos musicales relacionados con bonificaciones y daños lo más cerca posible del evento real del juego. Sin embargo, activar el sonido de una pista en el momento en que ocurre el evento del juego podría hacer que un clip de música comience en el medio. Como alternativa, se podría iniciar un clip desde el principio, pero luego no se sincronizaría con las otras pistas musicales.

Sin embargo, con el motor de sincronización JET, se puede iniciar un clip en el próximo momento oportuno y mantener la sincronización. Para ello, coloca una serie de clips musicales cortos en una pista decorativa. Un evento MIDI en la transmisión indica el inicio de un clip, y un segundo evento indica el final de un clip. Cuando la app llama a la función de clip JET, el siguiente clip de la pista puede reproducirse completamente sincronizado con la música. De manera opcional, un segundo evento MIDI puede silenciar automáticamente la pista.


Figura 3: Silenciamiento/activación de sonido sincronizado

2.2 Sincronización de audio

JET proporciona una API de sincronización de audio que permite que el juego se sincronice con eventos en el audio. El mecanismo se basa en los datos incorporados en el archivo MIDI en el momento en que se crea el contenido. Cuando el motor JET detecta un evento durante la reproducción, genera una devolución de llamada al programa de la aplicación. Se puede ajustar el tiempo de devolución de llamada para compensar cualquier latencia en el sistema de reproducción de audio, de modo que se puedan sincronizar el audio y el video. En el siguiente diagrama, se muestra un ejemplo de un juego de música simple que consiste en presionar las flechas izquierda y derecha al mismo tiempo que la música.


Figura 4: Juego de música

Las flechas representan eventos en la secuencia musical en la que se deben sincronizar los eventos del juego. En este caso, la flecha azul representa un momento en el que se supone que el jugador debe presionar el botón izquierdo, y la flecha roja es para el botón derecho. La flecha amarilla le indica al motor del juego que la secuencia está completa. El jugador tiene un período determinado antes y después del evento para que presione la tecla correspondiente.

Si se recibió un evento y el jugador no presionó ningún botón, se establece un temporizador con la mitad del tiempo de la ventana. Si el jugador presiona el botón antes de que pase el tiempo, el juego registra un éxito; de lo contrario, registra un fracaso.

Si el jugador presiona el botón antes de que se recibe el evento, se establece un temporizador con la mitad del tiempo de la ventana. Si se recibe un evento antes de que finalice el temporizador, el juego registra un éxito; de lo contrario, registra un fracaso. La partida también puede incluir bonificaciones por acercarse al momento del evento real.

3 Descripción general de la creación de contenido de JET

Para crear archivos JET y reproducirlos de forma interactiva, el autor del contenido trabajará en dos apps diseñadas para funcionar en conjunto sin problemas. La primera es cualquier aplicación de secuenciación MIDI disponible que admita los complementos VST (para PC) o AU (para Mac). Aquí, el autor compondrá sus archivos MIDI de música usando el complemento como dispositivo sintetizador. La segunda es la app de JET Creator. Aquí, el autor importará sus archivos MIDI de música (y, opcionalmente, un conjunto de sonidos DLS2) y configurará las condiciones para la reproducción interactiva dentro del juego habilitado para JET. De manera opcional, el autor del contenido puede crear un conjunto personalizado de instrumentos DLS mediante un editor de instrumentos que admita el formato DLS de nivel 2. Una de estas apps es Awave de MJSoft.

Consulta la documentación de las Pautas de creación de contenido de JET para obtener detalles adicionales sobre la creación de contenido.

4 Instalación e inicio de JET Creator

JET Creator es una aplicación de lenguaje Python, por lo tanto, debes tener Python y wxPython instalados en tu máquina.

JET Creator se creó y probó con las siguientes versiones:

Python versión 2.5.4

wxPython versión 2.8.7.1

Estas se pueden descargar aquí:

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

Después de instalar Python y wxPython, descomprime o copia todos los archivos del directorio de la app de JET Creator en una carpeta de tu disco duro.

Para iniciar JET Creator, ve a un símbolo del sistema y establece el directorio donde instalaste Python. Luego, ejecuta Python con el siguiente comando:

python jetcreator.py

5 Cómo usar JET Creator

5.1 Tipos de archivo

Hay diferentes tipos de archivos asociados con JET Creator.

archivo de proyecto .jtc de JET Creator. Este archivo contiene toda la información asociada con un proyecto de JET Creator. Cuando usas Save o Save as fuera de JET Creator, se guarda este tipo de archivo.

Archivo .jet JET. Este archivo de salida se genera automáticamente desde JET Creator cada vez que guardas tu proyecto de JET Creator. Este es el archivo que empaqueta todos los elementos de JET en un único archivo que usará la aplicación para Android. Entrégale este archivo al desarrollador de la aplicación para Android.

Archivo .mid. Este es el archivo MIDI estándar tipo 1 que usará JET Creator para crear segmentos.

Archivo de segmentos .seg. Este es el archivo de segmento de JET. Tiene el mismo nombre que el archivo MIDI al que hace referencia, pero contiene información adicional del segmento.

Archivo comprimido .zip. Cuando exportas un archivo de JET, se crea un archivo ZIP que contiene todos los elementos (archivos) necesarios para JET Creator. Úsalo para transferir los proyectos de JET Creator a otras personas.

5.2 Diálogo de apertura

Cuando inicias JET Creator por primera vez, aparece un diálogo de apertura como el siguiente.

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

Con Open, se abrirá un archivo .jtc (archivo de JET Creator) existente. Usa el botón del navegador para buscar el directorio en el que guardaste el archivo .jtc.

Con New, se creará un nuevo archivo .jtc.

Con Import, se importará un archivo de JET (.zip).

Con Cancel, se cancelará el diálogo y saldrás de la app.

5 Ventana principal

La ventana principal de la app JET Creator tiene un aspecto similar a la siguiente imagen. Hay tres secciones principales en orden descendente: vista de segmentos, vista de eventos y cronograma.

En la sección de vista de segmentos, se muestra una lista de los segmentos actuales, de qué archivo MIDI y (opcionalmente) archivo DLS2 se deriva cada segmento. También muestra la hora de inicio y finalización de cada segmento, y la configuración de las marcas para cuantizar, transponer, repetir y silenciar.

Debajo de la vista de segmentos, se encuentra la vista de eventos. La sección de vista de eventos muestra todos los eventos asociados con un segmento determinado. Los eventos solo se muestran cuando el segmento al que están asignados está destacado. Cada evento muestra su tipo, puntos de inicio y finalización, asignación de canales MIDI y seguimiento, y su ID de evento.

Debajo de la vista Event, se muestra la línea de tiempo. El cronograma muestra cuántas medidas tiene un segmento determinado, así como cualquier evento asociado con ese segmento. La línea de tiempo cambia para mostrar el segmento seleccionado o en reproducción. Para activar un evento en esta ventana mientras se reproduce el segmento, haz clic en el evento en la pantalla del cronograma.


Ventana principal de JET Creator

Los botones del lado izquierdo de la ventana principal hacen lo siguiente:

Agregar: Muestra la ventana de segmentos o eventos para agregar un segmento o un evento nuevos.

Review: Muestra la ventana de segmentos o eventos para actualizar un segmento o evento existente.

Borrar: Borra el segmento o evento seleccionado (solicitará confirmación).

Move: Muestra la ventana de movimiento que te permite mover segmentos o eventos seleccionados a tiempo.

Queue All: Pone en cola (selecciona) todos los segmentos para la reproducción.

Quitar de la cola de todo: Quita de la cola (anula la selección) de todos los segmentos

Reproducir: Inicia la reproducción de todos los segmentos en cola. Este botón cambia a Stop si se está reproduciendo algún segmento.

Audition: Muestra la ventana Audition (consulta a continuación).

5.1 Ventana de segmentos

La ventana de segmentos es donde se asignan y escuchan los atributos de un segmento determinado, como se muestra en la siguiente imagen. En el lado izquierdo de la ventana, se muestran los atributos de los segmentos que se almacenan en el archivo JET. En el lado derecho de la ventana, el autor puede establecer marcas de silencio, configuración de repetición y transposición, y escuchar el segmento como se reproducirá en el juego de JET.

Nota: Los atributos de audición (marcas de silencio, repetición y transposición) no se almacenan en el archivo de contenido de JET (.jet), sino que están definidos por el juego o la aplicación. En el lenguaje de programación, estos ajustes se corresponden directamente con las llamadas a la API del motor JET. Si los incluyes aquí, el autor del contenido de JET puede simular cómo el segmento responderá a los comandos de la API de apps durante el juego.

Los parámetros de segmento permiten hacer lo siguiente:

  • Segment Name: Establece el nombre del segmento.
  • MIDI File: Es el nombre y la ubicación del archivo MIDI del que se deriva el segmento. Si presionas el botón que está a la derecha, se abrirá un navegador para ubicar un archivo MIDI en el disco duro.
  • DLS File: Nombre y ubicación del archivo DLS2, si corresponde, que el archivo MIDI usa para ese segmento
  • Inicio M/B/T: Compás, pulso y pulso iniciales del segmento
  • Ending M/B/T: Compás, tiempo y pulso finales del segmento.
  • Quantize: Permite cuantificar el valor para cuantificar el segmento actual durante la reproducción.

Los campos de escucha son los siguientes:

  • Track Mutes: Muestra las pistas MIDI (no los canales) del archivo MIDI. Si haces clic en la casilla de verificación de una pista, se silenciará.
  • Channel: Muestra el canal MIDI asignado a cada pista.
  • Name: Muestra el metaevento del nombre de la pista (si está presente) de cada pista.
  • Repetir: Indica la cantidad de veces que se debe repetir un segmento durante la reproducción.
  • Transpose: Indica la transposición en semitonos o semitonos que un segmento debe transponer durante la reproducción.
  • A la derecha de la ventana Audition, hay algunos botones adicionales, que permiten hacer lo siguiente:
  • OK. Si seleccionas OK, se confirmará la configuración de todos los segmentos y se cerrará la ventana de segmentos.
  • Cancel: Si seleccionas Cancel, se cancelará cualquier cambio y se cerrará la ventana de segmentos.
  • Replicate: Muestra la ventana Replicate Segment para ingresar varios segmentos a la vez. Obtén más detalles a continuación.
  • Play/Stop Segment: Inicia o detiene la reproducción del segmento con los atributos de segmento asignados.
  • Play/Stop MIDI File: Inicia o detiene la reproducción del archivo MIDI al que está asignado el segmento.
  • Pause/Resume: Pone en pausa o reanuda la reproducción.

5.2 Ventana de eventos

La ventana de eventos es donde se asignan y escuchan los atributos de evento de un segmento determinado, como se muestra en la siguiente imagen. Para agregar un evento a un segmento, el autor primero debe seleccionar el segmento que contendrá el evento y, luego, seleccionar el botón Agregar. Así aparecerá la ventana Event.

La ventana de eventos tiene dos secciones principales. La sección de segmentos en el lado izquierdo de la ventana de eventos es solo para visualización. Allí se muestra cuáles son los atributos de un segmento determinado. En la sección Evento, ubicada en el lado derecho, se pueden asignar eventos. Los siguientes parámetros están disponibles:

Event Name: Asigna un nombre a un evento.

Event Type: Selecciona qué tipo de evento asignar.

Inicio de M/B/T: Establece el compás, el tiempo y el pulso iniciales para el evento.

Ending M/B/T: Establece el compás, el tiempo y el pulso finales para el evento, si corresponde.

Track: Establece en qué pista del segmento determinado se aplicará el evento.

Channel: Establece en qué canal MIDI se aplicará el evento. El canal MIDI debe coincidir con el canal MIDI de la pista.

Event ID: Establece el ID del evento. Se pueden asignar varios eventos al mismo segmento y, por lo tanto, se usa el ID de evento para identificarlos.

A la derecha de la ventana Audition, hay algunos botones adicionales, que permiten hacer lo siguiente:

OK: Si seleccionas OK, se confirmará toda la configuración del evento y se cerrará la ventana del evento

Cancel: Si seleccionas Cancel, se cancelará cualquier cambio y se cerrará la ventana del evento.

Replicate: Muestra la ventana Replicate Event para ingresar varios eventos a la vez. Consulta la información a continuación.

Play/Stop: Inicia o detiene la reproducción del segmento con los atributos de segmento asignados. Mientras se reproduce el segmento, se pueden activar y escuchar los eventos.

Trigger: activa el evento asignado. Esto replica el comando de la API que usará el juego de JET para activar el evento, lo que le brinda al autor del contenido un método para probar el comportamiento del evento.

Silenciar/Dejar de silenciar: Silenciar/Dejar de silenciar silenciará o activará el sonido de la pista a la que está asignado el evento.

Pause/Resume: Pone en pausa o reanuda la reproducción.

Para escuchar el comportamiento de un evento, puedes seleccionar el botón Reproducir. que iniciará la reproducción. El botón de activación enviará el evento de activación cuando se presione. Esto equivale a seleccionar el evento de activación verde en el cronograma.

Nota: Los eventos de activación tienen como objetivo activar el sonido de una sola pista de un segmento cuando se activan y, luego, silenciar esa pista al final del segmento activador. Por lo tanto, debes asegurarte de que la marca de silencio esté configurada para silenciar la pista de que un evento de activación activará el sonido cuando recibas un evento de activación.

Consulta la sección 6 Conceptos básicos a continuación para obtener detalles sobre el funcionamiento y el comportamiento de los eventos de activación.

5.3 Ventanas Replicate

A menudo, cuando creas archivos JET, deberás crear decenas o incluso cientos de eventos. También es posible que debas mover eventos. Las ventanas Replicate y Move lo permiten. Hay dos ventanas Replicate para crear varios segmentos o eventos. que tienen un aspecto similar a las siguientes:

Ventana Replicate Segment

Ventana Replicate Event

Ambas ventanas funcionan de manera similar. Después de crear un segmento o evento inicial, puedes seleccionar el botón Replicate. Los parámetros son los siguientes:

Name Prefix: Establece el prefijo para el nombre de cada segmento o evento creado.

Start M/B/T: establece la hora de inicio para el primer segmento o evento.

Increment M/B/T: Establece el tiempo entre segmentos o eventos creados.

Number: Establece la cantidad de segmentos o eventos que deseas crear. Si el número sobrepasa la longitud del archivo MIDI (para segmentos) o segmento (para eventos), esos objetos no se crearán.

Preview: La vista previa te permite examinar los objetos creados antes de presionar OK para insertarlos.

5.4. Ventanas Move

La función Move es similar a la función Replicate, ya que te permite editar varios segmentos o eventos a la vez, en este caso moverlos con el tiempo. Al igual que en Replicate, hay dos ventanas Move, una para segmentos y otra para eventos. Las ventanas se ven de la siguiente manera:

Ventana Move Event

Para usar Move, primero selecciona los segmentos o eventos que deseas mover con el tiempo y, luego, haz clic en el botón Move. Los parámetros son los siguientes:

Start M/B/T: establece la hora de inicio para el primer segmento o evento.

Increment M/B/T: Establece el tiempo en M/B/T en el que deseas mover los objetos.

Preview: La vista previa te permite examinar los objetos creados antes de presionar OK para moverlos.

5.5 Ventana Audition

Si haces clic en el botón Audition, en la ventana principal de la app de JET Creator, se abrirá la ventana Audition. Aquí es donde el autor del contenido o el programador de la aplicación pueden simular la reproducción interactiva, ya que puede ocurrir en la aplicación para dispositivos móviles o en el propio juego.

Ventana JET Audition

Hay cuatro secciones principales en la ventana Audition. En la sección de más a la izquierda, se muestran los segmentos disponibles y su duración en segundos. En la sección del medio, se muestra una lista en ejecución de los segmentos que están en cola para la reproducción y cuál es su estado de reproducción. En la sección del extremo derecho, se muestran las marcas de silencio del segmento que se está reproduciendo en ese momento. En la parte inferior, la sección del cronograma es la misma que en la ventana principal. Muestra el segmento que se está reproduciendo en ese momento, así como una representación visual de los activadores de eventos asociados con ese segmento.

La ventana Audition te permite poner en cola cualquier segmento para su reproducción, en cualquier orden. Para hacerlo, selecciona el segmento que deseas poner en cola y haz clic en Queue. Ese segmento aparecerá en la ventana de la cola y comenzará a reproducirse (si es el primer segmento). Luego, puedes seleccionar cualquier otro segmento o más y ponerlos en posición de reproducción. A medida que se complete la reproducción de los segmentos, comenzará a reproducirse el siguiente segmento de la cola. Al igual que en las otras ventanas de JET Creator, puedes silenciar, activar el sonido, activar clips de eventos, etc. en tiempo real, a medida que se reproduce cada segmento.

En particular, los botones se comportan de la siguiente manera:

Queue: Carga el segmento seleccionado en la cola y comienza la reproducción.

Cancel and Queue: Cancela el segmento que se está reproduciendo antes de poner en cola el segmento seleccionado para la reproducción.

Cancel Current: Cancela el segmento que se está reproduciendo en la cola y comienza la reproducción del siguiente.

Stop: Detiene la reproducción de todos los segmentos en cola.

Mute All: Silencia todas las pistas del segmento actual.

Mute None: Activa el sonido de todas las pistas del segmento actual.

Original Mutes: Establece las marcas de silencio originales para el segmento actual.

La combinación de estas opciones de reproducción permite que un autor o programador de aplicaciones escuche cualquier comportamiento que pueda encontrar una aplicación de música interactiva.

5.6 Menús de JET Creator

Los menús de JET Creator proporcionan acceso a muchos de los parámetros de la ventana principal, además de algunos parámetros adicionales.

5.6.1 Menú File

El menú File contiene los siguientes elementos:

New: Crea un nuevo archivo de JET Creator (.jtc).

Open: Permite abrir un archivo de JET Creator existente.

Save: Guarda el archivo de JET Creator que está abierto actualmente.

Save As: Permite guardar en un archivo nuevo el archivo de JET Creator que está abierto.

Import Project: Permite importar un archivo de JET Creator (.zip).

Export Project: Permite exportar un archivo de JET Creator (.zip).

Exit: Permite salir de la app.

5.6.2 Menú Edit

El menú Edit contiene los siguientes elementos:

Deshacer: Deshacer deshacer la última modificación realizada

Redo (Rehacer): Permite rehacer la última acción.

Cut: Permite copiar el parámetro seleccionado en el portapapeles y borrar la selección.

Copy: Copia el parámetro seleccionado en el portapapeles y mantiene la selección.

Paste: Permite pegar el parámetro seleccionado.

5.6.3 JET

El menú Edit contiene los siguientes elementos:

Properties: Abre la ventana de prioridades de JET Creator. Esta ventana te permite establecer las siguientes condiciones para un archivo JET determinado:

Copyright Info: Contiene información sobre derechos de autor para que insertar en el archivo JET.

Chase Controllers: Opción para usar controladores (activar/desactivar). Por lo general, esta opción debería estar ACTIVADA.

Delete Empty Tracks: Permite borrar cualquier pista MIDI vacía.

5.6.4 Segmentos

El menú Segments contiene los siguientes elementos:

Add Segment: Abre la ventana Segment.

Update Segment: Actualiza atributos de segmentos.

Delete Segment: Borra el segmento actual de la lista de segmentos.

5.6.5 Ayuda

El menú Ayuda contendrá al menos los siguientes elementos:

JET Creator Help: Se abrirá el documento de ayuda en formato PDF o se abrirá la ayuda en línea.

Acerca de; número de versión de JET Creator, información de SONiVOX

6 Explicación sobre los eventos de activación

El proceso de dividir un archivo MIDI en segmentos individuales (no lineales) y ponerlos en cola para su reproducción en un juego según los eventos es una forma en que los archivos de música JET son interactivos. Los eventos de activación son un método adicional para la reproducción interactiva. Es posible usarlos juntos en un juego o una app interactivos.

Los eventos de activación permiten hacer lo siguiente:

  1. Se pueden activar o desactivar las pistas dentro de un segmento MIDI en función de los eventos del juego. Por ejemplo, el compositor podría crear dos pistas de batería, una rápida y otra lenta. Si la acción en un juego es rápida, se puede reproducir la pista de batería rápida. Si la acción en el juego es lenta, se puede reproducir la pista lenta.
  2. Las acciones del usuario se pueden comparar con eventos de activación que se insertaron previamente en un archivo de música en lugares musicalmente correctos. Según los resultados, se pueden aplicar puntuaciones u otras acciones del juego.
  3. Se pueden sincronizar las transiciones musicales entre niveles o secuencias de acción para que sean musicalmente perfectas.

De forma interna, JET usa eventos MIDI CC estándar para realizar estas acciones y sincronizar el audio. Los controladores que usa JET se encuentran entre los que no están definidos para un uso específico por la especificación. Las definiciones específicas de los controladores son las siguientes:

Controladores 80 a 83: reservados para uso de la aplicación.

Controlador 102: marcador de evento JET.

Controlador 103 Marcador de clip JET.

Controladores 104 a 119: reservados para uso futuro.

6.1 Marcador de clip JET (CC103)

El controlador 103 está reservado para marcar clips en una pista MIDI que se puede activar mediante la llamada a la API JET_TriggerClip. El ID del clip está codificado en los 6 bits bajos del valor del controlador. El bit 6 se establece en uno para indicar el inicio de un clip, y en cero para indicar el final de un clip.

Por ejemplo, para identificar un clip con un ID de clip 1, el autor inserta un evento de controlador MIDI con handle=103 y value=65 al comienzo del clip, y otro evento con handle=103 y value=1 al final del clip. Cuando se llama a la función JET_TriggerClip() con un ID de clip de 1, se activa el sonido de la pista cuando se encuentra el valor 65 del controlador y se vuelve a silenciar cuando se encuentra el valor 1 del controlador.

Figura 5: Clip sincronizado

En la figura anterior, si se llama a la función JET_TriggerClip() antes del primer evento del controlador, se activará el sonido de la pista 3 cuando se produzca el primer evento del controlador, se reproducirá el primer clip y se silenciará cuando se produzca el segundo evento del controlador. Si se llama a la función JET_TriggerClip() después de que se produce el primer evento del controlador, se activará el sonido de la pista 3 cuando se produzca el tercer evento del controlador, se reproducirá el segundo clip y se silenciará de nuevo cuando se produzca el cuarto evento del controlador.

Nota: Por lo general, la aplicación silencia la pista que contiene el clip cuando el segmento se pone en cola inicialmente por la llamada a JET_QueueSegment(). Si no está silenciado, el clip siempre se reproducirá hasta que se haya llamado a Jet_TriggerClip() con el ID de clip.

6.2 Marcador de eventos JET (CC102)

El controlador 102 está reservado para marcar eventos en las transmisiones MIDI que son específicas de la funcionalidad JET. Actualmente, el único valor definido es 0, que marca el final de un segmento para fines de latencia.

Normalmente, JET inicia la reproducción del siguiente segmento (o repite el segmento actual) cuando se encuentra el metaevento MIDI de fin de pista. Algunas herramientas de creación MIDI dificultan la colocación precisa del marcador de fin del recorrido, lo que genera problemas de sincronización cuando los segmentos se unen.

Para evitar este problema, el autor puede colocar un marcador de fin de segmento JET (controller=102, value=0) en el punto en el que se repetirá el segmento. Cuando se encuentre el marcador de fin de segmento, se activará el siguiente segmento. Si el segmento actual está en bucle, se reanudará la reproducción al comienzo del segmento.

El marcador de fin de segmento también se puede usar para permitir la finalización de una figura musical más allá del final del compás que marca el inicio del siguiente segmento. Por ejemplo, el autor del contenido podría crear un segmento de 4 compases con un relleno de batería que termina en el tiempo 1 del 5o compás, un compás más allá del final natural del segmento. Si colocas un marcador de fin de segmento al final del cuarto compás, se activará el siguiente segmento, pero el relleno de la batería continuará en paralelo con el siguiente, proporcionando continuidad musical.

Figura 6: Marcador de fin de segmento

6.3 Controladores de apps (CC80-83)

La aplicación puede usar controladores en este rango para sus propios fines. Cuando se encuentra un controlador en este rango, el evento ingresa en una cola de eventos que la aplicación puede consultar. Algunos de los usos posibles son la sincronización de eventos de video con audio y la marcación de un punto en un segmento MIDI para poner en cola el siguiente segmento. La aplicación puede modificar el rango de controladores que supervisa durante la inicialización.

7 Pautas de JET Creator

7.1 Orden de tareas

Al igual que con todos los proyectos, es mejor analizar y diseñar el esquema musical interactivo con el diseñador y programador del juego antes de comenzar la composición. Un esquema o una especificación puede ser de gran ayuda para que no tengas que rehacer tu trabajo una vez que el juego se implementó.

En general, primero deberás escribir la música en la app de audio que elijas en función de tu manera de componer. Luego, divide el archivo MIDI final según sea necesario para la app. A continuación, ve a JET Creator y crea todos los segmentos de música en el orden más fácil a fin de obtener una vista previa cuando se reproduzcan en orden. Luego, agrega los eventos JET para controlar los segmentos a través del juego para Android y escúchalos según sea necesario en JET Creator. Por último, guarda el proyecto en JET Creator y entrega el archivo .jet al programador para que lo incorpore en el juego. Después de la vista previa, es posible que haya cambios en los archivos MIDI y los atributos de JET Creator.

7.2 Cómo conservar la memoria

Si estás tratando de conservar la memoria, compón la menor cantidad posible de archivos MIDI y crea varios segmentos a partir de ese archivo. Por ejemplo, con un archivo MIDI de 12 compases con tres secciones de 4 compases, A, B y C, se puede crear una canción mucho más larga. Solo debes crear varios segmentos que hagan referencia al único archivo MIDI y, luego, ordenarlos como desees. Por ejemplo, con A, A, B, A, C, A, B, A, A se podría crear una canción de 36 compases. Usa JET para agregar repeticiones, transponer segmentos y silenciar o activar el audio de pistas de forma interactiva para obtener un resultado aún más interesante.

7.3 Replicación

Para agregar segmentos o eventos más rápido, usa el comando Replicate. Con esta función, se pueden agregar varios segmentos o eventos a la vez y utilizar un parámetro de desplazamiento y una convención de nomenclatura de prefijos para que la composición sea fácil de leer. El comando MOVE también es útil para mover varios eventos por un número determinado de compases, tiempos o pulsos.

7.4 Opciones interactivas

Hay varios conceptos posibles de audio interactivo en JET. A continuación, te mostramos algunos ejemplos, aunque esperamos que los desarrolladores encuentren otros que a nosotros no se nos ocurrieron. Son los siguientes:

7.4.1 Activación de varios segmentos

Con este método, la app activa segmentos específicos en función de los eventos del juego. Por ejemplo, en un corredor donde hay muchas peleas, se podría activar el segmento 1 y en un corredor donde no hay peleas, se podría activar el segmento 2. Si se usa JET TriggerClips junto con este método, se crea aún más diversidad.

7.4.2 Cómo silenciar arreglos

En este método, la app activa eventos de silencio y activación de sonido en pistas específicas de una sola secuencia MIDI. Por ejemplo, en un corredor donde hay muchas peleas, se podrían reproducir las pistas MIDI 1 a 16, y en un pasillo donde no hay peleas, se podría reproducir el mismo archivo MIDI, pero con las pistas 9 a 16 silenciadas. Si se usa JET TriggerClips junto con este método, se crea aún más diversidad.

7.4.3. Videojuegos de música

Los juegos basados en música son similares a Guitar Hero y JETBOY, en cuanto que el contenido musical determina cómo se muestran los eventos gráficos. La app consulta la respuesta del usuario a los eventos gráficos y, en base a esta, modifica de forma interactiva la música. En este método, el juego utiliza eventos de la app de JET, controladores MIDI incorporados en el archivo MIDI y leídos por el juego en tiempo real. Según la respuesta del usuario, se pueden establecer arreglos de activación o desactivación del sonido de varios segmentos.