Windows Phone 7 - Tutoriel 20 : Enregistreur audio

Enregistrement audio avec XNA en utilisant Silverlight sur Windows Phone 7

Ce tutoriel fait partie d'une série de niveau débutant-intermédiaire pour apprendre Windows Phone 7 par le biais d'exemples pas à pas.

Langage : C#

Public visé : niveau Intermédiaire

Commentez ce tutoriel : Commentez Donner une note à l'article (4.5)

Article lu   fois.

Les trois auteurs et traducteur

Site personnel

Traducteur :

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Traduction

Ce tutoriel est la traduction la plus fidèle possible du tutoriel original de Peter Bull, Windows Phone 7 - Audio Recording with XNA using Silverlight on Windows Phone 7.

Introduction

Audio Recorder est un exemple d'enregistrement sonore simple utilisant le framework XNA pour la capture et la lecture audio en utilisant Silverlight sur Windows Phone 7.

Enregistrement audio avec XNA en utilisant Silverlight sur Windows Phone 7

Étape 1

Démarrez Microsoft Visual Web Developer 2010 Express pour Windows Phone, ensuite sélectionnez Fichier puis Nouveau Projet… Sélectionnez Visual C# ensuite Silverlight for Windows Phone puis Application Windows Phone dans les modèles installés, sélectionnez un emplacement si vous le souhaitez, puis entrez un nom pour le projet et appuyez sur OK :

Image non disponible

Étape 2

Une page Application Windows Phone nommée MainPage.xaml devrait alors apparaître :

Image non disponible

Étape 3

Sélectionnez Projet puis Ajouter une référence… La fenêtre Ajouter une référence devrait apparaître, sélectionnez Microsoft.Xna.Framework dans la liste .NET :

Image non disponible

Étape 4

Ajoutez la référence à Microsoft.Xna.Framework en cliquant sur OK. Faites un clic droit sur l'entrée App.xaml dans l'Explorateur de solutions et choisissez Afficher le code, ensuite dans la vue de code pour App.xaml.cs, au-dessus de namespace AudioRecorder tapez ceci :

 
Sélectionnez
using System.Windows.Threading;
using Microsoft.Xna.Framework;

Également dans la vue de code, au-dessus de public partial class App : Application tapez la déclaration de classe suivante :

 
Sélectionnez
public class XNAAsyncDispatcher : IApplicationService
{
  private DispatcherTimer frameworkDispatcherTimer;
  public XNAAsyncDispatcher(TimeSpan dispatchInterval)
  {
    this.frameworkDispatcherTimer = new DispatcherTimer();
    this.frameworkDispatcherTimer.Tick += new EventHandler(frameworkDispatcherTimer_Tick);
    this.frameworkDispatcherTimer.Interval = dispatchInterval;
  }
  void IApplicationService.StartService(ApplicationServiceContext context) { this.frameworkDispatcherTimer.Start(); }
  void IApplicationService.StopService() { this.frameworkDispatcherTimer.Stop(); }
  void frameworkDispatcherTimer_Tick(object sender, EventArgs e) { FrameworkDispatcher.Update(); }
}

Pendant que nous en sommes à la vue de code, au-dessus du « } » pour le constructeur public App() tapez ceci :

 
Sélectionnez
this.ApplicationLifetimeObjects.Add(new XNAAsyncDispatcher(TimeSpan.FromMilliseconds(50)));
Image non disponible

Étape 5

Faites un clic droit sur le Projet dans l'Explorateur de solutions et choisissez Ajouter, puis Nouveau dossier, et nommez-le « images » (sans les guillemets) :

Image non disponible

Étape 6

Téléchargez les images suivantes (record.png, play.png et stop.png) en faisant un clic droit sur les images ci-dessous et choisissez « Enregistrer l'image sous… » et enregistrez-les dans un dossier sur votre ordinateur :

Image non disponible

record.png

Image non disponible

play.png

Image non disponible

stop.png

Étape 7

Faites un clic droit sur le dossier « images » du Projet dans l'Explorateur de solutions, et choisissez Ajouter, ensuite Elément existant… Puis dans la fenêtre Ajouter un élément existant sélectionnez le dossier dans lequel vous avez enregistré les images, ensuite choisissez Ajouter pour ajouter les images record.png, play.png et stop.png au dossier « images » dans le projet :

Image non disponible

Étape 8

Toujours dans l'Explorateur de solutions, cliquez sur l'image « play.png », puis allez dans la boîte Propriétés et modifiez l'Action de génération à Contenu. Faites la même chose pour les images « record.png » et « stop.png » :

