Vamos falar também sobre análogos - rFXGen, wafxr.

Photo chuttersnap / Unsplash
Mais sobre o projeto
ZzFXM foi apresentado por Frank Force, programador e autor do blog de desenvolvimento de jogos Killed By a Pixel. Em seus materiais, ele dá atenção especial às questões de economia de memória. Certa vez, ele escreveu um simulador de piano em JavaScript com apenas um kilobyte de tamanho.
O gerador de melodia dá continuidade a essa ideia - Frank o projetou especificamente para gerar música para programas ultrapequenos. Esses projetos são implementados como parte da competição aberta de jogos js13k , cujos participantes escrevem jogos em HTML5 e JavaScript usando dezenas de KB de memória.
O ZzFXM pode ser usado para desenvolver jogos independentes completos. É licenciado sob a licença do MIT , portanto, é adequado para projetos comerciais.
Fontes e instruções para configuração estão no repositório no GitHub .
O que está sob o "capô"
O utilitário usa o mecanismo ZzFX para escrever efeitos sonoros que se parecem com oito bits. Ele permite que você controle dezenove parâmetros de som, desde o volume até a frequência e a forma de onda. Exemplos de sons que o ZzFX pode gerar podem ser encontrados no site de Frank Force . ZzFXM usa alguns deles como exemplos.
O formato dos arquivos finalizados lembra o MOD usado para armazenar e tocar composições musicais no computador pessoal Amiga , portanto, todos os samples com o som de instrumentos são armazenados em arquivos diferentes (princípio da modularidade).
Como funciona
O compositor compõe uma sequência de notas indicando qual instrumento deve tocá-la e quando. Essa sequência é chamada de trilha. Várias faixas que soam em paralelo formam um bloco (padrão) com seu próprio número. Além disso, o compositor especifica no código do programa qual padrão deve soar e quando.
Essa abordagem permite formar rapidamente a composição desejada, mas o código resultante é difícil de ler sem comentários. No repositório do GitHub, o autor do gerador dá o seguinte exemplo:
[ // Song
[ // Instruments
[.9, 0, 143, , , .35, 3], // Instrument 0
[1, 0, 216, , , .45, 1, 4, , ,50], // Instrument 1
[.75, 0, 196, , .08, .18, 3] // Instrument 2
],
[ // Patterns
[ // Pattern 0
[ // Channel 0
0, // Using instrument 0
-1, // From the left speaker
1, // play C-1
0, 0, 0, // rest (x3)
3.5, // play E-1 with 50% attenuation
0, 0, 0 // rest (x3)
],
[ // Channel 1
1, // Using instrument 1
1, // From the right speaker
2, // play D-1
2.25, // play D-1 with 25% attenuation
3.5, // Play E-1 with 50% attenuation
4.75, // Play F-1 with 75% attenuation
-1, // Release the note
0, 0, 0 // rest (x3)
]
]
],
[ // Sequence
0, // Play pattern 0
0, // ...and again
],
120, // 120 BPM
{ // Metadata
title: "My Song", // Name of the song
author: "Keith Clark" // Name of the author/composer
}
]
Você pode ouvir como as faixas geradas pelo utilitário soam no GitHub . O tamanho da música não excede 550 bytes.
Quais são os análogos
Um dos análogos do ZzFXM é o rFXGen . Ele foi escrito em C e baseado no projeto sfxr - apresentado em 2007 por um dos participantes da competição LD48. Dentro de sua estrutura, cada desenvolvedor deve enviar um pequeno jogo em 48 horas. O utilitário RFXGen oferece suporte a osciladores, vibrato e filtros passa-baixa e alta.

Foto de Ohmydearlife / Pixabay
Outro gerador de som compacto - wafxr . Ele renderiza áudio ao vivo usando a API WebAudio e a biblioteca wasgen . O Wafxr também suporta osciladores, tremolo / vibrato e vários filtros. Há uma demonstração do trabalho no GitHub - lá você mesmo pode avaliar a ferramenta.
O que temos sobre Habré:
« Hi-Fi»:




