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); } }
/// <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(); }
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(); }
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(); }
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; }
public Status PlayAndStartTimer() { _updateTimer.Start(); if (Bass.BASS_ChannelPlay(_stream, false)) { return(Status.OK); } else { return(Status.Error); } }
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(); } } }
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()); } }
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; } }
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(); }
public AudioControllerService() { timer = new BASSTimer(TIMER_MS_INTERVAL); timer.Tick += Timer_Tick; timer.Start(); }
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("<<<"); }
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(); }); } }