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

MusicA – Tocando MIDI no MSX – Parte II

Conforme prometido no post anterior, vamos começar a destrinchar o processo de conversão de MIDI para algo que MSX consiga tocar.

Para quem não sabe, MIDI (Musical Instrument Digital Interface) é um padrão de comunicação entre instrumentos musicais e que permite o intercambio de informações entre dispositivos musicais eletrônicos, sejam esses diferentes entre sí ou até mesmo de fabricantes diferentes.

Vou reproduzir abaixo o texto da Wikipedia que descreve com exatidão sobre o MIDI e sua origem.

Diferentemente de outros formatos (como o formato WAV e MP3), um arquivo MIDI não contém o áudio propriamente dito, e sim as instruções para produzi-lo, ou seja, é basicamente uma partitura digitalizada. Essas instruções definem os instrumentos, notas, timbres, ritmos, efeitos e outras características que serão utilizadas por um sintetizador para a geração dos eventos musicais.

Até a década de 70, a comunicação entre instrumentos musicais era algo impraticável. Foi quando um grupo de fabricantes (os mais conhecidos da época) desenvolveu o padrão MIDI (Musical Instrument Digital Interface). Este padrão permite o envio de mensagens de controle entre instrumentos eletrônicos digitais ou analógicos, e é, portanto, uma representação de eventos e não de som digitalizado.

A escolha pelo MIDI foi justamente pelo fato do mesmo ser um padrão bem estabelecido e respeitado por todos os fabricantes de instrumentos musicais e também pelo fato de existir diversos softwares para PC capazes de editar, manipular e aperfeiçoar um trabalho em MIDI, pois a excelência desses softwares para PC ajudam a garantir a qualidade de execução do MIDI em qualquer plataforma, incluindo o MSX, que é carente de softwares desse tipo.

No universo MSX é conhecido que no MSX Turbo-R A1GT, a última versão de MSX lançada, existe a capacidade de manipulação de MIDI, ou seja, esse computador é um dispositivo MIDI-Compatible, podendo se comunicar com instrumentos musicais externos e executar musicas MIDI, através de extensões em seu hardware, além de  uma ROM com extensões em software para utilização de toda capacidade MIDI desse computador.

OBS: Como desejamos desenvolver softwares que rodem a partir da plataforma MSX 2.0, esse MSX (Turbo-R A1GT) não pode ser considerado como base, apesar das capacidades e facilidades que o mesmo possui para gerenciar e se comunicar com dispositivos MIDI.

Mas um MSX 2.0 é capaz de tocar MIDI ?

Bom, eu tenho conhecimento de alguns softwares que são reconhecidos por tocar  e possibilitar a edição de MIDI diretamente no MSX, sem alguma conversão (???), como é o caso do Meridian, porém na prática os altos requisitos de hardware para a utilização do mesmo (512Kb Memory Mapper) o torna inviável para a maioria das máquinas  padrão (64Kb RAM), sem contar a impossibilidade de utilização pelo MSX-BASIC.

O que fazer então para que possamos usufruir do poder do MIDI no PC e transporta-lo ao MSX ?

A primeira coisa é estabelecer os requisitos mínimos de nossa plataforma para que, a partir daí, possamos começar a estudar essa plataforma e buscar soluções para esse ambiente conhecido.

Vamos à lista de requisitos mínimos da plataforma desejada:

  1. MSX 2.0;
  2. 64Kb RAM;
  3. Possibilidade de utilização de placas de som FM-PAC;
  4. Possibilidade de utilização de instrumentos modernos para composição das músicas;
  5. Possibilidade de edição da composição, podendo ajustar possíveis imperfeições;
  6. Possibilidade de execução das composições no MSX-BASIC;
  7. Possibilidade de transporte das composições para o MSX;

.

Bom, os itens 1 e 2 são básicos e não necessitam de maiores explicações, ou seja, é um requisito obrigatório pois queremos desenvolver algo para MSX 2.0 com 64Kb e não existe mais possibilidade de discussão sobre esses pontos.

O item 3 também é uma possibilidade muito interessante, embora não obrigatória.

