Mezzo Forte Web Audio module
Folder structure
-
/src
js source files -
/example
example/test webpage
Testare l'applicazione
- clone
git clone https://github.com/francescocretti/mezzoforte-webaudio.git
- install dependencies
npm install
- link current module to npm global space
npm link /absolute/path/to/mezzoforte-webaudio
(e.g.npm link ~/git/MezzoForte/webaudio-module/
) - build with webpack
npm run build
- run webpack development server
npm run start
Formati supportati
Formato mp3
, aac
(con contenitore m4a
), wav
, ogg
(non supportato da Safari).
Tendenzialmente è preferibile non caricare file wav
date le dimensioni dei file.
Fare riferimento a questa tabella per approfondire i formati audio supportati dai vari browser.
In sunto:
FORMAT | CONTAINER | CHROME | FIREFOX | SAFARI | EDGE |
---|---|---|---|---|---|
PCM | wav |
yes | yes | yes | yes |
MP3 | mp3 |
yes | if installed in OS | yes | yes |
AAC | mp4 |
yes | if installed in OS | yes | yes |
VORBIS | ogg |
yes | yes | NO | with WebMediaExtensions |
OPUS | ogg |
yes | yes | NO | with WebMediaExtensions |
Utilizzare i suoni nell'applicazione
Per utilizzare i suoni all'interno dell'applicazione è necessario prima caricarli, decodificarli e renderli disponibili sotto forma di struttura WebAudio.
Modificare la variabile audioAssets
aggiungendo i suoni desiderati,
specificando un identificativo a piacere (key
) ed il path del file (url
).
Ad esempio:
const audioAssets = [
{
key: 'suono_1',
url: '/audio/sound1.wav'
},
{
key: 'suono_2',
url: '/audio/sound2_lossy.mp3'
}
];
Per caricare i suoni richiamare il metodo App.init
, che ha come unico argomento una funzione callback dentro la quale si possono utilizzare i suoni caricati
e decodificati.
Ad esempio (con riferimento ai suoni di esempio indicati qui sopra):
const App = new MezzoForte(audioContext, audioAssets);
App.init(() => {
// avvia il suono sound1.wav
App.start('suono_1');
// setto un listnere sulla fine del suono /bch_mix.m4a
App.onended('suono_2', () => {
// suono_2 è terminato, posso fare qualcosa (ad esempio mostrare un messaggio, o triggerare un nuvo suono)
});
});
I metodi attualmente disponibili per i suoni sono:
App.onended(sound_key, callback); // imposto una callback che viene eseguita al termine di sound_key
App.start(sound_key); // avvio sound_key dall'inizio
App.stop(sound_key); // stop
App.resume(sound_key); // riprendo sound_key dall'ultima posizione in cui si è stoppato
TODO
- aggiungere funzioni di fade
- aggiungere gestione di suoni azione (con solo metodo
trigger
) - aggiungere qualche effetto (pan, gain, reverb?, distortion?)
- aggiungere possibilità di creare una sorta di playlist con i propri metodi
- altro? ogni suggerimento è ben accetto