begin process at 2010 02 10 13:20:04
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

.NET

 > JOUER DE LA MUSIQUE EN ASYNHRONE (WAV ET MP3)

JOUER DE LA MUSIQUE EN ASYNHRONE (WAV ET MP3)


 Information sur la source

Note :
7 / 10 - par 2 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :.NET Source .NET ( DotNet ) Classé sous :wav, mp3, musique Niveau :Débutant Date de création :16/02/2003 Date de mise à jour :11/03/2006 17:40:24 Vu / téléchargé :14 723 / 290

Auteur : bob94700

Ecrire un message privé
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Une petite adaptation d'une classe que j'ai trouvée sur le net. Elle prend en charge les format Wav et Mp3 (requiert QuartzTypeLib.dll). Le nom du fichier indiqué doit être "correctement" extensé (.mp3), mais vous pouvez adapter le code.

La fonction convert fait du Wav => Mp3 et nécessite le programme Lame.exe. Elle est optionnelle.

Source

  • using System;
  • using QuartzTypeLib;
  • using System.Collections;
  • using System.ComponentModel;
  • using System.Diagnostics;
  • using System.Runtime.InteropServices;
  • using System.Text;
  • using System.Threading;
  • public class Musique
  • {
  • // Cette classe propose des méthode pour jouer des morceaux WAV ou MP3.
  • // Il y a également une méthode de conversion de WAV vers MP3.
  • private string Music_File;
  • private bool MP3;
  • private bool Boucle;
  • private System.Timers.Timer Relance = new System.Timers.Timer();
  • private static QuartzTypeLib.IMediaControl MP3_control;
  • private static QuartzTypeLib.FilgraphManager graphManager;
  • [DllImport("winmm.dll", EntryPoint="PlaySoundA")] public static extern int PlaySound(string Snd_File, int hModule , int Mode);
  • public Musique(string File_Name)
  • {
  • Music_File=File_Name;
  • MP3 = File_Name.ToUpper().IndexOf(".MP3") >=0 ? true : false;
  • Relance.Elapsed += new System.Timers.ElapsedEventHandler(MP3_PlayLoop);
  • }
  • public Musique(string File_Name , bool mp3)
  • {
  • Music_File=File_Name;
  • MP3 = mp3;
  • Relance.Elapsed += new System.Timers.ElapsedEventHandler(MP3_PlayLoop);
  • }
  • ~Musique()
  • {
  • Stop();
  • }
  • public string FileName
  • {
  • get
  • {
  • return Music_File;
  • }
  • set
  • {
  • if (Music_File != value)
  • {
  • Stop();
  • Music_File = value;
  • MP3 = Music_File.ToUpper().IndexOf(".MP3") >=0 ? true : false;
  • }
  • }
  • }
  • public void Play()
  • {
  • Boucle = false;
  • if (MP3) MP3_Play();
  • else WAV_Play();
  • }
  • public void PlayLoop()
  • {
  • Boucle = true;
  • if (MP3) MP3_Play();
  • else WAV_PlayLoop();
  • }
  • public void Stop()
  • {
  • if (MP3) MP3_Stop();
  • else WAV_Stop();
  • }
  • // Méthodes pour les fichiers MP3 :
  • private void MP3_Play()
  • {
  • MP3_Stop();
  • graphManager = new QuartzTypeLib.FilgraphManager();
  • MP3_control = (QuartzTypeLib.IMediaControl)graphManager;
  • MP3_control.RenderFile(Music_File);
  • MP3_control.Run();
  • if (Boucle)
  • { // Timer de boucle avec une seconde de marge.
  • Relance.Interval = 1000 * (int) (1 + graphManager.Duration);
  • Relance.Start();
  • }
  • }
  • private void MP3_PlayLoop(object source, System.Timers.ElapsedEventArgs e)
  • {
  • MP3_Play();
  • }
  • private void MP3_Stop()
  • {
  • if (MP3_control != null)
  • {
  • MP3_control.Stop();
  • Relance.Stop();
  • }
  • }
  • // Méthodes pour les fichiers WAV :
  • private void WAV_Play()
  • {
  • PlaySound(Music_File , 0 , 1);
  • }
  • private void WAV_PlayLoop()
  • {
  • PlaySound(Music_File , 0 , 9);
  • }
  • private void WAV_Stop()
  • {
  • PlaySound(null , 0 , 64);
  • }
  • // Conversion WAV vers MP3 :
  • public void Convert_Wav_TO_MP3(string Rep_LAME , string WAV_File , string MP3_File , bool Stréréo, int BitRate, bool waitFlag)
  • {
  • string Mode = Stréréo ? " -m s" : "-m m";
  • string bitrate = BitRate == 0 ? " -b 128" : " -b " + BitRate.ToString();
  • Rep_LAME = (Rep_LAME.Substring(Rep_LAME.Length-1) == @"\\" ? Rep_LAME : Rep_LAME+@"\\");
  • string outfile = bitrate + Mode + " \\"" + WAV_File + "\\" \\"" + MP3_File + "\\"";
  • ProcessStartInfo psi = new ProcessStartInfo();
  • psi.FileName = "\\"" + Rep_LAME + "lame.exe" + "\\"";
  • psi.Arguments = outfile;
  • psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
  • Process p = System.Diagnostics.Process.Start(psi);
  • if (waitFlag)
  • p.WaitForExit(); // wait for exit of called application
  • }
  • }
  • *********************************************
  • *********************************************
  • ** EVOLUTION NOVEMBRE 2004 **
  • *********************************************
  • *********************************************
  • using System;
  • using QuartzTypeLib;
  • using Rnd_Wallpaper;
  • using System.Collections;
  • using System.ComponentModel;
  • using System.Diagnostics;
  • using System.IO;
  • using System.Threading;
  • /// <summary> Cette classe permet de jouer des morceaux WAV ou MP3, en asynchrone.
  • /// Elle contient également une méthode de conversion de WAV vers MP3.</summary>
  • public class Musique
  • {
  • private ArrayList mMusicFiles; // Tableaux des fichiers
  • private string mCurrent_File = ""; // Fichier en cours de lecture
  • private string mPaddFile = ""; // Padding des fichiers
  • private bool mBoucle = false; // Indique si la lecture est en boucle ou non
  • private bool mRndPlay = false; // Indique si l'ordre de lecture est aléatoire ou pas
  • private int mCurrent = 0; // Indice du fichier en cours de lecture;
  • private double mDelay = -1; // Durée de lecture des morceaux (-1 => durée du morceau).
  • private System.Timers.Timer TimerRelance = new System.Timers.Timer();
  • public event EventHandler MusicChanged;
  • public event EventHandler MusicEnded;
  • // private static QuartzTypeLib.IBasicAudio AudioCtrl = null;
  • // private static QuartzTypeLib.IMediaPosition PositionCtrl = null;
  • // private static QuartzTypeLib.IMediaControl MusicCtrl;
  • private static QuartzTypeLib.FilgraphManager graphManager;
  • /// <summary> Constructeur d'un objet "Musique". </summary>
  • /// <param name="File_Name"> Indique le fichier ou le padding des fichiers qui seront joués. </param>
  • public Musique(string File_Name)
  • {
  • InitData(File_Name);
  • TimerRelance.Elapsed += new System.Timers.ElapsedEventHandler(Play);
  • }
  • ~Musique()
  • {
  • Stop();
  • }
  • /// <summary> Contient le fichier à lire ou un padding définissant une liste de fichier (Lecture/Ecriture). </summary>
  • public string FileName
  • {
  • get
  • {
  • return mPaddFile;
  • }
  • set
  • {
  • InitData(value);
  • }
  • }
  • /// <summary> Renvoie le nom du fichier actuellement joué (Lecture seule). </summary>
  • public string CurrentFile
  • {
  • get
  • {
  • return mCurrent_File;
  • }
  • }
  • /// <summary> Renvoie la durée du fichier actuellement joué. La modification de cette propriété n'a d'effet que lorsqu'un
  • /// morceau est en cours de lecture : elle permet de déterminer le délai pour passer au morceau suivant. </summary>
  • public double Duration
  • {
  • get
  • {
  • try { return (mDelay<=0 ? graphManager.Duration : mDelay); }
  • catch { return 0;}
  • }
  • set
  • {
  • mDelay = value;
  • }
  • }
  • /// <summary> Permet de jouer un fichier MP3 ou WAV dans la liste définie par la propriété "FileName".</summary>
  • /// <returns>Renvoie 'true' si le fichier a pu être joué, 'false' sinon. </returns>
  • /// <param name="Loop"> Indique si le morceau de musique est jouer en boucle ou pas. </param>
  • /// <param name="RndPlay"> Si une liste de fichiers a été paramétrée, indique si la lecture est aléatoire ou séquentielle. </param>
  • public bool Play (bool Loop, bool RndPlay)
  • {
  • mRndPlay = RndPlay;
  • bool Result;
  • do
  • Result = Play(Loop, FindFile());
  • while (!Result && mMusicFiles.Count > 0);
  • return Result;
  • }
  • /// <summary> Permet de jouer le fichier MP3 ou WAV spécifié. </summary>
  • /// <returns> Renvoie 'true' si le fichier a pu être jouer, 'false' sinon. </returns>
  • /// <param name="Loop"> Indique si le morceau de musique est jouer en boucle ou pas. </param>
  • /// <param name="File"> Nom du Fichier à jouer. </param>
  • public bool Play (bool Loop, string File)
  • {
  • Stop();
  • mCurrent_File = (System.IO.File.Exists(File) ? File : "");
  • if (mCurrent_File != "")
  • {
  • mCurrent = mMusicFiles.IndexOf(File);
  • try
  • {
  • // Variables de gestion des fichiers AUDIO MP3 & WAV :
  • graphManager = new QuartzTypeLib.FilgraphManager();
  • graphManager.RenderFile(mCurrent_File);
  • graphManager.Run();
  • OnMusicChanged(EventArgs.Empty);
  • if (mBoucle = Loop)
  • {
  • TimerRelance.Interval = (mDelay<=0 ? (int) (500 + 1000 * graphManager.Duration) : 1000 * mDelay);
  • TimerRelance.Start();
  • }
  • return true;
  • }
  • catch
  • {
  • if (mCurrent > -1)
  • mMusicFiles.RemoveAt(mCurrent);
  • mCurrent_File = "";
  • }
  • }
  • return false;
  • }
  • /// <summary> Arrète le morceau de musique en cours de lecture. </summary>
  • public void Stop ()
  • {
  • if (graphManager != null)
  • {
  • graphManager.Stop();
  • graphManager = null;
  • TimerRelance.Stop();
  • mCurrent_File = "";
  • mCurrent = -1;
  • }
  • }
  • /// <summary> Initialise les données de l'objet lorsqu'un nouveau 'FileName' est indiqué. </summary>
  • /// <param name="File_Name"> Nouvelle valeur de la propriété 'FileName'. </param>
  • private void InitData (string File_Name)
  • {
  • // Chargement des données :
  • Stop();
  • mPaddFile = File_Name;
  • mRndPlay = ! System.IO.File.Exists(File_Name);
  • mBoucle = false;
  • int Pos = File_Name.LastIndexOf("\\");
  • if (Pos < 1)
  • mMusicFiles = null;
  • else
  • {
  • string PadFile = File_Name.Substring(Pos+1);
  • string[] RepList = new string[] {File_Name.Substring(0,Pos)};
  • string[,] List_fmt = new string[,] {{"True", PadFile}};
  • mMusicFiles = new ArrayList(FctCom.Find_File_List(RepList, List_fmt, false)); // Utilisation détournée de la fonction => CtrlImg = false
  • }
  • //PositionCtrl = (QuartzTypeLib.IMediaPosition)MusicCtrl;
  • }
  • /// <summary> Renvoie le nom d'un fichier dans la liste définie par le propriété 'FileName'. </summary>
  • private string FindFile ()
  • {
  • if (mMusicFiles != null)
  • if (mMusicFiles.Count > 0)
  • {
  • if (mRndPlay)
  • do
  • mCurrent = DATA.Rnd.Next(mMusicFiles.Count);
  • while ( (string)mMusicFiles[mCurrent] == mCurrent_File && mMusicFiles.Count > 1);
  • else
  • ++mCurrent;
  • if (mCurrent >= mMusicFiles.Count)
  • mCurrent = 0;
  • return (string) mMusicFiles[mCurrent];
  • }
  • return "";
  • }
  • /// <summary> Cette fonction est appelée à chaque fois que le timer est atteint (à la fin d'un morceau de musique donc). </summary>
  • private void Play (object source, System.Timers.ElapsedEventArgs e)
  • {
  • OnMusicEnded(EventArgs.Empty);
  • Play(mBoucle, mRndPlay);
  • }
  • /// <summary> Permet de convertir un fichier WAV en MP3. </summary>
  • /// <param name="Rep_LAME"> Contient le répertoire dans lequel se trouve le programme "lame.exe". </param>
  • /// <param name="WAV_File"> Nom du Fichier WAV à convertir (complet). </param>
  • /// <param name="MP3_File"> Nom du Fichier MP3 issu de la conversion (complet). </param>
  • /// <param name="Stréréo"> Indique si la conversion est stéréo ou pas. </param>
  • /// <param name="BitRate"> Contient le BitRate de conversion. </param>
  • /// <param name="waitFlag"> Indique si la conversion est synchrone ou pas. </param>
  • public void Convert_Wav_TO_MP3(string Rep_LAME , string WAV_File , string MP3_File , bool Stréréo, int BitRate, bool waitFlag)
  • {
  • string Mode = Stréréo ? " -m s" : "-m m";
  • string bitrate = BitRate == 0 ? " -b 128" : " -b " + BitRate.ToString();
  • Rep_LAME = (Rep_LAME.Substring(Rep_LAME.Length-1) == @"\" ? Rep_LAME : Rep_LAME+@"\");
  • string outfile = bitrate + Mode + " \"" + WAV_File + "\" \"" + MP3_File + "\"";
  • ProcessStartInfo psi = new ProcessStartInfo();
  • psi.FileName = "\"" + Rep_LAME + "lame.exe" + "\"";
  • psi.Arguments = outfile;
  • psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
  • Process p = System.Diagnostics.Process.Start(psi);
  • if (waitFlag)
  • p.WaitForExit(); // wait for exit of called application
  • }
  • /// <summary> Cet évènement se produit à chaque fois qu'un nouveau morceau démarre. </summary>
  • protected virtual void OnMusicChanged (EventArgs e)
  • {
  • if (MusicChanged != null)
  • MusicChanged(this, e);
  • }
  • /// <summary> Cet évènement se produit à chaque fois qu'un morceau se termine. </summary>
  • protected virtual void OnMusicEnded (EventArgs e)
  • {
  • if (MusicEnded != null)
  • MusicEnded(this, e);
  • }
  • }
using System;
using QuartzTypeLib;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;


public class Musique 
{

   // Cette classe propose des méthode pour jouer des morceaux WAV ou MP3.
   // Il y a également une méthode de conversion de WAV vers MP3.
		
   private string Music_File;
   private bool   MP3;
   private bool   Boucle;
   private System.Timers.Timer  Relance = new System.Timers.Timer();

   private static QuartzTypeLib.IMediaControl   MP3_control;
   private static QuartzTypeLib.FilgraphManager graphManager;

   [DllImport("winmm.dll", EntryPoint="PlaySoundA")]   public static extern int PlaySound(string Snd_File, int hModule , int Mode);
		

   public Musique(string File_Name) 
   {
      Music_File=File_Name;
      MP3 = File_Name.ToUpper().IndexOf(".MP3") >=0 ? true : false;
      Relance.Elapsed += new System.Timers.ElapsedEventHandler(MP3_PlayLoop);
   }

   public Musique(string File_Name , bool mp3)    
   {
      Music_File=File_Name;
      MP3 = mp3;
      Relance.Elapsed += new System.Timers.ElapsedEventHandler(MP3_PlayLoop);
   }

   ~Musique()
   {
      Stop();
   }


   public string FileName 
   { 
      get 
      { 
         return Music_File; 
      } 
      set 
      { 
         if (Music_File != value)
         {
            Stop();
            Music_File = value; 
            MP3 = Music_File.ToUpper().IndexOf(".MP3") >=0 ? true : false;
         }
      } 
   } 

 
   public void Play()            
   {
      Boucle = false;
      if (MP3)    MP3_Play();
      else        WAV_Play();
   }

   public void PlayLoop()        
   {
      Boucle = true;
      if (MP3)    MP3_Play();
      else        WAV_PlayLoop();
   }

   public void Stop()            
   {
      if (MP3)    MP3_Stop();
      else        WAV_Stop();
   }


   // Méthodes pour les fichiers MP3 :
   private void   MP3_Play()        
   {
      MP3_Stop();
      graphManager = new QuartzTypeLib.FilgraphManager(); 
      MP3_control  = (QuartzTypeLib.IMediaControl)graphManager; 
      MP3_control.RenderFile(Music_File); 
      MP3_control.Run();
      if (Boucle)
      {  // Timer de boucle avec une seconde de marge.
         Relance.Interval = 1000 * (int) (1 + graphManager.Duration);
         Relance.Start();
      }
   }

   private void   MP3_PlayLoop(object source, System.Timers.ElapsedEventArgs e)    
   {
      MP3_Play();
   }

   private void   MP3_Stop()        
   {
      if (MP3_control != null)
      {
         MP3_control.Stop();
         Relance.Stop();
      }
   }


   // Méthodes pour les fichiers WAV :
   private void   WAV_Play()        
   {
      PlaySound(Music_File , 0 , 1);
   }

   private void   WAV_PlayLoop()    
   {
      PlaySound(Music_File , 0 , 9);
   }

   private void   WAV_Stop()        
   {
      PlaySound(null , 0 , 64);
   }


   // Conversion WAV vers MP3 :
   public  void   Convert_Wav_TO_MP3(string Rep_LAME , string WAV_File , string MP3_File , bool Stréréo, int BitRate, bool waitFlag)
   {
      string Mode    = Stréréo      ? " -m s" : "-m m";
      string bitrate = BitRate == 0 ? " -b 128" : " -b " + BitRate.ToString();

      Rep_LAME = (Rep_LAME.Substring(Rep_LAME.Length-1) == @"\\" ? Rep_LAME : Rep_LAME+@"\\");
      string outfile       = bitrate + Mode + " \\"" + WAV_File + "\\" \\"" + MP3_File + "\\"";
      ProcessStartInfo psi = new ProcessStartInfo();
      psi.FileName         = "\\"" + Rep_LAME + "lame.exe" + "\\"";
      psi.Arguments        = outfile;
      psi.WindowStyle      = System.Diagnostics.ProcessWindowStyle.Minimized;
      Process          p   = System.Diagnostics.Process.Start(psi);
      if (waitFlag) 
         p.WaitForExit();        // wait for exit of called application			
   }
}


*********************************************
*********************************************
**      EVOLUTION  NOVEMBRE 2004           **
*********************************************
*********************************************

using System;
using QuartzTypeLib;
using Rnd_Wallpaper;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Threading;


/// <summary> Cette classe permet de jouer des morceaux WAV ou MP3, en asynchrone.
/// Elle contient également une méthode de conversion de WAV vers MP3.</summary>
public class Musique 
{		
   private ArrayList mMusicFiles;         // Tableaux des fichiers 
   private string    mCurrent_File = "";  // Fichier en cours  de lecture
   private string    mPaddFile = "";      // Padding des fichiers 
   private bool      mBoucle   = false;   // Indique si la lecture est en boucle ou non
   private bool      mRndPlay  = false;   // Indique si l'ordre de lecture est aléatoire ou pas
   private int       mCurrent  = 0;       // Indice du fichier en cours de lecture;
   private double    mDelay    = -1;      // Durée de lecture des morceaux (-1 => durée du morceau).

   private System.Timers.Timer  TimerRelance = new System.Timers.Timer();
   public  event    EventHandler MusicChanged;
   public  event    EventHandler MusicEnded;

   // private static QuartzTypeLib.IBasicAudio     AudioCtrl = null;
   // private static QuartzTypeLib.IMediaPosition  PositionCtrl = null;
   // private static QuartzTypeLib.IMediaControl   MusicCtrl;
   private static QuartzTypeLib.FilgraphManager graphManager;


      /// <summary> Constructeur d'un objet "Musique". </summary>
      /// <param name="File_Name"> Indique le fichier ou le padding des fichiers qui seront joués. </param>
   public Musique(string File_Name)                   
   {
      InitData(File_Name);
      TimerRelance.Elapsed += new System.Timers.ElapsedEventHandler(Play);
   }

   ~Musique()                                         
   {
      Stop();
   }


      /// <summary> Contient le fichier à lire ou un padding définissant une liste de fichier (Lecture/Ecriture). </summary>
   public string FileName                             
   { 
      get 
      { 
         return mPaddFile;
      } 
      set 
      { 
         InitData(value);
      } 
   } 

      /// <summary> Renvoie le nom du fichier actuellement joué (Lecture seule). </summary>
   public string CurrentFile                          
   { 
      get 
      { 
         return mCurrent_File;
      } 
   }
 
      /// <summary> Renvoie la durée du fichier actuellement joué. La modification de cette propriété n'a d'effet que lorsqu'un 
      /// morceau est en cours de lecture : elle permet de déterminer le délai pour passer au morceau suivant. </summary>
   public double Duration                             
   { 
      get 
      { 
         try   {  return (mDelay<=0 ? graphManager.Duration : mDelay); }
         catch {  return 0;}
      } 
      set 
      { 
         mDelay = value;
      } 
   }
 

      /// <summary> Permet de jouer un fichier MP3 ou WAV dans la liste définie par la propriété "FileName".</summary>
      /// <returns>Renvoie 'true' si le fichier a pu être joué, 'false' sinon. </returns> 
      /// <param name="Loop"> Indique si le morceau de musique est jouer en boucle ou pas. </param>
      /// <param name="RndPlay"> Si une liste de fichiers a été paramétrée, indique si la lecture est aléatoire ou séquentielle. </param>
   public bool Play        (bool Loop, bool RndPlay)  
   {
      mRndPlay = RndPlay;
      bool Result;
      do
         Result = Play(Loop, FindFile());
      while (!Result && mMusicFiles.Count > 0);
      return Result;
   }

      /// <summary> Permet de jouer le fichier MP3 ou WAV spécifié. </summary>
      /// <returns> Renvoie 'true' si le fichier a pu être jouer, 'false' sinon. </returns>
      /// <param name="Loop"> Indique si le morceau de musique est jouer en boucle ou pas. </param>
      /// <param name="File"> Nom du Fichier à jouer. </param>
   public bool Play        (bool Loop, string File)   
   {
      Stop();
      mCurrent_File = (System.IO.File.Exists(File) ? File : "");
      if (mCurrent_File != "")
      {
         mCurrent = mMusicFiles.IndexOf(File);
         try
         {
            // Variables de gestion des fichiers AUDIO MP3 & WAV :
            graphManager = new QuartzTypeLib.FilgraphManager(); 
            graphManager.RenderFile(mCurrent_File);
            graphManager.Run();
            OnMusicChanged(EventArgs.Empty);
            if (mBoucle = Loop)
            {
               TimerRelance.Interval = (mDelay<=0 ? (int) (500 + 1000 * graphManager.Duration) : 1000 * mDelay);
               TimerRelance.Start();
            }
            return true;
         }
         catch
         {
            if (mCurrent > -1)    
               mMusicFiles.RemoveAt(mCurrent);
            mCurrent_File = "";
         }
      }
      return false;
   }

      /// <summary> Arrète le morceau de musique en cours de lecture. </summary>
   public void Stop        ()                         
   {
      if (graphManager != null)
      {
         graphManager.Stop();
         graphManager = null;

         TimerRelance.Stop();
         mCurrent_File = "";
         mCurrent = -1;
      }
   }


      /// <summary> Initialise les données de l'objet lorsqu'un nouveau 'FileName' est indiqué. </summary>
      /// <param name="File_Name"> Nouvelle valeur de la propriété 'FileName'. </param>
   private void   InitData (string File_Name)         
   {
      // Chargement des données :
      Stop();
      mPaddFile = File_Name;
      mRndPlay  = ! System.IO.File.Exists(File_Name);
      mBoucle   = false;

      int Pos = File_Name.LastIndexOf("\\");
      if (Pos < 1)
         mMusicFiles = null;
      else
      {
         string    PadFile  = File_Name.Substring(Pos+1);
         string[]  RepList  = new string[] {File_Name.Substring(0,Pos)};
         string[,] List_fmt = new string[,] {{"True", PadFile}};
         mMusicFiles = new ArrayList(FctCom.Find_File_List(RepList, List_fmt, false));    // Utilisation détournée de la fonction => CtrlImg = false
      }

      //PositionCtrl = (QuartzTypeLib.IMediaPosition)MusicCtrl;
   }

      /// <summary> Renvoie le nom d'un fichier dans la liste définie par le propriété 'FileName'. </summary>
   private string FindFile ()                         
   {
      if (mMusicFiles != null)
         if (mMusicFiles.Count > 0)
         {
            if (mRndPlay)
               do
                  mCurrent = DATA.Rnd.Next(mMusicFiles.Count);
               while ( (string)mMusicFiles[mCurrent] == mCurrent_File && mMusicFiles.Count > 1);
            else
               ++mCurrent;
            if (mCurrent >= mMusicFiles.Count)
               mCurrent = 0;
            return (string) mMusicFiles[mCurrent];
         }
      return "";
   }

      /// <summary> Cette fonction est appelée à chaque fois que le timer est atteint (à la fin d'un morceau de musique donc). </summary>
   private void   Play     (object source, System.Timers.ElapsedEventArgs e)
   {
      OnMusicEnded(EventArgs.Empty);
      Play(mBoucle, mRndPlay);
   }


      /// <summary> Permet de convertir un fichier WAV en MP3. </summary>
      /// <param name="Rep_LAME"> Contient le répertoire dans lequel se trouve le programme "lame.exe". </param>
      /// <param name="WAV_File"> Nom du Fichier WAV à convertir (complet). </param>
      /// <param name="MP3_File"> Nom du Fichier MP3 issu de la conversion (complet). </param>
      /// <param name="Stréréo">  Indique si la conversion est stéréo ou pas. </param>
      /// <param name="BitRate">  Contient le BitRate de conversion. </param>
      /// <param name="waitFlag"> Indique si la conversion est synchrone ou pas. </param>
   public  void   Convert_Wav_TO_MP3(string Rep_LAME , string WAV_File , string MP3_File , bool Stréréo, int BitRate, bool waitFlag)
   {
      string Mode    = Stréréo      ? " -m s" : "-m m";
      string bitrate = BitRate == 0 ? " -b 128" : " -b " + BitRate.ToString();

      Rep_LAME = (Rep_LAME.Substring(Rep_LAME.Length-1) == @"\" ? Rep_LAME : Rep_LAME+@"\");
      string outfile       = bitrate + Mode + " \"" + WAV_File + "\" \"" + MP3_File + "\"";
      ProcessStartInfo psi = new ProcessStartInfo();
      psi.FileName         = "\"" + Rep_LAME + "lame.exe" + "\"";
      psi.Arguments        = outfile;
      psi.WindowStyle      = System.Diagnostics.ProcessWindowStyle.Minimized;
      Process          p   = System.Diagnostics.Process.Start(psi);
      if (waitFlag) 
         p.WaitForExit();        // wait for exit of called application			
   }

   
      /// <summary> Cet évènement se produit à chaque fois qu'un nouveau morceau démarre. </summary>
   protected virtual void OnMusicChanged  (EventArgs e)              
   {
      if (MusicChanged != null)
         MusicChanged(this, e);
   }

      /// <summary> Cet évènement se produit à chaque fois qu'un morceau se termine. </summary>
   protected virtual void OnMusicEnded    (EventArgs e)              
   {
      if (MusicEnded != null)
         MusicEnded(this, e);
   }

}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

17 novembre 2004 19:40:56 :
Le code contient 2 versions (le dernière est à la fin). La 2nde version réunit le traitement des fichiers mp3 et wav et propose quelques méthodes et évènements supplémentaires.
11 mars 2006 17:39:39 :
J'ajoute la dernière évolution de cette classe : ATTENTION : avec .NET 2.0 (Voir le zip). J'a
11 mars 2006 17:40:24 :
J'ajoute la dernière évolution de cette classe : ATTENTION : avec .NET 2.0 (Voir le zip). J'ai mis un nouvel évènement qui permet que l'appelant soit "tické" toutes les n secondes.

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) CONTRÔLES D'ACCÈS À L'ARBORESCENCE DES RÉPERTOIRES
Source avec Zip Source .NET (Dotnet) MODIFIER UN CONTROLE DEPUIS UN THREAD
Source avec Zip Source avec une capture Source .NET (Dotnet) COMBOBOX AVEC DES ITEMS GRISÉS
Source avec Zip Source .NET (Dotnet) UNE CLASSE DE MISE EN OEUVRE DE DIRECTX (DIRECTDRAW)
Source avec Zip Source avec une capture Source .NET (Dotnet) BIBLIOTHÈQUE DE CONTRÔLES SUR LES RÉPERTOIRES

 Sources de la même categorie

Source avec Zip CHAT SERVER-CLIENT par abderrahmenbilog
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMULATION DE CONSOLE POUR WINDOWS MOBILE par originalcompo
Source avec Zip Source .NET (Dotnet) BASE DE DONNÉES EN XML par DanMor498
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMPLECONV - APPLICATION DE CONVERSION MONÉTAIRE AVEC TAUX E... par Jeffrey_
Source avec Zip Source .NET (Dotnet) TRAITEUR D'IMAGE (MINI) par ycyril

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) SOUND EDITOR - UN PETIT LOGICIEL DE DSP AUDIO par MaxSoldier
Source avec Zip Source avec une capture Source .NET (Dotnet) LAMINE PLAYER par ouadjaout
Source avec Zip Source avec une capture Source .NET (Dotnet) TRI ET GROUPEMENT DE FICHIERS .MP3 SELON LE CONTENU DE LEURS... par Vallorbain
Source .NET (Dotnet) MP3, WAV ET WMA EN C# par pandoox
Source avec Zip Source .NET (Dotnet) UTILISATION DE L'ÉLÉMENT AUDIO DE DIRECTX 9 par LuckyLuck

