示例#1
0
 /// <summary>
 /// Thread for Creating the BASS Audio Engine objects.
 /// </summary>
 private static void InternalCreatePlayerAsync()
 {
     if (_player == null)
     {
         _player = new BassAudioEngine();
     }
 }
 public void DonePlayer()
 {
     if (SpectrumProvider == Utils.Provider.Mediaportal && Bass != null)
     {
         Bass = null;
         if (Utils.SpectrumDebug)
         {
             logger.Debug("Bass Player done.");
         }
     }
 }
 public void InitPlayer(bool force = false)
 {
     if (SpectrumProvider == Utils.Provider.Mediaportal && BassMusicPlayer.IsDefaultMusicPlayer && (Bass == null || force))
     {
         Bass = BassMusicPlayer.Player;
         if (Utils.SpectrumDebug)
         {
             logger.Debug("Bass Player init.");
         }
     }
 }
        public VisualizationManager(BassAudioEngine bass, VisualizationWindow vizWindow)
        {
            Bass = bass;
            VisualizationBase.Bass = Bass;
            VizRenderWindow        = vizWindow;

            if (bass != null)
            {
                Bass.PlaybackStateChanged += new BassAudioEngine.PlaybackStateChangedDelegate(OnPlaybackStateChanged);
            }

            SetVisualizationFPS(_TargetFPS);
        }
示例#5
0
 /// <summary>
 /// Thread for Creating the BASS Audio Engine objects.
 /// </summary>
 private static void InternalCreatePlayerAsync()
 {
     if (_player == null)
     {
         try
         {
             _player = new BassAudioEngine();
         }
         catch (Exception ex)
         {
             Log.Error("BASS: InternalCreatePlayerAsync failed {0}", ex);
         }
     }
 }
示例#6
0
        private void InitializeVizEngine()
        {
            //System.Diagnostics.Debugger.Launch();
            Cursor.Current = Cursors.WaitCursor;

            BassAudioEngine bassEngine = BassMusicPlayer.Player;

            IVizMgr = bassEngine.IVizManager;
            List <VisualizationInfo> vizPluginsInfo = null;

            if (IVizMgr != null)
            {
                vizPluginsInfo = IVizMgr.VisualizationPluginsInfo;
            }

            LoadVisualizationList(vizPluginsInfo);
        }
示例#7
0
        void Player_InternetStreamSongChanged(object sender)
        {
            if (!g_Player.Playing)
            {
                return;
            }
            BassAudioEngine engine = sender as BassAudioEngine;
            MusicTag        tag    = engine.GetStreamTags();
            var             dlg1   = (GUIDialogNotify)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_NOTIFY);

            if (dlg1 == null)
            {
                return;
            }
            dlg1.Reset();
            dlg1.SetHeading("");
            dlg1.SetText(tag.Artist + "-" + tag.Title);
            dlg1.Reset();
            dlg1.TimeOut = 3;
            dlg1.DoModal(GetID);
        }
示例#8
0
        public bool Initialize(string bassRegEmail = "", string bassRegKey = "")
        {
            _cqman                     = new ControlQueryManager();
            _cqman.NextRequest        += _cqman_NextRequest;
            _cqman.PauseRequest       += _cqman_PauseRequest;
            _cqman.PlayRequest        += _cqman_PlayRequest;
            _cqman.StopRequest        += _cqman_StopRequest;
            _cqman.PlayStateRequest   += _cqman_PlayStateRequest;
            _cqman.SetSongMetaRequest += _cqman_SetSongMetaRequest;

            _sessionWatcher = new SessionWatcher();
            RegisterPlayerControlQuery(_sessionWatcher);

            _pandora = new Pandora();
            _pandora.ConnectionEvent       += _pandora_ConnectionEvent;
            _pandora.StationUpdateEvent    += _pandora_StationUpdateEvent;
            _pandora.FeedbackUpdateEvent   += _pandora_FeedbackUpdateEvent;
            _pandora.LoginStatusEvent      += _pandora_LoginStatusEvent;
            _pandora.StationsUpdatingEvent += _pandora_StationsUpdatingEvent;
            _pandora.QuickMixSavedEvent    += _pandora_QuickMixSavedEvent;

            _bass = new BassAudioEngine(bassRegEmail, bassRegKey);
            _bass.PlaybackProgress     += bass_PlaybackProgress;
            _bass.PlaybackStateChanged += bass_PlaybackStateChanged;
            _bass.PlaybackStart        += bass_PlaybackStart;
            _bass.PlaybackStop         += bass_PlaybackStop;
            _bass.InitBass();

            _playlist                     = new Playlist();
            _playlist.MaxPlayed           = 8;
            _playlist.PlaylistLow        += _playlist_PlaylistLow;
            _playlist.PlayedSongQueued   += _playlist_PlayedSongQueued;
            _playlist.PlayedSongDequeued += _playlist_PlayedSongDequeued;

            DailySkipLimitReached = false;
            DailySkipLimitTime    = DateTime.MinValue;

            LoggedIn = false;
            return(true);
        }
