Manual do usuário do SONiVOX JETCreator

Aplicativo de criação de conteúdo para o JET Interactive Music Engine

1 Introdução

1.1 Visão geral

Este documento contém as diretrizes do usuário para o SONiVOX JET Creator, um aplicativo de criação e teste de arquivos JET. O JET é um player de música interativo para pequenos dispositivos incorporados, incluindo aqueles que executam a plataforma Android. Ele permite que os aplicativos incluam trilhas sonoras interativas no formato MIDI que respondem em tempo real a eventos de jogos e interações do usuário.

O JET funciona em conjunto com o Embedded Audio Synthesizer (EAS) da SONiVOX, que é o dispositivo de reprodução de MIDI para Android. Os mecanismos JET e EAS são integrados à plataforma incorporada do Android por meio da classe JetPlayer, além de serem inerentes ao aplicativo JET Creator. Assim, o autor do conteúdo do JET pode ter certeza de que a reprodução será exatamente igual no JET Creator e no app Android final em dispositivos móveis Android.

Além da interface gráfica do usuário, existem duas funcionalidades principais no JET Creator. O primeiro envolve a coleta de todos os dados de origem (arquivos MIDI e DLS), a adição de atributos em tempo real do JET e a criação de um arquivo JET (.jet) que será usado pelo aplicativo para Android. A segunda funcionalidade envolve o teste dos elementos interativos de reprodução, conforme eles ocorrerão no aplicativo Android.

O aplicativo JET Creator é escrito na linguagem de programação Python. Portanto, você precisa ter a versão atual do Python e do WXWidgets instalada. Há uma versão para Mac e para Windows.

1.2 Abreviaturas e termos comuns

É importante usar um conjunto comum de termos para minimizar a confusão. Como o JET usa MIDI de uma maneira única, os termos normais do setor nem sempre são suficientes. Veja a seguir a definição dos termos usados nesta página e no aplicativo JET Creator:

Canal: dados MIDI associados a um canal MIDI específico. MIDI padrão permite 16 canais de dados MIDI, cada um geralmente associado a um instrumento específico.

Controlador: um evento MIDI que consiste em um número de canal, um número de controlador e um valor de controlador. A especificação MIDI associa muitos números de controladores a funções específicas, como volume, expressão, pedal de sustentação etc. O JET também usa eventos de controlador como um meio de incorporar informações de controle especiais em uma sequência MIDI para fornecer sincronização de áudio.

DAW: estação de trabalho de áudio digital. Termo comum para MIDI e aplicativos de sequenciamento de áudio, como Logic, SONAR, Cubase e outros.

EAS: Embedded MIDI Synthesizer. O nome do mecanismo do sintetizador SONiVOX MIDI.

JET: Jet Interactive Engine. Nome do mecanismo de música interativo SONiVOX JET.

M/B/T: medidas, batidas e marcações.

Segmento: uma seção musical, como um refrão ou estrofe, que faz parte da composição geral. No JET, um segmento pode ser um arquivo MIDI inteiro ou derivado de uma parte de um arquivo MIDI.

SMF-0: Standard MIDI File Type 0, um arquivo MIDI que contém uma única faixa, mas pode ser composto de vários canais de dados MIDI.

SMF-1: Standard MIDI File Type 1, um arquivo MIDI que contém mais uma faixas, sendo que cada uma delas pode ser composta por um ou mais canais de dados MIDI. Por convenção, cada canal é armazenado em uma faixa separada em um arquivo SMF-1. No entanto, é possível ter vários canais MIDI em uma única faixa ou várias faixas que contenham dados para o mesmo canal MIDI.

Faixa: uma única faixa em uma DAW com uma sequência de eventos cronometrados. Tenha cuidado para não confundir faixas com canais. Um arquivo MIDI pode conter muitas faixas com diversas faixas utilizando o mesmo canal MIDI.

2 Conceito de música interativa do JET

Música interativa pode ser definida como aquela que muda em tempo real de acordo com eventos não previsíveis, como interação do usuário ou eventos de jogo. Dessa forma, a música interativa é muito mais envolvente, porque consegue combinar a energia e o clima de um jogo muito mais perto do que uma composição pré-composta que nunca muda. Em alguns aplicativos e jogos, a música interativa é fundamental para o jogo. Guitar Hero é um jogo tão famoso. Quando o usuário final captura com sucesso as notas musicais que começam no jogo, a música se adapta e simultaneamente mantém uma pontuação de sucessos e fracassos. O JET também permite esses tipos de jogos de música.

