예제 #1
1
        void call_CallStateChanged(object sender, Ozeki.VoIP.VoIPEventArgs<CallState> e)
        {
            if(e.Item.IsInCall())
            {
                if(firstInCall)
                {
                    try
                    {
                        entry.State = WorkState.InProgress;
                        firstInCall = false;
                        ringingTimer.Elapsed -= ringingTimer_Elapsed;
                        waveStreamPlayback = new WaveStreamPlayback(entry.SoundPath);
                        call.ConnectAudioSender(waveStreamPlayback);

                        waveStreamPlayback.Stopped += waveStreamPlayback_Stopped;

                        waveStreamPlayback.StartStreaming();
                        progressTimer.Start();
                    }
                    catch (Exception ex)
                    {
                        OnWorkCompleted(WorkState.FileError);
                    }
                }
            }
            else if(e.Item.IsCallEnded())
            {
                OnWorkCompleted(WorkState.HungUpByRemote);
            }
        }
예제 #2
0
        void call_CallStateChanged(object sender, Ozeki.VoIP.VoIPEventArgs <CallState> e)
        {
            if (e.Item.IsInCall())
            {
                if (firstInCall)
                {
                    try
                    {
                        entry.State           = WorkState.InProgress;
                        firstInCall           = false;
                        ringingTimer.Elapsed -= ringingTimer_Elapsed;
                        waveStreamPlayback    = new WaveStreamPlayback(entry.SoundPath);
                        call.ConnectAudioSender(waveStreamPlayback);

                        waveStreamPlayback.Stopped += waveStreamPlayback_Stopped;

                        waveStreamPlayback.StartStreaming();
                        progressTimer.Start();
                    }
                    catch (Exception ex)
                    {
                        OnWorkCompleted(WorkState.FileError);
                    }
                }
            }
            else if (e.Item.IsCallEnded())
            {
                OnWorkCompleted(WorkState.HungUpByRemote);
            }
        }
예제 #3
0
        internal void SetRingtone(string filePath)
        {
            bool isStreaming = false;

            // dispose previous
            if (ringtonePlayer != null)
            {
                isStreaming = ringtonePlayer.IsStreaming;

                audioConnector.Disconnect(ringtonePlayer, speakerMixer);
                ringtonePlayer.Dispose();
                ringtonePlayer = null;
            }

            // create new
            ringtonePlayer = new WaveStreamPlayback(filePath, true, true);

            audioConnector.Connect(ringtonePlayer, speakerMixer);

            // start if necessary
            if (isStreaming)
            {
                ringtonePlayer.StartStreaming();
            }
        }
 public override void StartNarration(string audiofile)
 {
     currentAudioFile = audiofile;
     waveStreamPlayback = new WaveStreamPlayback(audiofile);
     waveStreamPlayback.Stopped += waveStreamPlayback_Stopped;
     OnNarrationStarting();
     waveStreamPlayback.StartStreaming();
 }
 public override void StartNarration(string audiofile)
 {
     currentAudioFile            = audiofile;
     waveStreamPlayback          = new WaveStreamPlayback(audiofile);
     waveStreamPlayback.Stopped += waveStreamPlayback_Stopped;
     OnNarrationStarting();
     waveStreamPlayback.StartStreaming();
 }