O ítem 4 também é um fato consumado, pois se quisermos qualidade profissional nas composições, então devemos contemplar a possibilidade para utilização de equipamentos profissionais e para isso nada melhor do que a utilização de um protocolo bem estabelecido e aceito por todos os instrumentos, que possuem capacidade de comunicação com o mundo externo, que é o protocolo MIDI.

No item 5, mais um motivo para utilização do MIDI, pois o mesmo possui uma riqueza de softwares para PC, que possibilitam sua edição e aperfeiçoamento nessa plataforma.

Quanto aos itens 6 e 7……….ops……..

Enquanto perambulavamos pelo mundo dos instrumentos músicias e também no mundo dos PC‘s estava tudo perfeito, pois esses sistemas possuem riqueza de softwares musicais, porém ao entrar no mundo musical da plataforma  MSX, percebemos um universo desconhecido a ser explorado e desenvolvido.

MSX – Um universo musical desconhecido ?

Já conhecemos muito bem os requisitos mínimos de nossa plataforma, resta agora conhecer mais profundamente essa plataforma e uma das coisas que sabemos de imediato é que, tirando o Turbo-R A1GT, os MSX anteriores não possuem extensões MIDI builtin.

Até existem placas MIDI para um MSX anterior ao Turbo-R A1GT, porém são raras e certamente é um limitador para as nossas ambições de conquista do mundo 🙂 , logo estão fora de cogitação.

Como  resolver esse impasse ?

Bom, existem duas maneiras para resolver esse problema.

  1. A primeira é implementar o protocolo MIDI nós mesmos para os MSX anteriores ao Turbo R A1GT;
  2. Aprofundar um pouco mais nas estruturas internas do MSX afim de buscar alguma coisa “pronta“.

.

A primeira opção é linda para qualquer programador que adora desenvolver protocolos, como é o meu caso, porém nesse caso não posso me esquecer de que estou no meio de um desenvolvimento de um game e que os resultados do desenvolvimento devem ser menos demorados possíveis, para que não possamos perder o “pique“, por isso, pelo menos por enquanto, eu descartei essa possibilidade.

Só nos resta então analisar a segunda opção.….

….e é o que exatamente vamos começar a destrinchar.

Me lembro que na década de 80 eu lia aquele manual do HotBit de cabo a rabo em busca de informações técnicas e principalmente para aprender mais sobre a capacidade gráfica do MSX.

Não foram poucas as vezes que também digitei diversos exemplos sobre os comandos voltados para sons e músicas,  SOUND e PLAY do MSX-BASIC, pois eu adorava a capacidade sonora do MSX, principalmente os efeitos de percussão (bateria) que poderiam ser conseguidos pelo PSG dessa máquina, até comecei a fazer uma bateria eletrônica utilizando as portas de joystick dessa máquina, lá pelos anos de 1992, mas isso já é uma outra história.

O comando SOUND, no manual de BASIC do HotBit, era descrito superficialmente, sendo que um detalhamento de suas características estavam melhor descritas no Manual do Usuário do HotBit, por isso nunca me interessei em me aprofundar nesse comando, apesar de saber, na época, que se tratava de um comando poderoso e que você poderia escrever dados diretamente nos registradores do PSG e com isso obter um controle maior sobre o processador de som do MSX.

Já o comando PLAY era tratado pelo mesmo manual de uma maneira menos superficial, descrevendo em detalhes a Macro Linguagem Musical aceita pelo comando para compor uma música utilizando toda uma sintaxe simples baseada em letras, números e simbolos para descrever as notas musicais e compor a partitura que o MSX irá executar.

Macro Linguagem Musical, ……hummmm………..

Foi só continuar pesquisando sobre a tal Macro Linguagem Musical do MSX para chegar ao termo original, Music Macro Language, ou apenas MML.

MML – Music Macro Language

A Music Macro Language, ou MML, é originária dos interpretadores BASIC da Microsoft, bastante comuns e populares no final da década de 70 e durante toda a década de 80 e meados de 90.