Commentaires et avis

Commentaire de akitchan le 15/08/2003 17:47:40

Bonjour, ton code est très intéressant et très simple, grace à ça mon idée de petit player mp3 va voir le jour. Juste un petit problème, quel est le site officiel de la dll ? Est-ce une dll gratuite ?

Commentaire de bob94700 le 16/08/2003 12:09:42

Bonjour,
   Je ne sais plus où j'ai récupérer cette dll qui est pour autant que je m'en souvienne gratuite. Passe-moi un e-mail, et je peux te l'envoyer.

Commentaire de akitchan le 16/08/2003 15:25:23

Une autre source du site la donne dans la source donc je l'ai. Le problème c'est que sans l'aide c'est pas très facile à utiliser...
Merci quand même ^_____^

Commentaire de B3nJ4m1n le 03/10/2003 18:11:36

Merci, j'lai tester sa marche du tonerre! Et c'est pas trop compliquer

Commentaire de Shakta le 17/11/2004 19:12:21

bonjour,

La dll m'interesse pourrais tu si elle est gratuite me  faire suivre le code source, enfin si tu l'as.

merci d'avance

Shakta
email : shaktadev@yahoo.fr

Commentaire de thebigboss le 06/12/2005 20:14:14

Moi aussi je cherchais la source de cette dll et coq m'a répondu:
"QuartzTypeLib est obtenue via tlbimp à partir de quartz.dll
tlbimp c:\windows\system32\quartz.dll /out:QuartzTypeLib.dll

