Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Riprodurre pių file audio contemporaneamente
Forum - C# / VB.NET - Riprodurre pių file audio contemporaneamente

Avatar
blasters (Normal User)
Newbie


Messaggi: 8
Iscritto: 12/04/2010

Segnala al moderatore
Postato alle 10:01
Sabato, 22/10/2011
Salve, ho bisogno di riprodurre pių file audio contemporaneamente, ho provato ad usare questo codice ma ho dei problemi. Come potrei fare?
Codice sorgente - presumibilmente VB.NET

  1. Imports QuartzTypeLib
  2.  
  3. Public Class Form1 Dim Audio As IBasicAudio Dim MMCtrl As IMediaControl Dim suoni(10) As IBasicAudio Public Sub SoundMusic(ByVal path As String, ByVal index As Integer, ByVal volume As Integer) suoni(index).MMCtrl = New QuartzTypeLib.FilgraphManager suoni(index).MMCtrl.RenderFile(path) suoni(index).Audio.Balance = 0 ' da -10000 a + 10000 suoni(index).Audio.volume = volume ' da -10000 a 0 in attenuanza di decibel non č lineare suoni(index).Audio.Run() End Sub
  4.  
  5. Grazie
  6.  
  7. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  8.  
  9. SoundMusic("c:\a.mp3", 0, 0)
  10.  
  11. End Sub


PM
Avatar
VMikle (Ex-Member)
Rookie


Messaggi: 52
Iscritto: 14/09/2011

Up
4
Down
V
Segnala al moderatore
Postato alle 15:45
Sabato, 22/10/2011
Ti propongo una soluzione gestita ed una non gestita :k:

Per la prima devi aggiungere un riferimento a PresentationCore e WindowsBase per poi instanziare ed utilizzare System.Windows.Media.MediaPlayer.
Maggiori informazioni qui:
http://msdn.microsoft.com/it-it/library/system.windows.med ...

Codice sorgente - presumibilmente C++

  1. using System;
  2. using System.Threading;
  3. using System.Windows.Media;
  4.  
  5. public class Program
  6. {
  7.     static void Main()
  8.     {
  9.         var player = new System.Windows.Media.MediaPlayer();
  10.         player.Open(new Uri(@"C:\Users\Mikle\Music\Varie\suono.wav"));
  11.         player.Play();
  12.  
  13.         Thread.Sleep(500); // pausa per farti notare la sovrapposizione dei suoni
  14.  
  15.         var player2 = new System.Windows.Media.MediaPlayer();
  16.         player2.Open(new Uri(@"C:\Users\Mikle\Music\Varie\suono.wav"));
  17.         player2.Play();
  18.     }
  19. }





La seconda č abbastanza versatile e consiste nell'importare mciSendString da winmm.dll per poi utilizzarla.
Trovi informazioni nella pagina di msdn:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd ...
Da segnalare anche il link contenente le istruzioni da passare come stringa a lpszCommand:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd ...

Codice sorgente - presumibilmente C#

  1. using System;
  2. using System.Text;
  3. using System.Threading;
  4. using System.Collections.Generic;
  5. using System.Runtime.InteropServices;
  6.  
  7. public class Program
  8. {
  9.     static void Main()
  10.     {
  11.      Player.Play(@"C:\Users\Mikle\Music\Varie\suono.wav", "suono");
  12.      Thread.Sleep(500); // pausa per farti notare la sovrapposizione dei suoni
  13.      Player.Play(@"C:\Users\Mikle\Music\Varie\suono.wav", "suono2"); // un alias differente permette la riproduzione dello stesso file in contemporanea
  14.      Console.ReadKey();
  15.     }
  16. }
  17.  
  18.  
  19.  
  20. public static class Player
  21. {
  22.         [DllImport("winmm.dll")]
  23.         static extern Int32 mciSendString(string lpszCommand, StringBuilder lpszReturnString, int cchReturn, IntPtr hwndCallback);
  24.  
  25.         public static void Play(string path, string alias) // N.B. manca la gestione dei valori di ritorno
  26.         {
  27.             mciSendString("open \"" + path + "\" alias " + alias, null, 0, IntPtr.Zero);
  28.             mciSendString("play " + alias, null, 0, IntPtr.Zero);
  29.         }
  30. }




EDIT:
dato che non hai specificato nessun linguaggio, non mi č venuto in mente che stessi usando VB ed ho scritto gli esempi in C#
Le differenze per fortuna sono solo sintattiche, quindi non dovresti avere problemi a tradurre (manualmente o con qualche convertitore online) :yup:

Ultima modifica effettuata da VMikle il 22/10/2011 alle 15:53
Ciao, prima di tutto grazie :D ho utilizzato la prima soluzione perchč per l'uso che ne devo fare mi sembra ottima! Volevo chiederti se invece di un file .wav volessi utilizzare un file .mp3 come potrei fare? - blasters - 22/10/11 18:06
PM
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Up
2
Down
V
Segnala al moderatore
Postato alle 18:14
Sabato, 22/10/2011
Io suggerisco di usare le MS DirectX, credo che siano pių facili, anche se le richiedono obbligatoriamente istallate sul PC:
guarda la classe Audio:
http://msdn.microsoft.com/it-it/library/bb324224(v=VS.85). ...
con queste puoi riprodurre i pių comuni file audio(wav, mp3, ogg, wma, ecc...)

Ultima modifica effettuata da walker93 il 22/10/2011 alle 18:17
PM