Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac):...

47
Marco Faella Università di Napoli “Federico II” effetti sonori, musica e linguaggio naturale Audio

Transcript of Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac):...

Page 1: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

effetti sonori, musica e linguaggio naturale

Audio

Page 2: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

esempi

Page 3: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

1985: Super Mario Bros

Page 4: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

1987: Street Fighter

Page 5: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

1993: Doom

Page 6: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

2011: Skyrim

Page 7: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Giochi musicaliCrypt of the Necrodancer, PC 2015

Page 8: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Giochi musicaliPlanet Quest, iOS 2015

Page 9: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Tipi di suoni

Effetti sonori

Musica

Parlato

campionato

ibrida

sintetizzato

Page 10: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Suoni campionati vs sintetizzati

Suono campionato:

un file contiene la registrazione digitale di un suono reale

Suono sintetizzato:

il programma contiene istruzioni per generare un suono

Page 11: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Il suono del Commodore 128

Dal manuale del Commodore 128 (1985):

7.1 INTRODUCTION[...]

Here are the new sound and music statements available on the Commodore 128:

● SOUND● ENVELOPE● VOL● TEMPO● PLAY● FILTER

Page 12: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Istruzione “SOUND”

7.2 THE SOUND STATEMENTThe SOUND statement is designed primarily for quick and easy sound effects in your programs. You will learn a more intricate way of playing complete musical arragements with the other sound statements later in this section.

[...]

100 SOUND 1, 49152, 240, 1, 0, 100, 1, 0 ^ ^ ^ ^ ^ ^ ^ ^ | | | | | | | |Voice ---------+ | | | | | | |Frequency ----------+ | | | | | |Duration -----------------+ | | | | |Sweep Direction --------------+ | | | |Minimum Sweep Frequency ---------+ | | |Step Value for Sweep ----------------+ | |Waveform --------------------------------+ |Pulse Width for variable width | waveform --------------------------------+

Page 13: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Le tecnologie

Audio campionato:

digital-analog converter (DAC)

Audio sintetizzato:

sintetizzatori in modulazione di frequenza (FM synthesizer)

Commodore 64/128 (1982): sintetizzatore con 3 “voci”

Sound Blaster (1989): sintetizzatore con 11 “voci” e riproduzione di file campionati a 8 bit, fino a 22khz

Page 14: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Il difetto del sintetizzatore C64

Un rumore di fondo può essere modulato usando il volume (4 bit)

Sfruttato per riprodurre il parlato!

Impossible Mission, Epyx, C64 1984

Page 15: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

effetti sonori campionati

Page 16: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Formati audio campionato

lossy: mp3, ogg vorbis, aac

lossless: wav, flac

parametri lossless:frequenza di campionamento: 22, 40, 44.1, 48, 96 khzbit per campione: 8, 16, 24

parametri lossy:bit-rate (mp3, aac): costante o variabile, da 8 a 320 kbpsqualità (ogg vorbis): da -1 a 10

Page 17: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Dimensioni

Formato Configurazione Byte al minuto

PCM (wav) 16bit, 44.1khz 10MB

16bit, 22khz 5MB

mp3 16kbps 120KB

32kbps 240KB

64kbps 480KB

ogg vorbis qualità 0 ~480KB

qualità 3 (default) ~780KB

Page 18: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

musica

Page 19: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Musica sintetizzata

Il file contiene solo lo spartito, il computer sintetizza i suoni

Formato: MIDI

+ Estremamente compatto+ Adattabile dinamicamente alle situazioni- Qualità media

Page 20: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Musica campionata

File di grandi dimensioni

Per lo storage: compressione

Per l’occupazione di memoria: streaming

+ Qualità alta- Grande dimensione

Page 21: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

parlato

Page 22: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Interazione vocale

Parlato campionato

onnipresente nei titoli maggiori

Parlato sintetizzato (text-to-speech)

non usato per la qualità/range emotivo limitato (link)

Riconoscimento vocale (speech-to-text)

poco usato, ma in crescita

Page 23: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Giochi con riconoscimento vocaleThere came an echo, PC+console 2015

Page 24: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

in Android

Page 25: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Formati supportati

lossless: PCM/WAV, FLAC

lossy: mp3, AAC, ogg vorbis

musica sintetizzata: MIDI

Collocazione tipica:res/raw/ oppure assets/

Page 26: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

API Android per l’audio

● SoundPool: API Java di livello alto

● MediaPlayer: API Java di livello intermedio

● AudioTrack: API Java di livello basso

● JetPlayer: API Java per riprodurre musica dinamica

● OpenSL ES: API C per audio di basso livello (maggiore controllo e

performance)

Page 27: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

SoundPool

Un insieme di brevi suoni campionati

Può riprodurre più suoni contemporaneamente

il costruttore accetta il numero massimo di suoni simultanei

se si supera il massimo, il suono più “vecchio” viene soppresso

Ideale per gli effetti sonori di un gioco

Page 28: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Caratteristiche di SoundPool

Parametri di un suono:

● numero di ripetizioni (looping)● volume● velocità di riproduzione (da 0.5 a 2.0)

Altre funzionalità:

● sospendere un suono (pause)● fermare un suono (stop)● riprendere un suono (resume)

Page 29: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Usare un SoundPool

int SIMULTANEOUS_CHANNELS = 5;

SoundPool soundPool = new SoundPool(SIMULTANEOUS_CHANNELS, AudioManager.STREAM_MUSIC, 0);

Nota: a partire da API 21, usare un Builder al posto del costruttore

int soundId = soundPool.load(“prova.mp3”, 0);