Há vários métodos para criar e controlar músicas interativas, e o JET é um deles. Esta seção descreve os recursos do JET e como eles podem ser usados em um aplicativo de jogo ou software. Ela também descreve como o JET pode ser usado para economizar memória em dispositivos de pegada pequena, como celulares com Android.

2.1.1 Compactação de dados

O JET oferece suporte a um formato de música flexível que pode ser usado para criar sequências musicais estendidas com uma quantidade mínima de dados. Uma composição musical é dividida em segmentos que podem ser sequenciados para criar uma peça mais longa. O sequenciamento pode ser corrigido no momento em que o arquivo de música é criado ou pode ser criado dinamicamente sob o controle do programa.

2.1.2 Exemplo de música linear


Figura 1: música linear

Este diagrama mostra como os segmentos musicais são armazenados. Cada segmento é criado como um arquivo MIDI separado. Uma ferramenta de pós-processamento combina os arquivos em um único arquivo de contêiner. Cada segmento pode conter músicas alternativas que podem ter o som desativado ou ativado para gerar mais interesse. Um exemplo pode ser um sotaque de metal no refrão que é tocado apenas na última vez. Além disso, os segmentos podem ser transpostos para cima ou para baixo.

A parte de baixo do diagrama mostra como os segmentos musicais podem ser recombinados para criar uma música linear. Nesse exemplo, a ponte pode terminar com uma modulação de chave de meio degrau, e os segmentos restantes podem ser transpostos um pouco acima para corresponder.

2.1.3 Exemplo de música não linear


Figura 2: música não linear

Neste diagrama, vemos uma música não linear. O cenário é um jogo de tiro em primeira pessoa (QPS) e o JET oferece a música de fundo. A introdução é reproduzida enquanto o nível é carregado e, em seguida, faz a transição pelo controle do programa para o segmento de pesquisa. Esse segmento é repetido indefinidamente, talvez com pequenas variações (usando o recurso ativar/desativar som) até que a atividade no jogo imponha uma mudança.

À medida que o jogador se aproxima da toca de um monstro, o programa inicia uma transição sincronizada para o segmento Perigo, aumentando o nível de tensão no áudio. À medida que o jogador se aproxima do esconderijo, outras faixas são silenciadas para aumentar a tensão.

Quando o jogador entra em combate com o monstro, o programa inicia uma transição sincronizada para o segmento de combate. O segmento se repete indefinidamente durante a luta. Um hit bônus ativa temporariamente o som de uma faixa decorativa, que notifica o jogador sobre um ataque bem-sucedido. Da mesma forma, outra faixa é temporariamente ativada para indicar quando o jogador recebe dano especial.

No final do combate, a música muda para o segmento das vitórias ou derrotas com base no resultado.

2.1.4 Sincronização do recurso desativar/ativar som

O JET também pode sincronizar a ativação e desativação do som de faixas para eventos na música. Por exemplo, no jogo de QPS, é recomendável colocar os eventos musicais relacionados a bônus e danos o mais próximo possível do evento real do jogo. No entanto, simplesmente ativar o som de uma faixa no momento em que o evento do jogo ocorre pode fazer com que um clipe de música começa no meio do processo. Como alternativa, um clipe pode ser iniciado do início, mas não será sincronizado com as outras faixas musicais.

No entanto, com o mecanismo de sincronização do JET, um clipe pode ser iniciado no próximo momento oportuno e manter a sincronização. Para fazer isso, coloque vários clipes musicais curtos em uma faixa decorativa. Um evento MIDI no stream indica o início de um clipe, e um segundo evento indica o fim de um clipe. Quando o aplicativo chama a função de clipe JET, o próximo clipe na faixa pode ser reproduzido totalmente sincronizado com a música. A faixa pode ser silenciada automaticamente por um segundo evento MIDI.


Figura 3: sincronização do recurso de ativar/desativar som.

2.2 Sincronização de áudio

O JET oferece uma API de sincronização de áudio que permite que o jogo seja sincronizado com eventos no áudio. O mecanismo depende de dados incorporados no arquivo MIDI no momento em que o conteúdo é criado. Quando o mecanismo JET detecta um evento durante a reprodução, ele gera um callback para o programa do aplicativo. O tempo do callback pode ser ajustado para compensar qualquer latência no sistema de reprodução de áudio. Assim, o áudio e o vídeo podem ser sincronizados. O diagrama abaixo mostra um exemplo de um jogo de música simples que envolve pressionar as setas para a esquerda e para a direita de acordo com a música.