A MML consiste de uma linguagem musical de alto  nível, onde as notas musicais são descritas por letras, sendo elas A, B, C, D, E, F, G que correspondem às notas Dó, Ré, Mi, Fá, Sol, Lá e , respectivamente.

A partir daí você tem uma série de macro instruções que utilizados em conjunto, formam a partitura utilizada pelo computador na execução de uma musica.

Segue abaixo a descrição de alguns comandos MML:

  • A até G – Especifica as notas músicais, que correspondem de até , em um teclado ou piano real;
  • T<n> – Especifica o tempo da música, em batidas por minuto, por exemplo T28, especifica o tempo de 28 BPM para um determinado canal;
  • < > – Utilizados para avançar uma oitava (>), ou voltar uma oitava (<) no teclado musical virtual do MSX;
  • @<n> – Especifica o instrumento a ser utilizado pelo canal de execução. Ex: @10;
  • V<n> – Especifica o volume de um canal. Ex: V15;

.

Esses comandos são repassados, via MSX-BASIC, ao processador de áudio do computador através de strings no comando PLAY.

MSX-BASIC code:

10 A$=“T10V15ABCDEFG”
20 PLAY A$

Dessa forma podemos, com facilidade, especificar partituras completas que serão executadas por um computador que entende MML.

O MSX é um dos melhores computadores de 8 bits, e também o mais mal aproveitado, no quesito software musical, pois o mesmo possui diversas extensões de hardware, padronizadas e não padronizadas, que são capazes de estender a capacidade desse computador podendo fazer frente, pelo menos no hardware, aos computadores atuais.

Se considerarmos um computador MSX 2.0, equipado com uma placa FM-PAC interna ou externa, contamos aí com um belo dispositivo, capaz de gerenciar até 9 canais simultâneos e ainda MIDI Compatible, pelo menos na questão de hardware.

Gerenciar 9 canais simultâneos, requer um pouco mais de traquejo tanto por parte do hardware, quanto pelo programador porém utilizando a MML é possível diminuir essa complexidade consideravelmente.

Vejamos por exemplo o caso de uma música com 5 canais simultâneos em MML:

MSX-BASIC code

10 DIM A$(5)
20 CALL MUSIC(0,0,1,1,1,1,1,1,1) : REM *** 9 Canais para som, sem percussão
30 A$(1) = “ABCDEF”
40 A$(2) = “GFDEC”
50 A$(3) = “GGGGG”
60 A$(4) = “ABABAB”
70 A$(5) = “DEDEDEDE”
80 PLAY #3, A$(1), A$(2), A$(3), A$(4), A$(5)

Ou seja, podemos fazer excelentes melodias em MSX-BASIC, desde que cada canal não tenha mais do que 255 caracteres na string MML, limite esse da capacidade de uma string do MSX-BASIC.

Com todas essas informações descobri que MML é muito utilizada na composição de músicas para NES e Super NES, sendo utilizada até os dias de hoje por grupos que ainda desenvolvem jogos para essas plataformas e existe ainda um ferramental grandioso que auxilia os músicos na criação de composições para games desenvolvidos para essas plataformas, o que faz do MML muito popular no Japão.

WARNING:

Em minhas pesquisas encontrei muito material para NES e Super NES e descobri também que por não se tratar de um padrão de facto, os códigos MML não são obrigatoriamente compatíveis entre as diversas plataformas e algumas vezes nem entre softwares em uma mesma plataforma.

Precisamos agora arrumar um jeito de converter um arquivo MIDI para MML, para que assim possamos cumprir a meta 6 de nossos requisitos mínimos, que é a possibilidade de execução da composição via MSX-BASIC, conforme citado anteriormente.

Após pesquisar a internet inteira 🙂 em busca de um software com essa capacidade, eu estava chegando a conclusão de que eu teria que implementar um Player que entendesse pelo menos o protocolo MIDI e quem sabe no futuro tentar uma conversão de General MIDI, para MML. Inclusive já estava estudando novamente o livro Maximum MIDI que adquiri em 2000, justamente quando eu estava cogitando, naquela época, enfim, concluir a minha bateria eletrônica de 1992, mas isso é outra história.

