Playback и текущий Tick #167
-
Существует ли возможность подписаться на текущий тик из Playback-а? Иле нужно наследоваться и как то огородить? Направьте, пожалуйста, в нужном направлении. Хочу сделать обычный прогресс бар с перемоткой. И спасибо вам за такую хорошую библиотеку. Для меня она просто бесценна. Буду углубляться в шарп и вашу библиотеку. |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 28 replies
-
Вот простейший код (вы его под себя адаптируйте): using System.Linq;
using Melanchall.DryWetMidi.Core;
using Melanchall.DryWetMidi.Interaction;
using Melanchall.DryWetMidi.Multimedia;
namespace DwmExample
{
class Program
{
static void Main(string[] args)
{
var midiFile = MidiFile.Read("My MIDI file.mid");
var playback = midiFile.GetPlayback(/*ваше устройство*/);
var duration = playback.GetDuration<MidiTimeSpan>().TimeSpan;
// тут выставляете Maximum прогрессбара
PlaybackCurrentTimeWatcher.Instance.AddPlayback(playback, TimeSpanType.Midi);
PlaybackCurrentTimeWatcher.Instance.CurrentTimeChanged += OnPlaybackCurrentTimeChanged;
PlaybackCurrentTimeWatcher.Instance.Start();
playback.Start();
// ...
// ...
// когда Playback и OutputDevice больше не нужен, вызовите:
// PlaybackCurrentTimeWatcher.Instance.Stop();
// playback.Dispose();
// outputDevice.Dispose();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
private static void OnPlaybackCurrentTimeChanged(object sender, PlaybackCurrentTimeChangedEventArgs e)
{
var time = ((MidiTimeSpan)e.Times.First().Time).TimeSpan;
// тут выставляете Value прогрессбара
}
}
} Если хотите к какому-то времени перемещаться, например, по клику на прогрессбаре: playback.MoveToTime(new MidiTimeSpan(/*тут Value прогрессбара*/)); Можете и шагами перематывать, для этого используйте методы |
Beta Was this translation helpful? Give feedback.
-
Я не программист и не знаю VB и тем более Winforms, код автора рабочий, выдёргиваешь длительность в тиках с помощью
так как выполняется в другом потоке. Данный код для WinUi/UWP, в Winforms это делается как то иначе. |
Beta Was this translation helpful? Give feedback.
Вот простейший код (вы его под себя адаптируйте):