示例#9
0
 public MixerStream(BassAudioEngine bassPlayer)
 {
     _bassPlayer = bassPlayer;
     _playbackEndProcDelegate = new SYNCPROC(PlaybackEndProc);
 }
示例#10
0
 /// <summary>
 /// Thread for Creating the BASS Audio Engine objects.
 /// </summary>
 private static void InternalCreatePlayerAsync()
 {
   if (_player == null)
   {
     try
     {
       _player = new BassAudioEngine();
     }
     catch (Exception ex)
     {
       Log.Error("BASS: InternalCreatePlayerAsync failed {0}", ex);
     }
   }
 }
 public VisualizationWindow(BassAudioEngine bass)
 {
   Bass = bass;
   Init();
 }
示例#12
0
 public MixerStream(BassAudioEngine bassPlayer)
 {
     _bassPlayer = bassPlayer;
 }
示例#13
0
 internal MiniDisplayHelper(BassAudioEngine bass) : base()
 {
   Bass = bass;
 }
示例#14
0
 public MixerStream(BassAudioEngine bassPlayer)
 {
   _bassPlayer = bassPlayer;
   _playbackEndProcDelegate = new SYNCPROC(PlaybackEndProc);
 }
示例#15
0
        /// <summary>
        /// Check our EQ settings and MP states to determine if it is appropriate to show our EQ.
        /// </summary>
        /// <param name="EQSETTINGS"></param>
        /// <returns>True if it is appropriate to show our EQ, false otherwise.</returns>    public static bool GetEQ(ref EQControl EQSETTINGS)
        public static bool GetEQ(ref EQControl EQSETTINGS)
        {
            SystemStatus MPStatus = new SystemStatus();

            GetSystemStatus(ref MPStatus);
            bool extensiveLogging = Settings.Instance.ExtensiveLogging;
            bool flag2            = (EQSETTINGS.UseStereoEq | EQSETTINGS.UseVUmeter) | EQSETTINGS.UseVUmeter2;

            if (!MPStatus.UserIsIdle || g_Player.Player == null || !g_Player.IsMusic || !BassMusicPlayer.IsDefaultMusicPlayer)
            {
                return(false);
            }

            if (!EQSETTINGS.UseEqDisplay)
            {
                return(false);
            }
            if (EQSETTINGS._AudioUseASIO)
            {
                return(false);
            }
            try
            {
                if (g_Player.Paused)
                {
                    return(false);
                }

                if (Bass == null)
                {
                    Bass = BassMusicPlayer.Player;
                }

                if (EQSETTINGS.DelayEQ & (g_Player.CurrentPosition < EQSETTINGS._DelayEQTime))
                {
                    EQSETTINGS._EQDisplayTitle = false;
                    EQSETTINGS._LastEQTitle    = (DateTime.Now.Ticks / 1000);
                    return(false);
                }
                if (EQSETTINGS.EQTitleDisplay)
                {
                    if (g_Player.CurrentPosition < EQSETTINGS._EQTitleDisplayTime)
                    {
                        EQSETTINGS._EQDisplayTitle = false;
                    }
                    if (((DateTime.Now.Ticks / 1000) - EQSETTINGS._LastEQTitle) > (EQSETTINGS._EQTitleDisplayTime * 10000))
                    {
                        EQSETTINGS._LastEQTitle    = (DateTime.Now.Ticks / 1000);
                        EQSETTINGS._EQDisplayTitle = !EQSETTINGS._EQDisplayTitle;
                    }
                    if (EQSETTINGS._EQDisplayTitle &
                        (((DateTime.Now.Ticks / 1000) - EQSETTINGS._LastEQTitle) < (EQSETTINGS._EQTitleShowTime * 10000)))
                    {
                        return(false);
                    }
                }
            }
            catch
            {
                EQSETTINGS._EQDisplayTitle = false;
                EQSETTINGS._LastEQTitle    = (DateTime.Now.Ticks / 1000);
                return(false);
            }
            int handle = -1;

            try
            {
                handle = g_Player.Player.CurrentAudioStream;
            }
            catch (Exception exception)
            {
                Log.Debug("MiniDisplay.GetEQ(): Caugth exception obtaining audio stream: {0}", new object[] { exception });
                return(false);
            }
            if ((handle != 0) & (handle != -1))
            {
                int num2;
                if (extensiveLogging)
                {
                    Log.Info("MiniDisplay.GetEQ(): attempting to retrieve equalizer data from audio stream {0}",
                             new object[] { handle });
                }
                try
                {
                    int num3;
                    if (flag2)
                    {
                        num3 = -2147483630;
                    }
                    else
                    {
                        num3 = -2147483646;
                    }

                    if (Bass.BASS_WASAPI_IsStarted())
                    {
                        num2 = Bass.GetDataFFT(EQSETTINGS.EqFftData, num3);
                    }
                    else
                    {
                        num2 = Bass.GetChannelData(handle, EQSETTINGS.EqFftData, num3);
                    }
                }
                catch (Exception exception)
                {
                    if (extensiveLogging)
                    {
                        Log.Info("MiniDisplay.GetEQ(): CAUGHT Exception - audio stream {0} disappeared - {1}", new object[] { handle }, exception.Message);
                    }
                    return(false);
                }
                if (num2 > 0)
                {
                    return(true);
                }
                if (extensiveLogging)
                {
                    Log.Info("MiniDisplay.GetEQ(): unable to retreive equalizer data");
                }
                return(false);
            }
            if (extensiveLogging)
            {
                Log.Info("MiniDisplay.GetEQ(): Audio Stream not available");
            }
            return(false);
        }