Nesse momento encontrei em um site japonês, não poderia ser diferente, parte da solução para o problema da conversão de MIDI para MML, o 3MLEditor, ou apenas 3MLE.

3ML Editor

Esse editor é simplesmente fenomenal para o que precisamos, pois ele é capaz de importar MIDI e salvar em um formato próprio, que é na verdade um arquivo texto que contém os canais juntamente com comandos MML.

3MLE - 3MLEditor

Segue abaixo um exemplo de um MML gerado pelo 3MLE:

[Settings]
Title =
Source =
TimeBase = 32
TimeSignatureNN = 4
TimeSignatureDD = 4
Instrument1 = 128
Instrument2 = 128
Instrument3 = 128
TrackName1 = Track1
TrackName2 = Track2
TrackName3 = Track3

[Channel1]
//Ý’聄MIDIÝ’聄DLS‚‰¹Ž¿„
//ƒ}ƒrƒmƒM‚ÌMP3ƒtƒHƒ‹ƒ_“à‚Ì
//MSXspirit.dls‚ðŽw’肵‚Ä‚­‚¾‚³‚¢

//Ž©ì‚Æ‹U‚ç‚È‚¢•”„‚ç‚È‚¢‚Å‚­‚¾‚³‚¢
//ƒ}ƒrƒmƒM“à‚ł̉‰‘t‚Í‚²Ž©—R‚É

//‡}—pƒƒgƒ«ƒRƒsƒy‚Å
//MML@v15aaa>a
//http://cure.chu.jp

//Œ·ŠyŠíƒŠƒ…[ƒg„§

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.
[Channel2]
v14r1.r32c-16f+.&f+32
[Channel3]
v14r1.<f+16>d.&d16

Apesar de, aparentemente, o arquivo acima ainda ser complexo, quem conhece um pouco de MML sabe identificar o conteúdo MML no mesmo, bem como os canais para tentar extrair alguma coisa,  e principalmente quem conhece o protocolo MIDI internamente sabe que esse arquivo MML acima é muito mais amigavel do que qualquer MIDI e seus timers, eventos, sysex, etc etc etc….

Uma das coisas que aprendi nesse intervalo de tempo em que estou escrevendo ferramentas para manipular MML, foi como identificar o MML gerado pelo 3MLE e uma das primeiras coisas que ele faz é configurar o tempo da melodia para todos os canais e na maioria das vezes esse tempo está no primeiro canal e deve ser sempre setado em todos os canais, nesse caso T200.

Segue abaixo um exemplo de uma conversão manual, para o MSX-BASIC, desse arquivo MML gerado pelo 3MLE:

MSX-BASIC code:

10 CLS
20 REM
30 REM ******* MML definition ********
40 REM
50 DIM A$(2)
60 T$=“t200” : REM *** Tempo de todos os canais ***
70 A$(1)=“v8>e16g+16c+16e16v10<a16>c+16v14<g+16>c+16<a16f+16e16a16”
80 A$(2)=“>e16g+16c+16e16v10<a16>c+16v14<g+16>c+16<a16f+16e16a16r8a.”
90 B$=“v14r1.r32c-16f+.&f+32”
100 C$=“v14r1.<f+16>d.&d16”
110 REM
120 REM **** Start play MML ****
130 REM
140 PLAY #2,T$, T$, T$
150 PLAY #2,A$(1)+A$(2),B$,C$

Essa é a forma mais simples de converter um MML gerado pelo 3MLE, para o MSX-BASIC, porém nem tudo são flores pois existem algumas restrições, conforme citarei abaixo, e outras que citarei nos artigos seguintes:

  1. Devido a limitação de 255 bytes por linha no MSX-BASIC, é impossível escrever um canal inteiro com musicas MML que ultrapassam esse limite, devendo o programador escrever rotinas para bufferização de comandos MML, por canal e em MSX-BASIC;
  2. O MML gerado pelo 3MLE tem um bom nível de compatibilidade com o MML do MSX-BASIC, porém há restrições em alguns comandos e por isso desenvolvi um compilador, que será apresentado no último artigo, que corrige essas inconsistências gerando um MML 100% compatível com o MSX.
  3. Alto grau de complexidade para desenvolver um player, codificado em MSX-BASIC, utilizável em outros projetos;