Image non disponible

Étape 9

Sélectionnez l'onglet MainPage.xaml s'il ne l'est pas déjà, ensuite dans le volet XAML au-dessus de la balise <Grid> tapez le code ApplicationBar XAML suivant :

 
Sélectionnez
<phone:PhoneApplicationPage.ApplicationBar>
  <shell:ApplicationBar IsVisible="True" IsMenuEnabled="False">
    <shell:ApplicationBar.Buttons>
      <shell:ApplicationBarIconButton Text="record" IconUri="/images/record.png" Click="Record_Click"/>
      <shell:ApplicationBarIconButton Text="play" IconUri="/images/play.png" Click="Play_Click"/>
      <shell:ApplicationBarIconButton Text="stop" IconUri="/images/stop.png" Click="Stop_Click"/>
    </shell:ApplicationBar.Buttons>
  </shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>
Image non disponible

Étape 10

Faites un clic droit sur la page ou sur l'entrée pour MainPage.xaml dans l'Explorateur de solutions et choisissez l'option Afficher le code. Dans la vue de code, au-dessus de namespace AudioRecorder tapez ceci :

 
Sélectionnez
using Microsoft.Xna.Framework.Audio;
using System.IO;

Toujours dans la vue de code, au-dessus de public MainPage() tapez les déclarations suivantes :

 
Sélectionnez
private Microphone microphone = Microphone.Default;
private byte[] buffer;
private MemoryStream stream = new MemoryStream();
private SoundEffect sound;
Image non disponible

Étape 11

Puisque nous en sommes à la vue de code pour MainPage.xaml.cs, dans le constructeur public MainPage() en dessous de InitializeComponent(); tapez ceci :

 
Sélectionnez
ApplicationTitle.Text = "AUDIO RECORDER";
PageTitle.Text = "ready";
microphone.BufferReady += (object sender, EventArgs e) =>
{
  microphone.GetData(buffer);
  stream.Write(buffer, 0, buffer.Length);
};
Image non disponible

Étape 12

Toujours dans la vue de code pour MainPage.xaml.cs, au-dessus de public MainPage(), tapez les gestionnaires d'événements suivants :

 
Sélectionnez
private void Record_Click(object sender, EventArgs e)
{
  microphone.BufferDuration = TimeSpan.FromMilliseconds(1000);
  buffer = new byte[microphone.GetSampleSizeInBytes(microphone.BufferDuration)];
  microphone.Start();
  PageTitle.Text = "record";
}

private void Play_Click(object sender, EventArgs e)
{
  sound = new SoundEffect(stream.ToArray(), microphone.SampleRate, AudioChannels.Mono);
  sound.Play();
  PageTitle.Text = "play";
}

private void Stop_Click(object sender, EventArgs e)
{
  if (microphone.State == MicrophoneState.Started)
  {
    microphone.Stop();
    PageTitle.Text = "stop";
  }
  else
  {
    PageTitle.Text = "ready";
  }
}
Image non disponible

Étape 13

Enregistrez le Projet maintenant que vous avez terminé l'application Windows Phone Silverlight. Sélectionnez l'option Windows Phone Emulator ensuite sélectionnez Debug puis Démarrer le débogage ou cliquez sur Démarrer le débogage :

Image non disponible

Dès que vous l'aurez fait, ce qui suit apparaîtra dans l'émulateur Windows Phone une fois chargé :

Image non disponible

Étape 14

Appuyez sur le bouton record pour commencer l'enregistrement, ensuite cliquez sur stop pour arrêter l'enregistrement - que vous pouvez rejouer en utilisant le bouton play :

Image non disponible

Étape 15

Vous pouvez ensuite Arrêter l'application en sélectionnant la fenêtre d'application Visual Studio 2010 et en cliquant sur le bouton Arrêter le débogage :

Image non disponible

Conclusion

Il s'agit d'un enregistreur audio simple. Le flux dans lequel l'audio est stocké pourrait être utilisé pour sauvegarder le fichier audio enregistré dans l'IsolatedStorage. Il pourrait également être modifié pour afficher davantage d'indications visuelles de l'enregistrement ou de la lecture en cours - personnalisez-le !

Liens

Remerciements

Je tiens ici à remercier Peter Bull de m'avoir autorisé à traduire son tutoriel.
Je remercie Jean-Michel Ormes pour sa relecture technique et ses propositions.
Je remercie également _Max_ pour sa relecture orthographique et ses propositions.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2012 Peter Bull. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.