Ferramenta para conversão de sons do PC (samples) para rodar no PSG do MSX. Digitalize vozes e coloque no seu programa!
Como converter sons do PC para o MSX
Roteiro para a conversão de sons do PC para o MSX:
- Editando o som no PC
- Convertendo para o formato PCM de 8 bits
- Convertendo para o MSX
- Players
- Ajustes nos players
O MSX DSG trabalha em conjunto com qualquer editor de sons para PC. Isso, poque para esta parte da tarefa já existem bons programas, inclusive gratuitos. Nós escolhemos o programa Audacity [1] porque, além de ser um excelente editor de sons para PC, é livre, gratuito e multiplataforma.
1. Editando o som no PC
O primeiro passo é a edição do som. Antes de converter o som para o MSX, necessitamos realizar alguns ajustes como transformar de estéreo para mono, selecionar um trecho do som e ajustar a freqüência.
Abrindo um arquivo de som no Audacity
Abra um arquivo de som no Audacity para converter para o MSX. Ele trabalha com diversos formatos, incluindo WAV, MP3 e até MP4 (onde extrai o som).
Na barra de menu superior, clique em "Ficheiro" (arquivo) e "Abrir". É possível também arrastar o arquivo para dentro da aplicação para abri-lo.

Uma vez aberto o arquivo, podemos ver o formato de onda de todo o arquivo. Se ele tiver apenas um gráfico de onda, é mono. Caso tenha dois gráficos de onda como na imagem acima, é estéreo.
Convertendo para mono
Os formatos do MSX são mono. Assim, caso nosso arquivo de som seja estéreo, devemos convertê-lo para mono.
Na barra de menu superior, clique em "Faixas", "Misturar" e "Faixa estéreo para mono". No Audacity mais antigo o caminho é "Faixas" e "Faixa estéreo para mono".
Selecionando o trecho da música
Devido ao fato do arquivo de som ser grande, há limitações quanto à duração dele. No caso do delay 14 do Video Hits, podemos ter até 12 segundos por cada bloco de 16 KB.
O MSX DSG, para os formatos SND e S4b, é capaz de dividir o som em blocos de 16 KB. Entretanto, os players somente podem reproduzir 2 blocos.
No painel "MSX Player" do MSX DSG, podemos calcular a freqüência e a duração máxima para cada bloco de 16 KB, de acordo com um determinado player e um delay.

Uma vez determinada a máxima duração do som, devemos nos basear nesse tempo para selecionar o trecho do arquivo de som. Podemos obviamente selecionar menos tempo que a máxima duração. Entretanto, se selecionarmos um tempo maior, podemos cortar o excedente quando salvarmos o arquivo no MSX DSG em blocos de 16 KB.
Para selecionarmos um trecho do som, devemos descartar o que vem antes de depois dele. Assim, clique na posição inicial do trecho, conforme mostra a seta amarela e o retângulo vermelho da imagem abaixo.

Você pode arrastar o mouse até o inicio do arquivo. Entretanto, tecle SHIFT + HOME para selecionar desse trecho até o inicio.

Após selecionar o trecho para apagar (marcado com um sombreamento cinza), pressione a tecla DELETE. O trecho será apagado.

Após apagar a parte inicial, todo o arquivo de som resultante é deslocado para o inicio.
O próximo passo é selecionar o fim do nosso arquivo de som. Clique na posição desejada, conforme ilustra a imagem a seguir.

Selecione dessa parte até o fim, pressionando as teclas SHIFT + END.

Apague esse trecho, com a tecla DELETE.
Pronto, o nosso trecho de música está selecionado.

Nota: caso desejemos utilizar dois blocos de 16 KB para o som no MSX, podemos selecionar o dobro do tempo indicado no MSX DSG, pois o programa é capaz de dividir os dados em blocos.
Ajustando a freqüência do som
O último passo antes de exportar o arquivo é ajustar a freqüência do som.
Com ajuda do MSX DSG, iremos determinar qual é freqüência do arquivo, pois depende do player do MSX e do delay adotado. Assim, iremos convertê-lo na freqüência desejada no Audacity em dois passos.
O primeiro consiste em alterar a freqüência do projeto para a freqüência desejada. No rodapé da janela do programa Audacity podemos ver a "Taxa do projeto (Hz)".

Altere o valor contido ali para o valor obtido no MSX DSG.
O segundo passo consiste em reamostrar o arquivo de som. Para isso, na barra de menu superior, clique em "Faixas" e "Mudar taxa de amostragem". Mantenha o valor que aparece ali, que deverá ser igual à nova taxa do projeto. Clique em Ok.

O arquivo de som está pronto para ser exportado.
2. Convertendo para o formato PCM de 8 bits
Ainda no Audacity, clique na barra de menu superior na opção "Ficheiro" (arquivo) e "Exportar" (também SHIFT + CONTROL + E).
No diálogo de salvar, temos o "tipo de arquivo" (assinalado com o retângulo vermelho) e "opções" (assinalado com o retângulo verde).

Selecione a opção de arquivo "Outros ficheiros sem compressão". Em seguida, clique em opções.

Escolha o cabeçalho "RAW (header-less)" e a codificação "Unsigned 8-bit PCM".
Finalmente, exporte o arquivo com essas opções. Use a exrensão ".raw".
3. Convertendo para o MSX
Agora que convertermos nosso arquivo de som para o formato PCM 8 bits não-sinalizado, podemos utilizar o MSX DSG para converter para um dos formatos do MSX.

Escolha a opção "PC PCM 16-bit" em "File type". Clique no botão de carregar