.

Bom, vou finalizando a parte 2 dessa série de artigos que estou escrevendo sobre musica  no MSX. No próximo artigo escreverei sobre uma outra peça bem interessante que descobri no universo MML que estamos desbravando, que é um editor chamado MusicA e que também entende MML, sendo esse capaz de compilar um MML para o famoso formato, BGM, amplamente utilizado em jogos no MSX.

Por fim, no ultimo capítulo da série vou apresentar o compilador que automatiza a conversão e compatibiliza possíveis códigos MML inválidos para o utilização no MusicA.

Fique antenado….já, já tem mais.

[]’s

PopolonY2k

Referências na internet

Meridian – MIDI editor/player para MSX.

http://www.opl4.nl/

MML – Music Macro Language

http://en.wikipedia.org/wiki/Music_Macro_Language

Protocolo MIDI

http://pt.wikipedia.org/wiki/MIDI

Projeto MSX Livros – O maior acervo de livros escaneados para MSX da internet.

http://msxlivros.blogspot.com/

Maximum MIDI Toolkit

http://www.maxmidi.com/

3MLEditor (3MLE)

http://3ml.jp//

MSX Music Editor/Player

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

  1. Possibilidade de utilização via MSX-BASIC;
Print Friendly, PDF & Email

MusicA – Tocando MIDI no MSX – Parte I

Não preciso nem citar as diversas fontes de estudos que demonstram que a música é capaz de transformar o “estado de espírito” das pessoas, isso é um fato e principalmente um fato que comprovamos em nossos diversos anos de jogatinas no MSX pois existem jogos excelentes cuja trilha sonora ou é pífia ou inexistente e com isso os mesmos passam despercebidos pela maioria dos usuários dessas máquinas.

Já outros são lembrados e cultuados até os dias de hoje, é o caso de games como Penguin Adventure, Snatcher/SD Snatcher, Fray, a série Xak, a série Nemesis/Gradius, a série Aleste dentre outros que, para mim, tiveram grande parte de seu sucesso creditado a suas trilhas sonoras e serei mais ousado ainda, 50% do sucesso desses clássicos deveria ser creditado a essas trilhas sonoras.

Isso pode ser percebido através da importância que as produtoras de games da época davam à suas produções sonoras tanto que existiam, já naquela época, equipes de compositores dedicados a seus games, diferente de muitos dos pioneiros da produção de games que trabalhavam apenas a parte de técnicas de programação, ou a parte gráfica, deixando a parte sonora resumida a blip’s e blop’s.

E exemplo mais conhecido é da famosa produtora de games para o MSX e para outras plataformas até os dias de hoje, a Konami, que possuia já na década de 80 uma equipe de músicos especializada nas músicas de seus títulos, denominada Konami Kukeiha Club, que foi a equipe responsável pela maioria das músicas dos games lançados pela Konami na maioria das plataformas em que a produtora lançava seus títulos naquela época.

O assunto, produção musical, é tão sério que o sucesso do departamento musical da Konami inspirou a criação de um outro grupo, o Kuheika Club, formados por membros da Konami Kukeiha Club (Chiptune) e que tocavam muitas das musicas compostas por eles mesmos para os games da Konami mas com instrumentação real. Algumas piratohouses brasileiras da época vendiam fitas cassete, com os trabalhos da Kuheka Club, que pelo que me parece eram lançados pela própria Konami em CD no Japão, eu mesmo adquirir alguns cassetes (ou apenas K7) dessas piratohouses lá por 1989/1990.

A realidade do MSX no Brasil

…após o término de sua fabricação no cenário nacional, principalmente na parte de software, é quase tão ruim quanto na época de ouro do MSX, pois poderíamos ter feito muito mais coisas do que fizemos.