예제 #6
0
        /// <summary>
        /// Initializes the audio handlers (microphone, speaker, DTMF player etc.).
        /// </summary>
        private void InitAudio()
        {
            // ----- CREATE -----
            // devices
            Microphone = Microphone.GetDefaultDevice();
            Speaker    = Speaker.GetDefaultDevice();

            // audio processors
            if (Microphone == null)
            {
                AudioEnhancer = new AudioQualityEnhancer(new AudioFormat());
            }
            else
            {
                AudioEnhancer = new AudioQualityEnhancer(Microphone.MediaFormat);
            }
            AudioEnhancer.SetEchoSource(Speaker);
            _dtmfPlayer = new DtmfEventWavePlayer();

            // ringtones
            var ringbackStream = LoadRingbackStream();
            var ringtoneStream = LoadRingtoneStream();

            _ringtonePlayer = new WaveStreamPlayback(ringtoneStream, true, false);
            _ringbackPlayer = new WaveStreamPlayback(ringbackStream, true, false);

            // mixers
            //outgoingDataMixer = new AudioForwarder();
            //speakerMixer = new AudioForwarder();
            //recordDataMixer = new AudioForwarder();

            // phone handlers
            _phoneCallAudioSender   = new PhoneCallAudioSender();
            _phoneCallAudioReceiver = new PhoneCallAudioReceiver();


            // ----- CONNECT -----
            // connect outgoing
            //audioConnector.Connect(AudioEnhancer, outgoingDataMixer);
            //audioConnector.Connect(outgoingDataMixer, phoneCallAudioSender);
            //audioConnector.Connect(outgoingDataMixer, recordDataMixer);
            _audioConnector.Connect(AudioEnhancer, _phoneCallAudioSender);
            if (Microphone != null)
            {
                Microphone.LevelChanged += (Microphone_LevelChanged);
                _audioConnector.Connect(Microphone, AudioEnhancer);
            }

            // connect incoming
            if (Speaker != null)
            {
                Speaker.LevelChanged += (Speaker_LevelChanged);
                _audioConnector.Connect(_phoneCallAudioReceiver, Speaker);
                _audioConnector.Connect(_ringtonePlayer, Speaker);
                _audioConnector.Connect(_ringbackPlayer, Speaker);
                _audioConnector.Connect(_dtmfPlayer, Speaker);
            }
        }
예제 #7
0
 /// <summary>
 /// Inicializar reproductor.
 /// </summary>
 void initStreamPlayback()
 {
     if (extTypeWav.Contains(extTypePlayer))
     {
         wavPlayer = new WaveStreamPlayback(jobDataCommon.callServer.soundFile.targetPath);
     }
     else
     {
         mp3Player = new MP3StreamPlayback(jobDataCommon.callServer.soundFile.targetPath);
     }
 }
예제 #8
0
        public bool MakeCall(Dictionary <string, string> pingData)
        {
            _log.Info("Beginning MakeCall");
            _pingData = pingData;

            // Ensure the specified audio file is in the manifest
            Assembly assembly       = Assembly.GetExecutingAssembly();
            string   resourceName   = String.Format("Netopia.VOIPTester.Client.Resources.{0}", _config.GetStringValue("tonefile"));
            Stream   resourceStream = assembly.GetManifestResourceStream(resourceName);

            // Console.WriteLine(String.Join("\n", assembly.GetManifestResourceNames()));
            if (resourceStream == null)
            {
                _log.Fatal(String.Format("Can't find embedded audio file {0}", resourceName));
                return(false);
            }

            // Create the SIP client and register to the server
            _softPhone = SoftPhoneFactory.CreateSoftPhone(SoftPhoneFactory.GetLocalIP(), _config.GetIntValue("sip.min"), _config.GetIntValue("sip.max"), _config.GetIntValue("sip.port"));
            _phoneLine = _softPhone.CreatePhoneLine(new SIPAccount(true, _config.GetStringValue("sip.displayname"), _config.GetStringValue("sip.username"), _config.GetStringValue("sip.username"), _config.GetStringValue("sip.password"), _config.GetStringValue("sip.host")), new NatConfiguration(_config.GetStringValue("externalip"), true));
            _phoneLine.PhoneLineStateChanged += PhoneLineStateChanged;
            _wavPlayback          = new WaveStreamPlayback(resourceStream);
            _wavPlayback.Stopped += StreamingStopped;
            _connector.Connect(_wavPlayback, _callSender);

            // Register the SIP connection
            Register();

            // Wait 3 seconds and check if the line is registered. If not, shut down.
            System.Threading.Thread.Sleep(3000);
            if (_phoneLine.LineState != PhoneLineState.RegistrationSucceeded)
            {
                _log.Error(String.Format("Phone Line is not registered. State is {0}. Exiting.", _phoneLine.LineState.ToString()));
                return(false);
            }


            lock (_sync)
            {
                // Wait for the defined MAX_CALL_LENGTH
                Monitor.Wait(_sync, MAX_CALL_LENGTH * 1000);
            }
            _log.Info("Completed call");

            return(_complete);
        }