Figura 4: jogo de música

As setas representam eventos na sequência de música em que eventos de jogos precisam ser sincronizados. Nesse caso, a seta azul representa um momento em que o jogador precisa pressionar o botão esquerdo, e a seta vermelha é o botão direito. A seta amarela informa ao mecanismo do jogo que a sequência foi concluída. O jogador tem uma janela de tempo antes e depois do evento para pressionar a tecla adequada.

Se um evento for recebido e o jogador não tiver pressionado um botão, um timer será definido como metade da janela. Se o jogador pressionar o botão antes do fim do timer, o jogo vai registrar um sucesso. Caso contrário, o jogo vai registrar uma falha.

Se o jogador pressionar o botão antes de o evento ser recebido, um timer será definido para metade da janela. Se um evento for recebido antes do fim do timer, o jogo vai registrar um sucesso. Caso contrário, o jogo vai registrar uma falha. O jogo também pode incluir bônus para chegar perto do momento do evento real.

3 Visão geral da criação de conteúdo no JET

Para criar arquivos JET e ouvi-los sendo reproduzidos interativamente, o autor do conteúdo vai trabalhar em dois aplicativos, projetados para funcionar juntos sem problemas. O primeiro é qualquer aplicativo de sequenciamento MIDI compatível com plug-ins VST (para PC) ou AU (para Mac). Aqui, o autor compõe os arquivos de música MIDI usando o plug-in como dispositivo sintetizador. O segundo aplicativo é o JET Creator. Aqui, o autor importa os arquivos de música MIDI (e, opcionalmente, um conjunto de sons DLS2) e configura as condições para reprodução interativa no jogo ativado para JET. Opcionalmente, o autor do conteúdo pode criar um conjunto personalizado de instrumentos DLS usando um editor de instrumentos compatível com o formato DLS de nível 2. Um desses aplicativos é o Awave, da MJSoft.

Consulte a documentação das diretrizes de criação de conteúdo do JET para mais detalhes.

4 Instalar e abrir o JET Creator

O JET Creator é um aplicativo de linguagem Python. Portanto, você precisa ter o Python e o wxPython instalados na máquina.

O JET Creator foi criado e testado com:

Python versão 2.5.4

wxPython versão 2.8.7.1

É possível fazer o download em:

PC (links em inglês):

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

MAC (links em inglês):

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

Depois de instalar o Python e o wxPython, basta descompactar ou copiar todos os arquivos do diretório do aplicativo JET Creator para uma pasta no seu disco rígido.

Para iniciar o JET Creator, acesse um prompt de comando e defina o diretório em que você instalou o Python. Em seguida, execute python com o comando:

python jetcreator.py

5 Usar o JET Creator

5.1 Tipos de arquivos

Há alguns tipos de arquivos diferentes associados ao JET Creator.

Arquivo de projeto .jtc do JET Creator. Esse arquivo contém todas as informações associadas a um projeto do JET Creator. Quando você salva no JET Creator, esse tipo de arquivo é salvo.

Arquivo JET .jet. Esse arquivo de saída é gerado automaticamente pelo JET Creator sempre que você salva o projeto do JET Creator. Esse é o arquivo que agrupa todos os recursos do JET em um único arquivo usado pelo aplicativo para Android. Forneça esse arquivo ao desenvolvedor do aplicativo Android.

Arquivo .mid. Esse é o arquivo MIDI tipo 1 padrão que o JET Creator usará para criar segmentos.

Arquivo de segmento .seg. Esse é um arquivo de segmento JET. Ele tem o mesmo nome do arquivo MIDI a que faz referência, mas contém outras informações de segmento.

arquivo ZIP .zip. Quando você exporta um JET Archive, é criado um arquivo ZIP com todos os recursos (arquivos) necessários para o JET Creator. Use esse recurso para transferir os projetos do JET Creator para outras pessoas.

5.2 Abrir caixa de diálogo

Ao iniciar o JET Creator pela primeira vez, você vê uma caixa de diálogo aberta, como a seguinte.

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

Open abrirá um arquivo .jtc (arquivo do JET Creator) existente. Use o botão do navegador para navegar até o diretório em que você salvou o arquivo .jtc.

New criará um novo arquivo .jtc.

Import importará um arquivo JET Archive (.zip).