Felizmente os True Hackers na parte de hardware ainda continuaram ativos e produzindo inovações em hardware para MSX, dentre eles cito Ricardo Oazem (Tecnobytes) e Ademir Carchano (ACVS), o que nos dá uma sobrevida na parte de hardware.

Na parte de software devemos considerar que na decada de 80 o fator falta de conhecimento pesava bastante, pois a própria micro-informática ainda engatinhava naquela época, mas o tempo mudou e as pessoas engajadas no universo MSX na época, e que detém um maior conhecimento hoje, talvez não queiram mais saber de ouvir falar em MSX, nem pelo saudosismo.

Nesse cenário obscuro percebemos que fazer ferramentas para MSX é um terreno fértil aqui no Brasil e o MSX é um plataforma excelente para exercitarmos boas práticas para desenvolver produtos que tenham muitos recursos de software com poucos recursos de hardware, o que é exatamente a praia daqueles que desejam se aventurar em desenvolvimento para sistemas embarcados.

Apesar de estarmos muito atrasados nesse cenário do universo MSX, nunca é tarde para começar e foi por isso que lancei o projeto Old Skool Tech no Sourceforge.net, que é onde estou recuperando os fontes de alguns softwares que fiz para MSX na década de 80/90, bem como para deixar ali registrado todo e qualquer novo desenvolvimento realizado, a partir daqui, para o MSX e outras plataformas antigas.

Musica no MSX

Voltando ao foco sobre musica no MSX, vale ressaltar que um MSX original (MSX 1) é dotado de capacidades sonoras bem avançadas, não só para a época mas também nos dias atuais, haja vista trabalhos realizados por grupos especializados em fazer músicas para computadores antigos (MSX, ZX Spectrum, Commodore 64, …). Esse tipo de música é conhecida por Chiptune e existem alguns grupos que se destacam nesse cenário, como 8BitPeople.

A grande maioria desses computadores antigos, exceto o C64 que tinha o SID 6581, tinham como seu processador de áudio o chip da General Instruments, o AY-3-8910, que possui 3 canais de som, porém o MSX possui algumas vantagens pois possui extensões padronizadas como o MSX-MUSIC com chips FM OPPL YM2413 e algumas outras mais interessantes ainda como a MoonSound com o seu impressionante YMF278 OPL4 e todo esse conjunto, acredito eu que, transforma o MSX na melhor plataforma sonora de 8 bits existente.

Porém, nenhuma dessas peças de hardware tem valor se não houver nada para controla-las, principalmente senão existir uma forma de reprograma-las a medida que nossas necessidades aumentam e é no momento que chegamos nessa encruzilhada que percebemos que o MSX no cenário internacional está bem servido de grupos que desenvolvem ou desenvolveram ferramentas que tiram proveito ao máximo dessa excelente plataforma, como é o exemplo de grupos como Bandwagon, TeddyWareZ, The New Image (TNI), dentre outros diversos.

A maioria desses demos nasceu devido a algum incentivo externo recebido e que disparou o desenvolvimento dos mesmos. No caso dos demos da Bandwagon, é conhecido que esse grupo participou de diversas competições de demos de 1Kb a 8Kb, competindo com diversas plataformas  diferentes e venceu a grande maioria (senão todas), ou seja, o incentivo era a competição.

Recentemente após algumas discussões no Orkut, surgiu a idéia de desenvolver um jogo para MSX 2.0, que utilizasse a capacidade gráfica e sonora dessas máquinas, incluindo a possibilidade de tocar musicas FM-based (FM-Pac, FM-Stereo, ….). A discussão em torno dessa idéia foi crescendo e  o desenvolvimento atualmente é mantido na comunidade do Orkut, MSX-Brasil, com discussões sobre o andamento do projeto aqui nessa thread.

