コード例 #1
0
        public void PlayId(string id)
        {
            if (SoundInitialized)
            {
                DataProvider.currentlyPlayed = id;
                TagInfo    = new TAG_INFO();
                BassStream = Bass.BASS_StreamCreateFileUser(BASSStreamSystem.STREAMFILE_NOBUFFER, BASSFlag.BASS_STREAM_AUTOFREE, DataProvider.bassStreamingProc, IntPtr.Zero);
                if (BassStream == 0)
                {
                    BASSError err = Bass.BASS_ErrorGetCode();

                    throw new Exception("Cannot create stream: " + err.ToString());
                }
                if (BassTags.BASS_TAG_GetFromFile(BassStream, TagInfo))
                {
                    // nop
                }
                else
                {
                    Program.logging.addToLog("Cannot get tags for stream " + BassStream);
                }
                BassTimer.Start();
                Bass.BASS_ChannelPlay(BassStream, false);
            }
        }
コード例 #2
0
        /// <summary>
        ///     Initializes this instance.
        /// </summary>
        public void Initialize()
        {
            CurrentTrack  = BassPlayer.CurrentTrack;
            PreviousTrack = BassPlayer.PreviousTrack;
            NextTrack     = BassPlayer.NextTrack;

            BassPlayer.OnTrackQueued += BassPlayer_OnTrackChange;
            BassPlayer.OnTrackChange += BassPlayer_OnTrackChange;

            BassPlayer.OnManualMixVolumeChanged += BassPlayer_OnManualMixVolumeChanged;
            BassPlayer.OnManualMixModeChanged   += BassPlayer_OnManualMixModeChanged;

            sldFader.Minimum = 0;
            sldFader.Maximum = 100;

            rdbDelay2.Checked = true;

            chkEnableTrackFXAutomation.Checked = BassPlayer.TrackFxAutomationEnabled;

            cmbFadeOutType.SelectedIndex = 0;

            BassPlayer.DisableManualMixMode();

            BindData();

            _timer.Tick    += Timer_Tick;
            _timer.Interval = 200;
            _timer.Start();
        }
コード例 #3
0
ファイル: BassMet.cs プロジェクト: Anderwafe/APBA
        public static void Play(Playlists PlayItem)
        {
            if (Bass.BASS_GetInfo() == null)
            {
                Bass.BASS_Init(-1, hz, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);
            }
            Bass.BASS_StreamFree(_stream);
            Bass.BASS_ChannelStop(_stream);

            _stream = Bass.BASS_StreamCreateFile(PlayItem.Path, 0, 0, BASSFlag.BASS_DEFAULT);
            now     = PlayList.IndexOf(PlayItem);
            Bass.BASS_ChannelSetAttribute(_stream, BASSAttribute.BASS_ATTRIB_VOL, slrVolume / 100f);

            EqualizerSettings.SetFX(_stream);

            ggg.Dispatcher.Invoke(() =>
            {
                ggg.lblAudioName.Content = PlayItem.Name;
                ggg.SyncSlider();
                ggg.lblMusicDuration.Content = new TimeSpan(0, 0, (int)Bass.BASS_ChannelBytes2Seconds(BassMet._stream, Bass.BASS_ChannelGetLength(BassMet._stream)));
                ggg.btnResumePause.Content   = "Pause";
            });


            Bass.BASS_ChannelPlay(_stream, true);
            timer.Start();
        }
コード例 #4
0
ファイル: AudioEngine.cs プロジェクト: gitter-badger/Osmo
 public AudioEngine(AudioViewModel vm)
 {
     this.vm = vm;
     Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);
     _timer       = new BASSTimer(100);
     _timer.Tick += Timer_Tick;
     _timer.Start();
 }
コード例 #5
0
ファイル: AVFiles.cs プロジェクト: lcccyb/OSU-player
 public void Play(float volume)
 {
     _timer.Stop();
     if (!_isopened)
     {
         return;
     }
     if (_channel != 0 && Bass.BASS_ChannelPlay(_channel, true))
     {
         _timer.Start();
         _isPaused = false;
     }
     else
     {
         throw new FormatException(Bass.BASS_ErrorGetCode().ToString());
     }
     Volume = volume;
 }
コード例 #6
0
 public Status PlayAndStartTimer()
 {
     _updateTimer.Start();
     if (Bass.BASS_ChannelPlay(_stream, false))
     {
         return(Status.OK);
     }
     else
     {
         return(Status.Error);
     }
 }
コード例 #7
0
    private void Form1_Load(object sender, EventArgs e)
    {
        string file = "..\\..\\mysong.mp3";

        if (Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, Handle))
        {
            _handle = Bass.BASS_StreamCreateFile(file, 0, 0, BASSFlag.BASS_DEFAULT);
            if (Bass.BASS_ChannelPlay(_handle, false))
            {
                _visuals     = new Visuals();
                _timer       = new BASSTimer((int)(1.0d / 10 * 1000));
                _timer.Tick += timer_Tick;
                _timer.Start();
            }
        }
    }