Cancel cancelará a caixa de diálogo e sairá do aplicativo.

5 Janela principal

A janela principal do aplicativo JET Creator é semelhante à imagem abaixo. Há três seções principais de cima para baixo: visualização de segmento, visualização de eventos e linha do tempo.

A seção de visualização de segmentos mostra uma lista dos segmentos atuais, de qual arquivo MIDI e (opcional) o arquivo DLS2 de cada segmento. Ele também mostra os horários de início e término de cada segmento, além de configurações de flag de quantização, transposição, repetição e silenciamento.

Logo abaixo da visualização "Segmento", está a visualização de eventos. A seção de visualização de eventos mostra todos os eventos associados a um determinado segmento. Os eventos só são mostrados quando o segmento a que foram atribuídos é destacado. Cada evento exibe o tipo, os pontos de início e término, a atribuição da faixa e do canal midi e o ID do evento.

Logo abaixo da visualização "Evento", está a linha do tempo. A linha do tempo mostra quantas medidas um determinado segmento tem, bem como todos os eventos associados a ele. A linha do tempo muda para exibir o segmento selecionado ou em reprodução no momento. Você pode acionar um evento nessa janela enquanto o segmento é reproduzido. Para isso, basta clicar no evento na exibição da linha do tempo.


Janela principal do JET Creator

Os botões no lado esquerdo da janela principal fazem o seguinte:

Adicionar: exibe o segmento ou a janela de evento para adicionar um novo segmento ou evento.

Revisar: exibe o segmento ou a janela de evento para atualizar um segmento ou evento existente.

Delete: exclui o segmento ou evento selecionado (é necessário confirmar).

Move: exibe a janela para mover segmentos ou eventos selecionados no tempo.

Queue All: enfileira (seleciona) todos os segmentos para reprodução.

Desqueue All: desenfile (desmarca) todos os segmentos

Play: inicia a reprodução de todos os segmentos na fila. Esse botão mudará para "Parar" se algum segmento estiver sendo reproduzido.

Audition: exibe a janela "Audition" (veja abaixo).

5.1 Janela de segmentos

A janela de segmento é onde os atributos de um determinado segmento são atribuídos e testados, como mostrado na imagem abaixo. O lado esquerdo da janela exibe os atributos de segmentos armazenados no arquivo JET. O lado direito da janela permite que o autor defina flags de silenciamento, configurações de repetição e transposição e teste o segmento como ele será reproduzido no jogo JET.

Observação: os atributos de teste (sinalizações de silenciamento, repetição e transposição) não são armazenados no arquivo de conteúdo JET (.jet), mas são definidos pelo próprio jogo ou app. Na linguagem de programação, essas configurações correspondem diretamente às chamadas de API para o mecanismo JET. Ao incluí-los aqui, o autor do conteúdo do JET pode simular como o segmento responderá aos comandos da API de aplicativos durante o jogo.

Os parâmetros de segmento fazem o seguinte:

  • Segment Name: define o nome do segmento.
  • MIDI File: o nome e o local do arquivo MIDI de que o segmento é derivado. O botão à direita imediata abre um navegador para localizar um arquivo midi no disco rígido.
  • DLS File: o nome e o local do arquivo DLS2, se houver, que o arquivo MIDI usa para esse segmento.
  • A partir de M/B/T: medidas, batidas e marcações do segmento
  • Ending M/B/T: medidas, batidas e marcações finais do segmento.
  • Quantize: valor de quantização para quantificar o segmento atual durante a reprodução.

Os campos de teste são os seguintes:

  • Track Mutes: mostra as faixas (não os canais) MIDI no arquivo MIDI. Clicar na caixa de seleção de uma faixa silencia essa faixa.
  • Channel: mostra o canal MIDI atribuído a cada faixa.
  • Name: exibe o metaevento do nome da faixa (se houver) para cada faixa.
  • Repetir: indica o número de vezes que um segmento deve ser repetido durante a reprodução.
  • Transposição: indica a transposição em semitons ou meios que um segmento precisa transpor durante a reprodução.
  • À direita da janela "Audition", há outros botões. Eles fazem o seguinte:
  • OK: confirma todas as configurações do segmento e fecha a janela do segmento.
  • Cancel: selecione "Cancel" cancela todas as mudanças e fecha a janela do segmento.
  • Replicate: mostra a janela "Replicate Segment" para inserir vários segmentos de uma só vez. Veja mais informações abaixo.
  • Play/Stop Segment: inicia ou interrompe a reprodução do segmento usando os atributos do segmento atribuídos.
  • Play/Stop MIDI File: inicia ou interrompe a reprodução do arquivo MIDI a que o segmento está atribuído.
  • Pause/Resume: pausa ou retoma a reprodução.

