MusicA – Tocando MIDI no MSX – Parte III

Continuando a série de artigos sobre musica no MSX, vou apresentar a vocês um software bem interessante que descobri em minha busca por uma maneira de converter MIDI para o MSX, estou falando do MusicAMSX Music Editor/Player.

Existe pouco registro sobre a autoria do MusicA na internet, porém analisando internamente os binários desse software, descobri que o mesmo pode ter sido feito na Holanda, antes de 1992, devido a strings encontradas com texto no idioma desse País e também devido a diversos samples possuir em seus comentários o ano de 1992 com textos em holandês.

A única certeza é que um dos Players presentes no disco do MusicA foi feito em 1996 pelo japonês, Keiichi Kuroda. O outro Player do MusicA parece ser de origem holandesa, porém não sei se é original do MusicA editor ou se foi adicionado ao pacote, mas com certeza o conjunto deve ter sido montado por algum entusiasta no decorrer dos anos. Infelizmente não há site oficial para nenhum desses softwares.

O pessoal da Nerlaska Studio, da Espanha e que faz softwares, principalmente games para diversas plataformas entre elas o MSX, desenvolveu um Editor baseado no MusicA, para Windows que na verdade é um plugin para o BlueMSX, onde o mesmo parece utilizar o MML do MSX-BASIC, através do comando PLAY.

Voltando ao MusicA, a característica mais interessante desse software é que ele suporta quase tudo o que existe em tecnologia de hardware musical para o MSX, ou seja, com o MusicA podemos ter as seguintes possibilidades sonoras:

  • 3 Canais de som PSG;
  • 9 Canais de som FM;
  • 5 Canais de som SCC;

.

Tudo isso totaliza incríveis 17 canais de sons, o que nos possibilita criar composições superiores a qualquer uma existente no MSX hoje, sem contar as que utilizam a MoonSound é claro.

Ou seja, exceto pela ausência de suporte a placas MoonSound-like, o MusicA suporta tudo o que já foi lançado em matéria de hardware para o MSX, o que o torna um dos mais bem sucedidos lançamentos em matéria de software musical para o MSX dos últimos anos e ainda devemos considerar o fato de que com o MusicA, podemos escrever musicas que utilizam apenas os 3 canais do PSG, ou seja, podemos compor e converter musicas MIDI para tocar em um MSX 1, sem a necessidade de alguma placa mais moderna.

O MusicA é composto por duas peças fundamentais para o nosso processo de conversão de MIDI para o MSX, que é o MML Editor e o BGM RePlayer.

Vamos falar a seguir sobre os dois modos de operação do MusicA.

MusicA MML Editor.

O modo de edição do MusicA se trata de um poderoso editor feito para quem está disposto a trilhar o caminho da construção e edição de composições diretamente em MML. Com ele você pode escrever comandos MML, como os descritos na parte 2 dessa série, e a partir daí executar e buscar erros nas músicas, ou até mesmo editar e corrigir imperfeições em trechos da composição.

O editor do MusicA grava o seu MML em um formato próprio (texto), com a extensão .MSD. Esse arquivo, assim como o MML gerado pelo 3MLEditor, é o código fonte que contém toda a música em formato MML, pronta para ser editada e executada no software.

Além disso,  é no editor que você tem acesso ao modo de compilação do MML para o formato BGM, que é aceito pelo KINROU5 BGM Replayer do MusicA.

Segue abaixo um exemplo de um arquivo MSD aceito pelo MusicA:

; MSD file generated by mml2msd compiler.
; CopyLeft (c) since 2011 by PlanetaMessenger.org.
;

;
; Channels definitions
;

FM1=C1,CH1
FM2=C1,CH2
FM3=C1,CH3
FM4=
FM5=
FM6=
FMR=
FM7=
FM8=
FM9=
PSG1=
PSG2=
PSG3=
SCC1=
SCC2=
SCC3=
SCC4=
SCC5=

;
; User custom MML definitions
;

C1=T200

;
; Channels MML content
;

CH1=T200V8>E16G+16C+16E16V10<A16>C+16V14<G+16>C+16<A16F+16E16A16>E16G+16C+16E16V10<A16>C+16V14<G+16>C+16<A16F+16E16A16R8A.
CH2=V14R1.R32C-16F+.F+32
CH3=V14R1.<F+16>D.D16