コード例 #8
0
ファイル: AudioEngine.cs プロジェクト: sofluf/Osmo
        public AudioEngine(AudioViewModel vm)
        {
            Logger.Instance.WriteLog("Initializing audio engine...");
            this.vm = vm;
            Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);
            _timer       = new BASSTimer(100);
            _timer.Tick += Timer_Tick;
            _timer.Start();

            if (Bass.BASS_ErrorGetCode() == BASSError.BASS_OK)
            {
                Logger.Instance.WriteLog("Audio engine initialized!");
            }
            else
            {
                Logger.Instance.WriteLog("Audio engine initialized with error! Error code: {0}", LogType.WARNING, Bass.BASS_ErrorGetCode());
            }
        }
コード例 #9
0
ファイル: DisplayVM.cs プロジェクト: fstarred/wammp
        public DisplayVM()
        {
            if (!Utility.IsDesignMode())
            {
                AudioControllerService.Current.StatusChanged        += Instance_StatusChanged;
                AudioControllerService.Current.StreamCreated        += Instance_StreamCreated;
                AudioControllerService.Current.MetaUpdated          += Instance_MetaUpdated;
                TracklistProvider.Instance.IndexChanged             += Instance_IndexChanged;
                TracklistProvider.Instance.Tracks.CollectionChanged += Tracks_CollectionChanged;

                Reload();

                BASSTimer timer = new BASSTimer();
                timer.Tick    += _timer_Tick;
                timer.Interval = TIMER_MS_INTERVAL;
                //timer.Interval = new TimeSpan(0, 0, 0, 0, TIMER_MS_INTERVAL);
                timer.Start();

                CurrentSpectrumDisplay = WpfControlLibraryBass.Elements.SpectrumAnalyzer.DISPLAY.SPECTRUM_LINE;
            }
        }
コード例 #10
0
ファイル: frmMain.cs プロジェクト: wex/modplay
        private void button1_Click(object sender, EventArgs e)
        {
            _updateTimer.Stop();
            Bass.BASS_StreamFree(stream);

            if (favorites.Count > 0 && playFavorites.Checked)
            {
                song = int.Parse(favorites[favoriteIndex]);
                favoriteIndex++;

                if (favoriteIndex >= favorites.Count)
                {
                    favoriteIndex = 0;
                }
            }
            else
            {
                song = rand.Next(1, 189357);
            }

            isFavorite.Checked = isFavorited(song);

            using (var client = new WebClient())
            {
                client.DownloadFile($@"https://api.modarchive.org/downloads.php?moduleid={song}", "song.tmp");
            }

            lblSong.Text = $"Mod Archive #{song}";
            lblSong.Tag  = song;

            stream = Bass.BASS_StreamCreateFile(@"song.tmp", 0, 0, BASSFlag.BASS_SAMPLE_FLOAT | BASSFlag.BASS_STREAM_PRESCAN);

            myDSPAddr = new DSPPROC(MyDSPGainUnsafe);
            Bass.BASS_ChannelSetDSP(stream, myDSPAddr, IntPtr.Zero, 2);

            Bass.BASS_ChannelPlay(stream, true);
            _updateTimer.Start();
        }
コード例 #11
0
 public AudioControllerService()
 {
     timer       = new BASSTimer(TIMER_MS_INTERVAL);
     timer.Tick += Timer_Tick;
     timer.Start();
 }