Esse era o incentivo necessário para se desenvolver alguma coisa para o MSX, aqui no Brasil, que estava faltando e o suficiente para eu perceber que diversas técnicas e ferramentas poderão sair daí, dentre elas:

  1. Técnicas de manipulação de gráficos;
  2. Ferramentas gráficas;
  3. Técnicas para execução de musicas em dispositivos com recursos limitados;
  4. Ferramentas musicais;
  5. Técnicas de desenvolvimento para dispositivos com recursos limitados;
  6. Ferramentas de compactação de dados.
  7. Técnicas de otimização de sistemas para dispositivos com recursos limitados;

.

Ou seja, tem muita tecnologia que poderá ser desenvolvida com o incentivo desse projeto e digo mais…..já começou a ser desenvolvida e com resultados.

O primeiro resultado positivo foi o processo de conversão de músicas MIDI e que agora podem ser convertidas e tocadas no MSX, e é exatamente sobre isso que estarei escrevendo os próximos 3 artigos dessa série de 4 artigos.

Vou explicar sobre os softwares utilizados no PC e que futuramente tentarei desenvolver para PC e MSX, bem como sobre o compilador que  já  desenvolvi para PC e que é utilizado no processo de conversão. Por fim, o processo final de conversão que é feito no MSX bem como a utilização de um Replayer para MSX que executa a música convertida.

Fiquem antenados e espero que a partir daí surjam novos softwares para MSX ou até mesmo ferramentas de apoio feitas para PC e que possibilitem a utilização extrema do hardware do MSX.

[]’s
PopolonY2k

Referências na internet.

Blip, blop for the masses.

http://www.chiptune.com/

Comunidade MSX Brasil no Orkut.

http://www.orkut.com.br/Main#Community?cmm=98375914

Print Friendly, PDF & Email

Onde está o Prof. Pierluigi Piazzi ?

A década de 80, para grande parte dos profissionais de TI que atuam no mercado atual, foi dominada por siglas como MSX, Apple, Amiga e MS-DOS. Crescemos vivendo em torno dessas tecnologias e que hoje ainda vivenciamos através de listas de discussão, redes sociais, emails, enfim, coisas que estão transferidas para o nosso Cortex não importando se a maré de nossas memórias irá subir e descer apagando tudo o que é temporário. 🙂

Pois bem, uma dessas lembranças que me vem à cabeça até hoje é a do Professor Pierluigi Piazzi, que na década de 80 era reconhecido no meio de tecnologia nacional, por seus livros e sua excepcional didática.

Me lembro que naquela época eu conhecia o Prof. Piazzi apenas pela fama de seus livros e cursos de VHS que estavam na mídia, mas nunca havia consumido qualquer material de sua autoria, uma vez que livrarias e lojas especializadas em produtos de TI era algo raro tanto nos grandes centros e pior ainda nas demais regiões do Brasil, o que era extamente o meu caso.

Eu era louco por ter acesso a livros e também por aprender como as coisas funcionavam, porém não tinha a menor idéia de onde buscar informações, o que é típico de um País atrasado, em diversos sentidos.

Recentemente tive acesso a um dos diversos materiais desenvolvidos pelo Prof. Piazzi na década de 80, o famoso curso de BASIC para MSX, que foi um curso criado para ser assistido em equipamentos de  VHS e foi feito em parceria com a empresa MPO Video, bastante famosa no meio MSX na década de 80.

Ao assistir o vídeo, finalmente verifiquei o porque do Prof. Pierluigi Piazzi ser muito festejado no meio MSX da época, pois sua postura é a de um verdadeiro Mestre, uma pessoa extremamente preocupada em que a didática seja perfeita visando o entendimento por parte de quem o assiste, o conteúdo de seu curso é milimétricamente calculado, ou seja, os níveis avançam passo-a-passo onde percebi o cuidado do autor na condução do conteúdo veículado de forma que não se torne cansativa a quem está assistindo. Enfim, uma pessoa que está constantemente buscando a excelência naquilo que faz.

Foi muito gratificante, após vários anos, descobrir que existiam técnicas do MSX-BASIC que eu poderia ter aprendido de maneira mais rápida e eficiente, na época, caso eu tivesse acesso a esse e outros materiais publicados pelo Professor Piazzi.