5.2 Janela de eventos

A janela de eventos é onde os atributos de evento de um determinado segmento são atribuídos e testados, como mostrado na imagem abaixo. Para adicionar um evento a um segmento, o autor precisa primeiro selecionar o segmento que conterá o evento e, em seguida, selecionar o botão "Add". Isso abrirá a janela Event.

Há duas seções principais na janela de eventos. A seção de segmento no lado esquerdo da janela de eventos é apenas para exibição. Ela mostra quais são os atributos do segmento em questão. A seção "Eventos", à direita, é onde os eventos podem ser atribuídos. Os seguintes parâmetros estão disponíveis:

Event Name: atribui um nome a um evento.

Event Type: seleciona o tipo de evento a ser atribuído.

Start M/B/T: define os valores iniciais de medidas, batidas e marcações do evento.

Ending M/B/T: define os valores finais, batidas e marcações do evento, se aplicável

Track: define a qual faixa do segmento o evento será aplicado

Channel: define a que canal MIDI o evento será aplicado. O canal MIDI precisa corresponder ao canal MI da faixa

Event ID: define o ID do evento. Vários eventos podem ser atribuídos ao mesmo segmento. Portanto, o ID do evento é usado para identificá-los

À direita da janela "Audition", há outros botões. Eles fazem o seguinte:

OK: confirma todas as configurações de eventos e fecha a janela de eventos.

Cancel: selecione "Cancel" cancela todas as mudanças e fecha a janela de eventos.

Replicate: mostra a janela "Replicate Event" para inserir vários eventos de uma só vez. Veja abaixo.

Play/Stop: inicia ou interrompe a reprodução do segmento usando os atributos do segmento atribuídos. Enquanto o segmento estiver sendo reproduzido, os eventos poderão ser acionados e testados.

Trigger: aciona o evento atribuído. Isso replica o comando de API que o jogo JET usará para acionar o evento, oferecendo ao autor do conteúdo um método para testar o comportamento do evento.

Mute/UnMute: ativa ou desativa o som da faixa a que o evento está atribuído.

Pause/Resume: pausa ou retoma a reprodução.

Para testar o comportamento de um evento, selecione o botão "Play". Isso iniciará a reprodução. Quando pressionado, o botão de gatilho enviará o evento acionador. Isso equivale a selecionar o evento acionador verde na linha do tempo.

Observação: os eventos de acionamento ativam o som de uma única faixa de um segmento quando acionados e, em seguida, desativam o som dessa faixa no final do segmento. Portanto, verifique se a sinalização de silenciamento está definida para desativar o som da faixa em que um evento acionador será ativado ao receber um evento acionador.

Leia a seção 6 Configurações avançadas abaixo para saber como os eventos acionadores funcionam e se comportam.

5.3 Janelas de replicação

Muitas vezes, ao criar arquivos JET, você precisa criar dezenas ou até centenas de eventos. Você também pode precisar mover eventos. As janelas de replicação e movimentação permitem isso. Há duas janelas "Replicate" para criar vários segmentos ou eventos. Eles são assim:

Janela "Replicate Segment"

Janela "Replicate Event"

As duas janelas de replicação funcionam da mesma maneira. Depois de criar um segmento ou evento inicial, você pode selecionar o botão "Replicate". Os parâmetros são os seguintes:

Name Prefix: define o prefixo do nome de cada segmento ou evento criado.

Start M/B/T: define o horário de início do primeiro segmento ou evento.

Increment M/B/T: define o tempo entre segmentos ou eventos criados.

Número: define o número de segmentos ou eventos que você quer criar. Se o número exceder a duração do arquivo MIDI (para segmentos) ou do segmento (para eventos), esses objetos não serão criados.

Preview: permite examinar os objetos criados antes de aceitar a inserção.

5.4 Janelas de movimento

A função "Mover" é semelhante à função "Replicate", porque permite editar vários segmentos ou eventos de uma só vez. Nesse caso, mova-os no tempo. Assim como "Replicate", há duas janelas "Mover", uma para segmentos e outra para eventos. As janelas vão ficar assim:

Janela "Move Event"

