private void _MusicTimer_Elapsed(object sender, ElapsedEventArgs e) { if (Music.IsActive == PlaybackState.Playing) { if (IsPlayNote && NoteTabSelected) { NoteData note = NoteData .OrderBy(x => x.NoteTime) .Where(x => x.NoteTime + NoteOffset <= Music.CurrentTime) .LastOrDefault(x => x.NoteTime + NoteOffset > Music.PreviousNote); if (note != null) { PlayNote(note.Note); Music.PreviousNote = note.NoteTime + NoteOffset; //SelectedNote 프로퍼티를 조작하면 끊기기 때문에 직접 접근으로 대체 _SelectedNote = note; RaisePropertyChanged(nameof(SelectedNote)); } } if (_CurrentBPM.Value != 0) { if (Music.PreviousBeat < _NextBeatTime && Music.CurrentTime >= _NextBeatTime) { Music.PreviousBeat = _NextBeatTime; RaisePropertyChanged("BeatTime"); if (TimimgTabSelected || NoteDivPreview) { string beat = "beat.wav"; if (_BeatMul % 4 == 0 && !NoteDivPreview) { beat = "beat2.wav"; } //EntryAssembly/sound/FileName var soundPath = Path.Combine( Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "sound", beat ); int channel = Bass.CreateStream(soundPath, 0, 0, BassFlags.Prescan | BassFlags.AutoFree); Bass.ChannelPlay(channel); } } } } RaisePropertyChanged(nameof(MusicTime)); RaisePropertyChanged(nameof(MusicSlider)); }
public void OrderNote() { NoteData = new ObservableCollection <Models.NoteData>(NoteData.OrderBy(x => x.NoteTime)); RaisePropertyChanged(nameof(NoteData)); }