.
Ao carregar, as seguintes informações do arquivo são exibidas:
- File - nome do arquivo carregado na memória.
- Type - tipo de arquivo carregado na memória.
- Bitstreams - Número de amostras que contém o arquivo de som.
- Size - tamanho do arquivo em bytes.
- Time - tempo de duração, de acordo com o player e delay selecionados no painel "MSX Player".
Selecione agora um formato de arquivo para salvar em "File type". Clique no botão

para salvar no formato escolhido.
Nota: lembre-se de que a freqüência do som já foi determinada lá na conversão do Audacity. Dessa forma, alterá-la agora NÃO irá influenciar qualquer coisa no arquivo convertido.
A partir da versão 1.1, o painel do som foi dividido em som de origem e som de destino. Além disso, foi introduzido o botão de play

para ouvir tanto o som original como o convertido. Clique novamente nesse botão durante a execução do som para pará-lo.
Para cada tipo de arquivo, temos as seguintes políticas:
- SND - Pergunta se deseja criar o arquivo em blocos de 16 KB, independente do tamanho. Se responder sim, caso seja menor que 16 KB, preenche o restante do arquivo com zeros. Caso seja maior que 16 KB, cria diversos blocos. Se responder não, salva o arquivo do tamanho dele.
- FRED - Salva até 16 KB de arquivo. Caso seja maior, descarta.
- S4b - O mesmo que o SND.
- PCM 8 bits - Salva do tamanho do arquivo.
Nota importante: para os players fornecidos no projeto, não devemos exceder 16 KB por bloco, pois dessa forma os dados invadiriam a área dos players na memória.
4. Players
MarMSX SND Player
O player SND roda formatos de som de 1 bit. Ele é composto pelos arquivos "snd.bin" e "mvdata.bin".
O seguinte arquivo em Basic carrega os dados da música, move para a página 0 e roda.
10 ' SND player MarMSX 2020
20 SCREEN 0:WIDTH40:COLOR 15,0,0:KEY OFF
30 PRINT"MarMSX SND player"
40 PRINT"-----------------"
50 PRINT:PRINT"Loading SND file ... ";
60 BLOAD"arquivo.snd"
70 PRINT"Ok":PRINT"Starting routine to move data ... ";
80 BLOAD"mvdata.bin"
90 DEFUSR=&HD100
100 X=USR(0)
110 PRINT"Ok":PRINT"Sound starts!"
120 BLOAD"snd.bin"
130 DEFUSR=&HD000
140 X=USR(0)
O delay padrão do MarMSX SND player é 14. Veja na seção "ajuste nos players" como alterar o delay.
MarMSX S4b Player
O player S4b roda formatos de som de 4 bits. Ele é composto pelos arquivos "s4b.bin" e "mvdata.bin".
O seguinte arquivo em Basic carrega os dados da música, move para a página 0 e roda.
10 ' S4b player MarMSX 2020
20 SCREEN 0:WIDTH40:COLOR 15,0,0:KEY OFF
30 PRINT"MarMSX S4b player"
40 PRINT"-----------------"
50 PRINT:PRINT"Loading S4b file ... ";
60 BLOAD"arquivo.s4b"
70 PRINT"Ok":PRINT"Starting routine to move data ... ";
80 BLOAD"mvdata.bin"
90 DEFUSR=&HD100
100 X=USR(0)
110 PRINT"Ok":PRINT"Sound starts!"
120 BLOAD"s4b.bin"
130 DEFUSR=&HD000
140 X=USR(0)
O delay padrão do MarMSX S4b player é 22. Veja na seção "ajuste nos players" como alterar o delay.
5. Ajuste nos players
Move data
Podemos alterar o move data para carregar dados na página 1 da RAM. Para isso, entre as linhas 80 e 90 adicione:
85 POKE &H&HD112,&H40
Isso é útil para podermos carregar dois blocos de arquivo na memória, dobrando a capacidade de execução de som. Entretanto, devemos também alterar o endereço final de execução da música nos players.
MarMSX SND Player
Para alterarmos as opções dos players, devemos inserir pokes após o carregamento do programa na memória e antes de sua execução em X=USR(0).
Alterações possíveis:
- &hD00E - Parte baixa do endereço inicial.
- &hD00F - Parte alta do endereço inicial.
- &hD022 - Altera o valor do delay. Não use 0, pois vale como 256.
- &hD02B - Parte alta do endereço final.
O exemplo a seguir altera o valor do delay para 13.
135 POKE &H&HD022,13
MarMSX S4b Player
Para alterarmos as opções dos players, devemos inserir pokes após o carregamento do programa na memória e antes de sua execução em X=USR(0).
Alterações possíveis:
- &hD024 - Parte baixa do endereço inicial.
- &hD025 - Parte alta do endereço inicial.
- &hD035 - Altera o valor do delay. Não use 0, pois vale como 256.
- &hD040 - Parte alta do endereço final.
O exemplo a seguir altera o endereço final para &H8000. Assim, podemos tocar 2 blocos de som.
135 POKE &H&HD040,&h80
MarMSX S4b Plus Player
Para alterarmos as opções dos players, devemos inserir pokes após o carregamento do programa na memória e antes de sua execução em X=USR(0).
Alterações possíveis:
- &hD021 - Parte baixa do endereço inicial.
- &hD022 - Parte alta do endereço inicial.
- &hD042 - Altera o valor do delay. Não use 0, pois vale como 256.
- &hD04D - Parte alta do endereço final.
Referências:
1. Audacity. Em: https://www.audacityteam.org
2. Manual do Audacity. Em https://manual.audacityteam.org