Para mover, selecione os segmentos ou eventos que você quer mover no tempo e clique no botão "Move". Os parâmetros são os seguintes:

Start M/B/T: define o horário de início do primeiro segmento ou evento.

Increment M/B/T: define o horário em M/B/T pelo qual você quer mover os objetos.

Preview: permite examinar os objetos criados antes de aceitar movê-los.

5.5 Janela de testes

Clique no botão "Audition" na janela principal do aplicativo JET Creator para abrir a janela "Audition". É nesse momento que o autor do conteúdo ou programador de aplicativos pode simular a reprodução interativa no aplicativo para dispositivos móveis ou no próprio jogo.

Janela "JET Audition"

Há quatro seções principais na janela de audição. A seção mais à esquerda mostra os segmentos disponíveis e a duração em segundos. A seção do meio mostra uma lista em execução dos segmentos que estão na fila para reprodução e qual é o status de reprodução deles. A seção mais à direita mostra as flags de silenciamento do segmento que está sendo reproduzido. A seção da linha do tempo na parte de baixo é igual à da janela principal. Ele mostra o segmento em reprodução no momento, além de uma exibição visual de todos os acionadores de eventos associados a esse segmento.

A janela "Audition" permite enfileirar qualquer segmento em qualquer ordem para reprodução. Para isso, selecione o segmento que você quer indicar e clique em "Queue". Esse segmento vai aparecer na janela da fila e começará a ser reproduzido (se for o primeiro segmento). Em seguida, você pode selecionar qualquer outro segmento ou segmento e adicioná-los para reprodução. À medida que os segmentos são concluídos, o próximo segmento na fila é iniciado. Assim como em outras janelas do JET Creator, é possível desativar o som, ativar o som, acionar clipes de eventos etc. em tempo real à medida que cada segmento é reproduzido.

Especificamente, os botões se comportam da seguinte maneira:

Queue: carrega o segmento selecionado na fila e inicia a reprodução.

Cancel and Queue: cancela o segmento em reprodução antes de enfileirar o segmento selecionado para reprodução.

Cancel Current: cancela o segmento em reprodução na fila e inicia a reprodução do próximo segmento.

Stop: interrompe a reprodução de todos os segmentos na fila.

Mute All: desativa todas as faixas do segmento atual.

Mute None: ativa o som de todas as faixas no segmento atual.

Original Mutes: define as sinalizações de silenciamento originais do segmento atual.

A combinação dessas opções de reprodução permite que um autor ou programador de aplicativos teste qualquer comportamento que um aplicativo de música interativo possa encontrar.

5.6 Menus do JET Creator

Os menus do JET Creator oferecem acesso a muitos dos parâmetros na janela principal, além de alguns outros parâmetros.

5.6.1 Menu "File"

O menu "Arquivo" contém os seguintes elementos:

New: cria um novo arquivo do JET Creator (.jtc).

Open: abre um arquivo existente do JET Creator.

Save: salva o arquivo do JET Creator aberto no momento.

Save As: salva o arquivo do JET Creator aberto atualmente em um novo arquivo.

Import Project: importa um arquivo do JET Creator (.zip).

Export Project: exporta um arquivo do JET Creator (.zip).

Exit: sai do aplicativo.

5.6.2 Menu "Edit"

O menu "Edit" contém os seguintes elementos:

Undo: desfaz a última edição feita.

Redo: refazer a última ação de desfazer

Cut: copia o parâmetro selecionado para a área de transferência e exclui a seleção.

Copy: copie o parâmetro selecionado para a área de transferência e mantenha a seleção

Cole: cole o parâmetro selecionado.

5.6.3 JET

O menu "Edit" contém os seguintes elementos:

Properties: abre a janela de prioridades do JET Creator. Essa janela permite definir as seguintes condições para um determinado arquivo JET:

Copyright Info: contém informações de direitos autorais a serem inseridas no arquivo JET.

Chase Controllers: opção de procurar controladores (ativada/desativada). Essa opção normalmente estará ativada.

Delete Empty Tracks: exclui todas as faixas MIDI vazias.

5.6.4 Segmentos

O menu "Segmentos" contém os seguintes elementos:

Adicionar segmento: abre a janela "Segmento"

Update Segment: atualiza os atributos do segmento.

Delete Segment: exclui o segmento atual da lista de segmentos.

5.6.5 Ajuda

O menu "Ajuda" contém pelo menos os seguintes elementos:

JET Creator Help: abre o documento de ajuda em PDF ou a ajuda on-line.

