Manual do utilizador

Sintaxe MIDI

O OnSong utiliza uma sintaxe baseada em texto para expressar comandos MIDI. Embora possa utilizar os Eventos MIDI no Editor de Metadados, também pode expressar comandos MIDI em texto.

Valores Delimitados

Em primeiro lugar, múltiplos comandos MIDI podem ser separados por vários caracteres, incluindo: um carácter de tabulação, vírgula, ponto-e-vírgula, barra vertical ou nova linha. A vírgula é o delimitador mais comum. Por exemplo:

1.2:0@0, PC1.2:3@0, N67@1, START, SS8

Canal

Cada entrada pode conter um símbolo @. O valor numérico após o símbolo é o canal no qual o comando deve ser enviado. Como os canais em MIDI começam em zero, o canal um seria um zero (0), o canal dois um (1), etc.

Se nenhum símbolo @ for utilizado, o comando é enviado ou recebido em todos os canais.

Prefixos

Cada entrada na lista contém um prefixo. Este prefixo determina que tipo de comando MIDI enviar. Estes incluem:

  • PC ou Sem Prefixo é um evento de mudança de programa.
  • N é um evento de nota
  • CC é um evento de mudança de controlo.
  • NRPN é um número de parâmetro não registado.
  • SS é um evento de selecção de música.
  • START é um comando de início.
  • STOP é um comando de paragem.
  • CONTINUE é um comando de continuação.
  • WAIT aguarda um período de tempo específico antes de enviar mais eventos.
  • F0 prefaça uma mensagem SysEx.
  • @ prefaça uma etiqueta global MIDI.

Valores

O valor do comando aparece imediatamente antes do símbolo @ ou no final da entrada se nenhum @ for fornecido. Este é o valor da mudança de programa, mudança de controlo, nota ou selecção de música com base no prefixo. No caso de entradas SysEx, o valor hexadecimal do SysEx é fornecido directamente após o prefixo F0 que é utilizado como cabeçalho para todos os comandos SysEx.

Subvalores

Em alguns casos, informações adicionais são transmitidas no comando MIDI como subvalores. Por exemplo, MSB e LSB, bem como velocidade de valores de controlo podem ser enviados desta forma. Isto é expresso através da adição de dois-pontos na parte de valor. O subvalor tem um contexto diferente dependendo do tipo de comando MIDI enviado:

  • Mudança de Programa tem subvalores alinhados com o MSB/LSB da mudança de programa. Estes valores são separados por um período com o MSB à esquerda e o LSB à direita.
  • Mudança de Controlo tem o valor do controlo definido com isto. O número pode estar entre 0 e 127. Se omitido, o valor 127 é inferido. Também pode separar múltiplos valores com um hífen para percorrer valores. Por exemplo, 127-0 vai fixar o valor 127 entre os estados ligado e desligado.
  • Evento de Nota tem um subvalor relacionado com a velocidade em que a nota deve ser tocada. Isto pode ser definido para um valor numérico entre 0 e 127. Pode percorrer múltiplas velocidades de nota separando-as com um hífen.

Exemplos

Vamos começar com uma simples mudança de programa. Neste cenário utilizamos a mudança de programa 8 que também envia um MSB de 4 e um LSB de 2 no canal 1. O exemplo começa com a variação mais complexa desta e remove a selecção de banco e o canal para se tornar mais geral:

PC3.1:7@0, 3.1:7@0, 3:7@0, 3:7, 7@0, 7

As mudanças de controlo são semelhantes, excepto que o lado esquerdo da sintaxe é o número de mudança de controlo e o lado direito é um valor opcional. Se o valor não for fornecido, 127 é enviado em seu lugar. Vamos enviar a Mudança de Controlo 106 com um valor de 64 no canal 3.

CC105:63@2, CC105:63. CC105@2, CC105

Agora vamos dar uma olhada aos eventos de nota. Queremos tocar C4 no canal 8 a 75% de velocidade, iríamos introduzir o seguinte porque o OnSong começa a contar MIDI C0 como 0 na escala de nota MIDI:

N60:95@7, N60@7, N60:95, N60

Novamente, é importante lembrar que conforme os valores são removidos da sintaxe MIDI, a declaração MIDI torna-se mais geral e menos específica. Por exemplo, a última versão do evento de nota enviará C4 a 100% de velocidade em todos os canais.

Também podemos atrasar MIDI adicionando um comando WAIT. O seguinte atrasará o MIDI durante 2 segundos bem como 500 ms (meio segundo). Pode especificar segundos como 1-10 segundos ou em milissegundos.

WAIT2, WAIT500

Por fim, podemos referenciar globais MIDI que são listas pré-configuradas de eventos MIDI que podem ser referenciados. Se tiver um global MIDI com «on» como etiqueta (sem aspas), pode referenciar esse global com o seguinte:

@on
OnSong 2026 — Última actualização em March 11, 2020