コード例 #12
0
        private void buttonPlay_Click(object sender, EventArgs e)
        {
            log.Trace(">>>");

            _updateTimer.Stop();

            // Are we still on the same file, then it is a Play / Pause situation
            if (_currentIndexPlaying == _currentStartIndex)
            {
                if (Bass.BASS_ChannelIsActive(_stream) == BASSActive.BASS_ACTIVE_PLAYING)
                {
                    pictureBoxPlayPause.Image = _imgPlay;
                    Bass.BASS_ChannelPause(_stream);
                    return;
                }

                if (Bass.BASS_ChannelIsActive(_stream) == BASSActive.BASS_ACTIVE_PAUSED)
                {
                    pictureBoxPlayPause.Image = _imgPause;
                    _updateTimer.Start();
                    Bass.BASS_ChannelPlay(_stream, false);
                    return;
                }
            }

            if (Bass.BASS_GetDevice() == 0)
            {
                // Using the play function for the first time
                log.Info("Player: Bass not Initialised. Doing Initialisation");
                Bass.BASS_Free();
                if (!Bass.BASS_Init(_defaultSoundDevice, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero))
                {
                    int error = (int)Bass.BASS_ErrorGetCode();
                    log.Error("Player: Error Init Bass: {0}", Enum.GetName(typeof(BASSError), error));
                    return;
                }
            }

            if (_playList.Count == 0)
            {
                log.Info("Player: No Items in Playlist.");
                return;
            }

            // Did we reach the end of the list
            if (_currentStartIndex > _playList.Count - 1)
            {
                log.Info("Player: Reached end of Playlist");
                _currentStartIndex = 0;
                Stop();
                return;
            }

            DataGridViewSelectedRowCollection selectedRows = _playListForm.PlayListGrid.SelectedRows;

            if (_currentStartIndex == -1)
            {
                if (selectedRows.Count == 0)
                {
                    _currentStartIndex = 0;
                }
                else
                {
                    _currentStartIndex = selectedRows[0].Index;
                }
            }

            // Stop the Current Stream
            Stop();

            if (
                (_stream =
                     Bass.BASS_StreamCreateFile(_playList[_currentStartIndex].FileName, 0, 0,
                                                BASSFlag.BASS_DEFAULT | BASSFlag.BASS_SAMPLE_FLOAT | BASSFlag.BASS_STREAM_AUTOFREE)) ==
                0)
            {
                int error = (int)Bass.BASS_ErrorGetCode();
                log.Error("Player: Error Creating stream for {0}: {1}", _playList[_currentStartIndex].FileName,
                          Enum.GetName(typeof(BASSError), error));
                return;
            }

            _currentSongPlaying = _playList[_currentStartIndex].FileName;

            RegisterPlaybackEvents();

            _songLength = Bass.BASS_ChannelBytes2Seconds(_stream, Bass.BASS_ChannelGetLength(_stream, BASSMode.BASS_POS_BYTES));
            if (!Bass.BASS_ChannelPlay(_stream, true))
            {
                int error = (int)Bass.BASS_ErrorGetCode();
                log.Error("Player: Error Playing File {0}: {1}", _playList[_currentStartIndex].FileName,
                          Enum.GetName(typeof(BASSError), error));
                return;
            }

            _currentIndexPlaying   = _currentStartIndex;
            playBackSlider.Enabled = true;

            if (_playListOpen)
            {
                _playListForm.PlayListGrid.ClearSelection();
                _playListForm.PlayListGrid.Rows[_currentStartIndex].Selected = true;
            }

            pictureBoxPlayPause.Image = _imgPause;
            _updateTimer.Start();
            SetText(lbTitleText,
                    string.Format("{0} ({1})", _playList[_currentStartIndex].Title, _playList[_currentStartIndex].Duration));
            SetText(lbArtistText, _playList[_currentStartIndex].Artist);
            SetText(lbAlbumText, _playList[_currentStartIndex].Album);

            log.Trace("<<<");
        }