예제 #9
0
        /// <summary>
        /// Loads a wav file for playback.
        /// </summary>
        public void LoadPlaybackWavFile(string filePath)
        {
            if (!initialized)
            {
                return;
            }

            if (wavPlayer != null)
            {
                audioConnector.Disconnect(wavPlayer, outgoingDataMixer);
                wavPlayer.Dispose();
                wavRecorder = null;
            }

            wavPlayer = new WaveStreamPlayback(filePath, false, true);

            audioConnector.Connect(wavPlayer, outgoingDataMixer);
        }
예제 #10
0
        /// <summary>
        /// Loads a wav file for playback.
        /// </summary>
        public void LoadPlaybackWavFile(string filePath)
        {
            if (!_initialized)
            {
                return;
            }

            if (_wavPlayer != null)
            {
                _audioConnector.Disconnect(_wavPlayer, _phoneCallAudioSender);
                _wavPlayer.Dispose();
                _wavRecorder = null;
            }

            _wavPlayer = new WaveStreamPlayback(filePath, false, true);

            _audioConnector.Connect(_wavPlayer, _phoneCallAudioSender);
        }
예제 #11
0
        internal void SetRingback(string filePath)
        {
            bool isStreaming = false;

            // dispose previous
            if (_ringbackPlayer != null)
            {
                isStreaming = _ringbackPlayer.IsStreaming;
                _audioConnector.Disconnect(_ringbackPlayer, Speaker);
                _ringbackPlayer.Dispose();
                _ringbackPlayer = null;
            }

            // create new
            _ringbackPlayer = new WaveStreamPlayback(filePath, true, true);
            _audioConnector.Connect(_ringbackPlayer, Speaker);

            // start if necessary
            if (isStreaming)
            {
                _ringbackPlayer.Start();
            }
        }
예제 #12
0
        private void btnStop_Click(object sender, EventArgs e)
        {
            btnPlay.Enabled = true;
            btnPause.Enabled = false;
            btnPlay.Focus();
            AudioTick.Stop();

            if (m_MediaType == eMediaType.WavFile) {
                if (m_MediaPlayerWav != null)
                    m_MediaPlayerWav.StopStreaming();

                if (m_MediaSpeaker != null)
                    m_MediaSpeaker.Stop();

                m_Connector.Disconnect(m_MediaPlayerWav, m_MediaSpeaker);
                if (m_MediaPlayerWav != null)
                    m_MediaPlayerWav.Dispose();

                m_MediaPlayerWav = null;
            }
            else if (m_MediaType == eMediaType.Mp3File) {
                if (m_MediaPlayerMp3 != null)
                    m_MediaPlayerMp3.StopStreaming();

                if (m_MediaSpeaker != null)
                    m_MediaSpeaker.Stop();

                m_Connector.Disconnect(m_MediaPlayerMp3, m_MediaSpeaker);
                if (m_MediaPlayerMp3 != null)
                    m_MediaPlayerMp3.Dispose();

                m_MediaPlayerMp3 = null;
            }
        }
예제 #13
0
        /// <summary>
        /// Initializes the audio handlers (microphone, speaker, DTMF player etc.).
        /// </summary>
        private void InitAudio()
        {
            // ----- CREATE -----
            // devices
            Microphone = Microphone.GetDefaultDevice();
            Speaker = Speaker.GetDefaultDevice();

            // audio processors
            AudioEnhancer = new AudioQualityEnhancer();
            AudioEnhancer.SetEchoSource(Speaker);
            dtmfPlayer = new DtmfEventWavePlayer();

            // ringtones
            var ringbackStream = LoadRingbackStream();
            var ringtoneStream = LoadRingtoneStream();
            ringtonePlayer = new WaveStreamPlayback(ringtoneStream, true, false);
            ringbackPlayer = new WaveStreamPlayback(ringbackStream, true, false);

            // mixers
            outgoingDataMixer = new AudioMixerMediaHandler();
            speakerMixer = new AudioMixerMediaHandler();
            recordDataMixer = new AudioMixerMediaHandler();

            // phone handlers
            phoneCallAudioSender = new PhoneCallAudioSender();
            phoneCallAudioReceiver = new PhoneCallAudioReceiver();

            // ----- CONNECT -----
            // connect outgoing
            audioConnector.Connect(AudioEnhancer, outgoingDataMixer);
            audioConnector.Connect(outgoingDataMixer, phoneCallAudioSender);
            audioConnector.Connect(outgoingDataMixer, recordDataMixer);
            if (Microphone != null)
            {
                Microphone.LevelChanged += (Microphone_LevelChanged);
                audioConnector.Connect(Microphone, AudioEnhancer);
            }

            // connect incoming
            audioConnector.Connect(phoneCallAudioReceiver, speakerMixer);
            audioConnector.Connect(phoneCallAudioReceiver, recordDataMixer);
            audioConnector.Connect(ringtonePlayer, speakerMixer);
            audioConnector.Connect(ringbackPlayer, speakerMixer);
            audioConnector.Connect(dtmfPlayer, speakerMixer);
            if (Speaker != null)
            {
                Speaker.LevelChanged += (Speaker_LevelChanged);
                audioConnector.Connect(speakerMixer, Speaker);
            }

            // add to collection
            Dictionary<string, VoIPMediaHandler> collection = new Dictionary<string, VoIPMediaHandler>();
            collection.Add("AudioEnhancer", AudioEnhancer);
            collection.Add("DTMFPlayer", dtmfPlayer);
            collection.Add("OutgoingDataMixer", outgoingDataMixer);
            collection.Add("SpeakerMixer", speakerMixer);
            collection.Add("PhoneCallAudioSender", phoneCallAudioSender);
            collection.Add("PhoneCallAudioReceiver", phoneCallAudioReceiver);
            audioCollection = new MediaHandlerCollection(audioConnector, collection);
        }