示例#16
0
 internal StreamCopy(BassAudioEngine bass)
   : base()
 {
   Bass = bass;
 }
示例#17
0
        /// <summary>
        /// Play the selected Music File
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btPlay_Click(object sender, EventArgs e)
        {
            if (File.Exists(textBoxMusicFile.Text))
            {
                // Init BASS
                BassAudioEngine bassEngine = BassMusicPlayer.Player;
                if (bassEngine.BassFreed)
                {
                    bassEngine.InitBass();
                }

                _stream = Bass.BASS_StreamCreateFile(textBoxMusicFile.Text, 0, 0,
                                                     BASSFlag.BASS_SAMPLE_FLOAT | BASSFlag.BASS_STREAM_AUTOFREE |
                                                     BASSFlag.BASS_SAMPLE_SOFTWARE);
                if (_stream != 0)
                {
                    // Attach the BASS DSP Effects to the stream
                    if (_gain != null)
                    {
                        _gain.ChannelHandle = _stream;
                        _gain.Start();
                    }

                    if (checkBoxDAmp.Checked)
                    {
                        _dampHandle = Bass.BASS_ChannelSetFX(_stream, BASSFXType.BASS_FX_BFX_DAMP, _dampPrio);
                        Bass.BASS_FXSetParameters(_dampHandle, _damp);
                    }

                    if (checkBoxCompressor.Checked)
                    {
                        _compHandle = Bass.BASS_ChannelSetFX(_stream, BASSFXType.BASS_FX_BFX_COMPRESSOR, _compPrio);
                        Bass.BASS_FXSetParameters(_compHandle, _comp);
                    }

                    // Attach the plugins to the stream
                    foreach (DSPPluginInfo dsp in listBoxSelectedPlugins.Items)
                    {
                        if (dsp.DSPPluginType == DSPPluginInfo.PluginType.VST)
                        {
                            _vstHandle = BassVst.BASS_VST_ChannelSetDSP(_stream, dsp.FilePath, BASSVSTDsp.BASS_VST_DEFAULT, 1);
                            // Copy the parameters of the old handle
                            int vstold = _vstHandles[dsp.Name];
                            BassVst.BASS_VST_SetParamCopyParams(vstold, _vstHandle);
                            // Now find out to which stream the old handle was assigned and free it
                            BASS_VST_INFO bassvstinfo = new BASS_VST_INFO();
                            BassVst.BASS_VST_GetInfo(vstold, bassvstinfo);
                            BassVst.BASS_VST_ChannelRemoveDSP(bassvstinfo.channelHandle, vstold);
                            _vstHandles[dsp.Name] = _vstHandle;
                        }
                        else
                        {
                            _waDspPlugin = _waDspPlugins[dsp.FilePath];
                            BassWaDsp.BASS_WADSP_Start(_waDspPlugin, 0, 0);
                            BassWaDsp.BASS_WADSP_ChannelSetDSP(_waDspPlugin, _stream, 1);
                        }
                    }
                    btPlay.Enabled = false;
                    btStop.Enabled = true;
                    Bass.BASS_ChannelPlay(_stream, false);
                }
                else
                {
                    MessageBox.Show("Can't play file. Probably not a valid music file");
                }
            }
            else
            {
                MessageBox.Show("File specified does not exist");
            }
        }
    private void OnPlaybackStateChanged(object sender, BassAudioEngine.PlayState oldState,
                                        BassAudioEngine.PlayState newState)
    {
      if (Viz == null)
      {
        return;
      }

      // Start the visualization render thread the first time an audio file starts playing.
      // Subsequent play state changes will be managed by the VisualizationWindow.
      if (!Viz.Initialized || newState == BassAudioEngine.PlayState.Playing)
      {
        VizRenderWindow.Run = true;
      }
    }
    public VisualizationManager(BassAudioEngine bass, VisualizationWindow vizWindow)
    {
      Bass = bass;
      VisualizationBase.Bass = Bass;
      VizRenderWindow = vizWindow;

      if (bass != null)
      {
        Bass.PlaybackStateChanged += new BassAudioEngine.PlaybackStateChangedDelegate(OnPlaybackStateChanged);
      }

      SetVisualizationFPS(_TargetFPS);
    }