TIP

O arquivo MSD é dividido basicamente em duas seções:

  • Definição dos canais, organizados entre canais FM, PSG e SCC.
  • Definição das variáveis com o conteúdo MML a ser executado pelos canais.
MusicA - Editor

A imagem acima mostra a tela do editor do MusicA com um arquivo MSD, que é o formato MML padrão do MusicA, carregado e pronto para edição/execução.

Segue abaixo alguns atalhos de teclas aceitos pelo editor do MusicA:

  • F1 – Posiciona cursor no inicio do arquivo editado;
  • F2 – Posiciona cursor no final do arquivo editado;
  • F5 – Compila e executa o MML corrente no editor;
  • F3 – Pára execução do MML corrente no editor;
  • ESC – Aciona menu de opções do Editor (Manipulação de blocos de texto, opções de disco, configuração de canais);

.

Ao entrar nas opções de disco do menu principal (ESC -> D), temos as seguintes opções disponíveis:

  • ESC) QUIT – Volta ao Editor do MusicA;
  • 1) load MUSIC – Lê um arquivo MSD, que é o código fonte do MML, aceito pelo MusicA;
  • 2) load VOICE – Lê um arquivo de instrumentos do MusicA;
  • 3) save MUSIC – Salva arquivo (MSD) editado no momento;
  • 4) save VOICE – Salva arquivo de voz carregado no momento;
  • 5) save BGM – Compila o arquivo MSD e salva para o formato BGM (BackGround Music);

.

Após a edição de sua partitura MML, é claro que você desejará gravar o resultado de seu trabalho, então o menu de disco será amplamente utilizado, inclusive para compilar o MML do editor para um arquivo BGM, que é o arquivo utilizado pelo BGM Replayer, o que é feito pela opção 5 do menu de discos.

Apesar do editor aparentar ser simples, se trata de uma excelente ferramenta para criação de melodias para o MSX, porém nada melhor do que compor com instrumentos musicais reais aliado a possibilidade de edição profissional através softwares existentes na plataforma PC, então acredito que a utilização do editor do MusicA, será util apenas para que o arquivo MSD, seja convertido para BGM para que possamos utilizá-lo no MSX-BASIC, caso você não queira utilizar nada em BASIC, poderá utilizar o editor do MusicA apenas como um Player de áudio 🙂 .

Mas se você quer mesmo é desenvolver alguma musica para utilizar fora do editor do MusicA, então você precisa conhecer as duas opções de BGM Replayers que estão presentes no pacote do MusicA.

KINROU5 BGM Replayer.

Bom, estamos avançando e conhecendo cada vez mais algumas ferramentas úteis no MSX (e fora dele) que nos  possibilita ter musica de qualidade nessa plataforma de computadores.

Já sabemos o que é MML, como conveter MIDI para um formato MML proprietário do software 3MLEditor, também sabemos sobre como utilizar MML no MSX através do comando PLAY do MSX-BASIC e também conhecemos o editor de MML, chamado MusicA, que é similar ao 3MLEditor, mas que trabalha com um formato próprietário, que é o MSD.

Sabemos também que o editor do MusicA pode compilar o formato próprio (MSD) e convertê-lo para o formato BGM, que é utilizado em muitos jogos de MSX.

Mas fica a pergunta no ar. Como utilizar esse “bendito” BGM no MSX-BASIC, principalmente em meus jogos e programas ?

Existem dois players presentes no pacote compactado do MusicA, que pode ser obtido nesse site aqui, cujo funcionamento vou explicar a seguir.

O primeiro player está na imagem de disco 720K chamada datafunk.dsk e ao inserir essa imagem no seu emulador ou gravá-la em disquete de 3/12” para utilização em um MSX real, você terá acesso aos arquivos binários do KINROU5 , bem como alguns arquivos em BASIC que servem como exemplo de utilização das músicas BGM presentes  também no disco.

Segue abaixo as informações sobre cada um desses módulos, bem como sobre as funcionalidades programáveis do KINROU5, via MSX-BASIC.