예제 #14
0
        internal void SetRingtone(string filePath)
        {
            bool isStreaming = false;

            // dispose previous
            if (ringtonePlayer != null)
            {
                isStreaming = ringtonePlayer.IsStreaming;

                audioConnector.Disconnect(ringtonePlayer, speakerMixer);
                ringtonePlayer.Dispose();
                ringtonePlayer = null;
            }

            // create new
            ringtonePlayer = new WaveStreamPlayback(filePath, true, true);

            audioConnector.Connect(ringtonePlayer, speakerMixer);

            // start if necessary
            if (isStreaming)
                ringtonePlayer.StartStreaming();
        }
예제 #15
0
        /// <summary>
        /// Loads a wav file for playback.
        /// </summary>
        public void LoadPlaybackWavFile(string filePath)
        {
            if (!initialized)
                return;

            if (wavPlayer != null)
            {
                audioConnector.Disconnect(wavPlayer, outgoingDataMixer);
                wavPlayer.Dispose();
                wavRecorder = null;
            }

            wavPlayer = new WaveStreamPlayback(filePath, false, true);

            audioConnector.Connect(wavPlayer, outgoingDataMixer);
        }
예제 #16
0
        private void CallPressed(string phoneNumber)
        {
            Logger.Log("Calling " + phoneNumber);

            WaveStreamPlayback waveStream = null;

            initiatedCall = apiExt.CreateCall(UsedPhoneNumber, phoneNumber, phoneNumber);
            if (initiatedCall == null)
            {
                return;
            }
            bool transferStarted = false;

            initiatedCall.CallStateChanged += (sender, e) =>
            {
                try
                {
                    if (e.Item == CallState.Answered)
                    {
                        if (transferStarted)
                        {
                            initiatedCall.DisconnectAudioSender(waveStream);
                            waveStream.Dispose();

                            var tts = new TextToSpeech();

                            tts.Stopped += (sender1, e1) => {
                                tts.Dispose();
                                initiatedCall.HangUp();
                            };

                            initiatedCall.ConnectAudioSender(tts);
                            tts.AddAndStartText(string.Format("Calling {0} has failed. Please try again later.", phoneNumber));
                            return;
                        }

                        var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("OPSCallAssistant.Resources.ringback.wav");
                        waveStream = new WaveStreamPlayback(stream, true, true);

                        initiatedCall.ConnectAudioSender(waveStream);
                        waveStream.StartStreaming();

                        transferStarted = true;
                        initiatedCall.BlindTransfer(phoneNumber);
                    }
                    if (e.Item.IsCallEnded())
                    {
                        if (waveStream != null)
                        {
                            waveStream.Dispose();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log(ex.Message);
                    Logger.Log(ex.StackTrace);
                }

                var k = 65;
            };
            initiatedCall.Start();
        }
예제 #17
0
        /// <summary>
        /// Initializes the audio handlers (microphone, speaker, DTMF player etc.).
        /// </summary>
        private void InitAudio()
        {
            // ----- CREATE -----
            // devices
            Microphone = Microphone.GetDefaultDevice();
            Speaker    = Speaker.GetDefaultDevice();

            // audio processors
            AudioEnhancer = new AudioQualityEnhancer();
            AudioEnhancer.SetEchoSource(Speaker);
            dtmfPlayer = new DtmfEventWavePlayer();

            // ringtones
            var ringbackStream = LoadRingbackStream();
            var ringtoneStream = LoadRingtoneStream();

            ringtonePlayer = new WaveStreamPlayback(ringtoneStream, true, false);
            ringbackPlayer = new WaveStreamPlayback(ringbackStream, true, false);

            // mixers
            outgoingDataMixer = new AudioMixerMediaHandler();
            speakerMixer      = new AudioMixerMediaHandler();
            recordDataMixer   = new AudioMixerMediaHandler();

            // phone handlers
            phoneCallAudioSender   = new PhoneCallAudioSender();
            phoneCallAudioReceiver = new PhoneCallAudioReceiver();


            // ----- CONNECT -----
            // connect outgoing
            audioConnector.Connect(AudioEnhancer, outgoingDataMixer);
            audioConnector.Connect(outgoingDataMixer, phoneCallAudioSender);
            audioConnector.Connect(outgoingDataMixer, recordDataMixer);
            if (Microphone != null)
            {
                Microphone.LevelChanged += (Microphone_LevelChanged);
                audioConnector.Connect(Microphone, AudioEnhancer);
            }

            // connect incoming
            audioConnector.Connect(phoneCallAudioReceiver, speakerMixer);
            audioConnector.Connect(phoneCallAudioReceiver, recordDataMixer);
            audioConnector.Connect(ringtonePlayer, speakerMixer);
            audioConnector.Connect(ringbackPlayer, speakerMixer);
            audioConnector.Connect(dtmfPlayer, speakerMixer);
            if (Speaker != null)
            {
                Speaker.LevelChanged += (Speaker_LevelChanged);
                audioConnector.Connect(speakerMixer, Speaker);
            }

            // add to collection
            Dictionary <string, VoIPMediaHandler> collection = new Dictionary <string, VoIPMediaHandler>();

            collection.Add("AudioEnhancer", AudioEnhancer);
            collection.Add("DTMFPlayer", dtmfPlayer);
            collection.Add("OutgoingDataMixer", outgoingDataMixer);
            collection.Add("SpeakerMixer", speakerMixer);
            collection.Add("PhoneCallAudioSender", phoneCallAudioSender);
            collection.Add("PhoneCallAudioReceiver", phoneCallAudioReceiver);
            audioCollection = new MediaHandlerCollection(audioConnector, collection);
        }
예제 #18
0
        private void CallPressed(string phoneNumber)
        {
            Logger.Log("Calling " + phoneNumber);

            WaveStreamPlayback waveStream = null;

            initiatedCall = apiExt.CreateCall(UsedPhoneNumber, phoneNumber, phoneNumber);
            if (initiatedCall == null)
                return;
            bool transferStarted = false;
            initiatedCall.CallStateChanged += (sender, e) =>
            {
                try
                {

                    if (e.Item == CallState.Answered)
                    {
                        if (transferStarted)
                        {
                            initiatedCall.DisconnectAudioSender(waveStream);
                            waveStream.Dispose();

                            var tts = new TextToSpeech();

                            tts.Stopped += (sender1, e1)=>{
                                                              tts.Dispose();
                                                              initiatedCall.HangUp();
                                                          };

                            initiatedCall.ConnectAudioSender(tts);
                            tts.AddAndStartText(string.Format("Calling {0} has failed. Please try again later.", phoneNumber));
                            return;
                        }

                        var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("OPSCallAssistant.Resources.ringback.wav");
                        waveStream = new WaveStreamPlayback(stream, true, true);

                        initiatedCall.ConnectAudioSender(waveStream);
                        waveStream.StartStreaming();

                        transferStarted = true;
                        initiatedCall.BlindTransfer(phoneNumber);

                    }
                    if (e.Item.IsCallEnded())
                    {
                        if (waveStream != null)
                            waveStream.Dispose();
                    }
                }
                catch(Exception ex)
                {
                    Logger.Log(ex.Message);
                    Logger.Log(ex.StackTrace);
                }

                var k = 65;

            };
            initiatedCall.Start();
        }
예제 #19
0
        private void CallLogPlayer_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (m_MediaType == eMediaType.WavFile) {
                if (m_MediaPlayerWav != null)
                    m_MediaPlayerWav.StopStreaming();

                if (m_MediaSpeaker != null)
                    m_MediaSpeaker.Stop();

                m_Connector.Disconnect(m_MediaPlayerWav, m_MediaSpeaker);
                if (m_MediaPlayerWav != null)
                    m_MediaPlayerWav.Dispose();

                m_MediaPlayerWav = null;
            }
            else if (m_MediaType == eMediaType.Mp3File) {
                if (m_MediaPlayerMp3 != null)
                    m_MediaPlayerMp3.StopStreaming();

                if (m_MediaSpeaker != null)
                    m_MediaSpeaker.Stop();

                m_Connector.Disconnect(m_MediaPlayerMp3, m_MediaSpeaker);
                if (m_MediaPlayerMp3 != null)
                    m_MediaPlayerMp3.Dispose();

                m_MediaPlayerMp3 = null;
            }
        }
예제 #20
0
        private void CreateWaveStreamPlayback(string path, bool repeat, bool cache)
        {
            WaveStreamPlayback = new WaveStreamPlayback(path, false, false);
            WaveStreamPlayback.Stopped += (WaveStreamPlayback_Stopped);

            mediaConnector.Connect(WaveStreamPlayback, outgoingDataMixer);
        }
예제 #21
0
        private void btnPlay_Click(object sender, EventArgs e)
        {
            btnPlay.Enabled = false;
            btnPause.Enabled = true;
            btnPause.Focus();

            #region Wav File
            if (m_MediaType == eMediaType.WavFile) {
                if (m_MediaPlayerWav != null) {
                    if (!m_MediaPlayerWav.IsStreaming) {
                        if (m_TrackerDragged)
                            m_MediaPlayerWav.Stream.Position = Convert.ToInt64(barAudioTracker.EditValue);

                        m_MediaPlayerWav.StartStreaming();
                        AudioTick.Start();
                    }

                    return;
                }

                m_MediaSpeaker = Speaker.GetDefaultDevice(); //AudioSettingUtility.GetDefaultDeviceSpeaker();
                if (m_MediaSpeaker == null) {
                    MessageBox.Show("No audio device found.", "Bright Sales", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                m_Connector = new MediaConnector();
                m_MediaPlayerWav = new WaveStreamPlayback(m_MediaFile);
                barAudioTracker.Properties.Minimum = 0;
                barAudioTracker.Properties.Maximum = Convert.ToInt32(m_MediaPlayerWav.Stream.Length);

                m_MediaSpeaker.Start();
                m_Connector.Connect(m_MediaPlayerWav, m_MediaSpeaker);
                m_MediaPlayerWav.StartStreaming();
                m_MediaPlayerWav.IsStreaming = true;
                AudioTick.Start();
            }
            #endregion
            #region Mp3 File
            else if (m_MediaType == eMediaType.Mp3File) {
                if (m_MediaPlayerMp3 != null) {
                    if (!m_MediaPlayerMp3.IsStreaming) {
                        if (m_TrackerDragged)
                            m_MediaPlayerMp3.Stream.Position = Convert.ToInt64(barAudioTracker.EditValue);

                        m_MediaPlayerMp3.StartStreaming();
                        AudioTick.Start();
                    }

                    return;
                }

                m_MediaSpeaker = Speaker.GetDefaultDevice(); // AudioSettingUtility.GetDefaultDeviceSpeaker();
                if (m_MediaSpeaker == null) {
                    MessageBox.Show("No audio device found.", "Bright Sales", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                m_Connector = new MediaConnector();
                m_MediaPlayerMp3 = new MP3StreamPlayback(m_MediaFile);
                barAudioTracker.Properties.Minimum = 0;
                barAudioTracker.Properties.Maximum = Convert.ToInt32(m_MediaPlayerMp3.Stream.Length);

                m_MediaSpeaker.Start();
                m_Connector.Connect(m_MediaPlayerMp3, m_MediaSpeaker);
                m_MediaPlayerMp3.StartStreaming();
                m_MediaPlayerMp3.IsStreaming = true;
                AudioTick.Start();
            }
            #endregion
        }