Sobre: número da versão do JET Creator, informações do SONiVOX

6 Sobre eventos acionadores

Dividir um arquivo MIDI em segmentos individuais (não lineares) e enfileirar esses segmentos para reprodução em um jogo com base em eventos dentro do jogo é uma maneira de os arquivos de música JET serem interativos. Os eventos acionadores são outro método para reprodução interativa. Ambos são usados juntos em um jogo ou aplicativo interativo.

Os eventos acionadores permitem o seguinte:

  1. As faixas dentro de um segmento MIDI podem ser ativadas ou desativadas com base em eventos do jogo. Por exemplo, o compositor pode criar duas faixas de bateria, uma rápida e outra lenta. Se a ação for rápida, a faixa de bateria rápida poderá tocar. Se a ação for lenta, o jogo poderá tocar a faixa de bateria lenta.
  2. As ações do usuário podem ser comparadas a eventos acionadores pré-inseridos em um arquivo de música em locais musicalmente corretos. Com base nos resultados, a pontuação ou outras ações do jogo podem ocorrer.
  3. Transições musicais entre níveis ou sequências de ação podem ser sincronizadas para serem musicalmente perfeitas.

Internamente, o JET usa eventos padrão de MIDI CC para realizar essas ações e sincronizar o áudio. Os controladores usados pelo JET estão entre aqueles não definidos para uso específico pela especificação. As definições específicas do controlador são as seguintes:

Controladores 80-83 reservados para uso pelo aplicativo

Controlador 102: marcador de evento JET

Controlador 103: marcador de clipe JET

Controladores 104-119 Reservados para uso futuro

6.1 Marcador de clipe JET (CC103)

O controlador 103 é reservado para marcar clipes em uma faixa MIDI que pode ser acionada pela chamada da API JET_TriggerClip. O ID do clipe é codificado nos 6 bits baixos do valor do controle. O bit 6 é definido como 1 para indicar o início de um clipe e como zero para indicar o fim de um clipe.

Por exemplo, para identificar um clipe com um ID de clipe 1, o autor insere um evento controlador MIDI com controlador=103 e valor=65 no início do clipe e outro evento com controlador=103 e valor=1 no final do clipe. Quando a função JET_TriggerClip() for chamada com um ID de clipe 1, o som da faixa será ativado quando o valor 65 do controlador for encontrado e silenciado novamente quando o valor 1 for encontrado.

Figura 5: clipe sincronizado.

Na figura acima, se a função JET_TriggerClip() for chamada antes do primeiro evento do controlador, a Faixa 3 não será silenciada quando ocorrer o primeiro evento do controlador, o primeiro clipe será reproduzido, e a faixa será silenciada quando o segundo evento do controlador ocorrer. Se a função JET_TriggerClip() for chamada após a ocorrência do primeiro evento do controlador, a Faixa 3 será silenciada quando o terceiro evento controlador ocorrer, o segundo clipe será reproduzido, e a faixa será silenciada novamente quando ocorrer o quarto evento controlador.

Observação:normalmente, a faixa que contém o clipe é silenciada pelo aplicativo quando o segmento é colocado na fila inicialmente pela chamada para JET_QueueSegment(). Se ele não for silenciado, o clipe sempre será reproduzido até que Jet_TriggerClip() seja chamado com o ID do clipe.

6.2 Marcador de evento JET (CC102)

O controlador 102 é reservado para marcar eventos nos streams MIDI que são específicos para a funcionalidade JET. Atualmente, o único valor definido é 0, que marca o fim de um segmento para fins de marcação de tempo.

Normalmente, o JET inicia a reprodução do próximo segmento (ou repete o segmento atual) quando o metaevento de fim da faixa MIDI é encontrado. Algumas ferramentas de criação de MIDI dificultam o posicionamento preciso do marcador de fim da faixa, resultando em problemas de sincronização quando os segmentos são unidos.

Para evitar esse problema, o autor pode colocar um marcador de fim de segmento JET (controlador=102, valor=0) no ponto em que o segmento será repetido. Quando o marcador de fim de segmento é encontrado, o próximo segmento é acionado. Se o segmento atual for repetido, a reprodução será retomada no início dele.