Bom, como um dia perdido não volta mais, precisamos continuar subindo os degraus da escada da inteligência e por isso compartilho com os amigos um vídeo do Youtube com a aula de MSX-BASIC do Professor Piazzi, para que vejam e sintam que se trata de um clássico e principalmente para cultivarmos o que é ser um mestre de verdade.

Abaixo também outro vídeo do Professor Pierluigi Piazzi dos dias atuais, dando uma entrevista sobre a importância do trabalho docente, bem como sobre os perigos da tecnologia quando utilizada de forma errônea tanto por mestres quanto por alunos. Excelente vídeo que mostra um pouco das preocupações desse guru que ajudou a formar muitos dos profissionais que estão no mercado de trabalho.

É excelente saber que o Prof. Piazzi continua firme e forte, educando e principalmente ensinado inteligência, para Filhos, Pais e Mestres, através de suas aclamadas obras, Aprendendo Inteligência, Estimulando Inteligência e Ensinando Inteligência, publicadas pela Editora Aleph.

Por fim, o vídeo excelente, onde o Prof. Piazzi simplesmente arrebenta. Só vendo mesmo. É extenso mas vale cada milisegundo assistido. Vai a primeira parte….é só seguir a sequência.

[]’s a todos e principalmente ao Prof. Piazzi, se um dia chegar a ler esse post.

PopolonY2k

Referências (08/03/2011):

Twitter oficial do Prof. Pier.

http://twitter.com/#!/professorpier

Print Friendly, PDF & Email

Dicas para uma internet “educada”

Quem nunca participou de forums de discussão ou coisa parecida, na internet e não saiu no tapa com alguma outra pessoa em ambiente virtual ??

Vocês talvez mas eu….nunquinha da silva !!!!  😀 😀 😀

Por isso, estou disponibilizando algumas dicas para postar sobre qualquer assunto na internet. Espero sua contribuição para ampliar essa lista:

1) Antes de postar algo, preste atenção se você não vai fazê-lo logo após chegar do trabalho pois as chances de você dar uma “espinafrada” em alguém que tá de boa, só porque seu chefe te encheu o saco o dia inteiro, são grandes.

Solução: Tome um banho, um café e assista a novela das 8 antes de ligar o micro;

2) Não leia a parte de Política do portal Terra antes de comentar em seu forum ou rede social preferidos (orkut, facebook, etc, …) pois existe a possibilidade de você ler sobre o inédito índice de 100% de aprovação da Presidenta da Republica nunca antes alcançado na história desse País.
As chances, em percentual, de você pensar “ixi…nem votei e detesto essa bruaca” e esse pensamento elevar seu nível de stress, são de 100%.

Solução: Vai jogar PlayStation (qualquer geração). Mas não jogue aqueles games emulados, principalmente games de MSX, senão você vai ficar achando defeitos na emulação, pixels e cores e isso vai te fazer descarregar sua raiva na pobre da internet.

3) Não faça nenhum post depois de discutir se o Android é melhor que o Apple IOS ou vice-versa. Android tem suas vantagens assim como o AMIGA no mundo dos micros antigos, porém com todas as limitações do Apple IOS, o pessoal ainda prefere ele pelos seus efeitos e frescuras fru-frus etc e tal, assim como preferem o MSX pelos seus jogos e sua magia.

Solução: Abra sua gaveta de velharias e olhe fixamente para o seu Motorola PT-550 (aka Tijorola) por 1 minuto. Isso vai te trazer paz de espírito.

Android/IPhone da década de 90

4) Se depois disso tudo você decidir postar algum #%(&@!!#+, contra alguém, em algum lugar na internet, não se esqueça de fazê-lo sem envolver “terceiros“, pois quando esse “terceiro” começar a não concordar com você, você poderá entrar em uma crise existencial que poderá te levar ao stress profundo, o mesmo que levou a Branca de Neve ao coma profundo após comer a maçã envenenada.

Solução: Vá namorar, até mesmo porque se você precisar sair do coma não é garantido que seu principe encantado não seja um Tião Macalé.

Principe encantado, Tião.

[]’s
PopolonY2k

Print Friendly, PDF & Email