Tu ne pourras donc pas voir directement son code, par contre tu peux utiliser Reflector pour te ballader un peu dedans:
http://www.aisto.com/roeder/dotnet/"

Reflector est vraiment très utile pour pouvoir se ballader dans les dll!!!!!!!!!!

Commentaire de neuralys le 10/01/2006 23:57:14

je crois savoir que quartz.dll provient de directShow (donc partie integrante de directX)... voili voilou...

Commentaire de Gargantuass le 03/05/2008 16:22:13

Bonjour,

j'ai voulu tester ce programme mais le compilateur me dis que duration n'est pas disponible.
Si quelqu'un pourrait me dire pourquoi.

Merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Conversion wav to raw [ par lezabour55 ] Bonjour a tous, Je debute un peu en C# apres avoir appris a la fac le c/c++.... Je dois faire un projet dans lequel je convertie des mp3 en raw. Pour openFileDialog multi "type" [ par cameleon044 ] Bonjour,N'ayant pas trouvé de réponse sur les forum, je me permet de poser cette question.Comment fait on dans un OpenFileDialog en C# pour avoir comm Musique en resource [ par AlexBoost ] SalutCetait pour vous demandez comment faire pour lire un MP3/Wav qui se trouve en resource ? Mettre en pause un MP3 ( AudioVideoPlayback ) [ par sliverman ] Bonjour à tous, je suis en train de faire une petite application qui permet la lecture des MP3 et j'ai un problème pour mettre en pause la lecture...q >>>>>>> je recherche quelqu'un qui peu m'aider à placer un Lecteur mp3 sur mon site >>>>> [ par delotrerive ] Bonjour !Je ne suis pas Développeur/ SimplementPeintre / Infographiste/musicienEn  ce moment je travaille sur mon site www Tagger mp3 via internet [ par Leucistic ] Bonjour, Je voudrais développer une appli qui permettrais de tagger ses mp3 rapidement en allant chercher les infos des tracks d'un album sur internet lecteur mp3 en C# [ par moi411 ] Bonjour à tous,Voilà, je voudrais créer une application qui me lise des fichier mp3. Mon problème comme vous l'avez deviné, est de lire le fichier et Durée incorrecte. [ par Electrok0rE ] Salutations,Pour faire simple :- Je manipule des fichiers mp3 avec la bibliothèque Microsoft.DirectX.AudioVideoPlayBack- Pour la plupart des fichiers [ C# -> BAR ] recuperation du lecteur mp3 [ par ismail02 ] bonjour a tous voila mon probleme jai voulu metre a jour mon lecteur mp3 sigmatel 512mo mai il me demonde de regenerer la base de donnes interne ,afin


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales