Exemplo n.º 1
0
        public void AudioPlayer_LoadAndPlayFromFile(string path)
        {
            Logger.Log("AudioPaneViewModel.AudioPlayer_LoadAndPlayFromFile", Category.Debug, Priority.Medium);

            CommandPause.Execute();
            //if (m_Player.CurrentState != AudioPlayer.State.NotReady
            //    && !IsStopped)
            //{
            //    //m_Player.Stop();
            //}

            if (View != null)
            {
                View.CancelWaveFormLoad(true);
            }

            if (AudioPlaybackStreamKeepAlive)
            {
                ensurePlaybackStreamIsDead();
            }

            State.ResetAll();

            m_LastSetPlayBytePosition = 0;
            //IsWaveFormLoading = false;

            State.FilePath = path;

            m_CurrentAudioStreamProvider = m_AudioStreamProvider_File;

            if (m_CurrentAudioStreamProvider() == null)
            {
                State.ResetAll();

                m_LastSetPlayBytePosition = -1;
                //IsWaveFormLoading = false;
                return;
            }

            if (View != null)
            {
                View.RefreshUI_PeakMeterBlackout(true);
                //View.ResetPeakLines();
            }

            PeakOverloadCountCh1 = 0;
            PeakOverloadCountCh2 = 0;

            //#if DEBUG
            //            Logger.Log("CALLING AudioPlayer_LoadWaveForm (loadAndPlay) FILE", Category.Debug, Priority.Medium);
            //#endif
            AudioPlayer_LoadWaveForm(false);
        }
Exemplo n.º 2
0
        private void InitializeAudioStuff()
        {
            mCurrentAudioStreamProvider = () =>
            {
                if (!String.IsNullOrEmpty(FilePath))
                {
                    if (m_FilePlayStream == null)
                    {
                        m_FilePlayStream = File.Open(FilePath, FileMode.Open);
                    }
                    return(m_FilePlayStream);
                }
                return(null);
            };

            m_Player = new AudioPlayer();
            m_Player.StateChanged += Player_StateChanged;

            m_Recorder = new AudioRecorder();
            m_Recorder.StateChanged += Recorder_StateChanged;

            m_VuMeter = new VuMeter(m_Player, m_Recorder);

            /*m_GraphicalPeakMeter = new GraphicalPeakMeter
             * {
             *  BarPaddingToWidthRatio = 0.075F,
             *  Dock = System.Windows.Forms.DockStyle.Fill,
             *  FontToHeightRatio = 0.03F,
             *  FontToWidthRatio = 0.075F,
             *  Location = new System.Drawing.Point(0, 0),
             *  MinimumSize = new System.Drawing.Size(200, 300),
             *  Name = "mGraphicalPeakMeter",
             *  Size = new System.Drawing.Size(400, 500),
             *  SourceVuMeter = m_VuMeter,
             *  TabIndex = 0
             * };
             *
             * WinFormPeakMeter.Child = m_GraphicalPeakMeter;
             */

            WinFormHost.Child = new System.Windows.Forms.Control("needed by DirectSound");
            m_Player.SetDevice(WinFormHost.Child, @"auto");



            m_PeakMeterBarDataCh1 = new PeakMeterBarData(() => peakMeterCanvasInvalidateVisual());
            m_PeakMeterBarDataCh2 = new PeakMeterBarData(() => peakMeterCanvasInvalidateVisual());

            m_PeakMeterBarDataCh1.ValueDb = Double.NegativeInfinity;
            m_PeakMeterBarDataCh2.ValueDb = Double.NegativeInfinity;

            m_PeakMeterValues = new double[2];

            m_Player.EndOfAudioAsset += new EndOfAudioAssetHandler(OnEndOfAudioAsset);
            m_Player.StateChanged    += new StateChangedHandler(OnAudioPlayerStateChanged);

            m_VuMeter.UpdatePeakMeter += new UpdatePeakMeterHandler(OnUpdateVuMeter);
            m_VuMeter.ResetEvent      += new ResetHandler(OnResetVuMeter);
            m_VuMeter.PeakOverload    += new PeakOverloadHandler(OnPeakOverload);

            /*
             * m_GraphicalVuMeter = new GraphicalVuMeter()
             *                       {
             *                           Dock = System.Windows.Forms.DockStyle.Fill,
             *                           //Location = new System.Drawing.Point(0, 0),
             *                           MinimumSize = new System.Drawing.Size(50, 50),
             *                           Name = "mVuMeter",
             *                           Size = new System.Drawing.Size(400, 500),
             *                           TabIndex = 0,
             *                           VuMeter = m_VuMeter
             *                       };
             * WinFormVuMeter.Child = m_GraphicalVuMeter;
             */
        }