Technology Experience
.NET World

WP7, SoundEffect, frequenza di campionamento e Audacity

Dunque, faccio un breve riassunto. Per fare il play di suoni all’interno di una applicazione Windows Phone 7, abbiamo essenzialmente due metodi diversi:

  1. usando un MediaElement
  2. usando la classe SoundEffect

Il primo è disponibile solo all’interno di applicazioni Silverlight, il secondo è disponibile sia in Silverlight che in XNA.

In questo post parliamo della classe SoundEffect, e dei files .wav che è in grado di prendere in pasto e da mandare in play. Essenzialmente si tratta di avere del codice che fa una cosa simile:

SoundEffect slideEffect;
private void prepareSoundEffects()
{
    slideEffect = SoundEffect.FromStream(TitleContainer.OpenStream("Slide.wav"));
}

 

In questo caso carico il file Slide.wav. Quando ci sarà bisogno di farlo sentire all’utente è sufficiente chiamare il metodo Play(). Nulla di particolarmente complicato. Ricordiamoci che nel code-behind di App.xaml bisogna fare quanto segue:

readonly DispatcherTimer timer = new DispatcherTimer();

public App()
{
    this.timer.Tick += (s, e) =>
    {
        FrameworkDispatcher.Update();
    };

    this.timer.Interval = TimeSpan.FromMilliseconds(100);
    this.timer.Start();

    UnhandledException += Application_UnhandledException;
    InitializeComponent();
    InitializePhoneApplication();
}

 

Non so bene il perchè di questa cosa, so solo che bisogna farla! Sorriso

Che tipo di files posso far sentire?

Soltanto files .wav: gli mp3 in questo frangente non sono ammessi. Se tentate di caricare un file .mp3 otterrete una InvalidOperationException. Potete caricare solamente files .wav campionati a 44100Hz.

Ora, se siete come me, probabilmente in questi giorni state scandagliando il Web alla ricerca di questo o quell’effetto sonoro che sì, sul click di quel Button ci sta proprio bene. Però non tutti i files sono a 44100Hz: cosa succede, in questo caso? Che otterrete ancora una bella InvalidOperationException, proprio al momento del caricamento che abbiamo visto prima.

E quindi? Quindi vi consiglio di scaricare Audacity, che è un free digital audio editor disponibile su SoundForge. Audacity è disponibile ovviamente in download, sia in formato zip, che nel classico installer .msi. Avviate Audacity, aprite il file .wav che volete modificare e reimpostate la frequenza di campionamento, impostandola su 44100Hz.

Ma anche qui c’è una piccola precisazione da fare. Date un’occhiata a questo screenshot:

Audacity

Audacity riporta la frequenza di campionato in due punti diversi. Nell’esempio qui sopra ho aperto un file audio a 11025Hz. Se volete portare la frequenza a 44100Hz, per renderlo compatibile con la SoundEffect di XNA, cambiate quella che ho evidenziato dal rettangolo verde – in basso a sinistra nella finestra. Se toccate quella evidenziata dal rettangolo rosso, il suono risulterà distorto – perchè ovviamente modificare il campionamento significa anche “accelerare” il suono (un po’ come mandare un vecchio vinile 33 giri a 45).

Per salvare il file con le nuove impostazioni, usate il menu File –> Export As WAV… ed il gioco è fatto.

Send to Kindle

Igor Damiani

La sua passione per l'informatica nasce nella prima metà degli anni '80, quando suo padre acquistò un Texas Instruments TI-99. Da allora ha continuato a seguire l'evoluzione sia hardware che software avvenuta nel corso degli anni. E' un utente, un videogiocatore ed uno sviluppatore software a tempo pieno. Igor ha lavorato e lavora anche oggi con le più moderne tecnologie Microsoft per lo sviluppo di applicazioni: .NET Framework, XAML, Universal Windows Platform, su diverse piattaforme, tra cui spiccano Windows 10 piattaforme mobile. Numerose sono le app che Igor ha creato e pubblicato sul marketplace sotto il nome VivendoByte, suo personale marchio di fabbrica. Adora mantenere i contatti attraverso Twitter e soprattutto attraverso gli eventi delle community .NET.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.