float volume = 0.5f; // da 0 a 1int priority = 0; // 0 è il minimoint loops = 0; // riproduce una sola volta (-1 = infinito)float rate = 1; // velocità normale (va da 0.5 a 2)

soundPool.play(soundId, volume, volume, priority, loops, rate);

Page 30: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Caricare un file audio

A partire dal nome:

soundPool.load(“res/raw/explosion.ogg”, PRIORITY);

A partire dall’identificativo di risorsa:file “res/raw/explosion.ogg”

soundPool.load(context, R.raw.explosion, PRIORITY);

A partire da un descrittore:file “assets/explosion.ogg”

AssetFileDescriptor afd = assetManager.openFd(“explosion.ogg”);soundPool.load(afd, PRIORITY);

Page 31: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

API Android per l’audio

● SoundPool: API Java di livello alto

● MediaPlayer: API Java di livello intermedio

● AudioTrack: API Java di livello basso

● JetPlayer: API Java per riprodurre musica dinamica sintetizzata

● OpenSL ES: API C per audio di basso livello (maggiore controllo e

performance)

Page 32: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

MediaPlayer

Ogni istanza gestisce un unico suono

La sorgente può essere locale o remota

Supporta file di grandi dimensioni

Controllo fine sul caricamento

Page 33: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Lo stato di un MediaPlayer

Page 34: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Lo stato di un MediaPlayer (zoom)

Page 35: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Usare MediaPlayer

suono in assets/musica.ogg:

AssetManager assetManager = myActivity.getAssets();AssetFileDescriptor afd = assetManager.openFd(“musica.ogg”);FileDescriptor fd = afd.getFileDescriptor();

MediaPlayer mediaPlayer = new MediaPlayer();mediaPlayer.setDataSource(fd);mediaPlayer.prepare(); // bloccantemediaPlayer.start();

Page 36: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Usare MediaPlayer

suono in res/raw/musica.ogg:

MediaPlayer mediaPlayer = MediaPlayer.create(myActivity, R.raw.musica);

mediaPlayer.start();

Note:● create è bloccante● se il file è grande, sarebbe meglio caricarlo in modo asincrono

Page 37: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

I suoni e il ciclo di vita dell’app

Di default, i suoni continuano anche se l’app è in pausa

Quindi:

sospendere i suoni in onPause

riprendere i suoni in onResume

Page 38: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

framework B.A.G.

Page 39: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Architettura

Distingue suoni da musiche

Suoni: riprodotti tramite un unico SoundPool condiviso

Musiche: riprodotte tramite altrettanti oggetti MediaPlayer

Assume che tutti i file audio si trovino in assets/

Page 40: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Le interfacce

public interface Sound {

void play(float volume);

void dispose();

}

public interface Music {

void play();

void stop();

void pause();

void dispose();

...

}

public interface Audio {

Music newMusic(String filename);

Sound newSound(String filename);

}

Page 41: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

L’implementazione di Sound

public class AndroidSound implements Sound { int soundId; SoundPool soundPool;

public AndroidSound(SoundPool soundPool, int soundId) { … } @Override public void play(float volume) { soundPool.play(soundId, volume, volume, 0, 0, 1); }

@Override public void dispose() { soundPool.unload(soundId); }}

Page 42: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

L’implementazione di Music

public class AndroidMusic implements Music, OnCompletionListener { MediaPlayer mediaPlayer; boolean isPrepared = false;

public AndroidMusic(AssetFileDescriptor assetDescriptor) { mediaPlayer = new MediaPlayer(); try { mediaPlayer.setDataSource(assetDescriptor.getFileDescriptor()); mediaPlayer.prepare(); isPrepared = true; mediaPlayer.setOnCompletionListener(this); } catch (Exception e) { throw new RuntimeException("Couldn't load music"); } }

...

Page 43: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

parlato

Page 44: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Speech-to-text

L’applicazione invoca il riconoscimento tramite un intento

Il riconoscimento avviene in un’altra attività

Alla fine, il controllo ritorna alla prima applicazione, tramite uno specifico entry point

A seconda della configurazione del telefono, il riconoscimento avviene in locale o in remoto

prima di JellyBean: in remotoa partire da JellyBean: in remoto o in locale (installando offline speech recognition pack)

Page 45: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Avviare il riconoscimento

all’interno di una Activity:

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");

try {

this.startActivityForResult(intent, REQUEST_OK);

} catch (Exception e) {

Log.e(“MyActivity”, “Error initializing speech to text engine.");

}

Page 46: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Ricevere il risultato del riconoscimento

all’interno di una Activity:

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data)

{

super.onActivityResult(requestCode, resultCode, data);

if (requestCode==REQUEST_OK && resultCode==RESULT_OK) {

ArrayList<String> parole =

data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

...

} else {

Log.w(“MyActivity”, “Speech recognition failed”);

}

}

Page 47: Audio - unina.itwpage.unina.it/m.faella/Didattica/GDD/slides/develop14.pdfbit-rate (mp3, aac): costante o variabile, da 8 a 320 kbps qualità (ogg vorbis): da -1 a 10 Marco Faella

Marco Faella Università di Napoli “Federico II”

Approfondimenti

● Karen Collins, Game Sound: An introduction to the History, Theory, and Practice of Video Game Music and Sound Design, MIT Press

○ taglio accademico

● Horowitz e Looney, The Essential Guide to Game Audio: The Theory and Practice of Sound for Games, Focal Press 2014

○ taglio pratico

● MacLean, Komatineni e Allen, Pro Android 5, Apress 2015

● GDC 2014 talk sul sound design di Grand Theft Auto V: link