示例#20
0
    private void PlaybackStateChanged(object sender, BassAudioEngine.PlayState oldState,
                                      BassAudioEngine.PlayState newState)
    {
      if (_visParam.VisHandle != 0)
      {
        Log.Debug("SoniqueViz: BassPlayer_PlaybackStateChanged from {0} to {1}", oldState.ToString(), newState.ToString());
        if (newState == BassAudioEngine.PlayState.Playing)
        {
          RenderStarted = false;
          trackTag = TagReader.TagReader.ReadTag(Bass.CurrentFile);
          if (trackTag != null)
          {
            _songTitle = String.Format("{0} - {1}", trackTag.Artist, trackTag.Title);
          }
          else
          {
            _songTitle = "   ";
          }

          _mediaInfo.SongTitle = _songTitle;
          _mediaInfo.SongFile = Bass.CurrentFile;
          _OldCurrentFile = Bass.CurrentFile;

          BassVis.BASSVIS_SetPlayState(_visParam, BASSVIS_PLAYSTATE.Play);
        }
        else if (newState == BassAudioEngine.PlayState.Paused)
        {
          BassVis.BASSVIS_SetPlayState(_visParam, BASSVIS_PLAYSTATE.Pause);
        }
        else if (newState == BassAudioEngine.PlayState.Ended)
        {
          BassVis.BASSVIS_SetPlayState(_visParam, BASSVIS_PLAYSTATE.Stop);
          RenderStarted = false;
        }
      }
    }
示例#21
0
 internal StreamCopy(BassAudioEngine bass)
     : base()
 {
     Bass = bass;
 }
 /// <summary>
 /// Thread for Creating the BASS Audio Engine objects.
 /// </summary>
 private static void InternalCreatePlayerAsync()
 {
   if (_player == null)
   {
     _player = new BassAudioEngine();
   }
 }