Arquivos do Kinrou5 BGM Player

 

FILES “*.*”

  • REPLAY.BIN, GBAS07.SYS, GBAS07.LDR, KINROU05.DRV –  Esses arquivos juntos compõe o Player que poderá ser utilizado pelos seus programas em MSX-BASIC;
  • *.MSD – São arquivos MML aceitos pelo MusicA Editor e não tem funcionalidade fora desse programa, ou seja, é apenas um arquivo texto comum com conteúdo MML;
  • *.BGM – São arquivos de musica aceitos pelo player;
  • AUTOEXEC.BAS, NTSCFUNK.BAS – Código MSX-BASIC com exemplos de utilização dos comandos do player;
  • DATAFUNK.FLP – Sem uso conhecido;

Segue abaixo um programa MSX-BASIC que coloca o player em ação:

MSX-BASIC source code

10 COLOR 15,1
20 CLEAR:DEFINT A-Z
30 BLOAD“gbas07.ldr”,R
40 CMD LOAD (“datafunk.bgm”)
50 CMD PLAY
60 CLS:RESTORE
70 PRINT “DataFunk  ”
80 PRINT
90 PRINT
100 PRINT
110 PRINT “FMPAC + PSG”
120 PRINT
130 PRINT
140 PRINT”  press q to stop”
150 IF INKEY$=“q” THEN 170
160 GOTO 150
170 CMD STOP
180 CMD
190 CLS

Preste atenção na linha 30, onde é carregado o player através do comando BLOAD “gbas07.ldr”,R. Não se esqueça que os demais binários do player, conforme descrito anteriormente, são necessários para o funcionamento do mesmo, pois o GBAS07.LDR, é quem carrega esses arquivos.

O restante do “truque” continua na linha 40, onde o player aproveitou a palavra reservada, CMD do MSX-BASIC, adicionou a rotina do player ali para que pudessemos, através do MSX-BASIC, comandar suas ações.

Abaixo eu deixo o texto retirado do MSX Technical Handbook e que descreve como implementar funções adicionais ao MSX-BASIC utilizando essa palavra reservada.

TIP (In English please)

4.3 Making New Commands

In MSX the reserved words “CMD” and “IPL” are currently unused and by changing the pointers to these words (FE0DH and FE03H) to jump to your own assembly language routine, new commands can be built.

Os parâmetros aceitos pelo player via CMD são os seguintes:

  • LOAD( “NOME_ARQ.BGM”) – Carrega um arquivo BGM para execução;
  • PLAY – Inicia a execução da música BGM;
  • STOP – Pára a execução da música BGM;

.

É bem simples assim e com um pouco de traquejo, podemos até fazer um programa que crie excelentes interfaces com o usuário.

REPLAY.BIN

O outro player é o REPLAY.BIN que está presente no disco principal do MusicA (musica.dsk) possibilita, assim como o KINROU5, a integração com o MSX-BASIC. Segue abaixo um código MSX-BASIC, retirado do próprio pacote do MusicA (LOADMUS.BAS), que poderá ser utilizado como exemplo de utilização desse player.

MSX-BASIC source code

10 CLEAR 200,&HA5B6 : DEFINT A-Z : DIM A(1)
20 BLOAD“REPLAY.BIN”:BLOAD“KNIGHT.BGM”
30
40 DEFUSR0=&HCE00:‘ Init muziekdata
50 DEFUSR1=&HCE03:‘ Start muziek (a=usr(xx):xx=adres muziek)
60 DEFUSR2=&HCE06:‘ Stop muziek
70 DEFUSR3=&HCE09:‘ Fade controller (a=usr(xx):xx=volume)
80 DEFUSR4=&HCE0C:‘ PSG kanalen aan/uit?? (a=usr(xx):xx=kanalen keuze)
90
100 RESTORE190:FOR A=&HAFF7 TO &HAFFF:READ F : POKE A,F : NEXTA
110 A=USR0(0):A=USR3(4)
120 A(0)=0
130 A(1)=&HA5B7: ‘ Beginadres muziekstuk
140 A=USR1(VARPTR(A(0)))
150 FOR W=0 TO 8:A=USR3(PEEK(&HAFF7+W)):FOR P = 1 TO 60 : NEXT P : NEXT W : ‘FADE IN
160 FOR W=8 TO 0 STEP -1 : A=USR3(PEEK(&HAFF7+W)):FOR P=1 TO 60 : NEXT P : NEXT W : ‘FADE OUT
170 PRINT“A=USR2(0) ‘Stopt de muziek” : END
180 ‘ Data fade in
190 DATA 4,5,6,2,13,3,12,14,15