O marcador de fim de segmento também pode ser usado para permitir a conclusão de uma figura musical além do final da medida que marca o início do próximo segmento. Por exemplo, o autor do conteúdo pode criar um segmento de quatro barras com um preenchimento de bateria que termine na batida 1 do 5o compasso, uma barra além do final natural do segmento. Ao colocar um marcador de fim de segmento no final da 4a barra, o próximo segmento será acionado, mas o preenchimento de bateria continuará em paralelo com o próximo segmento, proporcionando continuidade musical.

Figura 6: marcador de fim de segmento.

6.3 Controladores de aplicativos (CC80-83)

O aplicativo pode usar controladores nesse intervalo para as próprias finalidades. Quando um controlador nesse intervalo é encontrado, o evento é inserido em uma fila de eventos que pode ser consultada pelo aplicativo. Alguns usos possíveis incluem a sincronização de eventos de vídeo com áudio e a marcação de um ponto em um segmento MIDI para enfileirar o próximo segmento. O intervalo de controladores monitorados pelo aplicativo pode ser modificado durante a inicialização.

7 Diretrizes para criadores do JET

7.1 Ordem das tarefas

Como sempre, é melhor discutir e projetar o esquema de música interativa com o desenvolvedor e o programador do jogo antes de começar a composição. Um plano e/ou uma especificação podem evitar que você tenha que refazer certas coisas quando o jogo estiver pronto.

Em geral, escreva primeiro sua música na DAW da sua preferência da forma como você costuma fazer, antes de dividir o arquivo MIDI final conforme necessário para o aplicativo. Em seguida, vá para o JET Creator e crie todos os segmentos da música na ordem mais fácil para visualizá-los durante a reprodução. Por fim, adicione os eventos JET para controlar os segmentos por meio do jogo para Android e teste-os conforme necessário no JET Creator. Salve o projeto no JET Creator e entregue o arquivo .jet ao programador para integrá-lo ao jogo. Depois da visualização, provavelmente haverá mudanças a serem feitas nos arquivos MIDI e nos atributos do JET Creator.

7.2 Preservar a memória

Se você estiver tentando preservar memória, escreva o menor número de arquivos MIDI possível e crie vários segmentos a partir deles. Por exemplo, um arquivo MIDI de 12 compassos com três seções de quatro compassos (A, B e C) pode criar uma música muito mais longa. Basta criar vários segmentos que referenciem esse único arquivo MIDI e ordená-los como quiser. Por exemplo, A, A, B, A, C, A, B, A, A criaria uma música de 36 compassos. Use o JET para adicionar repetições, transpor segmentos e ativar e desativar o som de faixas de maneira interativa para torná-las ainda mais interessantes.

7.3 Replicar

Para agilizar a adição de segmentos ou eventos, use o comando "Replicate". Ele pode adicionar vários segmentos ou eventos de uma só vez e usa um parâmetro de compensação e uma convenção de nomenclatura com prefixo para facilitar a leitura. O comando "MOVE" também é útil para mover vários eventos de acordo com um número definido de medidas, batidas ou marcações.

7.4 Opções interativas

Há vários conceitos de áudio interativo possíveis no JET. Veja alguns exemplos abaixo, mas esperamos que os desenvolvedores criem opções que não tenhamos imaginado! São estes:

7.4.1 Acionar vários segmentos

Neste método, o aplicativo aciona segmentos específicos com base nos eventos do jogo. Por exemplo, um ambiente com muita luta pode acionar o segmento 1, e um ambiente sem luta pode acionar o segmento 2. O uso de JET TriggerClips em conjunto com esse método cria ainda mais diversidade.

7.4.2 Matrizes de silenciamento

Neste método, o aplicativo aciona eventos de ativação e desativação de som para faixas específicas em uma única sequência MIDI. Por exemplo, um ambiente com muita luta pode tocar as faixas MIDI 1-16, e um ambiente sem luta pode tocar o mesmo arquivo MIDI, mas silenciar as faixas 9-16. O uso de JET TriggerClips em conjunto com esse método cria ainda mais diversidade.

7.4.3 Jogabilidade baseada em música

Jogos baseados em música são parecidos com o que é feito no Guitar Hero e JETBOY. O conteúdo musical determina como os eventos gráficos são exibidos. Em seguida, o aplicativo consulta a resposta do usuário aos eventos gráficos e modifica a música de maneira interativa de acordo com essa resposta. Nesse método, o jogo usa os eventos de aplicativo JET, além de controladores MIDI incorporados ao arquivo MIDI e lidos pelo jogo em tempo real. De acordo com a resposta do usuário, vários acionadores de segmento e/ou matrizes de silenciamento podem ser definidos.