示例#23
0
    /// <summary>
    /// Check our EQ settings and MP states to determine if it is appropriate to show our EQ.
    /// </summary>
    /// <param name="EQSETTINGS"></param>
    /// <returns>True if it is appropriate to show our EQ, false otherwise.</returns>    public static bool GetEQ(ref EQControl EQSETTINGS)
    public static bool GetEQ(ref EQControl EQSETTINGS)
    {
      SystemStatus MPStatus=new SystemStatus();
      GetSystemStatus(ref MPStatus);
      bool extensiveLogging = Settings.Instance.ExtensiveLogging;
      bool flag2 = (EQSETTINGS.UseStereoEq | EQSETTINGS.UseVUmeter) | EQSETTINGS.UseVUmeter2;
      if (!MPStatus.UserIsIdle || g_Player.Player == null || !g_Player.IsMusic || !BassMusicPlayer.IsDefaultMusicPlayer)
      {
        return false;
      }

      if (!EQSETTINGS.UseEqDisplay)
      {
        return false;
      }
      if (EQSETTINGS._AudioUseASIO)
      {
        return false;
      }
      try
      {
        if (g_Player.Paused)
        {
            return false;
        }

        if (Bass == null)
        {
            Bass = BassMusicPlayer.Player;
        }

        if (EQSETTINGS.DelayEQ & (g_Player.CurrentPosition < EQSETTINGS._DelayEQTime))
        {
          EQSETTINGS._EQDisplayTitle = false;
          EQSETTINGS._LastEQTitle = (DateTime.Now.Ticks / 1000);
          return false;
        }
        if (EQSETTINGS.EQTitleDisplay)
        {
          if (g_Player.CurrentPosition < EQSETTINGS._EQTitleDisplayTime)
          {
            EQSETTINGS._EQDisplayTitle = false;
          }
          if (((DateTime.Now.Ticks / 1000) - EQSETTINGS._LastEQTitle) > (EQSETTINGS._EQTitleDisplayTime * 10000))
          {
            EQSETTINGS._LastEQTitle = (DateTime.Now.Ticks / 1000);
            EQSETTINGS._EQDisplayTitle = !EQSETTINGS._EQDisplayTitle;
          }
          if (EQSETTINGS._EQDisplayTitle &
              (((DateTime.Now.Ticks / 1000) - EQSETTINGS._LastEQTitle) < (EQSETTINGS._EQTitleShowTime * 10000)))
          {
            return false;
          }
        }
      }
      catch
      {
        EQSETTINGS._EQDisplayTitle = false;
        EQSETTINGS._LastEQTitle = (DateTime.Now.Ticks / 1000);
        return false;
      }
      int handle = -1;
      try
      {
        handle = g_Player.Player.CurrentAudioStream;
      }
      catch (Exception exception)
      {
        Log.Debug("MiniDisplay.GetEQ(): Caugth exception obtaining audio stream: {0}", new object[] {exception});
        return false;
      }
      if ((handle != 0) & (handle != -1))
      {
        int num2;
        if (extensiveLogging)
        {
          Log.Info("MiniDisplay.GetEQ(): attempting to retrieve equalizer data from audio stream {0}",
                   new object[] {handle});
        }
        try
        {
          int num3;
          if (flag2)
          {
            num3 = -2147483630;
          }
          else
          {
            num3 = -2147483646;
          }

          if (Bass.BASS_WASAPI_IsStarted())
          {
            num2 = Bass.GetDataFFT(EQSETTINGS.EqFftData, num3);
          }
          else
          {
            num2 = Bass.GetChannelData(handle, EQSETTINGS.EqFftData, num3);
          }
        }
        catch (Exception exception)
        {
          if (extensiveLogging)
          {
            Log.Info("MiniDisplay.GetEQ(): CAUGHT Exception - audio stream {0} disappeared - {1}", new object[] {handle}, exception.Message);
          }
          return false;
        }
        if (num2 > 0)
        {
          return true;
        }
        if (extensiveLogging)
        {
          Log.Info("MiniDisplay.GetEQ(): unable to retreive equalizer data");
        }
        return false;
      }
      if (extensiveLogging)
      {
        Log.Info("MiniDisplay.GetEQ(): Audio Stream not available");
      }
      return false;
    }