コード例 #13
0
        public MainViewModel()
        {
            if (IsInDesignMode)
            {
                // Code runs in Blend --> create design time data.
                Title      = _title;
                NeteaseUrl = "http://music.163.com/#/my/m/music/playlist?id=6435531";
                SongCollection.Add(new Song()
                {
                    Title   = new Title("Clover Heart's"),
                    Artists = new Artists(new string[] { "榊原ゆい", "榊原ゆい" }),
                    Album   = new Album("Boommmmm", "http://p4.music.126.net/n189nEFRefNaucKD8akNQw==/7886796906449604.jpg"),
                });
                SongCollection.Add(new Song()
                {
                    Title   = new Title("Clover Heart's"),
                    Artists = new Artists(new string[] { "榊原ゆい" }),
                    Album   = new Album("Boommmmm", "http://p4.music.126.net/n189nEFRefNaucKD8akNQw==/7886796906449604.jpg"),
                });
                SongCollection.Add(new Song()
                {
                    Title   = new Title("Clover Heart's"),
                    Artists = new Artists(new string[] { "榊原ゆい" }),
                    Album   = new Album("Boommmmm", "http://p4.music.126.net/n189nEFRefNaucKD8akNQw==/7886796906449604.jpg"),
                });
                SelectedSong = SongCollection.First();
            }
            else
            {
                // Code runs "for real"
                Title                      = _title;
                NeteaseUrl                 = "http://music.163.com/playlist?id=6435531";
                Progress                   = 0;
                audioPlayback              = new AudioPlayback();
                audioPlayback.Volume       = Volume;
                audioPlayback.EndCallback += (handle, channel, data, user) =>
                {
                    int index = -1;
                    if ((index = SongCollection.IndexOf(CurrentPlaySong)) != -1)
                    {
                        ListenCommand.Execute(SongCollection.ElementAt((index + 1) % SongCollection.Count));
                    }
                    else
                    {
                        audioPlayback.Stop();
                        NowPlaying = "";
                        CurrentPlaySong.PlayProgress = 0;
                        CurrentPlaySong.PlayStatus   = PlayStatus.Play;
                        timer.Enabled = false;
                        timer.Stop();
                    }
                };

                timer.Tick += (sender, args) =>
                {
                    Title = string.Format("{0}/{1} - {2}", audioPlayback.CurrentLength, audioPlayback.TotalLength, _title);
                    RaisePropertyChanged("Title");
                    CurrentPlaySong.PlayProgress = audioPlayback.Progress;
                };

                GetSongsCommand = new RelayCommand(async() =>
                {
                    if (string.IsNullOrWhiteSpace(NeteaseUrl))
                    {
                        return;
                    }
                    var id      = "";
                    var urlType = "";
                    var reg     = new Regex(@".*/(.*?)\?id=(\d*)").Match(NeteaseUrl);
                    if (reg.Success)
                    {
                        urlType = reg.Groups[1].Value;
                        id      = reg.Groups[2].Value;
                        SongCollection.Clear();
                        switch (urlType)
                        {
                        case "album":
                            foreach (var song in await NeteaseUtil.GetSongsFromAlbum(id))
                            {
                                SongCollection.Add(song);
                                RaisePropertyChanged("TotalCount");
                            }
                            break;

                        case "artist":
                            foreach (var song in await NeteaseUtil.GetSongsFromArtist(id))
                            {
                                SongCollection.Add(song);
                                RaisePropertyChanged("TotalCount");
                            }
                            break;

                        case "playlist":
                            foreach (var song in await NeteaseUtil.GetSongsFromPlaylist(id))
                            {
                                SongCollection.Add(song);
                                RaisePropertyChanged("TotalCount");
                            }
                            break;

                        case "song":
                            foreach (var song in await NeteaseUtil.GetSongDetail(id))
                            {
                                SongCollection.Add(song);
                                RaisePropertyChanged("TotalCount");
                            }
                            break;
                        }
                    }
                    else
                    {
                        SongCollection.Clear();
                        foreach (var song in await NeteaseUtil.SearchSongs(NeteaseUrl))
                        {
                            SongCollection.Add(song);
                            RaisePropertyChanged("TotalCount");
                        }
                    }
                });

                PlaylistDownloadCommand = new RelayCommand <Song>((song) =>
                {
                    SelectedSong = song;
                    if (string.IsNullOrWhiteSpace(SongTrackUrl))
                    {
                        return;
                    }
                    var downloader = new DownloadUtils();
                    downloader.DownloadProgressChanged += (sender, args) =>
                    {
                        song.DownProgress   = args.ProgressPercentage;
                        BytesReceived       = args.BytesReceived.ToString();
                        TotalBytesToReceive = args.TotalBytesToReceive.ToString();
                    };
                    downloader.DownloadFileCompleted += (sender, args) =>
                    {
                        if (DownloadNext)
                        {
                            int index = -1;
                            if ((index = SongCollection.IndexOf(song)) != -1 && index + 1 < SongCollection.Count)
                            {
                                PlaylistDownloadCommand.Execute(SongCollection.ElementAt(index + 1));
                            }
                        }
                        else
                        {
                            BytesReceived       = "0";
                            TotalBytesToReceive = "0";
                        }
                    };
                    downloader.Get(SongTrackUrl, Path.Combine("music", FileUtils.GetSafeFileName(song.SongFileName)));
                });

                ListenCommand = new RelayCommand <Song>((song) =>
                {
                    SelectedSong = song;
                    if (string.IsNullOrWhiteSpace(SongTrackUrl))
                    {
                        return;
                    }
                    if (song.PlayStatus == PlayStatus.Play)
                    {
                        if (CurrentPlaySong != null && CurrentPlaySong != song)
                        {
                            audioPlayback.Stop();
                            CurrentPlaySong.PlayProgress = 0;
                            CurrentPlaySong.PlayStatus   = PlayStatus.Play;
                        }

                        audioPlayback.Load(SongTrackUrl);
                        audioPlayback.Play();

                        CurrentPlaySong = song;
                        NowPlaying      = string.Format("Now Playing {0} - {1}", song.Artists, song.Title);
                        timer.Enabled   = true;
                        timer.Start();
                        song.PlayProgress = 0;
                        song.PlayStatus   = PlayStatus.Stop;
                    }
                    else
                    {
                        audioPlayback.Stop();
                        NowPlaying        = "";
                        song.PlayStatus   = PlayStatus.Play;
                        song.PlayProgress = 0;
                        timer.Enabled     = false;
                        timer.Stop();
                    }
                });

                OpenUrlCommand = new RelayCommand <string>((link) =>
                {
                    System.Diagnostics.Process.Start(link);
                });

                CopyUrlCommand = new RelayCommand <string>((link) =>
                {
                    Clipboard.SetText(link);
                });

                WindowClosing = new RelayCommand(() =>
                {
                    Properties.Settings.Default.Save();
                });
            }
        }