Ao contrário da facilidade do código MSX-BASIC do KINROU5, o REPLAY.BIN é um pouco mais complicado de se programar, porém existe a vantagem dos efeitos FADE ON/OFF.

Na linha 20 BLOAD“REPLAY.BIN”:BLOAD“KNIGHT.BGM”, temos a carga do binário do REPLAY.BIN juntamente com o arquivo de música, KINGHT.BGM.

A partir daí, as linhas 40 até 80, definem as rotinas desse Replayer, com as possibilidades de PLAY (linha 50), STOP (linha 60), controladores de Fade On/Off ( linha 70).

Esse replayer é bastante poderoso porém existe um ponto de instabilidade que causa o travamento da máquina e ocorre quando você tenta carregar outra musica no replayer sem parar a música que está em execução, ou seja, certifique-se de chamar a rotina que pára a música, no caso do exemplo acima com a chamada a USR2(0), antes de carregar outra música.

Conclusão

Estamos no fim da terceira parte dessa série de artigos sobre música no MSX e já temos compreensão de grande parte do processo de transporte de uma música MIDI para o MSX, porém faltou uma peça aí no meio do caminho que é um procedimento para transformar arquivos em formato MML, gerados pelo 3MLEditor, para os arquivos MSD suportados pelo MusicA para enfim convertê-los em BGM e acessá-los pelo MSX-BASIC ou qualquer outro software que suporte esse formato.

O último artigo da série irá explicar sobre o  compilador de linha de comando que desenvolvi, denominado mml2msd, e que é capaz de converter arquivos MML para MSD, aplicando diversos filtros de conversão em cima do MML original, afim de que o MML final (MSD), seja compreensível pelo MusicA, uma vez que o MML aceito por esse software não é 100% compatível com o gerado pelo 3MLEditor.

Bom, vou ficando por aqui e brevemente estarei liberando o último artigo da série, sobre música no MSX.

Aguardem as novidades e, repetindo as sábias palavras do jovem mestre intergaláctico, o ET Bilu, principalmente que busquem conhecimento 🙂 .

[]’s

PopolonY2k

Referências na internet

MusicA Tools
http://www.nerlaska.com/msx/musica.html

MusicA – Download
http://woolyss.com/chipmusic/chipmusic-mml/MuSICA.zip

MML Resources
http://woolyss.com/chipmusic-mml.php

Nerlaska Studio
http://www.nerlaska.com

Konami SCC
http://en.wikipedia.org/wiki/Konami_SCC

MoonSound Wikipedia
http://en.wikipedia.org/wiki/Moonsound

MusicA – Tocando MIDI no MSX – Parte II
http://www.popolony2k.com.br/?p=742

Takamichi’s Konami and other MSX Music Resources
http://www.msxnet.org/gtinter/konamuus.htm

Print Friendly, PDF & Email

8 thoughts on “MusicA – Tocando MIDI no MSX – Parte III”

  1. Ah! CMD play! foi com ele que eu programei o demo há algum tempo atrás! por isso que o basic ficou com música de fundo ^_^

    1. Hi friend. Thank you by the excellent work made in your fantastic site, with high quality information about music’s softwares for 8 bit computers’ fans.

      PopolonY2k

  2. Nice article! congratulations!
    i hope to continue my work in the Music Editor because i would want my own music system for my future MSX games. If i will create a new version of this software i will report you. Thank you for your comments 🙂

    1. Hi Friend,

      Thanks for posting your comments about the article here and thanks for the excellent work made on your Music Editor, is really very useful. I did some MML musics with it, for my article.
      I appreciate your work at Nerlaska Studios and I hope that you make MSX’s software, soon as possible. 🙂

Leave a Reply