🤔 Para Refletir : "Mais vale um jogo completo na mão do que dois projetos voando." - FL

[HTML5] MIDI em navegadores modernos usando W3C Web Audio

Membro Membro
Postagens
586
Bravecoins
4
Muitos já devem ter notado que o formato MIDI deixou de ser usado à anos atrás e para Web somente o Internet Explorer ainda suporta.
Pois bem, durante esse tempo todo apareceram vários desenvolvedores Web com alternativas, mas nenhum que permitisse usar as MIDIs que conhecemos, e como fariamos isto então?

Bem um site com um API em JAVASCRIPT baseada em W3C Web Audio apareceu com uma ferramenta que realmente faz sentido e permite interpretar e repassar para o navegador qualquer arquivo midi.  :Kawai_Desu:

Veja aqui os exemplos usando MIDIS de jogos de SUPERNINTENDO (Super Famicom):
https://rpgmaker.000webhostapp.com/webmaster/midi/

Site oficial: http://www.midijs.net

Mas fica a pergunta, "dependeremos de um site sempre?", claro, não é um simples javascript que vai resolver tudo, existem mais de 100 arquivos além do JS principal, bem, foi fácil baixar todos os arquivos de uma única vez, mas descobrir seus nomes e diretórios (PASTAS) não, enfim estão salvos na minha máquina.

Todos os arquivos JS necessários:
html5-mid-1.png


Todos os arquivos PAT necessários:
html5-mid-2.png


html5-mid-3.png


O melhor de tudo, roda em vários navegadores e Smartphones.

Por que não passei os arquivos todos para Download, pelo simples motivo que respeito o trabalho desse cara, e quero ver a possibilidade de pagar uma licença para usar o recurso, eu apenas baixei para testar no modo OFFLINE, como usa requesições funcionou somente no FF e IE em modo offline (file:///).

Tudo bem, todos os arquivo da API juntos pesam 80Mb, mas se levar em consideração ainda sim é menos da 1/2 (metada) dos arquivo padrões de áudio da RTP e permite o uso de várias músicas clássicas dos consoles antigos, claro que isso dependeria de um PLUGIN ou modificação do RpgMV para funcionar, mas ainda sim, ninguém conseguiu fazer antes e é perfeito pro meu novo sistema:
http://www.condadobraveheart.com/forum/index.php?topic=2522.0

Compatibilidade:
Navegadores que foram feitos os testes, segundo o desenvolvedor nem todos os navegadores foram testados, por que é bem provavelmente que os navegadores afrentes dos listados funcionaram.

Os que funcionaram:
Microsoft Windows
  • Chrome 30, 31, 54
  • Firefox 24 (fallback)
  • Firefox 25, 26, 50
  • Internet Explorer 7, 8, 9, 11 (fallback)
  • Microsoft Edge 38

MacOS
  • Safari 5.1.10 (fallback)
  • Safari 6.2.8
  • Safari 10.0.2
  • Google Chrome 56
  • Firefox 50

Linux
  • Firefox 25 on Ubuntu 13
  • Firefox 50 on Ubuntu 16
  • Chromium 30 on Ubuntu 13
  • Chromium 53 on Ubuntu 16

Android
  • Google Chrome 31 on Android 4.1.1
  • Google Chrome 31 (Standard Browser) on Android 4.4
  • Google Chrome 32 (Standard Browser) on Android 4.4
  • Mozilla Firefox 26.0.1 on Android 4.1.1

iOS
  • Safari on iPhone and iPad on iOS 7
  • Google Chrome 31 on iOS 7

Os que não funcionaram
Windows
  • Safari 5.1.7

Android
  • Standard browser on Android version 4.3 and previous versions
  • Chrome 26 on Android 4.1.2 on Galaxy S3, probably a Samsung specific Problem
(Vale lembrar que navegadores de ANDROID com WebView antigos podem executar MIDI sem essa API, através da tag aposentada "EMBED")

MacOS
  • Firefox 7.0.1

iOS
  • Safari on iOS 6, due to very limited Web Audio Api support and no available fallback
 
Pessoal, eu praticamente não mexi neste sistema, apenas o obtive de maneira informal, ainda estou tentando solucionar o problema da falta de looping.
 
Bom, o sistema é bom, mas está longe de estar perfeito. Ainda dá algum engasgo de vez em quando, e demora um pouco demais pra carregar, mas ainda assim é a melhor solução que temos.

Daí que o negócio parece ter futuro, o fato de não ter fonte padrão faz com que tenhamos que colocar até uns 200MB (tamanho médio de uma boa soundfont) para poder ter todos os instrumentos disponíveis. Se for para encurtar só os instrumentos e amostras que precisaremos, dá pra reduzir bastante esse número. O bom que depois de feito, cada música são apenas alguns KB.

O tempo de carregamento, bem, põe esse no começo do loading do jogo, ou na conta do papa mesmo.

Nota pessoal:

Normalmente eu sou mais apoiador de formatos mais modernos e acho MIDI coisa pra ser deixada pra trás. Mas como só temos arquivos de sons e nenhum sucessor para os formatos de áudio sintetizado (que eu saiba), mesmo me retorcendo por dentro, tenho que admitir que o MIDI ainda é necessário.

Por que diabos abandonaram os sintetizadores MIDI isso é um mistério, poderiam muito bem usar a especificação, que é boa, e com algumas boas soundfonts e uma melhorada na especificação, conseguiríamos algo bom sem precisa jogar todo esse trabalho de décadas fora.
 
A API offline funciona 98% perfeitamente, só engasga em navegadores onde o computador tem pouca RAM, por isso peguei os arquivos por meios informais do site, que são os instrumentos.

O minha vontade mesmo era poder usar todas as MIDIS que tenho sem precisar carregar tanto uma página, mesmo que fosse por conversão para OGG, OGA, mas precisaria de um formato GLOBAL para os navegadores mais atuais, por que seria desperdício de tempo tentar trabalhar com navegadores obsoletos.

Mas realmente o Web Audio API não é muito pratico de usar comparado a um <audio> de HTML5 escondido na página com CSS, mas tenho de usar OGG, M4A ou WAV, isso variando do navegador:
https://rpgmaker.000webhostapp.com/webmaster/rpghtml4/playerAudio.html

Obrigado pelo FEEDBACK.
 
Voltar
Topo