From 467616aab5b834ddc901dc007a53fb4431ea0d5f Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 17 Mar 2025 20:09:21 -0400 Subject: [PATCH 001/146] Upgrade Terminal.Gui package from 0.90.3 --> 1.18.0 --- src/MusicSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index d8bcba9..3291630 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -21,7 +21,7 @@ - + From 2436c437adbf06a790df9932bb49ed8be7e05bde Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 17 Mar 2025 20:26:06 -0400 Subject: [PATCH 002/146] Cleanup TUI class code. Implement collection expression syntax for menus. --- src/Program.cs | 2 +- src/UI/Tui.cs | 88 +++++++++++++++++--------------------------------- 2 files changed, 30 insertions(+), 60 deletions(-) diff --git a/src/Program.cs b/src/Program.cs index b803d31..4f75bc2 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -24,8 +24,8 @@ public static void Main() using IPlayer player = new SoundFlowPlayer(soundEngine); using var httpClient = new HttpClient(); IStreamConverter streamConverter = new SoundFlowPlayerStreamConverter(httpClient); + var ui = new Tui(player, streamConverter); - ui.Start(); } } \ No newline at end of file diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 3d3146a..43dd63e 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -12,11 +12,9 @@ namespace MusicSharp.UI; -/// -/// The Gui class houses the CLI elements of MusicSharp. -/// public class Tui { + // TUI Components private static List _playlistTracks; private static ListView _playlistView; private static FrameView _playlistPane; @@ -24,76 +22,53 @@ public class Tui private static FrameView _nowPlaying; private static StatusBar _statusBar; private static Label _trackName; - - /// - /// Create a new instance of the audio player engine. - /// - private readonly IPlayer _player; - - private object _mainLoopTimeout = null; - + private ProgressBar _audioProgressBar; + private object? _mainLoopTimeout = null; private List _playlist = new List(); + private readonly IPlayer _player; private readonly IStreamConverter _streamConverter; - - /// - /// Initializes a new instance of the class. - /// - /// The player to be injected. - /// Helper class to convert files and urls to Stream type. + public Tui(IPlayer player, IStreamConverter streamConverter) { _player = player; _streamConverter = streamConverter; } - - /// - /// Gets and sets the current audio file play progress. - /// - internal ProgressBar AudioProgressBar { get; private set; } - - /// - /// Start the UI. - /// + public void Start() { // Creates an instance of MainLoop to process input events, handle timers and other sources of data. Application.Init(); var top = Application.Top; - var tframe = top.Frame; // Create the menubar. - var menu = new MenuBar(new MenuBarItem[] - { - new MenuBarItem("_File", new MenuItem[] - { + var menu = new MenuBar([ + new MenuBarItem("_File", [ new MenuItem("_Open", "Open a music file", () => OpenFile()), - new MenuItem("Open S_tream", "Open a music stream", () => OpenStream()), + new MenuItem("Open _Stream", "Open a music stream", () => OpenStream()), - new MenuItem("Open Pla_ylist", "Load a playlist", () => LoadPlaylist()), + new MenuItem("Open _Playlist", "Load a playlist", () => LoadPlaylist()), - new MenuItem("_Quit", "Exit MusicSharp", () => Application.RequestStop()), - }), + new MenuItem("_Quit", "Exit MusicSharp", () => Application.RequestStop()) + ]), - new MenuBarItem("_Help", new MenuItem[] - { + new MenuBarItem("_Help", [ new MenuItem("_About MusicSharp", string.Empty, () => { MessageBox.Query("Music Sharp 1.0.0", "\nMusic Sharp is a lightweight CLI\n music player written in C#.\n\nDeveloped by Mark-James McDougall\nand licensed under the GPL v3.\n ", "Close"); - }), - }), - }); + }) + ]) + ]); - _statusBar = new StatusBar(new StatusItem[] - { - new StatusItem(Key.F1, "~F1~ Open file", () => OpenFile()), + _statusBar = new StatusBar([ + new StatusItem(Key.F1, "~F1~ Open file", () => OpenFile()), new StatusItem(Key.F2, "~F2~ Open stream", () => OpenStream()), new StatusItem(Key.F3, "~F3~ Load playlist", () => LoadPlaylist()), new StatusItem(Key.F4, "~F4~ Quit", () => Application.RequestStop()), - new StatusItem(Key.Space, "~Space~ Play/Pause", () => PlayPause()), - }); + new StatusItem(Key.Space, "~Space~ Play/Pause", () => PlayPause()) + ]); // Create the playback controls frame. _playbackControls = new FrameView("Playback") @@ -120,7 +95,7 @@ public void Start() stopButton.Clicked += () => { _player.Stop(); - AudioProgressBar.Fraction = 0F; + _audioProgressBar.Fraction = 0F; TimePlayedLabel(); }; @@ -201,7 +176,7 @@ public void Start() CanFocus = false, }; - AudioProgressBar = new ProgressBar() + _audioProgressBar = new ProgressBar() { X = 0, Y = 2, @@ -210,7 +185,7 @@ public void Start() ColorScheme = Colors.Base, }; - _nowPlaying.Add(AudioProgressBar); + _nowPlaying.Add(_audioProgressBar); // Add the layout elements and run the app. top.Add(menu, _playlistPane, _playbackControls, _nowPlaying, _statusBar); @@ -234,15 +209,11 @@ private void PlayPause() MessageBox.Query("Warning", "Select a file or stream first.", "Close"); } } - - // Display a file open dialog and return the path of the user selected file. + private void OpenFile() { var d = new OpenDialog("Open", "Open an audio file") { AllowsMultipleSelection = false }; - d.DirectoryPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); - - // This will filter the dialog on basis of the allowed file types in the array. d.AllowedFileTypes = [".mp3", ".wav", ".flac"]; Application.Run(d); @@ -256,7 +227,7 @@ private void OpenFile() var stream = _streamConverter.ConvertFileToStream(d.FilePath.ToString()); _player.Play(stream); NowPlaying(_player.LastFileOpened); - AudioProgressBar.Fraction = 0F; + _audioProgressBar.Fraction = 0F; UpdateProgressBar(); TimePlayedLabel(); } @@ -312,8 +283,7 @@ private void OpenStream() d.Add(editLabel, streamUrl); Application.Run(d); } - - // Load a playlist file. Currently, only M3U is supported. + private void LoadPlaylist() { var d = new OpenDialog("Open", "Open a playlist") { AllowsMultipleSelection = false }; @@ -363,7 +333,7 @@ private void TimePlayedLabel() _trackName = new Label($"{timePlayed} / {trackLength}") { - X = Pos.Right(AudioProgressBar), + X = Pos.Right(_audioProgressBar), Y = 2, }; } @@ -371,7 +341,7 @@ private void TimePlayedLabel() { _trackName = new Label($"00:00 / 00:00") { - X = Pos.Right(AudioProgressBar), + X = Pos.Right(_audioProgressBar), Y = 2, }; } @@ -385,7 +355,7 @@ private void UpdateProgressBar() { while (_player.CurrentTime() < _player.TrackLength() && _player.PlayerStatus is not EPlayerStatus.Stopped) { - AudioProgressBar.Fraction = _player.CurrentTime() / _player.TrackLength(); + _audioProgressBar.Fraction = _player.CurrentTime() / _player.TrackLength(); TimePlayedLabel(); return true; From ce2752037332cad6a41967c600d464420f24460a Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 18 Mar 2025 21:47:25 -0400 Subject: [PATCH 003/146] Initial commit of TUI using Terminal.Gui 2.0 --- src/MusicSharp.csproj | 2 +- src/Program.cs | 9 +- src/UI/Tui.cs | 385 ++++++------------------------------------ src/UI/TuiTwo.cs | 367 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 425 insertions(+), 338 deletions(-) create mode 100644 src/UI/TuiTwo.cs diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index 3291630..ca8693f 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -21,7 +21,7 @@ - + diff --git a/src/Program.cs b/src/Program.cs index 4f75bc2..7b5fbef 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -7,6 +7,7 @@ using MusicSharp.AudioPlayer; using SoundFlow.Backends.MiniAudio; using SoundFlow.Enums; +using Terminal.Gui; namespace MusicSharp; @@ -24,8 +25,12 @@ public static void Main() using IPlayer player = new SoundFlowPlayer(soundEngine); using var httpClient = new HttpClient(); IStreamConverter streamConverter = new SoundFlowPlayerStreamConverter(httpClient); - var ui = new Tui(player, streamConverter); - ui.Start(); + + ConfigurationManager.RuntimeConfig = """{ "Theme": "Dark" }"""; + Application.Init(); + Application.Run(ui); + ui.Dispose(); + Application.Shutdown (); } } \ No newline at end of file diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 43dd63e..cf372f3 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -1,367 +1,82 @@ -// -// Licensed under the GNU GPL v3 License. See LICENSE in the project root for license information. -// - using System; using System.Collections.Generic; using System.IO; -using MusicSharp.Enums; -using MusicSharp.PlaylistHandlers; using MusicSharp.AudioPlayer; using Terminal.Gui; +using MenuBarItem = Terminal.Gui.MenuBarItem; namespace MusicSharp.UI; -public class Tui +public class Tui : Toplevel { - // TUI Components - private static List _playlistTracks; - private static ListView _playlistView; - private static FrameView _playlistPane; - private static FrameView _playbackControls; - private static FrameView _nowPlaying; - private static StatusBar _statusBar; - private static Label _trackName; - private ProgressBar _audioProgressBar; - private object? _mainLoopTimeout = null; - private List _playlist = new List(); - private readonly IPlayer _player; private readonly IStreamConverter _streamConverter; + private readonly StatusBar? _statusBar; + public Tui(IPlayer player, IStreamConverter streamConverter) { _player = player; _streamConverter = streamConverter; - } - - public void Start() - { - // Creates an instance of MainLoop to process input events, handle timers and other sources of data. - Application.Init(); - - var top = Application.Top; - - // Create the menubar. - var menu = new MenuBar([ - new MenuBarItem("_File", [ - new MenuItem("_Open", "Open a music file", () => OpenFile()), - - new MenuItem("Open _Stream", "Open a music stream", () => OpenStream()), - - new MenuItem("Open _Playlist", "Load a playlist", () => LoadPlaylist()), - - new MenuItem("_Quit", "Exit MusicSharp", () => Application.RequestStop()) - ]), - - new MenuBarItem("_Help", [ - new MenuItem("_About MusicSharp", string.Empty, () => - { - MessageBox.Query("Music Sharp 1.0.0", "\nMusic Sharp is a lightweight CLI\n music player written in C#.\n\nDeveloped by Mark-James McDougall\nand licensed under the GPL v3.\n ", "Close"); - }) - ]) - ]); - - _statusBar = new StatusBar([ - new StatusItem(Key.F1, "~F1~ Open file", () => OpenFile()), - new StatusItem(Key.F2, "~F2~ Open stream", () => OpenStream()), - new StatusItem(Key.F3, "~F3~ Load playlist", () => LoadPlaylist()), - new StatusItem(Key.F4, "~F4~ Quit", () => Application.RequestStop()), - new StatusItem(Key.Space, "~Space~ Play/Pause", () => PlayPause()) - ]); - - // Create the playback controls frame. - _playbackControls = new FrameView("Playback") - { - X = 0, - Y = 24, - Width = 55, - Height = 5, - CanFocus = true, - }; - - var playPauseButton = new Button(1, 1, "Play/Pause"); - playPauseButton.Clicked += () => - { - PlayPause(); - - if (_player.PlayerStatus != EPlayerStatus.Stopped) - { - UpdateProgressBar(); - } - }; - - var stopButton = new Button(16, 1, "Stop"); - stopButton.Clicked += () => - { - _player.Stop(); - _audioProgressBar.Fraction = 0F; - TimePlayedLabel(); - }; - - var seekForward = new Button(26, 0, "Seek 5s"); - seekForward.Clicked += () => - { - _player.SeekForward(); - }; - - var seekBackward = new Button(26, 2, "Seek -5s"); - seekBackward.Clicked += () => - { - _player.SeekBackwards(); - }; - - var increaseVolumeButton = new Button(39, 0, "+ Volume"); - increaseVolumeButton.Clicked += () => - { - _player.IncreaseVolume(); - }; - - var decreaseVolumeButton = new Button(39, 2, "- Volume"); - decreaseVolumeButton.Clicked += () => - { - _player.DecreaseVolume(); - }; - - _playbackControls.Add(playPauseButton, stopButton, increaseVolumeButton, decreaseVolumeButton, seekBackward, seekForward); - - // Create the left-hand playlists view. - _playlistPane = new FrameView("Playlist Tracks") - { - X = 0, - Y = 1, // for menu - Width = Dim.Fill(), - Height = 23, - CanFocus = false, - }; - - // The list of tracks in the playlist. - _playlistTracks = new List(); - - _playlistView = new ListView(_playlistTracks) - { - X = 0, - Y = 0, - Width = Dim.Fill(), - Height = 23, - AllowsMarking = false, - CanFocus = true, - }; - - // Play the selection when a playlist path is clicked. - _playlistView.OpenSelectedItem += (a) => - { - try - { - _player.LastFileOpened = a.Value.ToString(); - _player.Play(_streamConverter.ConvertFileToStream(a.Value.ToString())); - NowPlaying(_player.LastFileOpened); - UpdateProgressBar(); - } - catch (FileNotFoundException ex) - { - MessageBox.Query("Warning", "Invalid file path.", "Close"); - } - }; - - _playlistPane.Add(_playlistView); - // Create the audio progress bar frame. - _nowPlaying = new FrameView("Now Playing") - { - X = 55, - Y = 24, + HighlightStyle = HighlightStyle.Hover; + + // Title = $"Example App ({Application.QuitKey} to quit)"; + + var menuBar = new MenuBar() + { + HighlightStyle = HighlightStyle.Hover, + MenusBorderStyle = LineStyle.Rounded, + Menus = + [ + new( + "_File", + new MenuItem[] + { + new( + "_Open file", + "Open a local audio file", + OpenFile // Open a file dialog + ), + new( + "_Quit", + "Quit UI Catalog", + RequestStop + ) + } + ) + ] + }; + + var libraryWindow = new View() + { + Y = Pos.Bottom(menuBar), Width = Dim.Fill(), - Height = 5, - CanFocus = false, - }; - - _audioProgressBar = new ProgressBar() - { - X = 0, - Y = 2, - Width = Dim.Fill() - 15, - Height = 1, - ColorScheme = Colors.Base, + Height = Dim.Fill(), + BorderStyle = LineStyle.Rounded }; - - _nowPlaying.Add(_audioProgressBar); - - // Add the layout elements and run the app. - top.Add(menu, _playlistPane, _playbackControls, _nowPlaying, _statusBar); - - Application.Run(); - } - - private void PlayPause() - { - try - { - _player.PlayPause(); - - if (_player.PlayerStatus == EPlayerStatus.Playing) - { - UpdateProgressBar(); - } - } - catch (Exception) - { - MessageBox.Query("Warning", "Select a file or stream first.", "Close"); - } + + // Add the views to the Window + Add(menuBar); + Add(libraryWindow); } + // Action Methods private void OpenFile() { - var d = new OpenDialog("Open", "Open an audio file") { AllowsMultipleSelection = false }; - d.DirectoryPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); - d.AllowedFileTypes = [".mp3", ".wav", ".flac"]; - Application.Run(d); - - if (!d.Canceled) - { - if (File.Exists(d.FilePath.ToString())) - { - try - { - _player.LastFileOpened = d.FilePath.ToString(); - var stream = _streamConverter.ConvertFileToStream(d.FilePath.ToString()); - _player.Play(stream); - NowPlaying(_player.LastFileOpened); - _audioProgressBar.Fraction = 0F; - UpdateProgressBar(); - TimePlayedLabel(); - } - catch (FileNotFoundException ex) - { - MessageBox.Query("Warning", "Invalid file path.", "Close"); - } - } - } - } - - // Open and play an audio stream. - private void OpenStream() - { - var d = new Dialog("Open Stream", 50, 15); - - var editLabel = new Label("Enter the url of the audio stream to load\n (.mp3 streams only):") - { - X = 0, - Y = 0, - Width = Dim.Fill(), - }; - - var streamUrl = new TextField(string.Empty) + var d = new OpenDialog() { - X = 3, - Y = 4, - Width = 42, + AllowsMultipleSelection = false, + Title = "Open an audio file", + AllowedTypes = [new AllowedType("Allowed filetypes", ".mp3")] }; - - var loadStream = new Button(12, 7, "Load Stream"); - loadStream.Clicked += async () => - { - try - { - var stream = await _streamConverter.ConvertUrlToStream(streamUrl.Text.ToString()); - _player.Play(stream); - } - catch (Exception ex) - { - MessageBox.Query("Warning", "Invalid URL.", "Close"); - } - }; - - var cancelStream = new Button(29, 7, "Close"); - cancelStream.Clicked += () => - { - Application.RequestStop(); - }; - - d.AddButton(loadStream); - d.AddButton(cancelStream); - d.Add(editLabel, streamUrl); - Application.Run(d); - } - - private void LoadPlaylist() - { - var d = new OpenDialog("Open", "Open a playlist") { AllowsMultipleSelection = false }; - - // This will filter the dialog on basis of the allowed file types in the array. - d.AllowedFileTypes = [".m3u"]; + Application.Run(d); if (!d.Canceled) { - _playlist = PlaylistLoader.LoadPlaylist(d.FilePath.ToString()); - - if (_playlist == null) - { - Application.RequestStop(); - } - else - { - foreach (var track in _playlist) - { - _playlistTracks.Add(track); - } - - Application.Run(); - } - } - } - - private static void NowPlaying(string track) - { - _trackName = new Label(track) - { - X = 0, - Y = 0, - Width = Dim.Fill(), - }; - - _nowPlaying.Add(_trackName); - } - - private void TimePlayedLabel() - { - if (_player.PlayerStatus != EPlayerStatus.Stopped) - { - var timePlayed = TimeSpan.FromSeconds((double)(new decimal(_player.CurrentTime()))).ToString(@"hh\:mm\:ss"); - var trackLength = TimeSpan.FromSeconds((double)(new decimal(_player.TrackLength()))).ToString(@"hh\:mm\:ss"); - - _trackName = new Label($"{timePlayed} / {trackLength}") - { - X = Pos.Right(_audioProgressBar), - Y = 2, - }; - } - else - { - _trackName = new Label($"00:00 / 00:00") - { - X = Pos.Right(_audioProgressBar), - Y = 2, - }; + var stream = _streamConverter.ConvertFileToStream(d.FilePaths[0].ToString()); + _player.Play(stream); } - - _nowPlaying.Add(_trackName); - } - - private void UpdateProgressBar() - { - _mainLoopTimeout = Application.MainLoop.AddTimeout(TimeSpan.FromSeconds(1), (updateTimer) => - { - while (_player.CurrentTime() < _player.TrackLength() && _player.PlayerStatus is not EPlayerStatus.Stopped) - { - _audioProgressBar.Fraction = _player.CurrentTime() / _player.TrackLength(); - TimePlayedLabel(); - - return true; - } - - return false; - }); } } \ No newline at end of file diff --git a/src/UI/TuiTwo.cs b/src/UI/TuiTwo.cs new file mode 100644 index 0000000..c1576d5 --- /dev/null +++ b/src/UI/TuiTwo.cs @@ -0,0 +1,367 @@ +// +// Licensed under the GNU GPL v3 License. See LICENSE in the project root for license information. +// +/* +using System; +using System.Collections.Generic; +using System.IO; +using MusicSharp.Enums; +using MusicSharp.PlaylistHandlers; +using MusicSharp.AudioPlayer; +using Terminal.Gui; + +namespace MusicSharp.UI; + +public class TuiTwo +{ + // TUI Components + private static List _playlistTracks; + private static ListView _playlistView; + private static FrameView _playlistPane; + private static FrameView _playbackControls; + private static FrameView _nowPlaying; + private static StatusBar _statusBar; + private static Label _trackName; + private ProgressBar _audioProgressBar; + private object? _mainLoopTimeout = null; + private List _playlist = []; + + private readonly IPlayer _player; + private readonly IStreamConverter _streamConverter; + + public Tui(IPlayer player, IStreamConverter streamConverter) + { + _player = player; + _streamConverter = streamConverter; + } + + public void Start() + { + // Creates an instance of MainLoop to process input events, handle timers and other sources of data. + Application.Init(); + + var top = Application.Top; + + // Create the menubar. + var menu = new MenuBar([ + new MenuBarItem("_File", [ + new MenuItem("_Open", "Open a music file", () => OpenFile()), + + new MenuItem("Open _Stream", "Open a music stream", () => OpenStream()), + + new MenuItem("Open _Playlist", "Load a playlist", () => LoadPlaylist()), + + new MenuItem("_Quit", "Exit MusicSharp", () => Application.RequestStop()) + ]), + + new MenuBarItem("_Help", [ + new MenuItem("_About MusicSharp", string.Empty, () => + { + MessageBox.Query("Music Sharp 1.0.0", "\nMusic Sharp is a lightweight CLI\n music player written in C#.\n\nDeveloped by Mark-James McDougall\nand licensed under the GPL v3.\n ", "Close"); + }) + ]) + ]); + + _statusBar = new StatusBar([ + new StatusItem(Key.F1, "~F1~ Open file", () => OpenFile()), + new StatusItem(Key.F2, "~F2~ Open stream", () => OpenStream()), + new StatusItem(Key.F3, "~F3~ Load playlist", () => LoadPlaylist()), + new StatusItem(Key.F4, "~F4~ Quit", () => Application.RequestStop()), + new StatusItem(Key.Space, "~Space~ Play/Pause", () => PlayPause()) + ]); + + // Create the playback controls frame. + _playbackControls = new FrameView("Playback") + { + X = 0, + Y = 24, + Width = 55, + Height = 5, + CanFocus = true, + }; + + var playPauseButton = new Button(1, 1, "Play/Pause"); + playPauseButton.Clicked += () => + { + PlayPause(); + + if (_player.PlayerStatus != EPlayerStatus.Stopped) + { + UpdateProgressBar(); + } + }; + + var stopButton = new Button(16, 1, "Stop"); + stopButton.Clicked += () => + { + _player.Stop(); + _audioProgressBar.Fraction = 0F; + TimePlayedLabel(); + }; + + var seekForward = new Button(26, 0, "Seek 5s"); + seekForward.Clicked += () => + { + _player.SeekForward(); + }; + + var seekBackward = new Button(26, 2, "Seek -5s"); + seekBackward.Clicked += () => + { + _player.SeekBackwards(); + }; + + var increaseVolumeButton = new Button(39, 0, "+ Volume"); + increaseVolumeButton.Clicked += () => + { + _player.IncreaseVolume(); + }; + + var decreaseVolumeButton = new Button(39, 2, "- Volume"); + decreaseVolumeButton.Clicked += () => + { + _player.DecreaseVolume(); + }; + + _playbackControls.Add(playPauseButton, stopButton, increaseVolumeButton, decreaseVolumeButton, seekBackward, seekForward); + + // Create the left-hand playlists view. + _playlistPane = new FrameView("Playlist Tracks") + { + X = 0, + Y = 1, // for menu + Width = Dim.Fill(), + Height = 23, + CanFocus = false, + }; + + // The list of tracks in the playlist. + _playlistTracks = new List(); + + _playlistView = new ListView(_playlistTracks) + { + X = 0, + Y = 0, + Width = Dim.Fill(), + Height = 23, + AllowsMarking = false, + CanFocus = true, + }; + + // Play the selection when a playlist path is clicked. + _playlistView.OpenSelectedItem += (a) => + { + try + { + _player.LastFileOpened = a.Value.ToString(); + _player.Play(_streamConverter.ConvertFileToStream(a.Value.ToString())); + NowPlaying(_player.LastFileOpened); + UpdateProgressBar(); + } + catch (FileNotFoundException ex) + { + MessageBox.Query("Warning", "Invalid file path.", "Close"); + } + }; + + _playlistPane.Add(_playlistView); + + // Create the audio progress bar frame. + _nowPlaying = new FrameView("Now Playing") + { + X = 55, + Y = 24, + Width = Dim.Fill(), + Height = 5, + CanFocus = false, + }; + + _audioProgressBar = new ProgressBar() + { + X = 0, + Y = 2, + Width = Dim.Fill() - 15, + Height = 1, + ColorScheme = Colors.Base, + }; + + _nowPlaying.Add(_audioProgressBar); + + // Add the layout elements and run the app. + top.Add(menu, _playlistPane, _playbackControls, _nowPlaying, _statusBar); + + Application.Run(); + } + + private void PlayPause() + { + try + { + _player.PlayPause(); + + if (_player.PlayerStatus == EPlayerStatus.Playing) + { + UpdateProgressBar(); + } + } + catch (Exception) + { + MessageBox.Query("Warning", "Select a file or stream first.", "Close"); + } + } + + private void OpenFile() + { + var d = new OpenDialog("Open", "Open an audio file") { AllowsMultipleSelection = false }; + d.DirectoryPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + d.AllowedFileTypes = [".mp3", ".wav", ".flac"]; + Application.Run(d); + + if (!d.Canceled) + { + if (File.Exists(d.FilePath.ToString())) + { + try + { + _player.LastFileOpened = d.FilePath.ToString(); + var stream = _streamConverter.ConvertFileToStream(d.FilePath.ToString()); + _player.Play(stream); + NowPlaying(_player.LastFileOpened); + _audioProgressBar.Fraction = 0F; + UpdateProgressBar(); + TimePlayedLabel(); + } + catch (FileNotFoundException ex) + { + MessageBox.Query("Warning", "Invalid file path.", "Close"); + } + } + } + } + + // Open and play an audio stream. + private void OpenStream() + { + var d = new Dialog("Open Stream", 50, 15); + + var editLabel = new Label("Enter the url of the audio stream to load\n (.mp3 streams only):") + { + X = 0, + Y = 0, + Width = Dim.Fill(), + }; + + var streamUrl = new TextField(string.Empty) + { + X = 3, + Y = 4, + Width = 42, + }; + + var loadStream = new Button(12, 7, "Load Stream"); + loadStream.Clicked += async () => + { + try + { + var stream = await _streamConverter.ConvertUrlToStream(streamUrl.Text.ToString()); + _player.Play(stream); + } + catch (Exception ex) + { + MessageBox.Query("Warning", "Invalid URL.", "Close"); + } + }; + + var cancelStream = new Button(29, 7, "Close"); + cancelStream.Clicked += () => + { + Application.RequestStop(); + }; + + d.AddButton(loadStream); + d.AddButton(cancelStream); + d.Add(editLabel, streamUrl); + Application.Run(d); + } + + private void LoadPlaylist() + { + var d = new OpenDialog("Open", "Open a playlist") { AllowsMultipleSelection = false }; + + // This will filter the dialog on basis of the allowed file types in the array. + d.AllowedFileTypes = [".m3u"]; + Application.Run(d); + + if (!d.Canceled) + { + _playlist = PlaylistLoader.LoadPlaylist(d.FilePath.ToString()); + + if (_playlist == null) + { + Application.RequestStop(); + } + else + { + foreach (var track in _playlist) + { + _playlistTracks.Add(track); + } + + Application.Run(); + } + } + } + + private static void NowPlaying(string track) + { + _trackName = new Label(track) + { + X = 0, + Y = 0, + Width = Dim.Fill(), + }; + + _nowPlaying.Add(_trackName); + } + + private void TimePlayedLabel() + { + if (_player.PlayerStatus != EPlayerStatus.Stopped) + { + var timePlayed = TimeSpan.FromSeconds((double)(new decimal(_player.CurrentTime()))).ToString(@"hh\:mm\:ss"); + var trackLength = TimeSpan.FromSeconds((double)(new decimal(_player.TrackLength()))).ToString(@"hh\:mm\:ss"); + + _trackName = new Label($"{timePlayed} / {trackLength}") + { + X = Pos.Right(_audioProgressBar), + Y = 2, + }; + } + else + { + _trackName = new Label($"00:00 / 00:00") + { + X = Pos.Right(_audioProgressBar), + Y = 2, + }; + } + + _nowPlaying.Add(_trackName); + } + + private void UpdateProgressBar() + { + _mainLoopTimeout = Application.MainLoop.AddTimeout(TimeSpan.FromSeconds(1), (updateTimer) => + { + while (_player.CurrentTime() < _player.TrackLength() && _player.PlayerStatus is not EPlayerStatus.Stopped) + { + _audioProgressBar.Fraction = _player.CurrentTime() / _player.TrackLength(); + TimePlayedLabel(); + + return true; + } + + return false; + }); + } +} */ \ No newline at end of file From 93995ff2aa004082347022c5f4ac92a6449dea46 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 18 Mar 2025 22:25:38 -0400 Subject: [PATCH 004/146] Add using statement to Tui. --- src/Program.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Program.cs b/src/Program.cs index 7b5fbef..9f6bcfb 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -25,12 +25,11 @@ public static void Main() using IPlayer player = new SoundFlowPlayer(soundEngine); using var httpClient = new HttpClient(); IStreamConverter streamConverter = new SoundFlowPlayerStreamConverter(httpClient); - var ui = new Tui(player, streamConverter); ConfigurationManager.RuntimeConfig = """{ "Theme": "Dark" }"""; Application.Init(); + using var ui = new Tui(player, streamConverter); Application.Run(ui); - ui.Dispose(); Application.Shutdown (); } } \ No newline at end of file From 9a4e8497a758852e793ab857596f39db5a9b8a73 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 18 Mar 2025 22:25:51 -0400 Subject: [PATCH 005/146] Working on implementing playback buttons. --- src/UI/Tui.cs | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index cf372f3..c62299e 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -50,15 +50,48 @@ public Tui(IPlayer player, IStreamConverter streamConverter) var libraryWindow = new View() { + Title = "Library", Y = Pos.Bottom(menuBar), Width = Dim.Fill(), - Height = Dim.Fill(), + Height = Dim.Auto(), + CanFocus = true, + BorderStyle = LineStyle.Rounded + }; + + // Create the audio progress bar frame. + var playbackControls = new FrameView() + { + Title = "Playback", + X = 0, + Y = Pos.Bottom(libraryWindow), + Width = Dim.Auto(), + Height = Dim.Auto(), + CanFocus = true, + BorderStyle = LineStyle.Rounded + }; + + var playPauseButton = new Button { X = 0, Y = 0, IsDefault = true, Text = "Play/Pause" }; + var stopButton = new Button { X = 0, Y = Pos.Bottom(playPauseButton), IsDefault = false, Text = "Stop" }; + var volumeIncreaseButton = new Button { X = Pos.Right(playPauseButton), Y = 0, IsDefault = false, Text = "Volume +" }; + var volumeDecreaseButton = new Button { X = Pos.Right(playPauseButton), Y = Pos.Bottom(volumeIncreaseButton), IsDefault = false, Text = "Volume -" }; + var seekForwardButton = new Button { X = Pos.Right(volumeIncreaseButton), Y = 0, IsDefault = false, Text = "Seek 5s" }; + var seekBackwardButton = new Button { X = Pos.Right(volumeDecreaseButton), Y = Pos.Bottom(seekForwardButton), IsDefault = false, Text = "Seek -5s" }; + + playbackControls.Add (playPauseButton, stopButton, volumeIncreaseButton, volumeDecreaseButton, seekForwardButton, seekBackwardButton); + + var progressBar = new ProgressBar() + { + X = Pos.Right(playbackControls), + Y = Pos.Bottom(libraryWindow), + Width = Dim.Auto(), + Height = Dim.Auto(), + CanFocus = false, BorderStyle = LineStyle.Rounded }; // Add the views to the Window - Add(menuBar); - Add(libraryWindow); + Add(menuBar, libraryWindow, playbackControls, progressBar); + //Add(libraryWindow); } // Action Methods From eb1209c59466f75ea5748311c29704a005384254 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 19 Mar 2025 21:18:06 -0400 Subject: [PATCH 006/146] Added playback control buttons. --- src/AudioPlayer/IPlayer.cs | 30 +++++++++--------- src/AudioPlayer/SoundFlowPlayer.cs | 39 ++++++++++++----------- src/Program.cs | 4 +-- src/UI/Tui.cs | 50 ++++++++++++++++-------------- src/UI/TuiTwo.cs | 6 ++-- 5 files changed, 64 insertions(+), 65 deletions(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index ddafe1e..932c037 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -17,6 +17,16 @@ public interface IPlayer: IDisposable /// Gets or sets a value indicating whether the audio player is playing. /// EPlayerStatus PlayerStatus { get; set; } + + /// + /// Returns the total length of the audio file. + /// + float TrackLength { get; } + + /// + /// Returns the current time played. + /// + float CurrentTime { get; } /// /// Gets or sets the last file opened by the player. @@ -26,11 +36,11 @@ public interface IPlayer: IDisposable /// /// Method to play audio. /// - /// The audio stream. - void Play(Stream stream); + /// The path to the file or stream. + void Play(string path); /// - /// Method to play or pause depending on state. + /// Method to pause audio playback. /// void PlayPause(); @@ -49,18 +59,6 @@ public interface IPlayer: IDisposable /// void DecreaseVolume(); - /// - /// Returns the current playtime of the audioFileReader instance. - /// - /// The current time played as TimeSpan. - float CurrentTime(); - - /// - /// Returns the total track length in timespan format. - /// - /// The length of the track in timespan format. - float TrackLength(); - /// /// Skip ahead in the audio file 5s. /// @@ -69,5 +67,5 @@ public interface IPlayer: IDisposable /// /// Skip back in the audio file 5s. /// - public void SeekBackwards(); + public void SeekBackward(); } \ No newline at end of file diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index 141d622..63c06f2 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -3,6 +3,7 @@ using MusicSharp.Enums; using SoundFlow.Backends.MiniAudio; using SoundFlow.Components; +using SoundFlow.Enums; using SoundFlow.Providers; namespace MusicSharp.AudioPlayer; @@ -12,25 +13,33 @@ namespace MusicSharp.AudioPlayer; public sealed class SoundFlowPlayer : IPlayer { private readonly MiniAudioEngine _soundEngine; - private SoundPlayer _player; + private SoundPlayer? _player; + private readonly IStreamConverter _streamConverter; public EPlayerStatus PlayerStatus { get; set; } + public string LastFileOpened { get; set; } + public float TrackLength => _player?.Duration ?? 0; + public float CurrentTime => _player?.Time ?? 0; - public SoundFlowPlayer(MiniAudioEngine soundEngine) + public SoundFlowPlayer(MiniAudioEngine soundEngine, IStreamConverter streamConverter) { _soundEngine = soundEngine; + _streamConverter = streamConverter; } - public void Play(Stream stream) + public void Play(string path) { - if (_player != null) + var stream = _streamConverter.ConvertFileToStream(path); + + if (_player == null) { - _player.Stop(); + _player = new SoundPlayer(new StreamDataProvider(stream)); } - + _player = new SoundPlayer(new StreamDataProvider(stream)); + Mixer.Master.AddComponent(_player); _player.Play(); @@ -42,12 +51,12 @@ public void PlayPause() switch (PlayerStatus) { case EPlayerStatus.Playing: - _player.Pause(); + _player?.Pause(); PlayerStatus = EPlayerStatus.Paused; break; case EPlayerStatus.Paused: case EPlayerStatus.Stopped: - _player.Play(); + _player?.Play(); PlayerStatus = EPlayerStatus.Playing; break; default: @@ -59,7 +68,7 @@ public void Stop() { if (PlayerStatus != EPlayerStatus.Stopped) { - _player.Stop(); + _player?.Stop(); PlayerStatus = EPlayerStatus.Stopped; } } @@ -81,20 +90,10 @@ public void SeekForward() _player.Seek(Math.Clamp(_player.Time + 5f, 0f, _player.Duration - 0.1f)); } - public void SeekBackwards() + public void SeekBackward() { _player.Seek(Math.Clamp(_player.Time - 5f, 0f, _player.Duration)); } - - public float CurrentTime() - { - return _player.Time; - } - - public float TrackLength() - { - return _player.Duration; - } public void Dispose() { diff --git a/src/Program.cs b/src/Program.cs index 9f6bcfb..eaf4d55 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -22,13 +22,13 @@ public static class Program public static void Main() { var soundEngine = new MiniAudioEngine(44100, Capability.Playback); - using IPlayer player = new SoundFlowPlayer(soundEngine); using var httpClient = new HttpClient(); IStreamConverter streamConverter = new SoundFlowPlayerStreamConverter(httpClient); + using IPlayer player = new SoundFlowPlayer(soundEngine, streamConverter); ConfigurationManager.RuntimeConfig = """{ "Theme": "Dark" }"""; Application.Init(); - using var ui = new Tui(player, streamConverter); + using var ui = new Tui(player); Application.Run(ui); Application.Shutdown (); } diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index c62299e..1932630 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -1,46 +1,33 @@ -using System; -using System.Collections.Generic; -using System.IO; using MusicSharp.AudioPlayer; using Terminal.Gui; -using MenuBarItem = Terminal.Gui.MenuBarItem; namespace MusicSharp.UI; -public class Tui : Toplevel +public class Tui : Window { private readonly IPlayer _player; - private readonly IStreamConverter _streamConverter; - - private readonly StatusBar? _statusBar; - public Tui(IPlayer player, IStreamConverter streamConverter) + public Tui(IPlayer player) { _player = player; - _streamConverter = streamConverter; - - HighlightStyle = HighlightStyle.Hover; - - // Title = $"Example App ({Application.QuitKey} to quit)"; var menuBar = new MenuBar() { - HighlightStyle = HighlightStyle.Hover, MenusBorderStyle = LineStyle.Rounded, Menus = [ - new( + new MenuBarItem( "_File", new MenuItem[] { new( "_Open file", "Open a local audio file", - OpenFile // Open a file dialog + OpenFile ), new( "_Quit", - "Quit UI Catalog", + "Quit MusicSharp", RequestStop ) } @@ -48,7 +35,7 @@ public Tui(IPlayer player, IStreamConverter streamConverter) ] }; - var libraryWindow = new View() + var libraryWindow = new Window() { Title = "Library", Y = Pos.Bottom(menuBar), @@ -59,7 +46,7 @@ public Tui(IPlayer player, IStreamConverter streamConverter) }; // Create the audio progress bar frame. - var playbackControls = new FrameView() + var playbackControls = new Window() { Title = "Playback", X = 0, @@ -70,13 +57,20 @@ public Tui(IPlayer player, IStreamConverter streamConverter) BorderStyle = LineStyle.Rounded }; - var playPauseButton = new Button { X = 0, Y = 0, IsDefault = true, Text = "Play/Pause" }; + var playPauseButton = new Button { X = 0, Y = 0, IsDefault = false, Text = "Play/Pause" }; var stopButton = new Button { X = 0, Y = Pos.Bottom(playPauseButton), IsDefault = false, Text = "Stop" }; var volumeIncreaseButton = new Button { X = Pos.Right(playPauseButton), Y = 0, IsDefault = false, Text = "Volume +" }; var volumeDecreaseButton = new Button { X = Pos.Right(playPauseButton), Y = Pos.Bottom(volumeIncreaseButton), IsDefault = false, Text = "Volume -" }; var seekForwardButton = new Button { X = Pos.Right(volumeIncreaseButton), Y = 0, IsDefault = false, Text = "Seek 5s" }; var seekBackwardButton = new Button { X = Pos.Right(volumeDecreaseButton), Y = Pos.Bottom(seekForwardButton), IsDefault = false, Text = "Seek -5s" }; + playPauseButton.Accepting += (s, args) => _player.PlayPause(); + stopButton.Accepting += (s, args) => _player.Stop(); + volumeIncreaseButton.Accepting += (s, args) => _player.IncreaseVolume(); + volumeDecreaseButton.Accepting += (s, args) => _player.DecreaseVolume(); + seekForwardButton.Accepting += (s, args) => _player.SeekForward(); + seekBackwardButton.Accepting += (s, a) => _player.SeekBackward(); + playbackControls.Add (playPauseButton, stopButton, volumeIncreaseButton, volumeDecreaseButton, seekForwardButton, seekBackwardButton); var progressBar = new ProgressBar() @@ -86,7 +80,7 @@ public Tui(IPlayer player, IStreamConverter streamConverter) Width = Dim.Auto(), Height = Dim.Auto(), CanFocus = false, - BorderStyle = LineStyle.Rounded + BorderStyle = LineStyle.Rounded, }; // Add the views to the Window @@ -108,8 +102,16 @@ private void OpenFile() if (!d.Canceled) { - var stream = _streamConverter.ConvertFileToStream(d.FilePaths[0].ToString()); - _player.Play(stream); + _player.Play(d.FilePaths[0]); } } + + // private void PlayHandler(Stream stream) + // { + // switch (_player.PlayerStatus) + // { + // case EPlayerStatus.Playing: + // _player.Stop(); + // } + // } } \ No newline at end of file diff --git a/src/UI/TuiTwo.cs b/src/UI/TuiTwo.cs index c1576d5..241ad9f 100644 --- a/src/UI/TuiTwo.cs +++ b/src/UI/TuiTwo.cs @@ -67,7 +67,7 @@ public void Start() new StatusItem(Key.F2, "~F2~ Open stream", () => OpenStream()), new StatusItem(Key.F3, "~F3~ Load playlist", () => LoadPlaylist()), new StatusItem(Key.F4, "~F4~ Quit", () => Application.RequestStop()), - new StatusItem(Key.Space, "~Space~ Play/Pause", () => PlayPause()) + new StatusItem(Key.Space, "~Space~ Play/PlayPause", () => PlayPause()) ]); // Create the playback controls frame. @@ -80,7 +80,7 @@ public void Start() CanFocus = true, }; - var playPauseButton = new Button(1, 1, "Play/Pause"); + var playPauseButton = new Button(1, 1, "Play/PlayPause"); playPauseButton.Clicked += () => { PlayPause(); @@ -108,7 +108,7 @@ public void Start() var seekBackward = new Button(26, 2, "Seek -5s"); seekBackward.Clicked += () => { - _player.SeekBackwards(); + _player.SeekBackward(); }; var increaseVolumeButton = new Button(39, 0, "+ Volume"); From dcc973734803161a16a7da38d5970f6014332741 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 19 Mar 2025 21:36:50 -0400 Subject: [PATCH 007/146] Reactor player logic to map player state to public property PlayerStatus --- src/AudioPlayer/IPlayer.cs | 2 +- src/AudioPlayer/SoundFlowPlayer.cs | 24 +++++++++++++++--------- src/Program.cs | 2 +- src/UI/Tui.cs | 5 +++-- src/UI/TuiTwo.cs | 8 ++++---- 5 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index 932c037..634b064 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -16,7 +16,7 @@ public interface IPlayer: IDisposable /// /// Gets or sets a value indicating whether the audio player is playing. /// - EPlayerStatus PlayerStatus { get; set; } + EPlayerStatus PlayerState { get; } /// /// Returns the total length of the audio file. diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index 63c06f2..e91b56f 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -16,8 +16,8 @@ public sealed class SoundFlowPlayer : IPlayer private SoundPlayer? _player; private readonly IStreamConverter _streamConverter; - public EPlayerStatus PlayerStatus { get; set; } - + public EPlayerStatus PlayerState => GetPlayerStateMapper(); + public string LastFileOpened { get; set; } public float TrackLength => _player?.Duration ?? 0; public float CurrentTime => _player?.Time ?? 0; @@ -42,22 +42,18 @@ public void Play(string path) Mixer.Master.AddComponent(_player); _player.Play(); - - PlayerStatus = EPlayerStatus.Playing; } public void PlayPause() { - switch (PlayerStatus) + switch (PlayerState) { case EPlayerStatus.Playing: _player?.Pause(); - PlayerStatus = EPlayerStatus.Paused; break; case EPlayerStatus.Paused: case EPlayerStatus.Stopped: _player?.Play(); - PlayerStatus = EPlayerStatus.Playing; break; default: throw new ArgumentOutOfRangeException(); @@ -66,10 +62,9 @@ public void PlayPause() public void Stop() { - if (PlayerStatus != EPlayerStatus.Stopped) + if (PlayerState != EPlayerStatus.Stopped) { _player?.Stop(); - PlayerStatus = EPlayerStatus.Stopped; } } @@ -99,4 +94,15 @@ public void Dispose() { _soundEngine.Dispose(); } + + private EPlayerStatus GetPlayerStateMapper() + { + return _player?.State switch + { + PlaybackState.Playing => EPlayerStatus.Playing, + PlaybackState.Paused => EPlayerStatus.Paused, + PlaybackState.Stopped => EPlayerStatus.Stopped, + _ => throw new ArgumentOutOfRangeException() + }; + } } \ No newline at end of file diff --git a/src/Program.cs b/src/Program.cs index eaf4d55..6cc2efe 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -26,7 +26,7 @@ public static void Main() IStreamConverter streamConverter = new SoundFlowPlayerStreamConverter(httpClient); using IPlayer player = new SoundFlowPlayer(soundEngine, streamConverter); - ConfigurationManager.RuntimeConfig = """{ "Theme": "Dark" }"""; + // ConfigurationManager.RuntimeConfig = """{ "Theme": "Dark" }"""; Application.Init(); using var ui = new Tui(player); Application.Run(ui); diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 1932630..8a4390d 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -3,7 +3,7 @@ namespace MusicSharp.UI; -public class Tui : Window +public class Tui : Toplevel { private readonly IPlayer _player; @@ -13,6 +13,7 @@ public Tui(IPlayer player) var menuBar = new MenuBar() { + Title = "MusicSharp", MenusBorderStyle = LineStyle.Rounded, Menus = [ @@ -108,7 +109,7 @@ private void OpenFile() // private void PlayHandler(Stream stream) // { - // switch (_player.PlayerStatus) + // switch (_player.PlayerState) // { // case EPlayerStatus.Playing: // _player.Stop(); diff --git a/src/UI/TuiTwo.cs b/src/UI/TuiTwo.cs index 241ad9f..cf6c54c 100644 --- a/src/UI/TuiTwo.cs +++ b/src/UI/TuiTwo.cs @@ -85,7 +85,7 @@ public void Start() { PlayPause(); - if (_player.PlayerStatus != EPlayerStatus.Stopped) + if (_player.PlayerState != EPlayerStatus.Stopped) { UpdateProgressBar(); } @@ -199,7 +199,7 @@ private void PlayPause() { _player.PlayPause(); - if (_player.PlayerStatus == EPlayerStatus.Playing) + if (_player.PlayerState == EPlayerStatus.Playing) { UpdateProgressBar(); } @@ -326,7 +326,7 @@ private static void NowPlaying(string track) private void TimePlayedLabel() { - if (_player.PlayerStatus != EPlayerStatus.Stopped) + if (_player.PlayerState != EPlayerStatus.Stopped) { var timePlayed = TimeSpan.FromSeconds((double)(new decimal(_player.CurrentTime()))).ToString(@"hh\:mm\:ss"); var trackLength = TimeSpan.FromSeconds((double)(new decimal(_player.TrackLength()))).ToString(@"hh\:mm\:ss"); @@ -353,7 +353,7 @@ private void UpdateProgressBar() { _mainLoopTimeout = Application.MainLoop.AddTimeout(TimeSpan.FromSeconds(1), (updateTimer) => { - while (_player.CurrentTime() < _player.TrackLength() && _player.PlayerStatus is not EPlayerStatus.Stopped) + while (_player.CurrentTime() < _player.TrackLength() && _player.PlayerState is not EPlayerStatus.Stopped) { _audioProgressBar.Fraction = _player.CurrentTime() / _player.TrackLength(); TimePlayedLabel(); From a433a6deafbe0369c7cced869aad47ccb507a355 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 19 Mar 2025 21:39:14 -0400 Subject: [PATCH 008/146] Remove copyright message as license is included in repository. --- src/AudioPlayer/IPlayer.cs | 6 +----- src/AudioPlayer/SoundFlowPlayer.cs | 3 +-- src/Program.cs | 6 +----- src/UI/TuiTwo.cs | 5 +---- 4 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index 634b064..d686452 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -1,8 +1,4 @@ -// -// Licensed under the GNU GPL v3 License. See LICENSE in the project root for license information. -// - -using System; +using System; using System.IO; using MusicSharp.Enums; diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index e91b56f..8e1e76b 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -1,5 +1,4 @@ using System; -using System.IO; using MusicSharp.Enums; using SoundFlow.Backends.MiniAudio; using SoundFlow.Components; @@ -8,7 +7,7 @@ namespace MusicSharp.AudioPlayer; -// Cross-platform sound engine that works for all devices which +// Cross-platform sound engine that works for all devices that // the .NET platform runs on. public sealed class SoundFlowPlayer : IPlayer { diff --git a/src/Program.cs b/src/Program.cs index 6cc2efe..ff570c0 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -1,8 +1,4 @@ -// -// Licensed under the GNU GPL v3 License. See LICENSE in the project root for license information. -// - -using System.Net.Http; +using System.Net.Http; using MusicSharp.UI; using MusicSharp.AudioPlayer; using SoundFlow.Backends.MiniAudio; diff --git a/src/UI/TuiTwo.cs b/src/UI/TuiTwo.cs index cf6c54c..f2bf950 100644 --- a/src/UI/TuiTwo.cs +++ b/src/UI/TuiTwo.cs @@ -1,7 +1,4 @@ -// -// Licensed under the GNU GPL v3 License. See LICENSE in the project root for license information. -// -/* +/* using System; using System.Collections.Generic; using System.IO; From e18cacbeb8d5912adc74db03965d524fb8871c18 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 19 Mar 2025 22:25:04 -0400 Subject: [PATCH 009/146] Add OpenStream dialog. Add IsStreamLoaded property to SoundFlowPlayer.cs. to implement checks before method calling in the UI. --- src/AudioPlayer/IPlayer.cs | 2 + src/AudioPlayer/SoundFlowPlayer.cs | 1 + src/UI/Tui.cs | 72 ++++++++++++++++++++++++++---- 3 files changed, 66 insertions(+), 9 deletions(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index d686452..2afc85f 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -28,6 +28,8 @@ public interface IPlayer: IDisposable /// Gets or sets the last file opened by the player. /// string LastFileOpened { get; set; } + + bool IsStreamLoaded { get; } /// /// Method to play audio. diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index 8e1e76b..99299a4 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -20,6 +20,7 @@ public sealed class SoundFlowPlayer : IPlayer public string LastFileOpened { get; set; } public float TrackLength => _player?.Duration ?? 0; public float CurrentTime => _player?.Time ?? 0; + public bool IsStreamLoaded => _player != null; public SoundFlowPlayer(MiniAudioEngine soundEngine, IStreamConverter streamConverter) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 8a4390d..c1ddce0 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -26,6 +26,11 @@ public Tui(IPlayer player) "Open a local audio file", OpenFile ), + new( + "Open _stream", + "Open a web stream", + OpenStream + ), new( "_Quit", "Quit MusicSharp", @@ -65,7 +70,13 @@ public Tui(IPlayer player) var seekForwardButton = new Button { X = Pos.Right(volumeIncreaseButton), Y = 0, IsDefault = false, Text = "Seek 5s" }; var seekBackwardButton = new Button { X = Pos.Right(volumeDecreaseButton), Y = Pos.Bottom(seekForwardButton), IsDefault = false, Text = "Seek -5s" }; - playPauseButton.Accepting += (s, args) => _player.PlayPause(); + playPauseButton.Accepting += (s, args) => + { + if (_player.IsStreamLoaded) + { + _player.PlayPause(); + } + }; stopButton.Accepting += (s, args) => _player.Stop(); volumeIncreaseButton.Accepting += (s, args) => _player.IncreaseVolume(); volumeDecreaseButton.Accepting += (s, args) => _player.DecreaseVolume(); @@ -106,13 +117,56 @@ private void OpenFile() _player.Play(d.FilePaths[0]); } } + + private void OpenStream() + { + var streamDialog = new Dialog + { + Title = "Open an audio stream", + }; - // private void PlayHandler(Stream stream) - // { - // switch (_player.PlayerState) - // { - // case EPlayerStatus.Playing: - // _player.Stop(); - // } - // } + var uriLabel = new Label + { + Text = "Enter the stream URI", + X = Pos.Center(), + Y = 0, + Width = Dim.Auto(), + }; + + var streamUrl = new TextField + { + X = Pos.Center(), + Y = Pos.Bottom(uriLabel), + Width = Dim.Fill(), + BorderStyle = LineStyle.Rounded, + }; + + var loadStreamButton = new Button + { + Text = "Load stream", + X = Pos.Center(), + Y = Pos.Bottom(streamUrl), + }; + + var cancelButton = new Button + { + Text = "Cancel", + X = Pos.Right(loadStreamButton), + Y = Pos.Bottom(streamUrl) + }; + + loadStreamButton.Accepting += (s, args) => + { + _player.Play(streamUrl.Text); + }; + + cancelButton.Accepting += (s, args) => + { + RequestStop(); + }; + + streamDialog.Add(uriLabel, streamUrl, loadStreamButton, cancelButton); + + Application.Run(streamDialog); + } } \ No newline at end of file From c4eae03136aafa648d92e9b2f408a54d31da4bfb Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 19 Mar 2025 22:37:24 -0400 Subject: [PATCH 010/146] Add null checks for button. --- src/AudioPlayer/SoundFlowPlayer.cs | 1 - src/UI/Tui.cs | 43 +++++++++++++++++++++++++----- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index 99299a4..db1a529 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -16,7 +16,6 @@ public sealed class SoundFlowPlayer : IPlayer private readonly IStreamConverter _streamConverter; public EPlayerStatus PlayerState => GetPlayerStateMapper(); - public string LastFileOpened { get; set; } public float TrackLength => _player?.Duration ?? 0; public float CurrentTime => _player?.Time ?? 0; diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index c1ddce0..154ab06 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -77,11 +77,41 @@ public Tui(IPlayer player) _player.PlayPause(); } }; - stopButton.Accepting += (s, args) => _player.Stop(); - volumeIncreaseButton.Accepting += (s, args) => _player.IncreaseVolume(); - volumeDecreaseButton.Accepting += (s, args) => _player.DecreaseVolume(); - seekForwardButton.Accepting += (s, args) => _player.SeekForward(); - seekBackwardButton.Accepting += (s, a) => _player.SeekBackward(); + stopButton.Accepting += (s, args) => + { + if (_player.IsStreamLoaded) + { + _player.Stop(); + } + }; + volumeIncreaseButton.Accepting += (s, args) => + { + if (_player.IsStreamLoaded) + { + _player.IncreaseVolume(); + } + }; + volumeDecreaseButton.Accepting += (s, args) => + { + if (_player.IsStreamLoaded) + { + _player.DecreaseVolume(); + } + }; + seekForwardButton.Accepting += (s, args) => + { + if (_player.IsStreamLoaded) + { + _player.SeekForward(); + } + }; + seekBackwardButton.Accepting += (s, a) => + { + if (_player.IsStreamLoaded) + { + _player.SeekBackward(); + } + }; playbackControls.Add (playPauseButton, stopButton, volumeIncreaseButton, volumeDecreaseButton, seekForwardButton, seekBackwardButton); @@ -95,9 +125,8 @@ public Tui(IPlayer player) BorderStyle = LineStyle.Rounded, }; - // Add the views to the Window + // Add the views to the main window Add(menuBar, libraryWindow, playbackControls, progressBar); - //Add(libraryWindow); } // Action Methods From 55a4a4796d3358d86ac325c3c850b2a7c04e02e8 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 19 Mar 2025 22:42:58 -0400 Subject: [PATCH 011/146] Add CanFocus = true property to buttons. Format button code. --- src/UI/Tui.cs | 59 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 6 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 154ab06..e0bca75 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -63,12 +63,59 @@ public Tui(IPlayer player) BorderStyle = LineStyle.Rounded }; - var playPauseButton = new Button { X = 0, Y = 0, IsDefault = false, Text = "Play/Pause" }; - var stopButton = new Button { X = 0, Y = Pos.Bottom(playPauseButton), IsDefault = false, Text = "Stop" }; - var volumeIncreaseButton = new Button { X = Pos.Right(playPauseButton), Y = 0, IsDefault = false, Text = "Volume +" }; - var volumeDecreaseButton = new Button { X = Pos.Right(playPauseButton), Y = Pos.Bottom(volumeIncreaseButton), IsDefault = false, Text = "Volume -" }; - var seekForwardButton = new Button { X = Pos.Right(volumeIncreaseButton), Y = 0, IsDefault = false, Text = "Seek 5s" }; - var seekBackwardButton = new Button { X = Pos.Right(volumeDecreaseButton), Y = Pos.Bottom(seekForwardButton), IsDefault = false, Text = "Seek -5s" }; + var playPauseButton = new Button + { + X = 0, + Y = 0, + IsDefault = false, + CanFocus = true, + Text = "Play/Pause" + }; + + var stopButton = new Button + { + X = 0, + Y = Pos.Bottom(playPauseButton), + IsDefault = false, + CanFocus = true, + Text = "Stop" + }; + + var volumeIncreaseButton = new Button + { + X = Pos.Right(playPauseButton), + Y = 0, + IsDefault = false, + CanFocus = true, + Text = "Volume +" + }; + + var volumeDecreaseButton = new Button + { + X = Pos.Right(playPauseButton), + Y = Pos.Bottom(volumeIncreaseButton), + CanFocus = true, + IsDefault = false, + Text = "Volume -" + }; + + var seekForwardButton = new Button + { + X = Pos.Right(volumeIncreaseButton), + Y = 0, + IsDefault = false, + CanFocus = true, + Text = "Seek 5s" + }; + + var seekBackwardButton = new Button + { + X = Pos.Right(volumeDecreaseButton), + Y = Pos.Bottom(seekForwardButton), + IsDefault = false, + CanFocus = true, + Text = "Seek -5s" + }; playPauseButton.Accepting += (s, args) => { From 5a9f2b3c8f472229b4ec588eb50de10450025f53 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 19 Mar 2025 22:58:21 -0400 Subject: [PATCH 012/146] Add playback controls region. --- src/UI/Tui.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index e0bca75..5f923d7 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -50,8 +50,9 @@ public Tui(IPlayer player) CanFocus = true, BorderStyle = LineStyle.Rounded }; + + #region PlayBackControls - // Create the audio progress bar frame. var playbackControls = new Window() { Title = "Playback", @@ -161,6 +162,8 @@ public Tui(IPlayer player) }; playbackControls.Add (playPauseButton, stopButton, volumeIncreaseButton, volumeDecreaseButton, seekForwardButton, seekBackwardButton); + + #endregion var progressBar = new ProgressBar() { @@ -245,4 +248,9 @@ private void OpenStream() Application.Run(streamDialog); } + + private void UpdateProgressBar() + { + + } } \ No newline at end of file From e1405d6969e7db50a7df00e8a437ba4d17ec56a8 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Thu, 20 Mar 2025 21:47:54 -0400 Subject: [PATCH 013/146] Add progress bar & now playing label. --- src/UI/Tui.cs | 73 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 68 insertions(+), 5 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 5f923d7..ca51d7e 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -1,4 +1,6 @@ +using System; using MusicSharp.AudioPlayer; +using MusicSharp.Enums; using Terminal.Gui; namespace MusicSharp.UI; @@ -6,6 +8,10 @@ namespace MusicSharp.UI; public class Tui : Toplevel { private readonly IPlayer _player; + private ProgressBar _progressBar; + private object? _mainLoopTimeout; + private readonly uint _mainLoopTimeoutTick = 100; // ms + private Window? _nowPlayingWindow; public Tui(IPlayer player) { @@ -164,21 +170,49 @@ public Tui(IPlayer player) playbackControls.Add (playPauseButton, stopButton, volumeIncreaseButton, volumeDecreaseButton, seekForwardButton, seekBackwardButton); #endregion - - var progressBar = new ProgressBar() + + #region PlaybackInfo + + var playbackInfo = new Window() { X = Pos.Right(playbackControls), Y = Pos.Bottom(libraryWindow), - Width = Dim.Auto(), + Width = Dim.Fill(), Height = Dim.Auto(), + CanFocus = true, + BorderStyle = LineStyle.Rounded + }; + + _nowPlayingWindow = new Window + { + Title = "Status", + X = 0, + Y = 0, + Width = Dim.Fill(), + Height = 4, + BorderStyle = LineStyle.Rounded, + }; + + _progressBar = new ProgressBar() + { + X = 0, + Y = Pos.Bottom(_nowPlayingWindow), + Width = Dim.Fill(), + Height = 3, CanFocus = false, BorderStyle = LineStyle.Rounded, + Fraction = 0f, + ColorScheme = Colors.ColorSchemes ["Error"] }; + playbackInfo.Add (_progressBar, _nowPlayingWindow); + // Add the views to the main window - Add(menuBar, libraryWindow, playbackControls, progressBar); + Add(menuBar, libraryWindow, playbackControls, playbackInfo); } + #endregion + // Action Methods private void OpenFile() { @@ -194,6 +228,8 @@ private void OpenFile() if (!d.Canceled) { _player.Play(d.FilePaths[0]); + UpdateProgressBar(); + NowPlaying("Test Track"); } } @@ -251,6 +287,33 @@ private void OpenStream() private void UpdateProgressBar() { - + _mainLoopTimeout = Application.AddTimeout ( + TimeSpan.FromMilliseconds (_mainLoopTimeoutTick), + () => + { + while (_player.CurrentTime < _player.TrackLength && _player.PlayerState != EPlayerStatus.Stopped) + { + _progressBar.Fraction = _player.CurrentTime / _player.TrackLength; + // TimePlayedLabel(); + + return true; + } + + return true; + } + ); + } + + private void NowPlaying(string trackName) + { + var nowPlayingLabel = new Label + { + Text = trackName, + X = 0, + Y = 0, + Width = Dim.Fill(), + }; + + _nowPlayingWindow?.Add(nowPlayingLabel); } } \ No newline at end of file From 36ba8a7d21bc4a7d4eee29b463c961bf85720b42 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Thu, 20 Mar 2025 21:58:19 -0400 Subject: [PATCH 014/146] Fix progressbar & now playing design. --- src/UI/Tui.cs | 49 +++++++++++++++++++------------------------------ 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index ca51d7e..0c00e4d 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -56,6 +56,19 @@ public Tui(IPlayer player) CanFocus = true, BorderStyle = LineStyle.Rounded }; + + _progressBar = new ProgressBar() + { + Title = "Progress", + X = 0, + Y = Pos.Bottom(libraryWindow), + Width = Dim.Fill(), + Height = 3, + CanFocus = false, + BorderStyle = LineStyle.Rounded, + Fraction = 0f, + ColorScheme = Colors.ColorSchemes ["Error"] + }; #region PlayBackControls @@ -63,7 +76,7 @@ public Tui(IPlayer player) { Title = "Playback", X = 0, - Y = Pos.Bottom(libraryWindow), + Y = Pos.Bottom(_progressBar), Width = Dim.Auto(), Height = Dim.Auto(), CanFocus = true, @@ -173,42 +186,18 @@ public Tui(IPlayer player) #region PlaybackInfo - var playbackInfo = new Window() - { - X = Pos.Right(playbackControls), - Y = Pos.Bottom(libraryWindow), - Width = Dim.Fill(), - Height = Dim.Auto(), - CanFocus = true, - BorderStyle = LineStyle.Rounded - }; - _nowPlayingWindow = new Window { - Title = "Status", - X = 0, - Y = 0, - Width = Dim.Fill(), - Height = 4, - BorderStyle = LineStyle.Rounded, - }; - - _progressBar = new ProgressBar() - { - X = 0, - Y = Pos.Bottom(_nowPlayingWindow), + Title = "Now playing", + X = Pos.Right(playbackControls), + Y = Pos.Bottom(_progressBar), Width = Dim.Fill(), - Height = 3, - CanFocus = false, + Height = Dim.Height(playbackControls), BorderStyle = LineStyle.Rounded, - Fraction = 0f, - ColorScheme = Colors.ColorSchemes ["Error"] }; - playbackInfo.Add (_progressBar, _nowPlayingWindow); - // Add the views to the main window - Add(menuBar, libraryWindow, playbackControls, playbackInfo); + Add(menuBar, libraryWindow, _progressBar, playbackControls, _nowPlayingWindow); } #endregion From b5cf5011a6c00cb7bcf2e20371338a82f55f90c6 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Thu, 20 Mar 2025 22:36:21 -0400 Subject: [PATCH 015/146] Working on music library view. --- src/UI/Tui.cs | 55 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 6 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 0c00e4d..fa3ac3d 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -1,6 +1,9 @@ using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; using MusicSharp.AudioPlayer; using MusicSharp.Enums; +using MusicSharp.PlaylistHandlers; using Terminal.Gui; namespace MusicSharp.UI; @@ -12,6 +15,7 @@ public class Tui : Toplevel private object? _mainLoopTimeout; private readonly uint _mainLoopTimeoutTick = 100; // ms private Window? _nowPlayingWindow; + private ObservableCollection _playlistTracks = ["Testing"]; public Tui(IPlayer player) { @@ -32,6 +36,11 @@ public Tui(IPlayer player) "Open a local audio file", OpenFile ), + new( + "Open _playlist", + "Open a playlist", + OpenPlaylist + ), new( "Open _stream", "Open a web stream", @@ -47,21 +56,24 @@ public Tui(IPlayer player) ] }; - var libraryWindow = new Window() + var libraryList = new ListView { Title = "Library", + X = 0, Y = Pos.Bottom(menuBar), Width = Dim.Fill(), - Height = Dim.Auto(), - CanFocus = true, - BorderStyle = LineStyle.Rounded + Height = 12, + CanFocus = false, + BorderStyle = LineStyle.Rounded, }; + libraryList.SetSource(_playlistTracks); + _progressBar = new ProgressBar() { Title = "Progress", X = 0, - Y = Pos.Bottom(libraryWindow), + Y = Pos.Bottom(libraryList), Width = Dim.Fill(), Height = 3, CanFocus = false, @@ -197,7 +209,7 @@ public Tui(IPlayer player) }; // Add the views to the main window - Add(menuBar, libraryWindow, _progressBar, playbackControls, _nowPlayingWindow); + Add(menuBar, libraryList, _progressBar, playbackControls, _nowPlayingWindow); } #endregion @@ -305,4 +317,35 @@ private void NowPlaying(string trackName) _nowPlayingWindow?.Add(nowPlayingLabel); } + + private void OpenPlaylist() + { + var d = new OpenDialog() + { + AllowsMultipleSelection = false, + Title = "Open a playlist", + AllowedTypes = [new AllowedType("Allowed filetypes", ".m3u")] + }; + + Application.Run(d); + + if (!d.Canceled) + { + var playlist = PlaylistLoader.LoadPlaylist(d.FilePaths[0]); + + if (playlist == null) + { + Application.RequestStop(); + } + else + { + foreach (var track in playlist) + { + _playlistTracks.Add(track); + } + + Application.Run(); + } + } + } } \ No newline at end of file From 0c8abc1de948983fc6195e3ef1eeec351b8ec482 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 19:29:49 -0400 Subject: [PATCH 016/146] Added initial support for library view window. --- src/UI/Tui.cs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index fa3ac3d..ab3efc0 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -5,6 +5,7 @@ using MusicSharp.Enums; using MusicSharp.PlaylistHandlers; using Terminal.Gui; +using Attribute = Terminal.Gui.Attribute; namespace MusicSharp.UI; @@ -15,7 +16,8 @@ public class Tui : Toplevel private object? _mainLoopTimeout; private readonly uint _mainLoopTimeoutTick = 100; // ms private Window? _nowPlayingWindow; - private ObservableCollection _playlistTracks = ["Testing"]; + private ListView? _libraryListView; + private ObservableCollection _playlistTracks = new(); public Tui(IPlayer player) { @@ -56,7 +58,7 @@ public Tui(IPlayer player) ] }; - var libraryList = new ListView + _libraryListView = new ListView { Title = "Library", X = 0, @@ -65,15 +67,14 @@ public Tui(IPlayer player) Height = 12, CanFocus = false, BorderStyle = LineStyle.Rounded, + Source = new ListWrapper (_playlistTracks) }; - libraryList.SetSource(_playlistTracks); - _progressBar = new ProgressBar() { Title = "Progress", X = 0, - Y = Pos.Bottom(libraryList), + Y = Pos.Bottom(_libraryListView), Width = Dim.Fill(), Height = 3, CanFocus = false, @@ -209,9 +210,9 @@ public Tui(IPlayer player) }; // Add the views to the main window - Add(menuBar, libraryList, _progressBar, playbackControls, _nowPlayingWindow); + Add(menuBar, _libraryListView, _progressBar, playbackControls, _nowPlayingWindow); } - + #endregion // Action Methods @@ -342,9 +343,7 @@ private void OpenPlaylist() foreach (var track in playlist) { _playlistTracks.Add(track); - } - - Application.Run(); + } } } } From a2662882c019298f299705dc5ec04b9308a0a6fb Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 19:53:40 -0400 Subject: [PATCH 017/146] Add method for playback when clicking a playlist item. --- src/UI/Tui.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index ab3efc0..bee1a65 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -1,11 +1,9 @@ using System; -using System.Collections.Generic; using System.Collections.ObjectModel; using MusicSharp.AudioPlayer; using MusicSharp.Enums; using MusicSharp.PlaylistHandlers; using Terminal.Gui; -using Attribute = Terminal.Gui.Attribute; namespace MusicSharp.UI; @@ -70,6 +68,8 @@ public Tui(IPlayer player) Source = new ListWrapper (_playlistTracks) }; + _libraryListView.OpenSelectedItem += (sender, args) => _player.Play(args.Value.ToString()); + _progressBar = new ProgressBar() { Title = "Progress", From 26653d34d73024c62a7aea772a1f315d6f5f0687 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 19:55:49 -0400 Subject: [PATCH 018/146] Add check to stop player if a new song is selected. --- src/AudioPlayer/SoundFlowPlayer.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index db1a529..dd342b2 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -36,6 +36,11 @@ public void Play(string path) { _player = new SoundPlayer(new StreamDataProvider(stream)); } + + if (_player.State == PlaybackState.Playing ) + { + _player.Stop(); + } _player = new SoundPlayer(new StreamDataProvider(stream)); From 2b29f01ca079638082dfdd0ad8d986c2073305d1 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 19:57:31 -0400 Subject: [PATCH 019/146] Update atl core library from 3.13.0 => 6.19.0 --- src/MusicSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index ca8693f..9a52143 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -22,7 +22,7 @@ - + From 6446e55ea039343af60dab960512438bdf25b8b1 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 19:58:28 -0400 Subject: [PATCH 020/146] Updare Terminal.Gui from 2.0.0-prealpha.1893 => 2.0.0-prealpha.1895 --- src/MusicSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index 9a52143..eaffa8c 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -21,7 +21,7 @@ - + From eac052dbc35a66f03a1d316be589ed85de50cb59 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 20:24:09 -0400 Subject: [PATCH 021/146] Add about dialog. --- src/UI/Tui.cs | 70 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index bee1a65..26c0b05 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -1,5 +1,7 @@ using System; using System.Collections.ObjectModel; +using System.Text; +using Microsoft.Extensions.Primitives; using MusicSharp.AudioPlayer; using MusicSharp.Enums; using MusicSharp.PlaylistHandlers; @@ -52,7 +54,16 @@ public Tui(IPlayer player) RequestStop ) } - ) + ), + new MenuBarItem( + "About", + new MenuItem[] + { + new("About", + "About MusicSharp", + AboutDialog) + } + ) ] }; @@ -68,7 +79,11 @@ public Tui(IPlayer player) Source = new ListWrapper (_playlistTracks) }; - _libraryListView.OpenSelectedItem += (sender, args) => _player.Play(args.Value.ToString()); + _libraryListView.OpenSelectedItem += (sender, args) => + { + _player.Play(args.Value.ToString()); + UpdateProgressBar(); + }; _progressBar = new ProgressBar() { @@ -347,4 +362,55 @@ private void OpenPlaylist() } } } + + private void AboutDialog() + { + var aboutDialog = new Dialog + { + X = Pos.Center(), + Y = Pos.Center(), + }; + + var sb = new StringBuilder(); + sb.Append(""" + __ ___ _ _____ __ + / |/ /_ _______(_)____/ ___// /_ ____ __________ + / /|_/ / / / / ___/ / ___/\__ \/ __ \/ __ `/ ___/ __ \ + / / / / /_/ (__ ) / /__ ___/ / / / / /_/ / / / /_/ / + /_/ /_/\__,_/____/_/\___//____/_/ /_/\__,_/_/ / .___/ + /_/ + """); + + var asciiLabel = new Label + { + Text = sb.ToString(), + X = 0, + Y = 0, + }; + + var infoLabel = new Label + { + Text = "MusicSharp v2.0.0\nCreated by Mark-James M.", + X = Pos.Center(), + Y = Pos.Bottom(asciiLabel), + Width = Dim.Auto(), + Height = Dim.Auto() + }; + + var closeButton = new Button + { + Text = "Close", + X = Pos.Center(), + }; + + closeButton.Accepting += (s, args) => + { + RequestStop(); + }; + + aboutDialog.Add(asciiLabel, infoLabel); + aboutDialog.AddButton(closeButton); + + Application.Run(aboutDialog); + } } \ No newline at end of file From 2a733f280bc005a293d5da40dd5370569a1e2090 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 20:24:39 -0400 Subject: [PATCH 022/146] Remove unnecessary using directive. --- src/UI/Tui.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 26c0b05..30da66a 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -1,7 +1,6 @@ using System; using System.Collections.ObjectModel; using System.Text; -using Microsoft.Extensions.Primitives; using MusicSharp.AudioPlayer; using MusicSharp.Enums; using MusicSharp.PlaylistHandlers; From 03588973e9a7e7ed6b6fb0476ba06c1f81bcf435 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 20:31:35 -0400 Subject: [PATCH 023/146] Add status bar. --- src/UI/Tui.cs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 30da66a..fd9b60e 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -66,6 +66,27 @@ public Tui(IPlayer player) ] }; + var statusBar = new StatusBar([ + new Shortcut + { + Text = "Open file", + Key = Key.F1, + Action = OpenFile + }, + new Shortcut + { + Text = "Open stream", + Key = Key.F2, + Action = OpenStream + }, + new Shortcut + { + Text = "Open playlist", + Key = Key.F3, + Action = OpenPlaylist + } + ]); + _libraryListView = new ListView { Title = "Library", @@ -224,7 +245,7 @@ public Tui(IPlayer player) }; // Add the views to the main window - Add(menuBar, _libraryListView, _progressBar, playbackControls, _nowPlayingWindow); + Add(menuBar, _libraryListView, _progressBar, playbackControls, _nowPlayingWindow, statusBar); } #endregion From eb03b624226137d7ade2cbf59e61742e3030d79e Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 20:31:59 -0400 Subject: [PATCH 024/146] Delete old UI class. --- src/UI/TuiTwo.cs | 364 ----------------------------------------------- 1 file changed, 364 deletions(-) delete mode 100644 src/UI/TuiTwo.cs diff --git a/src/UI/TuiTwo.cs b/src/UI/TuiTwo.cs deleted file mode 100644 index f2bf950..0000000 --- a/src/UI/TuiTwo.cs +++ /dev/null @@ -1,364 +0,0 @@ -/* -using System; -using System.Collections.Generic; -using System.IO; -using MusicSharp.Enums; -using MusicSharp.PlaylistHandlers; -using MusicSharp.AudioPlayer; -using Terminal.Gui; - -namespace MusicSharp.UI; - -public class TuiTwo -{ - // TUI Components - private static List _playlistTracks; - private static ListView _playlistView; - private static FrameView _playlistPane; - private static FrameView _playbackControls; - private static FrameView _nowPlaying; - private static StatusBar _statusBar; - private static Label _trackName; - private ProgressBar _audioProgressBar; - private object? _mainLoopTimeout = null; - private List _playlist = []; - - private readonly IPlayer _player; - private readonly IStreamConverter _streamConverter; - - public Tui(IPlayer player, IStreamConverter streamConverter) - { - _player = player; - _streamConverter = streamConverter; - } - - public void Start() - { - // Creates an instance of MainLoop to process input events, handle timers and other sources of data. - Application.Init(); - - var top = Application.Top; - - // Create the menubar. - var menu = new MenuBar([ - new MenuBarItem("_File", [ - new MenuItem("_Open", "Open a music file", () => OpenFile()), - - new MenuItem("Open _Stream", "Open a music stream", () => OpenStream()), - - new MenuItem("Open _Playlist", "Load a playlist", () => LoadPlaylist()), - - new MenuItem("_Quit", "Exit MusicSharp", () => Application.RequestStop()) - ]), - - new MenuBarItem("_Help", [ - new MenuItem("_About MusicSharp", string.Empty, () => - { - MessageBox.Query("Music Sharp 1.0.0", "\nMusic Sharp is a lightweight CLI\n music player written in C#.\n\nDeveloped by Mark-James McDougall\nand licensed under the GPL v3.\n ", "Close"); - }) - ]) - ]); - - _statusBar = new StatusBar([ - new StatusItem(Key.F1, "~F1~ Open file", () => OpenFile()), - new StatusItem(Key.F2, "~F2~ Open stream", () => OpenStream()), - new StatusItem(Key.F3, "~F3~ Load playlist", () => LoadPlaylist()), - new StatusItem(Key.F4, "~F4~ Quit", () => Application.RequestStop()), - new StatusItem(Key.Space, "~Space~ Play/PlayPause", () => PlayPause()) - ]); - - // Create the playback controls frame. - _playbackControls = new FrameView("Playback") - { - X = 0, - Y = 24, - Width = 55, - Height = 5, - CanFocus = true, - }; - - var playPauseButton = new Button(1, 1, "Play/PlayPause"); - playPauseButton.Clicked += () => - { - PlayPause(); - - if (_player.PlayerState != EPlayerStatus.Stopped) - { - UpdateProgressBar(); - } - }; - - var stopButton = new Button(16, 1, "Stop"); - stopButton.Clicked += () => - { - _player.Stop(); - _audioProgressBar.Fraction = 0F; - TimePlayedLabel(); - }; - - var seekForward = new Button(26, 0, "Seek 5s"); - seekForward.Clicked += () => - { - _player.SeekForward(); - }; - - var seekBackward = new Button(26, 2, "Seek -5s"); - seekBackward.Clicked += () => - { - _player.SeekBackward(); - }; - - var increaseVolumeButton = new Button(39, 0, "+ Volume"); - increaseVolumeButton.Clicked += () => - { - _player.IncreaseVolume(); - }; - - var decreaseVolumeButton = new Button(39, 2, "- Volume"); - decreaseVolumeButton.Clicked += () => - { - _player.DecreaseVolume(); - }; - - _playbackControls.Add(playPauseButton, stopButton, increaseVolumeButton, decreaseVolumeButton, seekBackward, seekForward); - - // Create the left-hand playlists view. - _playlistPane = new FrameView("Playlist Tracks") - { - X = 0, - Y = 1, // for menu - Width = Dim.Fill(), - Height = 23, - CanFocus = false, - }; - - // The list of tracks in the playlist. - _playlistTracks = new List(); - - _playlistView = new ListView(_playlistTracks) - { - X = 0, - Y = 0, - Width = Dim.Fill(), - Height = 23, - AllowsMarking = false, - CanFocus = true, - }; - - // Play the selection when a playlist path is clicked. - _playlistView.OpenSelectedItem += (a) => - { - try - { - _player.LastFileOpened = a.Value.ToString(); - _player.Play(_streamConverter.ConvertFileToStream(a.Value.ToString())); - NowPlaying(_player.LastFileOpened); - UpdateProgressBar(); - } - catch (FileNotFoundException ex) - { - MessageBox.Query("Warning", "Invalid file path.", "Close"); - } - }; - - _playlistPane.Add(_playlistView); - - // Create the audio progress bar frame. - _nowPlaying = new FrameView("Now Playing") - { - X = 55, - Y = 24, - Width = Dim.Fill(), - Height = 5, - CanFocus = false, - }; - - _audioProgressBar = new ProgressBar() - { - X = 0, - Y = 2, - Width = Dim.Fill() - 15, - Height = 1, - ColorScheme = Colors.Base, - }; - - _nowPlaying.Add(_audioProgressBar); - - // Add the layout elements and run the app. - top.Add(menu, _playlistPane, _playbackControls, _nowPlaying, _statusBar); - - Application.Run(); - } - - private void PlayPause() - { - try - { - _player.PlayPause(); - - if (_player.PlayerState == EPlayerStatus.Playing) - { - UpdateProgressBar(); - } - } - catch (Exception) - { - MessageBox.Query("Warning", "Select a file or stream first.", "Close"); - } - } - - private void OpenFile() - { - var d = new OpenDialog("Open", "Open an audio file") { AllowsMultipleSelection = false }; - d.DirectoryPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); - d.AllowedFileTypes = [".mp3", ".wav", ".flac"]; - Application.Run(d); - - if (!d.Canceled) - { - if (File.Exists(d.FilePath.ToString())) - { - try - { - _player.LastFileOpened = d.FilePath.ToString(); - var stream = _streamConverter.ConvertFileToStream(d.FilePath.ToString()); - _player.Play(stream); - NowPlaying(_player.LastFileOpened); - _audioProgressBar.Fraction = 0F; - UpdateProgressBar(); - TimePlayedLabel(); - } - catch (FileNotFoundException ex) - { - MessageBox.Query("Warning", "Invalid file path.", "Close"); - } - } - } - } - - // Open and play an audio stream. - private void OpenStream() - { - var d = new Dialog("Open Stream", 50, 15); - - var editLabel = new Label("Enter the url of the audio stream to load\n (.mp3 streams only):") - { - X = 0, - Y = 0, - Width = Dim.Fill(), - }; - - var streamUrl = new TextField(string.Empty) - { - X = 3, - Y = 4, - Width = 42, - }; - - var loadStream = new Button(12, 7, "Load Stream"); - loadStream.Clicked += async () => - { - try - { - var stream = await _streamConverter.ConvertUrlToStream(streamUrl.Text.ToString()); - _player.Play(stream); - } - catch (Exception ex) - { - MessageBox.Query("Warning", "Invalid URL.", "Close"); - } - }; - - var cancelStream = new Button(29, 7, "Close"); - cancelStream.Clicked += () => - { - Application.RequestStop(); - }; - - d.AddButton(loadStream); - d.AddButton(cancelStream); - d.Add(editLabel, streamUrl); - Application.Run(d); - } - - private void LoadPlaylist() - { - var d = new OpenDialog("Open", "Open a playlist") { AllowsMultipleSelection = false }; - - // This will filter the dialog on basis of the allowed file types in the array. - d.AllowedFileTypes = [".m3u"]; - Application.Run(d); - - if (!d.Canceled) - { - _playlist = PlaylistLoader.LoadPlaylist(d.FilePath.ToString()); - - if (_playlist == null) - { - Application.RequestStop(); - } - else - { - foreach (var track in _playlist) - { - _playlistTracks.Add(track); - } - - Application.Run(); - } - } - } - - private static void NowPlaying(string track) - { - _trackName = new Label(track) - { - X = 0, - Y = 0, - Width = Dim.Fill(), - }; - - _nowPlaying.Add(_trackName); - } - - private void TimePlayedLabel() - { - if (_player.PlayerState != EPlayerStatus.Stopped) - { - var timePlayed = TimeSpan.FromSeconds((double)(new decimal(_player.CurrentTime()))).ToString(@"hh\:mm\:ss"); - var trackLength = TimeSpan.FromSeconds((double)(new decimal(_player.TrackLength()))).ToString(@"hh\:mm\:ss"); - - _trackName = new Label($"{timePlayed} / {trackLength}") - { - X = Pos.Right(_audioProgressBar), - Y = 2, - }; - } - else - { - _trackName = new Label($"00:00 / 00:00") - { - X = Pos.Right(_audioProgressBar), - Y = 2, - }; - } - - _nowPlaying.Add(_trackName); - } - - private void UpdateProgressBar() - { - _mainLoopTimeout = Application.MainLoop.AddTimeout(TimeSpan.FromSeconds(1), (updateTimer) => - { - while (_player.CurrentTime() < _player.TrackLength() && _player.PlayerState is not EPlayerStatus.Stopped) - { - _audioProgressBar.Fraction = _player.CurrentTime() / _player.TrackLength(); - TimePlayedLabel(); - - return true; - } - - return false; - }); - } -} */ \ No newline at end of file From 8636ee046810848c8158f1d23b3ff2bd9a3293b5 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 21:22:55 -0400 Subject: [PATCH 025/146] Add TrackHelpers.cs class. Refactor player to use a PlayHandler method which handles updating the UI. --- src/TrackInfo/TrackHelpers.cs | 18 ++++ src/UI/Tui.cs | 165 +++++++++++++++++----------------- 2 files changed, 100 insertions(+), 83 deletions(-) create mode 100644 src/TrackInfo/TrackHelpers.cs diff --git a/src/TrackInfo/TrackHelpers.cs b/src/TrackInfo/TrackHelpers.cs new file mode 100644 index 0000000..ae40ea2 --- /dev/null +++ b/src/TrackInfo/TrackHelpers.cs @@ -0,0 +1,18 @@ +using ATL; + +namespace MusicSharp.TrackInfo; + +public static class TrackHelpers +{ + public static string GetTrackAndArtistName(string filePath) + { + var trackData = new Track(filePath); + + if (trackData.Title == null) + { + return "Unknown - Unknown"; + } + + return trackData.Title + " - " + trackData.Artist; + } +} \ No newline at end of file diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index fd9b60e..4a80fb4 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -4,6 +4,7 @@ using MusicSharp.AudioPlayer; using MusicSharp.Enums; using MusicSharp.PlaylistHandlers; +using MusicSharp.TrackInfo; using Terminal.Gui; namespace MusicSharp.UI; @@ -21,7 +22,7 @@ public class Tui : Toplevel public Tui(IPlayer player) { _player = player; - + var menuBar = new MenuBar() { Title = "MusicSharp", @@ -62,10 +63,10 @@ public Tui(IPlayer player) "About MusicSharp", AboutDialog) } - ) + ) ] }; - + var statusBar = new StatusBar([ new Shortcut { @@ -86,7 +87,7 @@ public Tui(IPlayer player) Action = OpenPlaylist } ]); - + _libraryListView = new ListView { Title = "Library", @@ -96,15 +97,11 @@ public Tui(IPlayer player) Height = 12, CanFocus = false, BorderStyle = LineStyle.Rounded, - Source = new ListWrapper (_playlistTracks) + Source = new ListWrapper(_playlistTracks) }; - - _libraryListView.OpenSelectedItem += (sender, args) => - { - _player.Play(args.Value.ToString()); - UpdateProgressBar(); - }; - + + _libraryListView.OpenSelectedItem += (sender, args) => { PlayHandler(args.Value.ToString()); }; + _progressBar = new ProgressBar() { Title = "Progress", @@ -115,11 +112,11 @@ public Tui(IPlayer player) CanFocus = false, BorderStyle = LineStyle.Rounded, Fraction = 0f, - ColorScheme = Colors.ColorSchemes ["Error"] + ColorScheme = Colors.ColorSchemes["Error"] }; #region PlayBackControls - + var playbackControls = new Window() { Title = "Playback", @@ -133,58 +130,58 @@ public Tui(IPlayer player) var playPauseButton = new Button { - X = 0, - Y = 0, - IsDefault = false, - CanFocus = true, + X = 0, + Y = 0, + IsDefault = false, + CanFocus = true, Text = "Play/Pause" }; - + var stopButton = new Button { - X = 0, - Y = Pos.Bottom(playPauseButton), - IsDefault = false, - CanFocus = true, + X = 0, + Y = Pos.Bottom(playPauseButton), + IsDefault = false, + CanFocus = true, Text = "Stop" }; - + var volumeIncreaseButton = new Button { - X = Pos.Right(playPauseButton), - Y = 0, - IsDefault = false, - CanFocus = true, + X = Pos.Right(playPauseButton), + Y = 0, + IsDefault = false, + CanFocus = true, Text = "Volume +" }; - + var volumeDecreaseButton = new Button { - X = Pos.Right(playPauseButton), - Y = Pos.Bottom(volumeIncreaseButton), - CanFocus = true, - IsDefault = false, + X = Pos.Right(playPauseButton), + Y = Pos.Bottom(volumeIncreaseButton), + CanFocus = true, + IsDefault = false, Text = "Volume -" }; - + var seekForwardButton = new Button { - X = Pos.Right(volumeIncreaseButton), - Y = 0, - IsDefault = false, - CanFocus = true, + X = Pos.Right(volumeIncreaseButton), + Y = 0, + IsDefault = false, + CanFocus = true, Text = "Seek 5s" }; - + var seekBackwardButton = new Button { - X = Pos.Right(volumeDecreaseButton), - Y = Pos.Bottom(seekForwardButton), - IsDefault = false, - CanFocus = true, + X = Pos.Right(volumeDecreaseButton), + Y = Pos.Bottom(seekForwardButton), + IsDefault = false, + CanFocus = true, Text = "Seek -5s" }; - + playPauseButton.Accepting += (s, args) => { if (_player.IsStreamLoaded) @@ -192,7 +189,7 @@ public Tui(IPlayer player) _player.PlayPause(); } }; - stopButton.Accepting += (s, args) => + stopButton.Accepting += (s, args) => { if (_player.IsStreamLoaded) { @@ -205,7 +202,7 @@ public Tui(IPlayer player) { _player.IncreaseVolume(); } - }; + }; volumeDecreaseButton.Accepting += (s, args) => { if (_player.IsStreamLoaded) @@ -227,13 +224,14 @@ public Tui(IPlayer player) _player.SeekBackward(); } }; - - playbackControls.Add (playPauseButton, stopButton, volumeIncreaseButton, volumeDecreaseButton, seekForwardButton, seekBackwardButton); - + + playbackControls.Add(playPauseButton, stopButton, volumeIncreaseButton, volumeDecreaseButton, seekForwardButton, + seekBackwardButton); + #endregion - + #region PlaybackInfo - + _nowPlayingWindow = new Window { Title = "Now playing", @@ -243,14 +241,22 @@ public Tui(IPlayer player) Height = Dim.Height(playbackControls), BorderStyle = LineStyle.Rounded, }; - + // Add the views to the main window Add(menuBar, _libraryListView, _progressBar, playbackControls, _nowPlayingWindow, statusBar); } #endregion - - // Action Methods + + #region ActionMethods + + private void PlayHandler(string filePath) + { + _player.Play(filePath); + UpdateProgressBar(); + NowPlaying(TrackHelpers.GetTrackAndArtistName(filePath)); + } + private void OpenFile() { var d = new OpenDialog() @@ -259,17 +265,17 @@ private void OpenFile() Title = "Open an audio file", AllowedTypes = [new AllowedType("Allowed filetypes", ".mp3")] }; - + Application.Run(d); if (!d.Canceled) { _player.Play(d.FilePaths[0]); UpdateProgressBar(); - NowPlaying("Test Track"); + NowPlaying(TrackHelpers.GetTrackAndArtistName(d.FilePaths[0])); } } - + private void OpenStream() { var streamDialog = new Dialog @@ -307,31 +313,25 @@ private void OpenStream() Y = Pos.Bottom(streamUrl) }; - loadStreamButton.Accepting += (s, args) => - { - _player.Play(streamUrl.Text); - }; + loadStreamButton.Accepting += (s, args) => { _player.Play(streamUrl.Text); }; + + cancelButton.Accepting += (s, args) => { RequestStop(); }; - cancelButton.Accepting += (s, args) => - { - RequestStop(); - }; - streamDialog.Add(uriLabel, streamUrl, loadStreamButton, cancelButton); - + Application.Run(streamDialog); } private void UpdateProgressBar() { - _mainLoopTimeout = Application.AddTimeout ( - TimeSpan.FromMilliseconds (_mainLoopTimeoutTick), + _mainLoopTimeout = Application.AddTimeout( + TimeSpan.FromMilliseconds(_mainLoopTimeoutTick), () => { while (_player.CurrentTime < _player.TrackLength && _player.PlayerState != EPlayerStatus.Stopped) { _progressBar.Fraction = _player.CurrentTime / _player.TrackLength; - // TimePlayedLabel(); + // TimePlayedLabel(); return true; } @@ -340,7 +340,7 @@ private void UpdateProgressBar() } ); } - + private void NowPlaying(string trackName) { var nowPlayingLabel = new Label @@ -362,13 +362,13 @@ private void OpenPlaylist() Title = "Open a playlist", AllowedTypes = [new AllowedType("Allowed filetypes", ".m3u")] }; - + Application.Run(d); if (!d.Canceled) - { + { var playlist = PlaylistLoader.LoadPlaylist(d.FilePaths[0]); - + if (playlist == null) { Application.RequestStop(); @@ -378,7 +378,7 @@ private void OpenPlaylist() foreach (var track in playlist) { _playlistTracks.Add(track); - } + } } } } @@ -390,7 +390,7 @@ private void AboutDialog() X = Pos.Center(), Y = Pos.Center(), }; - + var sb = new StringBuilder(); sb.Append(""" __ ___ _ _____ __ @@ -422,15 +422,14 @@ __ ___ _ _____ __ Text = "Close", X = Pos.Center(), }; - - closeButton.Accepting += (s, args) => - { - RequestStop(); - }; - + + closeButton.Accepting += (s, args) => { RequestStop(); }; + aboutDialog.Add(asciiLabel, infoLabel); aboutDialog.AddButton(closeButton); - + Application.Run(aboutDialog); } + + #endregion } \ No newline at end of file From 77f03cac6245d18dd6b5e2f20b0da4650a9801a7 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 21:23:26 -0400 Subject: [PATCH 026/146] Remove unused comment from Program.cs --- src/Program.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Program.cs b/src/Program.cs index ff570c0..6f158ff 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -22,7 +22,6 @@ public static void Main() IStreamConverter streamConverter = new SoundFlowPlayerStreamConverter(httpClient); using IPlayer player = new SoundFlowPlayer(soundEngine, streamConverter); - // ConfigurationManager.RuntimeConfig = """{ "Theme": "Dark" }"""; Application.Init(); using var ui = new Tui(player); Application.Run(ui); From 97b6152ca58d1eee12a6146a9add6ee356b4072f Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 22:04:06 -0400 Subject: [PATCH 027/146] Update System.Text.Json to 9.03 Install EFCore Sqlite. --- src/MusicSharp.csproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index eaffa8c..4ea3042 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -20,7 +20,9 @@ + + From f36a9411838bcec97ca40fed74324dda7aadf2c3 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 22:35:56 -0400 Subject: [PATCH 028/146] Add EFCore track information. --- src/Library/Library.cs | 6 ++++++ src/Library/LibraryContext.cs | 23 +++++++++++++++++++++++ src/Models/Track.cs | 15 +++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 src/Library/Library.cs create mode 100644 src/Library/LibraryContext.cs create mode 100644 src/Models/Track.cs diff --git a/src/Library/Library.cs b/src/Library/Library.cs new file mode 100644 index 0000000..127d661 --- /dev/null +++ b/src/Library/Library.cs @@ -0,0 +1,6 @@ +namespace MusicSharp.Library; + +public class Library +{ + +} \ No newline at end of file diff --git a/src/Library/LibraryContext.cs b/src/Library/LibraryContext.cs new file mode 100644 index 0000000..b271221 --- /dev/null +++ b/src/Library/LibraryContext.cs @@ -0,0 +1,23 @@ +using System; +using ATL; +using Microsoft.EntityFrameworkCore; + +namespace MusicSharp.Library; + +public class LibraryContext : DbContext +{ + public DbSet Tracks { get; set; } + public string DbPath { get; } + + public LibraryContext() + { + var folder = Environment.SpecialFolder.LocalApplicationData; + var path = Environment.GetFolderPath(folder); + DbPath = System.IO.Path.Join(path, "musicsharp-library.db"); + } + + // The following configures EF to create a Sqlite database file in the + // platform-specific local folder. + protected override void OnConfiguring(DbContextOptionsBuilder options) + => options.UseSqlite($"Data Source={DbPath}"); +} \ No newline at end of file diff --git a/src/Models/Track.cs b/src/Models/Track.cs new file mode 100644 index 0000000..b486f55 --- /dev/null +++ b/src/Models/Track.cs @@ -0,0 +1,15 @@ +namespace MusicSharp.Models; + +public class Track +{ + public string Name { get; set; } + public string Artist { get; set; } + public string Album { get; set; } + public string Path { get; set; } + public string Duration { get; set; } + public string Date { get; set; } + public string Genre { get; set; } + public string DateAdded { get; set; } + public string Plays { get; set; } + public string Codec { get; set; } +} \ No newline at end of file From f16f18b1acce4f88cf05f9875b3b5d22ed32e6c0 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 22:36:10 -0400 Subject: [PATCH 029/146] Check for string.Empty instead of string.null --- src/TrackInfo/TrackHelpers.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TrackInfo/TrackHelpers.cs b/src/TrackInfo/TrackHelpers.cs index ae40ea2..77a56ca 100644 --- a/src/TrackInfo/TrackHelpers.cs +++ b/src/TrackInfo/TrackHelpers.cs @@ -8,7 +8,7 @@ public static string GetTrackAndArtistName(string filePath) { var trackData = new Track(filePath); - if (trackData.Title == null) + if (trackData.Title == string.Empty) { return "Unknown - Unknown"; } From 388b9b1f110f86f6342433e7817973172c2cce8f Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 22:55:20 -0400 Subject: [PATCH 030/146] Add packages necessary for EFCore. --- src/MusicSharp.csproj | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index 4ea3042..5b66a1f 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -20,7 +20,13 @@ - + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + From 41f99a656fdaa4777b8bbf58a0e69738378aa731 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 22:55:47 -0400 Subject: [PATCH 031/146] Specify correct using statement. --- src/Library/LibraryContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Library/LibraryContext.cs b/src/Library/LibraryContext.cs index b271221..5ecfbdc 100644 --- a/src/Library/LibraryContext.cs +++ b/src/Library/LibraryContext.cs @@ -1,6 +1,6 @@ using System; -using ATL; using Microsoft.EntityFrameworkCore; +using MusicSharp.Models; namespace MusicSharp.Library; From 1055ffa914eafb9e57f9135d12c59e2ea6ef929b Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 23 Mar 2025 22:56:02 -0400 Subject: [PATCH 032/146] Fix spacing issue in property name. --- src/Models/Track.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Models/Track.cs b/src/Models/Track.cs index b486f55..c7d8928 100644 --- a/src/Models/Track.cs +++ b/src/Models/Track.cs @@ -11,5 +11,5 @@ public class Track public string Genre { get; set; } public string DateAdded { get; set; } public string Plays { get; set; } - public string Codec { get; set; } + public string Codec { get; set; } } \ No newline at end of file From 2ab20909fafe3d6d0d9f271ca695876d1621dff7 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 24 Mar 2025 21:17:24 -0400 Subject: [PATCH 033/146] Refactor RunMainLoop() method to add time played information. --- src/UI/Tui.cs | 66 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 14 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 4a80fb4..94ece80 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -16,6 +16,8 @@ public class Tui : Toplevel private object? _mainLoopTimeout; private readonly uint _mainLoopTimeoutTick = 100; // ms private Window? _nowPlayingWindow; + private Label _nowPlayingLabel; + private Label _timePlayedLabel; private ListView? _libraryListView; private ObservableCollection _playlistTracks = new(); @@ -241,6 +243,25 @@ public Tui(IPlayer player) Height = Dim.Height(playbackControls), BorderStyle = LineStyle.Rounded, }; + + _nowPlayingLabel = new Label + { + Text = string.Empty, + X = 0, + Y = 0, + Width = Dim.Fill(), + }; + + _nowPlayingWindow?.Add(_nowPlayingLabel); + + _timePlayedLabel = new Label + { + Text = $"00:00 / 00:00", + X = 0, + Y = Pos.Bottom(_nowPlayingLabel) + 1, + }; + + _nowPlayingWindow.Add(_nowPlayingLabel, _timePlayedLabel); // Add the views to the main window Add(menuBar, _libraryListView, _progressBar, playbackControls, _nowPlayingWindow, statusBar); @@ -253,7 +274,7 @@ public Tui(IPlayer player) private void PlayHandler(string filePath) { _player.Play(filePath); - UpdateProgressBar(); + RunMainLoop(); NowPlaying(TrackHelpers.GetTrackAndArtistName(filePath)); } @@ -271,8 +292,7 @@ private void OpenFile() if (!d.Canceled) { _player.Play(d.FilePaths[0]); - UpdateProgressBar(); - NowPlaying(TrackHelpers.GetTrackAndArtistName(d.FilePaths[0])); + PlayHandler(d.FilePaths[0]); } } @@ -322,7 +342,7 @@ private void OpenStream() Application.Run(streamDialog); } - private void UpdateProgressBar() + private void RunMainLoop() { _mainLoopTimeout = Application.AddTimeout( TimeSpan.FromMilliseconds(_mainLoopTimeoutTick), @@ -331,7 +351,7 @@ private void UpdateProgressBar() while (_player.CurrentTime < _player.TrackLength && _player.PlayerState != EPlayerStatus.Stopped) { _progressBar.Fraction = _player.CurrentTime / _player.TrackLength; - // TimePlayedLabel(); + TimePlayedLabel(); return true; } @@ -343,15 +363,7 @@ private void UpdateProgressBar() private void NowPlaying(string trackName) { - var nowPlayingLabel = new Label - { - Text = trackName, - X = 0, - Y = 0, - Width = Dim.Fill(), - }; - - _nowPlayingWindow?.Add(nowPlayingLabel); + _nowPlayingLabel.Text = trackName; } private void OpenPlaylist() @@ -382,6 +394,32 @@ private void OpenPlaylist() } } } + + private void TimePlayedLabel() + { + if (_player.PlayerState != EPlayerStatus.Stopped) + { + if (_player.TrackLength > 3599) + { + var timePlayed = TimeSpan.FromSeconds((double)new decimal(_player.CurrentTime)).ToString(@"hh\:mm\:ss"); + var trackLength = TimeSpan.FromSeconds((double)new decimal(_player.TrackLength)).ToString(@"hh\:mm\:ss"); + + _timePlayedLabel.Text = $"{timePlayed} / {trackLength}"; + } + + else + { + var timePlayed = TimeSpan.FromSeconds((double)new decimal(_player.CurrentTime)).ToString(@"mm\:ss"); + var trackLength = TimeSpan.FromSeconds((double)new decimal(_player.TrackLength)).ToString(@"mm\:ss"); + + _timePlayedLabel.Text = $"{timePlayed} / {trackLength}"; + } + } + else + { + _timePlayedLabel.Text = $"00:00 / 00:00"; + } + } private void AboutDialog() { From 746ab1e27a1e4b60c330b700fba6002262a7b496 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sat, 29 Mar 2025 16:24:56 -0400 Subject: [PATCH 034/146] Update project to .NET 9 --- MusicSharpTests/MusicSharpTests.csproj | 2 +- src/MusicSharp.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/MusicSharpTests/MusicSharpTests.csproj b/MusicSharpTests/MusicSharpTests.csproj index 74f3a7b..1273004 100644 --- a/MusicSharpTests/MusicSharpTests.csproj +++ b/MusicSharpTests/MusicSharpTests.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index eaffa8c..387f6db 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net9.0 1.0.0 Mark-James McDougall Mark-James McDougall From 61a93bc55d8b711c2d363fbc26d1eefd48ef6667 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sat, 29 Mar 2025 22:21:43 -0400 Subject: [PATCH 035/146] Create DB schema. --- src/Library/Library.cs | 6 ---- src/Models/Album.cs | 26 ++++++++++++++ src/Models/Artist.cs | 17 +++++++++ src/Models/Library.cs | 13 +++++++ .../Repository}/LibraryContext.cs | 10 +++--- src/Models/Track.cs | 36 +++++++++++++------ src/MusicSharp.csproj | 4 +++ 7 files changed, 91 insertions(+), 21 deletions(-) delete mode 100644 src/Library/Library.cs create mode 100644 src/Models/Album.cs create mode 100644 src/Models/Artist.cs create mode 100644 src/Models/Library.cs rename src/{Library => Models/Repository}/LibraryContext.cs (62%) diff --git a/src/Library/Library.cs b/src/Library/Library.cs deleted file mode 100644 index 127d661..0000000 --- a/src/Library/Library.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MusicSharp.Library; - -public class Library -{ - -} \ No newline at end of file diff --git a/src/Models/Album.cs b/src/Models/Album.cs new file mode 100644 index 0000000..832841c --- /dev/null +++ b/src/Models/Album.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace MusicSharp.Models; + +public class Album +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + + [MaxLength(500)] + public string Name { get; set; } + + public int ArtistId { get; set; } + public Artist Artist { get; set; } = null!; + + public ICollection Tracks { get; set; } = new List(); + + [MaxLength(500)] + public string Genre { get; set; } = ""; + + public DateOnly ReleaseDate { get; set; } +} \ No newline at end of file diff --git a/src/Models/Artist.cs b/src/Models/Artist.cs new file mode 100644 index 0000000..bd127f8 --- /dev/null +++ b/src/Models/Artist.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace MusicSharp.Models; + +public class Artist +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + + [Required, MaxLength(100)] + public string Name { get; set; } + + public ICollection Albums { get; set; } = new List(); +} \ No newline at end of file diff --git a/src/Models/Library.cs b/src/Models/Library.cs new file mode 100644 index 0000000..885bcaf --- /dev/null +++ b/src/Models/Library.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace MusicSharp.Models; + +public class Library +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + public ICollection Tracks { get; set; } = []; +} \ No newline at end of file diff --git a/src/Library/LibraryContext.cs b/src/Models/Repository/LibraryContext.cs similarity index 62% rename from src/Library/LibraryContext.cs rename to src/Models/Repository/LibraryContext.cs index 5ecfbdc..5b64d70 100644 --- a/src/Library/LibraryContext.cs +++ b/src/Models/Repository/LibraryContext.cs @@ -1,23 +1,23 @@ using System; using Microsoft.EntityFrameworkCore; -using MusicSharp.Models; -namespace MusicSharp.Library; +namespace MusicSharp.Models.Repository; public class LibraryContext : DbContext { + public DbSet Artists { get; set; } + public DbSet Albums { get; set; } public DbSet Tracks { get; set; } public string DbPath { get; } public LibraryContext() { - var folder = Environment.SpecialFolder.LocalApplicationData; + const Environment.SpecialFolder folder = Environment.SpecialFolder.LocalApplicationData; var path = Environment.GetFolderPath(folder); DbPath = System.IO.Path.Join(path, "musicsharp-library.db"); } - // The following configures EF to create a Sqlite database file in the - // platform-specific local folder. + // Create the db in the OS-specific app data directory. protected override void OnConfiguring(DbContextOptionsBuilder options) => options.UseSqlite($"Data Source={DbPath}"); } \ No newline at end of file diff --git a/src/Models/Track.cs b/src/Models/Track.cs index c7d8928..cbd9ab8 100644 --- a/src/Models/Track.cs +++ b/src/Models/Track.cs @@ -1,15 +1,31 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + namespace MusicSharp.Models; public class Track { - public string Name { get; set; } - public string Artist { get; set; } - public string Album { get; set; } - public string Path { get; set; } - public string Duration { get; set; } - public string Date { get; set; } - public string Genre { get; set; } - public string DateAdded { get; set; } - public string Plays { get; set; } - public string Codec { get; set; } + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + + [Required, MaxLength(500)] + public string Title { get; set; } + + public int AlbumId { get; set; } + public Album Album { get; set; } = null!; + + [Required] + public TimeOnly Duration { get; set; } + + [Required, MaxLength(1200)] + public string FilePath { get; set; } + + [Required] + public DateTime DateAdded { get; set; } = DateTime.Now; + + public int PlayCount { get; set; } = 0; + + [MaxLength(500)] public string Codec { get; set; } } \ No newline at end of file diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index 1d6b125..6f6eca6 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -48,4 +48,8 @@ + + + + From 1f25549722caebcb89556a3546aef8bafe33a882 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sat, 29 Mar 2025 22:22:01 -0400 Subject: [PATCH 036/146] Add initial efcore migration --- .../20250330021425_InitialCreate.Designer.cs | 142 ++++++++++++++++++ .../20250330021425_InitialCreate.cs | 98 ++++++++++++ src/Migrations/LibraryContextModelSnapshot.cs | 139 +++++++++++++++++ 3 files changed, 379 insertions(+) create mode 100644 src/Migrations/20250330021425_InitialCreate.Designer.cs create mode 100644 src/Migrations/20250330021425_InitialCreate.cs create mode 100644 src/Migrations/LibraryContextModelSnapshot.cs diff --git a/src/Migrations/20250330021425_InitialCreate.Designer.cs b/src/Migrations/20250330021425_InitialCreate.Designer.cs new file mode 100644 index 0000000..e235981 --- /dev/null +++ b/src/Migrations/20250330021425_InitialCreate.Designer.cs @@ -0,0 +1,142 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using MusicSharp.Models.Repository; + +#nullable disable + +namespace MusicSharp.Migrations +{ + [DbContext(typeof(LibraryContext))] + [Migration("20250330021425_InitialCreate")] + partial class InitialCreate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "9.0.3"); + + modelBuilder.Entity("MusicSharp.Models.Album", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ArtistId") + .HasColumnType("INTEGER"); + + b.Property("Genre") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("ReleaseDate") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("ArtistId"); + + b.ToTable("Albums"); + }); + + modelBuilder.Entity("MusicSharp.Models.Artist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Artists"); + }); + + modelBuilder.Entity("MusicSharp.Models.Track", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("AlbumId") + .HasColumnType("INTEGER"); + + b.Property("Codec") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("DateAdded") + .HasColumnType("TEXT"); + + b.Property("Duration") + .HasColumnType("TEXT"); + + b.Property("FilePath") + .IsRequired() + .HasMaxLength(1200) + .HasColumnType("TEXT"); + + b.Property("PlayCount") + .HasColumnType("INTEGER"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("AlbumId"); + + b.ToTable("Tracks"); + }); + + modelBuilder.Entity("MusicSharp.Models.Album", b => + { + b.HasOne("MusicSharp.Models.Artist", "Artist") + .WithMany("Albums") + .HasForeignKey("ArtistId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Artist"); + }); + + modelBuilder.Entity("MusicSharp.Models.Track", b => + { + b.HasOne("MusicSharp.Models.Album", "Album") + .WithMany("Tracks") + .HasForeignKey("AlbumId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Album"); + }); + + modelBuilder.Entity("MusicSharp.Models.Album", b => + { + b.Navigation("Tracks"); + }); + + modelBuilder.Entity("MusicSharp.Models.Artist", b => + { + b.Navigation("Albums"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Migrations/20250330021425_InitialCreate.cs b/src/Migrations/20250330021425_InitialCreate.cs new file mode 100644 index 0000000..a56da50 --- /dev/null +++ b/src/Migrations/20250330021425_InitialCreate.cs @@ -0,0 +1,98 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace MusicSharp.Migrations +{ + /// + public partial class InitialCreate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Artists", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + Name = table.Column(type: "TEXT", maxLength: 100, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Artists", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Albums", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + Name = table.Column(type: "TEXT", maxLength: 500, nullable: false), + ArtistId = table.Column(type: "INTEGER", nullable: false), + Genre = table.Column(type: "TEXT", maxLength: 500, nullable: false), + ReleaseDate = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Albums", x => x.Id); + table.ForeignKey( + name: "FK_Albums_Artists_ArtistId", + column: x => x.ArtistId, + principalTable: "Artists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Tracks", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + Title = table.Column(type: "TEXT", maxLength: 500, nullable: false), + AlbumId = table.Column(type: "INTEGER", nullable: false), + Duration = table.Column(type: "TEXT", nullable: false), + FilePath = table.Column(type: "TEXT", maxLength: 1200, nullable: false), + DateAdded = table.Column(type: "TEXT", nullable: false), + PlayCount = table.Column(type: "INTEGER", nullable: false), + Codec = table.Column(type: "TEXT", maxLength: 500, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Tracks", x => x.Id); + table.ForeignKey( + name: "FK_Tracks_Albums_AlbumId", + column: x => x.AlbumId, + principalTable: "Albums", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_Albums_ArtistId", + table: "Albums", + column: "ArtistId"); + + migrationBuilder.CreateIndex( + name: "IX_Tracks_AlbumId", + table: "Tracks", + column: "AlbumId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Tracks"); + + migrationBuilder.DropTable( + name: "Albums"); + + migrationBuilder.DropTable( + name: "Artists"); + } + } +} diff --git a/src/Migrations/LibraryContextModelSnapshot.cs b/src/Migrations/LibraryContextModelSnapshot.cs new file mode 100644 index 0000000..cc87dd6 --- /dev/null +++ b/src/Migrations/LibraryContextModelSnapshot.cs @@ -0,0 +1,139 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using MusicSharp.Models.Repository; + +#nullable disable + +namespace MusicSharp.Migrations +{ + [DbContext(typeof(LibraryContext))] + partial class LibraryContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "9.0.3"); + + modelBuilder.Entity("MusicSharp.Models.Album", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ArtistId") + .HasColumnType("INTEGER"); + + b.Property("Genre") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("ReleaseDate") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("ArtistId"); + + b.ToTable("Albums"); + }); + + modelBuilder.Entity("MusicSharp.Models.Artist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Artists"); + }); + + modelBuilder.Entity("MusicSharp.Models.Track", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("AlbumId") + .HasColumnType("INTEGER"); + + b.Property("Codec") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("DateAdded") + .HasColumnType("TEXT"); + + b.Property("Duration") + .HasColumnType("TEXT"); + + b.Property("FilePath") + .IsRequired() + .HasMaxLength(1200) + .HasColumnType("TEXT"); + + b.Property("PlayCount") + .HasColumnType("INTEGER"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("AlbumId"); + + b.ToTable("Tracks"); + }); + + modelBuilder.Entity("MusicSharp.Models.Album", b => + { + b.HasOne("MusicSharp.Models.Artist", "Artist") + .WithMany("Albums") + .HasForeignKey("ArtistId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Artist"); + }); + + modelBuilder.Entity("MusicSharp.Models.Track", b => + { + b.HasOne("MusicSharp.Models.Album", "Album") + .WithMany("Tracks") + .HasForeignKey("AlbumId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Album"); + }); + + modelBuilder.Entity("MusicSharp.Models.Album", b => + { + b.Navigation("Tracks"); + }); + + modelBuilder.Entity("MusicSharp.Models.Artist", b => + { + b.Navigation("Albums"); + }); +#pragma warning restore 612, 618 + } + } +} From 5b56e5fbf609c70238555e2a105882facf420881 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sat, 29 Mar 2025 22:39:36 -0400 Subject: [PATCH 037/146] Add new class for library functionality. --- src/MusicLibrary/MusicLibrary.cs | 6 ++++++ src/MusicSharp.csproj | 4 ---- 2 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 src/MusicLibrary/MusicLibrary.cs diff --git a/src/MusicLibrary/MusicLibrary.cs b/src/MusicLibrary/MusicLibrary.cs new file mode 100644 index 0000000..c5a87e0 --- /dev/null +++ b/src/MusicLibrary/MusicLibrary.cs @@ -0,0 +1,6 @@ +namespace MusicSharp.MusicLibrary; + +public class MusicLibrary +{ + +} \ No newline at end of file diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index 6f6eca6..1d6b125 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -48,8 +48,4 @@ - - - - From 86b7dc8bde10c38b15ac5bc17e92a281d51ff940 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sat, 29 Mar 2025 23:16:38 -0400 Subject: [PATCH 038/146] Refactor DB classes. Add to playlist in dropdown menu Refactor Mappers.cs class Work on adding tracks to playlist library --- src/{Models => Entity}/Album.cs | 0 src/{Models => Entity}/Artist.cs | 0 src/{Models => Entity}/Library.cs | 0 .../Repository/LibraryContext.cs | 0 src/{Models => Entity}/Track.cs | 0 .../TrackHelpers.cs => Mappers/Mappers.cs} | 10 +++++-- src/MusicLibrary/MusicLibrary.cs | 16 ++++++++-- src/UI/Tui.cs | 30 +++++++++++++++++-- 8 files changed, 50 insertions(+), 6 deletions(-) rename src/{Models => Entity}/Album.cs (100%) rename src/{Models => Entity}/Artist.cs (100%) rename src/{Models => Entity}/Library.cs (100%) rename src/{Models => Entity}/Repository/LibraryContext.cs (100%) rename src/{Models => Entity}/Track.cs (100%) rename src/{TrackInfo/TrackHelpers.cs => Mappers/Mappers.cs} (61%) diff --git a/src/Models/Album.cs b/src/Entity/Album.cs similarity index 100% rename from src/Models/Album.cs rename to src/Entity/Album.cs diff --git a/src/Models/Artist.cs b/src/Entity/Artist.cs similarity index 100% rename from src/Models/Artist.cs rename to src/Entity/Artist.cs diff --git a/src/Models/Library.cs b/src/Entity/Library.cs similarity index 100% rename from src/Models/Library.cs rename to src/Entity/Library.cs diff --git a/src/Models/Repository/LibraryContext.cs b/src/Entity/Repository/LibraryContext.cs similarity index 100% rename from src/Models/Repository/LibraryContext.cs rename to src/Entity/Repository/LibraryContext.cs diff --git a/src/Models/Track.cs b/src/Entity/Track.cs similarity index 100% rename from src/Models/Track.cs rename to src/Entity/Track.cs diff --git a/src/TrackInfo/TrackHelpers.cs b/src/Mappers/Mappers.cs similarity index 61% rename from src/TrackInfo/TrackHelpers.cs rename to src/Mappers/Mappers.cs index 77a56ca..02cee4b 100644 --- a/src/TrackInfo/TrackHelpers.cs +++ b/src/Mappers/Mappers.cs @@ -1,9 +1,15 @@ using ATL; -namespace MusicSharp.TrackInfo; +namespace MusicSharp.Mappers; -public static class TrackHelpers +public static class Mappers { + public static Track GetTrackData(string filePath) + { + var track = new Track(filePath); + return track; + } + public static string GetTrackAndArtistName(string filePath) { var trackData = new Track(filePath); diff --git a/src/MusicLibrary/MusicLibrary.cs b/src/MusicLibrary/MusicLibrary.cs index c5a87e0..abb692e 100644 --- a/src/MusicLibrary/MusicLibrary.cs +++ b/src/MusicLibrary/MusicLibrary.cs @@ -1,6 +1,18 @@ +using System.Collections.Generic; +using MusicSharp.Models.Repository; + namespace MusicSharp.MusicLibrary; -public class MusicLibrary +public static class MusicLibrary { - + public static void AddMusicToLibrary(IReadOnlyList musicFilePaths) + { + using var db = new LibraryContext(); + + foreach (var filePath in musicFilePaths) + { + var track = Mappers.Mappers.GetTrackData(filePath); + + } + } } \ No newline at end of file diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 94ece80..6f6a97b 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -4,7 +4,7 @@ using MusicSharp.AudioPlayer; using MusicSharp.Enums; using MusicSharp.PlaylistHandlers; -using MusicSharp.TrackInfo; +using MusicSharp.Mappers; using Terminal.Gui; namespace MusicSharp.UI; @@ -57,6 +57,15 @@ public Tui(IPlayer player) ) } ), + new MenuBarItem( + "Library", + new MenuItem[] + { + new("_Add to library", + "Add music to library", + AddToLibrary) + } + ), new MenuBarItem( "About", new MenuItem[] @@ -275,7 +284,7 @@ private void PlayHandler(string filePath) { _player.Play(filePath); RunMainLoop(); - NowPlaying(TrackHelpers.GetTrackAndArtistName(filePath)); + NowPlaying(Mappers.Mappers.GetTrackAndArtistName(filePath)); } private void OpenFile() @@ -421,6 +430,23 @@ private void TimePlayedLabel() } } + private void AddToLibrary() + { + var d = new OpenDialog() + { + AllowsMultipleSelection = true, + Title = "Open an audio file", + AllowedTypes = [new AllowedType("Allowed filetypes", ".mp3 .flac .wav")] + }; + + Application.Run(d); + + if (!d.Canceled) + { + MusicLibrary.MusicLibrary.AddMusicToLibrary(d.FilePaths); + } + } + private void AboutDialog() { var aboutDialog = new Dialog From 16359ee36227554f3a294f8cade068bda7d618de Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sat, 29 Mar 2025 23:18:11 -0400 Subject: [PATCH 039/146] Delete unused Library.cs class. --- src/Entity/Library.cs | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 src/Entity/Library.cs diff --git a/src/Entity/Library.cs b/src/Entity/Library.cs deleted file mode 100644 index 885bcaf..0000000 --- a/src/Entity/Library.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace MusicSharp.Models; - -public class Library -{ - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - public ICollection Tracks { get; set; } = []; -} \ No newline at end of file From 2e729405d4088570da539249109226d17efe4652 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sat, 29 Mar 2025 23:26:01 -0400 Subject: [PATCH 040/146] Add support for FLAC and WAV files to file open dialogs. --- src/UI/Tui.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 6f6a97b..34fd65b 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -293,7 +293,7 @@ private void OpenFile() { AllowsMultipleSelection = false, Title = "Open an audio file", - AllowedTypes = [new AllowedType("Allowed filetypes", ".mp3")] + AllowedTypes = [new AllowedType("Allowed filetypes", ".mp3", ".flac", ".wav")] }; Application.Run(d); @@ -436,7 +436,7 @@ private void AddToLibrary() { AllowsMultipleSelection = true, Title = "Open an audio file", - AllowedTypes = [new AllowedType("Allowed filetypes", ".mp3 .flac .wav")] + AllowedTypes = [new AllowedType("Allowed filetypes", ".mp3", ".flac", ".wav")] }; Application.Run(d); From d86c99a57ca2a381f8fb8701538dbb6a4e34e8ca Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 30 Mar 2025 17:09:39 -0400 Subject: [PATCH 041/146] Remove references to EFCore as I created a new branch 'efcore-library' where library functionality will be implemented. --- src/Entity/Album.cs | 26 ---- src/Entity/Artist.cs | 17 --- src/Entity/Repository/LibraryContext.cs | 23 --- src/Entity/Track.cs | 31 ---- .../20250330021425_InitialCreate.Designer.cs | 142 ------------------ .../20250330021425_InitialCreate.cs | 98 ------------ src/Migrations/LibraryContextModelSnapshot.cs | 139 ----------------- src/MusicLibrary/MusicLibrary.cs | 18 --- src/MusicSharp.csproj | 5 - src/UI/Tui.cs | 23 +-- 10 files changed, 3 insertions(+), 519 deletions(-) delete mode 100644 src/Entity/Album.cs delete mode 100644 src/Entity/Artist.cs delete mode 100644 src/Entity/Repository/LibraryContext.cs delete mode 100644 src/Entity/Track.cs delete mode 100644 src/Migrations/20250330021425_InitialCreate.Designer.cs delete mode 100644 src/Migrations/20250330021425_InitialCreate.cs delete mode 100644 src/Migrations/LibraryContextModelSnapshot.cs delete mode 100644 src/MusicLibrary/MusicLibrary.cs diff --git a/src/Entity/Album.cs b/src/Entity/Album.cs deleted file mode 100644 index 832841c..0000000 --- a/src/Entity/Album.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace MusicSharp.Models; - -public class Album -{ - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - [MaxLength(500)] - public string Name { get; set; } - - public int ArtistId { get; set; } - public Artist Artist { get; set; } = null!; - - public ICollection Tracks { get; set; } = new List(); - - [MaxLength(500)] - public string Genre { get; set; } = ""; - - public DateOnly ReleaseDate { get; set; } -} \ No newline at end of file diff --git a/src/Entity/Artist.cs b/src/Entity/Artist.cs deleted file mode 100644 index bd127f8..0000000 --- a/src/Entity/Artist.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace MusicSharp.Models; - -public class Artist -{ - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - [Required, MaxLength(100)] - public string Name { get; set; } - - public ICollection Albums { get; set; } = new List(); -} \ No newline at end of file diff --git a/src/Entity/Repository/LibraryContext.cs b/src/Entity/Repository/LibraryContext.cs deleted file mode 100644 index 5b64d70..0000000 --- a/src/Entity/Repository/LibraryContext.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; - -namespace MusicSharp.Models.Repository; - -public class LibraryContext : DbContext -{ - public DbSet Artists { get; set; } - public DbSet Albums { get; set; } - public DbSet Tracks { get; set; } - public string DbPath { get; } - - public LibraryContext() - { - const Environment.SpecialFolder folder = Environment.SpecialFolder.LocalApplicationData; - var path = Environment.GetFolderPath(folder); - DbPath = System.IO.Path.Join(path, "musicsharp-library.db"); - } - - // Create the db in the OS-specific app data directory. - protected override void OnConfiguring(DbContextOptionsBuilder options) - => options.UseSqlite($"Data Source={DbPath}"); -} \ No newline at end of file diff --git a/src/Entity/Track.cs b/src/Entity/Track.cs deleted file mode 100644 index cbd9ab8..0000000 --- a/src/Entity/Track.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace MusicSharp.Models; - -public class Track -{ - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - [Required, MaxLength(500)] - public string Title { get; set; } - - public int AlbumId { get; set; } - public Album Album { get; set; } = null!; - - [Required] - public TimeOnly Duration { get; set; } - - [Required, MaxLength(1200)] - public string FilePath { get; set; } - - [Required] - public DateTime DateAdded { get; set; } = DateTime.Now; - - public int PlayCount { get; set; } = 0; - - [MaxLength(500)] public string Codec { get; set; } -} \ No newline at end of file diff --git a/src/Migrations/20250330021425_InitialCreate.Designer.cs b/src/Migrations/20250330021425_InitialCreate.Designer.cs deleted file mode 100644 index e235981..0000000 --- a/src/Migrations/20250330021425_InitialCreate.Designer.cs +++ /dev/null @@ -1,142 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using MusicSharp.Models.Repository; - -#nullable disable - -namespace MusicSharp.Migrations -{ - [DbContext(typeof(LibraryContext))] - [Migration("20250330021425_InitialCreate")] - partial class InitialCreate - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "9.0.3"); - - modelBuilder.Entity("MusicSharp.Models.Album", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("ArtistId") - .HasColumnType("INTEGER"); - - b.Property("Genre") - .IsRequired() - .HasMaxLength(500) - .HasColumnType("TEXT"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(500) - .HasColumnType("TEXT"); - - b.Property("ReleaseDate") - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.HasIndex("ArtistId"); - - b.ToTable("Albums"); - }); - - modelBuilder.Entity("MusicSharp.Models.Artist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.ToTable("Artists"); - }); - - modelBuilder.Entity("MusicSharp.Models.Track", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("AlbumId") - .HasColumnType("INTEGER"); - - b.Property("Codec") - .IsRequired() - .HasMaxLength(500) - .HasColumnType("TEXT"); - - b.Property("DateAdded") - .HasColumnType("TEXT"); - - b.Property("Duration") - .HasColumnType("TEXT"); - - b.Property("FilePath") - .IsRequired() - .HasMaxLength(1200) - .HasColumnType("TEXT"); - - b.Property("PlayCount") - .HasColumnType("INTEGER"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(500) - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.HasIndex("AlbumId"); - - b.ToTable("Tracks"); - }); - - modelBuilder.Entity("MusicSharp.Models.Album", b => - { - b.HasOne("MusicSharp.Models.Artist", "Artist") - .WithMany("Albums") - .HasForeignKey("ArtistId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Artist"); - }); - - modelBuilder.Entity("MusicSharp.Models.Track", b => - { - b.HasOne("MusicSharp.Models.Album", "Album") - .WithMany("Tracks") - .HasForeignKey("AlbumId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Album"); - }); - - modelBuilder.Entity("MusicSharp.Models.Album", b => - { - b.Navigation("Tracks"); - }); - - modelBuilder.Entity("MusicSharp.Models.Artist", b => - { - b.Navigation("Albums"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/src/Migrations/20250330021425_InitialCreate.cs b/src/Migrations/20250330021425_InitialCreate.cs deleted file mode 100644 index a56da50..0000000 --- a/src/Migrations/20250330021425_InitialCreate.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace MusicSharp.Migrations -{ - /// - public partial class InitialCreate : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Artists", - columns: table => new - { - Id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Name = table.Column(type: "TEXT", maxLength: 100, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Artists", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Albums", - columns: table => new - { - Id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Name = table.Column(type: "TEXT", maxLength: 500, nullable: false), - ArtistId = table.Column(type: "INTEGER", nullable: false), - Genre = table.Column(type: "TEXT", maxLength: 500, nullable: false), - ReleaseDate = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Albums", x => x.Id); - table.ForeignKey( - name: "FK_Albums_Artists_ArtistId", - column: x => x.ArtistId, - principalTable: "Artists", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "Tracks", - columns: table => new - { - Id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Title = table.Column(type: "TEXT", maxLength: 500, nullable: false), - AlbumId = table.Column(type: "INTEGER", nullable: false), - Duration = table.Column(type: "TEXT", nullable: false), - FilePath = table.Column(type: "TEXT", maxLength: 1200, nullable: false), - DateAdded = table.Column(type: "TEXT", nullable: false), - PlayCount = table.Column(type: "INTEGER", nullable: false), - Codec = table.Column(type: "TEXT", maxLength: 500, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Tracks", x => x.Id); - table.ForeignKey( - name: "FK_Tracks_Albums_AlbumId", - column: x => x.AlbumId, - principalTable: "Albums", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_Albums_ArtistId", - table: "Albums", - column: "ArtistId"); - - migrationBuilder.CreateIndex( - name: "IX_Tracks_AlbumId", - table: "Tracks", - column: "AlbumId"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "Tracks"); - - migrationBuilder.DropTable( - name: "Albums"); - - migrationBuilder.DropTable( - name: "Artists"); - } - } -} diff --git a/src/Migrations/LibraryContextModelSnapshot.cs b/src/Migrations/LibraryContextModelSnapshot.cs deleted file mode 100644 index cc87dd6..0000000 --- a/src/Migrations/LibraryContextModelSnapshot.cs +++ /dev/null @@ -1,139 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using MusicSharp.Models.Repository; - -#nullable disable - -namespace MusicSharp.Migrations -{ - [DbContext(typeof(LibraryContext))] - partial class LibraryContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "9.0.3"); - - modelBuilder.Entity("MusicSharp.Models.Album", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("ArtistId") - .HasColumnType("INTEGER"); - - b.Property("Genre") - .IsRequired() - .HasMaxLength(500) - .HasColumnType("TEXT"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(500) - .HasColumnType("TEXT"); - - b.Property("ReleaseDate") - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.HasIndex("ArtistId"); - - b.ToTable("Albums"); - }); - - modelBuilder.Entity("MusicSharp.Models.Artist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.ToTable("Artists"); - }); - - modelBuilder.Entity("MusicSharp.Models.Track", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("AlbumId") - .HasColumnType("INTEGER"); - - b.Property("Codec") - .IsRequired() - .HasMaxLength(500) - .HasColumnType("TEXT"); - - b.Property("DateAdded") - .HasColumnType("TEXT"); - - b.Property("Duration") - .HasColumnType("TEXT"); - - b.Property("FilePath") - .IsRequired() - .HasMaxLength(1200) - .HasColumnType("TEXT"); - - b.Property("PlayCount") - .HasColumnType("INTEGER"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(500) - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.HasIndex("AlbumId"); - - b.ToTable("Tracks"); - }); - - modelBuilder.Entity("MusicSharp.Models.Album", b => - { - b.HasOne("MusicSharp.Models.Artist", "Artist") - .WithMany("Albums") - .HasForeignKey("ArtistId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Artist"); - }); - - modelBuilder.Entity("MusicSharp.Models.Track", b => - { - b.HasOne("MusicSharp.Models.Album", "Album") - .WithMany("Tracks") - .HasForeignKey("AlbumId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Album"); - }); - - modelBuilder.Entity("MusicSharp.Models.Album", b => - { - b.Navigation("Tracks"); - }); - - modelBuilder.Entity("MusicSharp.Models.Artist", b => - { - b.Navigation("Albums"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/src/MusicLibrary/MusicLibrary.cs b/src/MusicLibrary/MusicLibrary.cs deleted file mode 100644 index abb692e..0000000 --- a/src/MusicLibrary/MusicLibrary.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections.Generic; -using MusicSharp.Models.Repository; - -namespace MusicSharp.MusicLibrary; - -public static class MusicLibrary -{ - public static void AddMusicToLibrary(IReadOnlyList musicFilePaths) - { - using var db = new LibraryContext(); - - foreach (var filePath in musicFilePaths) - { - var track = Mappers.Mappers.GetTrackData(filePath); - - } - } -} \ No newline at end of file diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index 1d6b125..6d257e5 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -20,11 +20,6 @@ - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 34fd65b..4a3a355 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -61,9 +61,9 @@ public Tui(IPlayer player) "Library", new MenuItem[] { - new("_Add to library", - "Add music to library", - AddToLibrary) + new("_Save playlist", + "Save files to playlist", + AboutDialog) } ), new MenuBarItem( @@ -430,23 +430,6 @@ private void TimePlayedLabel() } } - private void AddToLibrary() - { - var d = new OpenDialog() - { - AllowsMultipleSelection = true, - Title = "Open an audio file", - AllowedTypes = [new AllowedType("Allowed filetypes", ".mp3", ".flac", ".wav")] - }; - - Application.Run(d); - - if (!d.Canceled) - { - MusicLibrary.MusicLibrary.AddMusicToLibrary(d.FilePaths); - } - } - private void AboutDialog() { var aboutDialog = new Dialog From 85dd029359383c144823e6ce19c0fc4ad08f7545 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 30 Mar 2025 19:08:14 -0400 Subject: [PATCH 042/146] Add suport for saving playlist files --- .../Mappers.cs => FileData/TrackData.cs} | 4 +- src/Playlist.cs | 28 ++++++++ src/PlaylistHandlers/PlaylistLoader.cs | 31 --------- src/UI/Tui.cs | 65 ++++++++++++------- 4 files changed, 71 insertions(+), 57 deletions(-) rename src/{Mappers/Mappers.cs => FileData/TrackData.cs} (87%) create mode 100644 src/Playlist.cs delete mode 100644 src/PlaylistHandlers/PlaylistLoader.cs diff --git a/src/Mappers/Mappers.cs b/src/FileData/TrackData.cs similarity index 87% rename from src/Mappers/Mappers.cs rename to src/FileData/TrackData.cs index 02cee4b..5428ac1 100644 --- a/src/Mappers/Mappers.cs +++ b/src/FileData/TrackData.cs @@ -1,8 +1,8 @@ using ATL; -namespace MusicSharp.Mappers; +namespace MusicSharp.FileData; -public static class Mappers +public static class TrackData { public static Track GetTrackData(string filePath) { diff --git a/src/Playlist.cs b/src/Playlist.cs new file mode 100644 index 0000000..55cb8b7 --- /dev/null +++ b/src/Playlist.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using System.Linq; +using ATL.Playlist; + +namespace MusicSharp; + +public static class Playlist +{ + /// + /// Load an M3U playlist. + /// + /// Returns a list of playlist information. + /// The user specified playlist path. + public static List LoadPlaylist(string playlist) + { + var theReader = PlaylistIOFactory.GetInstance().GetPlaylistIO(playlist); + + // Fix space formatting as SoundFlow doesn't support encoded spaces + return theReader.FilePaths.Select(s => s.Replace("%20", " ")).ToList(); + } + + public static void SavePlaylistToFile(string playlistFilePath, List playlistFiles) + { + var pls = PlaylistIOFactory.GetInstance().GetPlaylistIO(playlistFilePath); + pls.FilePaths = playlistFiles.ToList(); + pls.Save(); + } +} \ No newline at end of file diff --git a/src/PlaylistHandlers/PlaylistLoader.cs b/src/PlaylistHandlers/PlaylistLoader.cs deleted file mode 100644 index 071989b..0000000 --- a/src/PlaylistHandlers/PlaylistLoader.cs +++ /dev/null @@ -1,31 +0,0 @@ -// -// Licensed under the GNU GPL v3 License. See LICENSE in the project root for license information. -// - -using System.Collections.Generic; -using System.Linq; -using ATL.Playlist; - -namespace MusicSharp.PlaylistHandlers; - -/// -/// The PlaylistLoader class loads a playlist of a given type. -/// -public static class PlaylistLoader -{ - // This will be used in the future to allow for playlist types beyond M3U. - // public virtual void LoadPlaylist() { } - - /// - /// Load an M3U playlist. - /// - /// Returns a list of playlist information. - /// The user specified playlist path. - public static List LoadPlaylist(string userPlaylist) - { - var theReader = PlaylistIOFactory.GetInstance().GetPlaylistIO(userPlaylist); - - // Fix space formatting as SoundFlow doesn't support encoded spaces - return theReader.FilePaths.Select(s => s.Replace("%20", " ")).ToList(); - } -} \ No newline at end of file diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 4a3a355..f5202fe 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -1,10 +1,9 @@ using System; using System.Collections.ObjectModel; +using System.Linq; using System.Text; using MusicSharp.AudioPlayer; using MusicSharp.Enums; -using MusicSharp.PlaylistHandlers; -using MusicSharp.Mappers; using Terminal.Gui; namespace MusicSharp.UI; @@ -19,7 +18,7 @@ public class Tui : Toplevel private Label _nowPlayingLabel; private Label _timePlayedLabel; private ListView? _libraryListView; - private ObservableCollection _playlistTracks = new(); + private ObservableCollection _playlistTracks = []; public Tui(IPlayer player) { @@ -37,17 +36,12 @@ public Tui(IPlayer player) { new( "_Open file", - "Open a local audio file", + "Open audio file", OpenFile ), - new( - "Open _playlist", - "Open a playlist", - OpenPlaylist - ), new( "Open _stream", - "Open a web stream", + "Open web stream", OpenStream ), new( @@ -58,19 +52,25 @@ public Tui(IPlayer player) } ), new MenuBarItem( - "Library", + "Playlist", new MenuItem[] { + new( + "Open _playlist", + "Open a playlist", + OpenPlaylist + ), new("_Save playlist", "Save files to playlist", - AboutDialog) + SavePlaylist + ) } ), new MenuBarItem( "About", new MenuItem[] { - new("About", + new("_About", "About MusicSharp", AboutDialog) } @@ -79,6 +79,12 @@ public Tui(IPlayer player) }; var statusBar = new StatusBar([ + new Shortcut + { + Text = "Quit", + Key = Key.Esc, + Action = RequestStop + }, new Shortcut { Text = "Open file", @@ -284,7 +290,7 @@ private void PlayHandler(string filePath) { _player.Play(filePath); RunMainLoop(); - NowPlaying(Mappers.Mappers.GetTrackAndArtistName(filePath)); + NowPlaying(FileData.TrackData.GetTrackAndArtistName(filePath)); } private void OpenFile() @@ -388,22 +394,33 @@ private void OpenPlaylist() if (!d.Canceled) { - var playlist = PlaylistLoader.LoadPlaylist(d.FilePaths[0]); + var playlist = Playlist.LoadPlaylist(d.FilePaths[0]); - if (playlist == null) - { - Application.RequestStop(); - } - else + foreach (var track in playlist) { - foreach (var track in playlist) - { - _playlistTracks.Add(track); - } + _playlistTracks.Add(track); } } } + private void SavePlaylist() + { + var d = new SaveDialog + { + AllowsMultipleSelection = false, + AllowedTypes = [new AllowedType("Allowed filetypes", ".m3u")], + Title = "Save playlist in M3U format" + }; + + Application.Run(d); + + if (!d.Canceled) + { + var currentTracks = _playlistTracks.ToList(); + Playlist.SavePlaylistToFile(d.FileName, currentTracks); + } + } + private void TimePlayedLabel() { if (_player.PlayerState != EPlayerStatus.Stopped) From 49c9f8623483e655b0aac29b90222a52e41edd39 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 30 Mar 2025 19:12:38 -0400 Subject: [PATCH 043/146] Formatting fixes --- src/UI/Tui.cs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index f5202fe..eac1ebc 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -258,7 +258,7 @@ public Tui(IPlayer player) Height = Dim.Height(playbackControls), BorderStyle = LineStyle.Rounded, }; - + _nowPlayingLabel = new Label { Text = string.Empty, @@ -268,14 +268,14 @@ public Tui(IPlayer player) }; _nowPlayingWindow?.Add(_nowPlayingLabel); - + _timePlayedLabel = new Label { Text = $"00:00 / 00:00", X = 0, Y = Pos.Bottom(_nowPlayingLabel) + 1, }; - + _nowPlayingWindow.Add(_nowPlayingLabel, _timePlayedLabel); // Add the views to the main window @@ -402,7 +402,7 @@ private void OpenPlaylist() } } } - + private void SavePlaylist() { var d = new SaveDialog @@ -413,14 +413,14 @@ private void SavePlaylist() }; Application.Run(d); - + if (!d.Canceled) { - var currentTracks = _playlistTracks.ToList(); + var currentTracks = _playlistTracks.ToList(); Playlist.SavePlaylistToFile(d.FileName, currentTracks); } } - + private void TimePlayedLabel() { if (_player.PlayerState != EPlayerStatus.Stopped) @@ -428,8 +428,9 @@ private void TimePlayedLabel() if (_player.TrackLength > 3599) { var timePlayed = TimeSpan.FromSeconds((double)new decimal(_player.CurrentTime)).ToString(@"hh\:mm\:ss"); - var trackLength = TimeSpan.FromSeconds((double)new decimal(_player.TrackLength)).ToString(@"hh\:mm\:ss"); - + var trackLength = TimeSpan.FromSeconds((double)new decimal(_player.TrackLength)) + .ToString(@"hh\:mm\:ss"); + _timePlayedLabel.Text = $"{timePlayed} / {trackLength}"; } @@ -437,7 +438,7 @@ private void TimePlayedLabel() { var timePlayed = TimeSpan.FromSeconds((double)new decimal(_player.CurrentTime)).ToString(@"mm\:ss"); var trackLength = TimeSpan.FromSeconds((double)new decimal(_player.TrackLength)).ToString(@"mm\:ss"); - + _timePlayedLabel.Text = $"{timePlayed} / {trackLength}"; } } From fec9f84beff48e3cfd138f3dc30919f396b9fbde Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 13 Jul 2025 22:34:59 -0400 Subject: [PATCH 044/146] Update SoundFlow library 1.0.3 --> 1.1.1 --- src/MusicSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index 6d257e5..73c79a2 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -22,7 +22,7 @@ - + From 49f7b000fe787df7bafd1a17abee7f94a6461793 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 13 Jul 2025 22:55:44 -0400 Subject: [PATCH 045/146] Remove Load_NullPlaylist() test for now. --- MusicSharpTests/PlaylistLoaderTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MusicSharpTests/PlaylistLoaderTests.cs b/MusicSharpTests/PlaylistLoaderTests.cs index ae20955..19d894a 100644 --- a/MusicSharpTests/PlaylistLoaderTests.cs +++ b/MusicSharpTests/PlaylistLoaderTests.cs @@ -1,4 +1,4 @@ -using MusicSharp.PlaylistHandlers; +using MusicSharp; namespace MusicSharpTests; @@ -8,6 +8,6 @@ public class Tests public void Load_NullPlaylist() { // Act and assert - Assert.Throws(() => PlaylistLoader.LoadPlaylist(null)); + // Assert.Throws(() => Playlist.LoadPlaylist(null)); } } \ No newline at end of file From 2a7ac560b6c6ea8d4d9a9797f41fc3cb6a441294 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 18:39:59 -0400 Subject: [PATCH 046/146] Update Terminal.Gui from 2.0.0-prealpha.1895 --> 2.0.0-develop.4525 --- src/MusicSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index 73c79a2..56185dd 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -24,7 +24,7 @@ - + From beb330bf9ca59a6f19a3f9a4cddc3df782ea1005 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 18:45:43 -0400 Subject: [PATCH 047/146] Add new using statements for latest Terminal.Gui beta. --- src/Program.cs | 2 +- src/UI/Tui.cs | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Program.cs b/src/Program.cs index 6f158ff..6a1e3ce 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -3,7 +3,7 @@ using MusicSharp.AudioPlayer; using SoundFlow.Backends.MiniAudio; using SoundFlow.Enums; -using Terminal.Gui; +using Terminal.Gui.App; namespace MusicSharp; diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index eac1ebc..efe77e0 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -4,7 +4,11 @@ using System.Text; using MusicSharp.AudioPlayer; using MusicSharp.Enums; -using Terminal.Gui; +using Terminal.Gui.App; +using Terminal.Gui.Drawing; +using Terminal.Gui.Input; +using Terminal.Gui.ViewBase; +using Terminal.Gui.Views; namespace MusicSharp.UI; @@ -129,7 +133,6 @@ public Tui(IPlayer player) CanFocus = false, BorderStyle = LineStyle.Rounded, Fraction = 0f, - ColorScheme = Colors.ColorSchemes["Error"] }; #region PlayBackControls From 1312677265e2cde65f90d1d780440bf123a222d4 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 18:51:19 -0400 Subject: [PATCH 048/146] Resolve newly introduced TGUI001 (https://github.com/tznind/gui.cs/blob/analyzer-no-handled/Terminal.Gui.Analyzers/TGUI001.md) warning from latest Terminal.Gui beta. --- src/UI/Tui.cs | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index efe77e0..bb3b9fd 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -202,47 +202,59 @@ public Tui(IPlayer player) Text = "Seek -5s" }; - playPauseButton.Accepting += (s, args) => + playPauseButton.Accepting += (s, e) => { if (_player.IsStreamLoaded) { _player.PlayPause(); } + + e.Handled = true; }; - stopButton.Accepting += (s, args) => + stopButton.Accepting += (s, e) => { if (_player.IsStreamLoaded) { _player.Stop(); } + + e.Handled = true; }; - volumeIncreaseButton.Accepting += (s, args) => + volumeIncreaseButton.Accepting += (s, e) => { if (_player.IsStreamLoaded) { _player.IncreaseVolume(); } + + e.Handled = true; }; - volumeDecreaseButton.Accepting += (s, args) => + volumeDecreaseButton.Accepting += (s, e) => { if (_player.IsStreamLoaded) { _player.DecreaseVolume(); } + + e.Handled = true; }; - seekForwardButton.Accepting += (s, args) => + seekForwardButton.Accepting += (s, e) => { if (_player.IsStreamLoaded) { _player.SeekForward(); } + + e.Handled = true; }; - seekBackwardButton.Accepting += (s, a) => + seekBackwardButton.Accepting += (s, e) => { if (_player.IsStreamLoaded) { _player.SeekBackward(); } + + e.Handled = true; }; playbackControls.Add(playPauseButton, stopButton, volumeIncreaseButton, volumeDecreaseButton, seekForwardButton, @@ -351,9 +363,17 @@ private void OpenStream() Y = Pos.Bottom(streamUrl) }; - loadStreamButton.Accepting += (s, args) => { _player.Play(streamUrl.Text); }; + loadStreamButton.Accepting += (s, e) => + { + _player.Play(streamUrl.Text); + e.Handled = true; + }; - cancelButton.Accepting += (s, args) => { RequestStop(); }; + cancelButton.Accepting += (s, e) => + { + RequestStop(); + e.Handled = true; + }; streamDialog.Add(uriLabel, streamUrl, loadStreamButton, cancelButton); @@ -491,7 +511,11 @@ __ ___ _ _____ __ X = Pos.Center(), }; - closeButton.Accepting += (s, args) => { RequestStop(); }; + closeButton.Accepting += (s, e) => + { + RequestStop(); + e.Handled = true; + }; aboutDialog.Add(asciiLabel, infoLabel); aboutDialog.AddButton(closeButton); From 77b2afe26d1c99bff83962a466f92eeed38c7827 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 18:55:24 -0400 Subject: [PATCH 049/146] Update private fields to use readonly. --- src/UI/Tui.cs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index bb3b9fd..162abae 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -15,14 +15,15 @@ namespace MusicSharp.UI; public class Tui : Toplevel { private readonly IPlayer _player; - private ProgressBar _progressBar; + private readonly ProgressBar _progressBar; private object? _mainLoopTimeout; - private readonly uint _mainLoopTimeoutTick = 100; // ms - private Window? _nowPlayingWindow; - private Label _nowPlayingLabel; - private Label _timePlayedLabel; - private ListView? _libraryListView; - private ObservableCollection _playlistTracks = []; + private readonly Window? _nowPlayingWindow; + private readonly Label _nowPlayingLabel; + private readonly Label _timePlayedLabel; + private readonly ListView? _libraryListView; + private readonly ObservableCollection _playlistTracks = []; + + private const uint MainLoopTimeoutTick = 100; // ms public Tui(IPlayer player) { @@ -383,7 +384,7 @@ private void OpenStream() private void RunMainLoop() { _mainLoopTimeout = Application.AddTimeout( - TimeSpan.FromMilliseconds(_mainLoopTimeoutTick), + TimeSpan.FromMilliseconds(MainLoopTimeoutTick), () => { while (_player.CurrentTime < _player.TrackLength && _player.PlayerState != EPlayerStatus.Stopped) From 88caa00829e4beddf81b0ff156445032efbec7e3 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 18:58:18 -0400 Subject: [PATCH 050/146] Update packages - z440.atl.core 6.19.0 --> 7.1.0 - System.Text.Json 9.0.3 --> 9.0.7 - Microsoft.CodeAnalysis.Common 4.13.0 --> 4.14.0 --- src/MusicSharp.csproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index 56185dd..b0b81ec 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -20,12 +20,12 @@ - + - + - + From 3152ba30c2c0245548506df01a65283dca5aa43d Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 19:07:31 -0400 Subject: [PATCH 051/146] Downgrade Terminal.Gui from nightly to latest stable alpha 2.0.0-develop 4525 --> 2.0.0-alpha.3721 --- src/MusicSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index b0b81ec..bdaaea6 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -24,7 +24,7 @@ - + From 02ec48425e6edb3556351008a6928caccaea4f27 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 21:00:13 -0400 Subject: [PATCH 052/146] Add comments for IsStreamLoaded. --- src/AudioPlayer/IPlayer.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index 2afc85f..65d872b 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -10,7 +10,7 @@ namespace MusicSharp.AudioPlayer; public interface IPlayer: IDisposable { /// - /// Gets or sets a value indicating whether the audio player is playing. + /// Gets a value indicating whether the audio player is playing. /// EPlayerStatus PlayerState { get; } @@ -29,6 +29,9 @@ public interface IPlayer: IDisposable /// string LastFileOpened { get; set; } + /// + /// Indicates whether an audio stream is loaded. + /// bool IsStreamLoaded { get; } /// From 05b564d51159d7c470da2730698d527598fd9c09 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 21:06:56 -0400 Subject: [PATCH 053/146] Add idea/ folder to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index e553c84..62540f3 100644 --- a/.gitignore +++ b/.gitignore @@ -364,3 +364,5 @@ FodyWeavers.xsd # Visual Studio Code .vscode + +.idea/ \ No newline at end of file From 2088ef417889ac0adadfae55f0b8472ff035615c Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 21:08:56 -0400 Subject: [PATCH 054/146] Remove .idea/ folder --- .idea/.idea.MusicSharp/.idea/.gitignore | 13 ------------- .idea/.idea.MusicSharp/.idea/encodings.xml | 4 ---- .idea/.idea.MusicSharp/.idea/indexLayout.xml | 10 ---------- .idea/.idea.MusicSharp/.idea/vcs.xml | 6 ------ 4 files changed, 33 deletions(-) delete mode 100644 .idea/.idea.MusicSharp/.idea/.gitignore delete mode 100644 .idea/.idea.MusicSharp/.idea/encodings.xml delete mode 100644 .idea/.idea.MusicSharp/.idea/indexLayout.xml delete mode 100644 .idea/.idea.MusicSharp/.idea/vcs.xml diff --git a/.idea/.idea.MusicSharp/.idea/.gitignore b/.idea/.idea.MusicSharp/.idea/.gitignore deleted file mode 100644 index 97791b0..0000000 --- a/.idea/.idea.MusicSharp/.idea/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Rider ignored files -/modules.xml -/contentModel.xml -/projectSettingsUpdater.xml -/.idea.MusicSharp.iml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/.idea.MusicSharp/.idea/encodings.xml b/.idea/.idea.MusicSharp/.idea/encodings.xml deleted file mode 100644 index df87cf9..0000000 --- a/.idea/.idea.MusicSharp/.idea/encodings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/.idea.MusicSharp/.idea/indexLayout.xml b/.idea/.idea.MusicSharp/.idea/indexLayout.xml deleted file mode 100644 index 323a9b7..0000000 --- a/.idea/.idea.MusicSharp/.idea/indexLayout.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - . - - - - - \ No newline at end of file diff --git a/.idea/.idea.MusicSharp/.idea/vcs.xml b/.idea/.idea.MusicSharp/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/.idea.MusicSharp/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 8d01dffc6a06fda8048d4a4b7c957bfdde4308aa Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 21:19:59 -0400 Subject: [PATCH 055/146] Change playbackControls and nowPlaying from Window to View type. --- src/UI/Tui.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 162abae..a92cdcf 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -17,7 +17,6 @@ public class Tui : Toplevel private readonly IPlayer _player; private readonly ProgressBar _progressBar; private object? _mainLoopTimeout; - private readonly Window? _nowPlayingWindow; private readonly Label _nowPlayingLabel; private readonly Label _timePlayedLabel; private readonly ListView? _libraryListView; @@ -138,7 +137,7 @@ public Tui(IPlayer player) #region PlayBackControls - var playbackControls = new Window() + var playbackControls = new View() { Title = "Playback", X = 0, @@ -265,7 +264,7 @@ public Tui(IPlayer player) #region PlaybackInfo - _nowPlayingWindow = new Window + var nowPlayingView = new View { Title = "Now playing", X = Pos.Right(playbackControls), @@ -283,7 +282,7 @@ public Tui(IPlayer player) Width = Dim.Fill(), }; - _nowPlayingWindow?.Add(_nowPlayingLabel); + nowPlayingView?.Add(_nowPlayingLabel); _timePlayedLabel = new Label { @@ -292,10 +291,10 @@ public Tui(IPlayer player) Y = Pos.Bottom(_nowPlayingLabel) + 1, }; - _nowPlayingWindow.Add(_nowPlayingLabel, _timePlayedLabel); + nowPlayingView?.Add(_nowPlayingLabel, _timePlayedLabel); // Add the views to the main window - Add(menuBar, _libraryListView, _progressBar, playbackControls, _nowPlayingWindow, statusBar); + Add(menuBar, _libraryListView, _progressBar, playbackControls, nowPlayingView, statusBar); } #endregion From 8b0a5dd1c078337a98f3cd8ef76c0958c7e5e4c4 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 21:43:19 -0400 Subject: [PATCH 056/146] Adjust formatting --- src/Program.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Program.cs b/src/Program.cs index 6a1e3ce..1f88e20 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -4,6 +4,7 @@ using SoundFlow.Backends.MiniAudio; using SoundFlow.Enums; using Terminal.Gui.App; +using Terminal.Gui.Configuration; namespace MusicSharp; @@ -17,14 +18,14 @@ public static class Program /// public static void Main() { - var soundEngine = new MiniAudioEngine(44100, Capability.Playback); using var httpClient = new HttpClient(); IStreamConverter streamConverter = new SoundFlowPlayerStreamConverter(httpClient); + var soundEngine = new MiniAudioEngine(44100, Capability.Playback); using IPlayer player = new SoundFlowPlayer(soundEngine, streamConverter); + using var ui = new Tui(player); Application.Init(); - using var ui = new Tui(player); Application.Run(ui); - Application.Shutdown (); + Application.Shutdown(); } } \ No newline at end of file From bad15113cd60fae629e1139b323cdbb62142c899 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 23:19:38 -0400 Subject: [PATCH 057/146] Simplify player state logic by Refactoring PlayerState property to State & having it return the State property from the player class. --- src/AudioPlayer/IPlayer.cs | 5 ++--- src/AudioPlayer/SoundFlowPlayer.cs | 29 ++++++++++------------------- src/Enums/EPlayerStatus.cs | 11 ----------- src/UI/Tui.cs | 8 ++++---- 4 files changed, 16 insertions(+), 37 deletions(-) delete mode 100644 src/Enums/EPlayerStatus.cs diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index 65d872b..7cb9ce8 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -1,6 +1,5 @@ using System; -using System.IO; -using MusicSharp.Enums; +using SoundFlow.Enums; namespace MusicSharp.AudioPlayer; @@ -12,7 +11,7 @@ public interface IPlayer: IDisposable /// /// Gets a value indicating whether the audio player is playing. /// - EPlayerStatus PlayerState { get; } + PlaybackState State { get; } /// /// Returns the total length of the audio file. diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index dd342b2..e39f8a9 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -1,5 +1,4 @@ using System; -using MusicSharp.Enums; using SoundFlow.Backends.MiniAudio; using SoundFlow.Components; using SoundFlow.Enums; @@ -15,7 +14,9 @@ public sealed class SoundFlowPlayer : IPlayer private SoundPlayer? _player; private readonly IStreamConverter _streamConverter; - public EPlayerStatus PlayerState => GetPlayerStateMapper(); + // If we don't know the state of the player, default to stopped? + public PlaybackState State => _player?.State ?? PlaybackState.Stopped; + public string LastFileOpened { get; set; } public float TrackLength => _player?.Duration ?? 0; public float CurrentTime => _player?.Time ?? 0; @@ -27,11 +28,12 @@ public SoundFlowPlayer(MiniAudioEngine soundEngine, IStreamConverter streamConve _soundEngine = soundEngine; _streamConverter = streamConverter; } - + public void Play(string path) { var stream = _streamConverter.ConvertFileToStream(path); + // Test if this check is really necessary if (_player == null) { _player = new SoundPlayer(new StreamDataProvider(stream)); @@ -50,13 +52,13 @@ public void Play(string path) public void PlayPause() { - switch (PlayerState) + switch (_player?.State) { - case EPlayerStatus.Playing: + case PlaybackState.Playing: _player?.Pause(); break; - case EPlayerStatus.Paused: - case EPlayerStatus.Stopped: + case PlaybackState.Paused: + case PlaybackState.Stopped: _player?.Play(); break; default: @@ -66,7 +68,7 @@ public void PlayPause() public void Stop() { - if (PlayerState != EPlayerStatus.Stopped) + if (State != PlaybackState.Stopped) { _player?.Stop(); } @@ -98,15 +100,4 @@ public void Dispose() { _soundEngine.Dispose(); } - - private EPlayerStatus GetPlayerStateMapper() - { - return _player?.State switch - { - PlaybackState.Playing => EPlayerStatus.Playing, - PlaybackState.Paused => EPlayerStatus.Paused, - PlaybackState.Stopped => EPlayerStatus.Stopped, - _ => throw new ArgumentOutOfRangeException() - }; - } } \ No newline at end of file diff --git a/src/Enums/EPlayerStatus.cs b/src/Enums/EPlayerStatus.cs deleted file mode 100644 index 0870196..0000000 --- a/src/Enums/EPlayerStatus.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace MusicSharp.Enums; - -/// -/// The status of the audio player. -/// -public enum EPlayerStatus -{ - Playing, - Paused, - Stopped -} \ No newline at end of file diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index a92cdcf..7a70b74 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; using MusicSharp.AudioPlayer; -using MusicSharp.Enums; +using SoundFlow.Enums; using Terminal.Gui.App; using Terminal.Gui.Drawing; using Terminal.Gui.Input; @@ -386,7 +386,7 @@ private void RunMainLoop() TimeSpan.FromMilliseconds(MainLoopTimeoutTick), () => { - while (_player.CurrentTime < _player.TrackLength && _player.PlayerState != EPlayerStatus.Stopped) + while (_player.CurrentTime < _player.TrackLength && _player.State != PlaybackState.Stopped) { _progressBar.Fraction = _player.CurrentTime / _player.TrackLength; TimePlayedLabel(); @@ -446,7 +446,7 @@ private void SavePlaylist() private void TimePlayedLabel() { - if (_player.PlayerState != EPlayerStatus.Stopped) + if (_player.State != PlaybackState.Stopped) { if (_player.TrackLength > 3599) { @@ -492,7 +492,7 @@ __ ___ _ _____ __ var asciiLabel = new Label { Text = sb.ToString(), - X = 0, + X = Pos.Center(), Y = 0, }; From 02c3399a1716afcfd698b88288c67116b2c67797 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 23:28:10 -0400 Subject: [PATCH 058/146] Remove LastFileOpened property as it is no longer used. --- src/AudioPlayer/IPlayer.cs | 5 ----- src/AudioPlayer/SoundFlowPlayer.cs | 2 -- 2 files changed, 7 deletions(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index 7cb9ce8..065d8c8 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -22,11 +22,6 @@ public interface IPlayer: IDisposable /// Returns the current time played. /// float CurrentTime { get; } - - /// - /// Gets or sets the last file opened by the player. - /// - string LastFileOpened { get; set; } /// /// Indicates whether an audio stream is loaded. diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index e39f8a9..b2b2028 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -16,8 +16,6 @@ public sealed class SoundFlowPlayer : IPlayer // If we don't know the state of the player, default to stopped? public PlaybackState State => _player?.State ?? PlaybackState.Stopped; - - public string LastFileOpened { get; set; } public float TrackLength => _player?.Duration ?? 0; public float CurrentTime => _player?.Time ?? 0; public bool IsStreamLoaded => _player != null; From e46048a13df2f540a3981f1e77e8214514c5dbcc Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 14 Jul 2025 23:33:24 -0400 Subject: [PATCH 059/146] Remove unnecessary using statements. --- src/Program.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Program.cs b/src/Program.cs index 1f88e20..371b6b9 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -4,7 +4,6 @@ using SoundFlow.Backends.MiniAudio; using SoundFlow.Enums; using Terminal.Gui.App; -using Terminal.Gui.Configuration; namespace MusicSharp; From f097223c408902ce99273a87a8a0b3b7221ccabf Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 15 Jul 2025 18:08:10 -0400 Subject: [PATCH 060/146] Replace MenuBar with MenuBarV2. --- src/UI/Tui.cs | 79 +++++++++++++++++++-------------------------------- 1 file changed, 29 insertions(+), 50 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 7a70b74..7a285df 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -28,58 +28,37 @@ public Tui(IPlayer player) { _player = player; - var menuBar = new MenuBar() + var menuBar = new MenuBarv2() { Title = "MusicSharp", - MenusBorderStyle = LineStyle.Rounded, - Menus = - [ - new MenuBarItem( - "_File", - new MenuItem[] - { - new( - "_Open file", - "Open audio file", - OpenFile - ), - new( - "Open _stream", - "Open web stream", - OpenStream - ), - new( - "_Quit", - "Quit MusicSharp", - RequestStop - ) - } - ), - new MenuBarItem( - "Playlist", - new MenuItem[] - { - new( - "Open _playlist", - "Open a playlist", - OpenPlaylist - ), - new("_Save playlist", - "Save files to playlist", - SavePlaylist - ) - } - ), - new MenuBarItem( - "About", - new MenuItem[] - { - new("_About", - "About MusicSharp", - AboutDialog) - } - ) - ] + BorderStyle = LineStyle.Rounded, + Menus = + [ + new MenuBarItemv2( + Title = "_File", + new MenuItemv2[] + { + new("_Open file", "Open audio file", OpenFile), + new("Open _stream", "Open stream", OpenStream), + new("_Quit", "Quit MusicSharp", RequestStop) + } + ), + new MenuBarItemv2( + Title = "Playlist", + new MenuItemv2[] + { + new("Open _playlist", "Open a playlist", OpenPlaylist), + new("_Save playlist", "Save files to playlist", SavePlaylist) + } + ), + new MenuBarItemv2( + Title = "About", + new MenuItemv2[] + { + new("_About", "About MusicSharp", AboutDialog) + } + ), + ] }; var statusBar = new StatusBar([ From 81e1b6a50ac34148cf230b443b37e2f8321fe051 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 15 Jul 2025 18:24:45 -0400 Subject: [PATCH 061/146] Implement null check in library view before calling PlayHandler(). --- src/UI/Tui.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 7a285df..bb26d62 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -100,7 +100,13 @@ public Tui(IPlayer player) Source = new ListWrapper(_playlistTracks) }; - _libraryListView.OpenSelectedItem += (sender, args) => { PlayHandler(args.Value.ToString()); }; + _libraryListView.OpenSelectedItem += (sender, args) => + { + if (args.Value != null) + { + PlayHandler(args.Value.ToString()!); + } + }; _progressBar = new ProgressBar() { From 2d11ce24997d81fcabf94ce55a07d29ce65194f7 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 15 Jul 2025 18:37:43 -0400 Subject: [PATCH 062/146] Implement check to see if user has entered a streamUrl before playing. --- src/UI/Tui.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index bb26d62..1ba1308 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -350,7 +350,11 @@ private void OpenStream() loadStreamButton.Accepting += (s, e) => { - _player.Play(streamUrl.Text); + if (streamUrl.Text != string.Empty) + { + _player.Play(streamUrl.Text); + } + e.Handled = true; }; From 2e759229eb6547242bd2227fc9527bdaddfa108a Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 15 Jul 2025 18:50:21 -0400 Subject: [PATCH 063/146] Change location of _mainLoopTimeout --- src/UI/Tui.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 1ba1308..ff4c6d3 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -16,11 +16,11 @@ public class Tui : Toplevel { private readonly IPlayer _player; private readonly ProgressBar _progressBar; - private object? _mainLoopTimeout; private readonly Label _nowPlayingLabel; private readonly Label _timePlayedLabel; private readonly ListView? _libraryListView; private readonly ObservableCollection _playlistTracks = []; + private object? _mainLoopTimeout; private const uint MainLoopTimeoutTick = 100; // ms From eca252faabc5cb6d03180b515f599de4ff88dcf9 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 15 Jul 2025 18:52:09 -0400 Subject: [PATCH 064/146] Rename _playlistTracks field to the more appropriate _musicLibrary. --- src/UI/Tui.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index ff4c6d3..6c19903 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -19,7 +19,7 @@ public class Tui : Toplevel private readonly Label _nowPlayingLabel; private readonly Label _timePlayedLabel; private readonly ListView? _libraryListView; - private readonly ObservableCollection _playlistTracks = []; + private readonly ObservableCollection _musicLibrary = []; private object? _mainLoopTimeout; private const uint MainLoopTimeoutTick = 100; // ms @@ -97,7 +97,7 @@ public Tui(IPlayer player) Height = 12, CanFocus = false, BorderStyle = LineStyle.Rounded, - Source = new ListWrapper(_playlistTracks) + Source = new ListWrapper(_musicLibrary) }; _libraryListView.OpenSelectedItem += (sender, args) => @@ -410,7 +410,7 @@ private void OpenPlaylist() foreach (var track in playlist) { - _playlistTracks.Add(track); + _musicLibrary.Add(track); } } } @@ -428,7 +428,7 @@ private void SavePlaylist() if (!d.Canceled) { - var currentTracks = _playlistTracks.ToList(); + var currentTracks = _musicLibrary.ToList(); Playlist.SavePlaylistToFile(d.FileName, currentTracks); } } From ac7e560408748258e35ad85013bf3def17047d8e Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 15 Jul 2025 19:14:00 -0400 Subject: [PATCH 065/146] Nav menu code formatting fix. --- src/UI/Tui.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 6c19903..fe57372 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -52,11 +52,11 @@ public Tui(IPlayer player) } ), new MenuBarItemv2( - Title = "About", - new MenuItemv2[] - { - new("_About", "About MusicSharp", AboutDialog) - } + Title = "About", + new MenuItemv2[] + { + new("_About", "About MusicSharp", AboutDialog) + } ), ] }; From b4048b8f41626a31c1bd0448d40625cca9a822b5 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 15 Jul 2025 19:29:35 -0400 Subject: [PATCH 066/146] Rename library to playlist. --- src/UI/Tui.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index fe57372..c16cdc3 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -18,8 +18,8 @@ public class Tui : Toplevel private readonly ProgressBar _progressBar; private readonly Label _nowPlayingLabel; private readonly Label _timePlayedLabel; - private readonly ListView? _libraryListView; - private readonly ObservableCollection _musicLibrary = []; + private readonly ListView? _playlistView; + private readonly ObservableCollection _loadedPlaylist = []; private object? _mainLoopTimeout; private const uint MainLoopTimeoutTick = 100; // ms @@ -88,19 +88,19 @@ public Tui(IPlayer player) } ]); - _libraryListView = new ListView + _playlistView = new ListView { - Title = "Library", + Title = "Playlist", X = 0, Y = Pos.Bottom(menuBar), Width = Dim.Fill(), Height = 12, CanFocus = false, BorderStyle = LineStyle.Rounded, - Source = new ListWrapper(_musicLibrary) + Source = new ListWrapper(_loadedPlaylist) }; - _libraryListView.OpenSelectedItem += (sender, args) => + _playlistView.OpenSelectedItem += (sender, args) => { if (args.Value != null) { @@ -112,7 +112,7 @@ public Tui(IPlayer player) { Title = "Progress", X = 0, - Y = Pos.Bottom(_libraryListView), + Y = Pos.Bottom(_playlistView), Width = Dim.Fill(), Height = 3, CanFocus = false, @@ -279,7 +279,7 @@ public Tui(IPlayer player) nowPlayingView?.Add(_nowPlayingLabel, _timePlayedLabel); // Add the views to the main window - Add(menuBar, _libraryListView, _progressBar, playbackControls, nowPlayingView, statusBar); + Add(menuBar, _playlistView, _progressBar, playbackControls, nowPlayingView, statusBar); } #endregion @@ -410,7 +410,7 @@ private void OpenPlaylist() foreach (var track in playlist) { - _musicLibrary.Add(track); + _loadedPlaylist.Add(track); } } } @@ -428,7 +428,7 @@ private void SavePlaylist() if (!d.Canceled) { - var currentTracks = _musicLibrary.ToList(); + var currentTracks = _loadedPlaylist.ToList(); Playlist.SavePlaylistToFile(d.FileName, currentTracks); } } From 680ee150b909db383fca9688a32cb85d21b3a2ed Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 15 Jul 2025 20:08:53 -0400 Subject: [PATCH 067/146] Implement basic add file to playlist functionality. --- src/UI/Tui.cs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index c16cdc3..8fbe42d 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -47,6 +47,7 @@ public Tui(IPlayer player) Title = "Playlist", new MenuItemv2[] { + new("_Add to playlist", "Add track(s) to playlist", AddToPlaylist), new("Open _playlist", "Open a playlist", OpenPlaylist), new("_Save playlist", "Save files to playlist", SavePlaylist) } @@ -393,6 +394,27 @@ private void NowPlaying(string trackName) _nowPlayingLabel.Text = trackName; } + #region PlaylistMethods + private void AddToPlaylist() + { + var d = new OpenDialog() + { + AllowsMultipleSelection = true, + Title = "Add tracks to playlist", + AllowedTypes = [new AllowedType("Allowed filetypes", ".mp3", ".flac", ".wav")] + }; + + Application.Run(d); + + if (!d.Canceled) + { + foreach (var track in d.FilePaths) + { + _loadedPlaylist.Add(track); + } + } + } + private void OpenPlaylist() { var d = new OpenDialog() @@ -432,6 +454,8 @@ private void SavePlaylist() Playlist.SavePlaylistToFile(d.FileName, currentTracks); } } + + #endregion private void TimePlayedLabel() { From ad99d9d60f198da82bbd0036e06d6a16a2610580 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 15 Jul 2025 20:57:25 -0400 Subject: [PATCH 068/146] Reset TimePlayedLabel and progressbar when stop button is clicked. --- src/UI/Tui.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 8fbe42d..cb64693 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -28,6 +28,8 @@ public Tui(IPlayer player) { _player = player; + #region Menus + var menuBar = new MenuBarv2() { Title = "MusicSharp", @@ -83,11 +85,13 @@ public Tui(IPlayer player) }, new Shortcut { - Text = "Open playlist", + Text = "Load playlist", Key = Key.F3, Action = OpenPlaylist } ]); + + #endregion Menus _playlistView = new ListView { @@ -96,9 +100,10 @@ public Tui(IPlayer player) Y = Pos.Bottom(menuBar), Width = Dim.Fill(), Height = 12, - CanFocus = false, + CanFocus = true, BorderStyle = LineStyle.Rounded, - Source = new ListWrapper(_loadedPlaylist) + Source = new ListWrapper(_loadedPlaylist), + AllowsMarking = true, }; _playlistView.OpenSelectedItem += (sender, args) => @@ -149,7 +154,7 @@ public Tui(IPlayer player) Y = Pos.Bottom(playPauseButton), IsDefault = false, CanFocus = true, - Text = "Stop" + Text = "Stop", }; var volumeIncreaseButton = new Button @@ -202,6 +207,8 @@ public Tui(IPlayer player) if (_player.IsStreamLoaded) { _player.Stop(); + _progressBar.Fraction = 0; + TimePlayedLabel(); } e.Handled = true; From 723ba7c406bb8d19ebef0f95ee28c4b195106c53 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 28 Jul 2025 18:58:34 -0400 Subject: [PATCH 069/146] Update playlist height. --- src/UI/Tui.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index cb64693..9d16f24 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -99,7 +99,7 @@ public Tui(IPlayer player) X = 0, Y = Pos.Bottom(menuBar), Width = Dim.Fill(), - Height = 12, + Height = Dim.Fill(10), CanFocus = true, BorderStyle = LineStyle.Rounded, Source = new ListWrapper(_loadedPlaylist), From 6ba4678a575822ffb438bfe83058c691fcd3069f Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 28 Jul 2025 19:22:16 -0400 Subject: [PATCH 070/146] Formatting fix --- src/UI/Tui.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 9d16f24..9cedd46 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -250,8 +250,8 @@ public Tui(IPlayer player) e.Handled = true; }; - playbackControls.Add(playPauseButton, stopButton, volumeIncreaseButton, volumeDecreaseButton, seekForwardButton, - seekBackwardButton); + playbackControls.Add(playPauseButton, stopButton, volumeIncreaseButton, + volumeDecreaseButton, seekForwardButton, seekBackwardButton); #endregion From 8aa290d7f0ea072a82c35abd0a9281e5271b27a0 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 28 Jul 2025 19:36:34 -0400 Subject: [PATCH 071/146] Update GetTrackData() method to return "Unknown" if one of the track properties is unknown. --- src/FileData/TrackData.cs | 17 ++++------------- src/UI/Tui.cs | 2 +- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/FileData/TrackData.cs b/src/FileData/TrackData.cs index 5428ac1..113f191 100644 --- a/src/FileData/TrackData.cs +++ b/src/FileData/TrackData.cs @@ -4,21 +4,12 @@ namespace MusicSharp.FileData; public static class TrackData { - public static Track GetTrackData(string filePath) - { - var track = new Track(filePath); - return track; - } - - public static string GetTrackAndArtistName(string filePath) + public static string GetTrackData(string filePath) { var trackData = new Track(filePath); - - if (trackData.Title == string.Empty) - { - return "Unknown - Unknown"; - } - return trackData.Title + " - " + trackData.Artist; + return $"{(string.IsNullOrWhiteSpace(trackData.Artist) ? "Unknown" : trackData.Artist)} - " + + $"{(string.IsNullOrWhiteSpace(trackData.Title) ? "Unknown" : trackData.Title)} - " + + $"{(string.IsNullOrWhiteSpace(trackData.Album) ? "Unknown": trackData.Album)}"; } } \ No newline at end of file diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 9cedd46..61bf765 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -298,7 +298,7 @@ private void PlayHandler(string filePath) { _player.Play(filePath); RunMainLoop(); - NowPlaying(FileData.TrackData.GetTrackAndArtistName(filePath)); + NowPlaying(FileData.TrackData.GetTrackData(filePath)); } private void OpenFile() From a351dafdc95d58ca8a392a034a812287ecc86895 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 28 Jul 2025 19:40:19 -0400 Subject: [PATCH 072/146] Refactor Playlist.cs into FileData directory. --- MusicSharpTests/PlaylistLoaderTests.cs | 2 +- src/{ => FileData}/Playlist.cs | 2 +- src/UI/Tui.cs | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) rename src/{ => FileData}/Playlist.cs (96%) diff --git a/MusicSharpTests/PlaylistLoaderTests.cs b/MusicSharpTests/PlaylistLoaderTests.cs index 19d894a..286e687 100644 --- a/MusicSharpTests/PlaylistLoaderTests.cs +++ b/MusicSharpTests/PlaylistLoaderTests.cs @@ -1,4 +1,4 @@ -using MusicSharp; +using MusicSharp.FileData; namespace MusicSharpTests; diff --git a/src/Playlist.cs b/src/FileData/Playlist.cs similarity index 96% rename from src/Playlist.cs rename to src/FileData/Playlist.cs index 55cb8b7..1ab856e 100644 --- a/src/Playlist.cs +++ b/src/FileData/Playlist.cs @@ -2,7 +2,7 @@ using System.Linq; using ATL.Playlist; -namespace MusicSharp; +namespace MusicSharp.FileData; public static class Playlist { diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 61bf765..5758d68 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Text; using MusicSharp.AudioPlayer; +using MusicSharp.FileData; using SoundFlow.Enums; using Terminal.Gui.App; using Terminal.Gui.Drawing; From 697d73f9b4fc7b1f2956eeb62fda543f50ec81b1 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 28 Jul 2025 21:31:04 -0400 Subject: [PATCH 073/146] Align TimePlayed Label to bottom right of view. --- src/UI/Tui.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 5758d68..d89ab68 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -281,8 +281,8 @@ public Tui(IPlayer player) _timePlayedLabel = new Label { Text = $"00:00 / 00:00", - X = 0, - Y = Pos.Bottom(_nowPlayingLabel) + 1, + X = Pos.Align(Alignment.End), + Y = Pos.Align(Alignment.End), }; nowPlayingView?.Add(_nowPlayingLabel, _timePlayedLabel); @@ -299,7 +299,7 @@ private void PlayHandler(string filePath) { _player.Play(filePath); RunMainLoop(); - NowPlaying(FileData.TrackData.GetTrackData(filePath)); + NowPlaying(TrackData.GetTrackData(filePath)); } private void OpenFile() From e16d1d4356959ad3b82afd05cf6e151c81e78423 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 28 Jul 2025 22:10:09 -0400 Subject: [PATCH 074/146] Refactor about menu dialog. --- src/UI/Tui.cs | 157 +++++++++++++++++++++----------------------------- 1 file changed, 66 insertions(+), 91 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index d89ab68..8ccb297 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -22,7 +22,7 @@ public class Tui : Toplevel private readonly ListView? _playlistView; private readonly ObservableCollection _loadedPlaylist = []; private object? _mainLoopTimeout; - + private const uint MainLoopTimeoutTick = 100; // ms public Tui(IPlayer player) @@ -30,39 +30,46 @@ public Tui(IPlayer player) _player = player; #region Menus - + var menuBar = new MenuBarv2() { Title = "MusicSharp", BorderStyle = LineStyle.Rounded, - Menus = - [ - new MenuBarItemv2( - Title = "_File", - new MenuItemv2[] - { - new("_Open file", "Open audio file", OpenFile), - new("Open _stream", "Open stream", OpenStream), - new("_Quit", "Quit MusicSharp", RequestStop) - } - ), - new MenuBarItemv2( - Title = "Playlist", - new MenuItemv2[] - { - new("_Add to playlist", "Add track(s) to playlist", AddToPlaylist), - new("Open _playlist", "Open a playlist", OpenPlaylist), - new("_Save playlist", "Save files to playlist", SavePlaylist) - } - ), - new MenuBarItemv2( - Title = "About", - new MenuItemv2[] - { - new("_About", "About MusicSharp", AboutDialog) - } - ), - ] + Menus = + [ + new MenuBarItemv2( + Title = "_File", + new MenuItemv2[] + { + new("_Open file", "Open audio file", OpenFile), + new("Open _stream", "Open stream", OpenStream), + new("_Quit", "Quit MusicSharp", RequestStop) + } + ), + new MenuBarItemv2( + Title = "Playlist", + new MenuItemv2[] + { + new("_Add to playlist", "Add track(s) to playlist", AddToPlaylist), + new("Open _playlist", "Open a playlist", OpenPlaylist), + new("_Save playlist", "Save files to playlist", SavePlaylist) + } + ), + new MenuBarItemv2( + Title = "Help", + new MenuItemv2[] + { + new("_About...", "About MusicSharp", () => MessageBox.Query( + "", + GetAboutMessage(), + wrapMessage: false, + buttons: "_Ok" + ), + Key.A.WithCtrl + ) + } + ), + ] }; var statusBar = new StatusBar([ @@ -91,7 +98,7 @@ public Tui(IPlayer player) Action = OpenPlaylist } ]); - + #endregion Menus _playlistView = new ListView @@ -200,7 +207,7 @@ public Tui(IPlayer player) { _player.PlayPause(); } - + e.Handled = true; }; stopButton.Accepting += (s, e) => @@ -211,7 +218,7 @@ public Tui(IPlayer player) _progressBar.Fraction = 0; TimePlayedLabel(); } - + e.Handled = true; }; volumeIncreaseButton.Accepting += (s, e) => @@ -220,7 +227,7 @@ public Tui(IPlayer player) { _player.IncreaseVolume(); } - + e.Handled = true; }; volumeDecreaseButton.Accepting += (s, e) => @@ -229,7 +236,7 @@ public Tui(IPlayer player) { _player.DecreaseVolume(); } - + e.Handled = true; }; seekForwardButton.Accepting += (s, e) => @@ -238,7 +245,7 @@ public Tui(IPlayer player) { _player.SeekForward(); } - + e.Handled = true; }; seekBackwardButton.Accepting += (s, e) => @@ -247,12 +254,12 @@ public Tui(IPlayer player) { _player.SeekBackward(); } - + e.Handled = true; }; - playbackControls.Add(playPauseButton, stopButton, volumeIncreaseButton, - volumeDecreaseButton, seekForwardButton, seekBackwardButton); + playbackControls.Add(playPauseButton, stopButton, volumeIncreaseButton, + volumeDecreaseButton, seekForwardButton, seekBackwardButton); #endregion @@ -361,9 +368,9 @@ private void OpenStream() { if (streamUrl.Text != string.Empty) { - _player.Play(streamUrl.Text); + _player.Play(streamUrl.Text); } - + e.Handled = true; }; @@ -403,6 +410,7 @@ private void NowPlaying(string trackName) } #region PlaylistMethods + private void AddToPlaylist() { var d = new OpenDialog() @@ -411,7 +419,7 @@ private void AddToPlaylist() Title = "Add tracks to playlist", AllowedTypes = [new AllowedType("Allowed filetypes", ".mp3", ".flac", ".wav")] }; - + Application.Run(d); if (!d.Canceled) @@ -462,7 +470,7 @@ private void SavePlaylist() Playlist.SavePlaylistToFile(d.FileName, currentTracks); } } - + #endregion private void TimePlayedLabel() @@ -492,56 +500,23 @@ private void TimePlayedLabel() } } - private void AboutDialog() + private static string GetAboutMessage() { - var aboutDialog = new Dialog - { - X = Pos.Center(), - Y = Pos.Center(), - }; - var sb = new StringBuilder(); - sb.Append(""" - __ ___ _ _____ __ - / |/ /_ _______(_)____/ ___// /_ ____ __________ - / /|_/ / / / / ___/ / ___/\__ \/ __ \/ __ `/ ___/ __ \ - / / / / /_/ (__ ) / /__ ___/ / / / / /_/ / / / /_/ / - /_/ /_/\__,_/____/_/\___//____/_/ /_/\__,_/_/ / .___/ - /_/ - """); - - var asciiLabel = new Label - { - Text = sb.ToString(), - X = Pos.Center(), - Y = 0, - }; - - var infoLabel = new Label - { - Text = "MusicSharp v2.0.0\nCreated by Mark-James M.", - X = Pos.Center(), - Y = Pos.Bottom(asciiLabel), - Width = Dim.Auto(), - Height = Dim.Auto() - }; - - var closeButton = new Button - { - Text = "Close", - X = Pos.Center(), - }; - - closeButton.Accepting += (s, e) => - { - RequestStop(); - e.Handled = true; - }; - - aboutDialog.Add(asciiLabel, infoLabel); - aboutDialog.AddButton(closeButton); - - Application.Run(aboutDialog); + sb.AppendLine(""" + __ ___ _ _____ __ + / |/ /_ _______(_)____/ ___// /_ ____ __________ + / /|_/ / / / / ___/ / ___/\__ \/ __ \/ __ `/ ___/ __ \ + / / / / /_/ (__ ) / /__ ___/ / / / / /_/ / / / /_/ / + /_/ /_/\__,_/____/_/\___//____/_/ /_/\__,_/_/ / .___/ + /_/ + """); + + sb.AppendLine(); + sb.AppendLine("MusicSharp v2.0.0"); + sb.AppendLine("Created by Mark-James M."); + + return sb.ToString(); } #endregion From ff7e5baef41a2b3904571e92ca1139e286f494ae Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 28 Jul 2025 23:09:44 -0400 Subject: [PATCH 075/146] - AutoShow playlistView scrollbars - Add colors for playlistView items. --- src/UI/Tui.cs | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 8ccb297..2ab8350 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -10,6 +10,7 @@ using Terminal.Gui.Input; using Terminal.Gui.ViewBase; using Terminal.Gui.Views; +using Attribute = Terminal.Gui.Drawing.Attribute; namespace MusicSharp.UI; @@ -19,7 +20,7 @@ public class Tui : Toplevel private readonly ProgressBar _progressBar; private readonly Label _nowPlayingLabel; private readonly Label _timePlayedLabel; - private readonly ListView? _playlistView; + private readonly ListView _playlistView; private readonly ObservableCollection _loadedPlaylist = []; private object? _mainLoopTimeout; @@ -113,7 +114,10 @@ public Tui(IPlayer player) Source = new ListWrapper(_loadedPlaylist), AllowsMarking = true, }; - + + _playlistView.RowRender += PlaylistView_RowRender; + _playlistView.VerticalScrollBar.AutoShow = true; + _playlistView.HorizontalScrollBar.AutoShow = true; _playlistView.OpenSelectedItem += (sender, args) => { if (args.Value != null) @@ -300,8 +304,6 @@ public Tui(IPlayer player) #endregion - #region ActionMethods - private void PlayHandler(string filePath) { _player.Play(filePath); @@ -518,6 +520,28 @@ __ ___ _ _____ __ return sb.ToString(); } + + private void PlaylistView_RowRender (object? sender, ListViewRowEventArgs obj) + { + if (obj.Row == _playlistView.SelectedItem) + { + return; + } - #endregion + if (_playlistView.AllowsMarking && _playlistView.Source.IsMarked (obj.Row)) + { + obj.RowAttribute = new Attribute (Color.Black, Color.White); + + return; + } + + if (obj.Row % 2 == 0) + { + obj.RowAttribute = new Attribute (Color.Green, Color.Black); + } + else + { + obj.RowAttribute = new Attribute (Color.Black, Color.Green); + } + } } \ No newline at end of file From cc2f8f568d26e07e3797beb6b241b2a646905d3b Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 28 Jul 2025 23:41:21 -0400 Subject: [PATCH 076/146] Remove redundant call to _player.Play(). --- src/UI/Tui.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 2ab8350..bef4c66 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -324,7 +324,6 @@ private void OpenFile() if (!d.Canceled) { - _player.Play(d.FilePaths[0]); PlayHandler(d.FilePaths[0]); } } From cd761a2fc6a852c53d4dbe36b4a0d523155fe662 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 00:13:06 -0400 Subject: [PATCH 077/146] Update SoundFlow from 1.1.1 --> 1.2.0 --- src/MusicSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index bdaaea6..7b632e6 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -22,7 +22,7 @@ - + From 2302cad22fa0f5b820bb45464fdb938986d9621a Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 19:15:49 -0400 Subject: [PATCH 078/146] Major refactor to align with SoundFlow 1.2.0 changes Added more robust error handling --- src/AudioPlayer/IPlayer.cs | 11 +- src/AudioPlayer/SoundFlowPlayer.cs | 144 +++++++++++++++++------- src/Enums/EFileType.cs | 3 +- src/Program.cs | 10 +- src/UI/Tui.cs | 172 +++++++++++++---------------- 5 files changed, 199 insertions(+), 141 deletions(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index 065d8c8..3a5713f 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -1,4 +1,5 @@ using System; +using MusicSharp.Enums; using SoundFlow.Enums; namespace MusicSharp.AudioPlayer; @@ -27,12 +28,18 @@ public interface IPlayer: IDisposable /// Indicates whether an audio stream is loaded. /// bool IsStreamLoaded { get; } + + /// + /// Indicates the type of audio stream loaded. + /// + EFileType GetISoundDataProviderType { get; } /// /// Method to play audio. /// - /// The path to the file or stream. - void Play(string path); + /// The filepath to the file or stream. + /// The type of audio (File or WebStream). + void Play(string filepath, EFileType fileType); /// /// Method to pause audio playback. diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index b2b2028..9c18040 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -1,101 +1,169 @@ using System; +using System.IO; +using System.Linq; +using MusicSharp.Enums; +using SoundFlow.Abstracts.Devices; using SoundFlow.Backends.MiniAudio; using SoundFlow.Components; using SoundFlow.Enums; +using SoundFlow.Interfaces; using SoundFlow.Providers; +using SoundFlow.Structs; namespace MusicSharp.AudioPlayer; -// Cross-platform sound engine that works for all devices that -// the .NET platform runs on. public sealed class SoundFlowPlayer : IPlayer { - private readonly MiniAudioEngine _soundEngine; + private readonly MiniAudioEngine _audioEngine; + private readonly AudioPlaybackDevice _audioPlaybackDevice; + private readonly AudioFormat _audioFormat; + private ISoundDataProvider? _streamProvider; private SoundPlayer? _player; - private readonly IStreamConverter _streamConverter; - + // If we don't know the state of the player, default to stopped? public PlaybackState State => _player?.State ?? PlaybackState.Stopped; public float TrackLength => _player?.Duration ?? 0; public float CurrentTime => _player?.Time ?? 0; public bool IsStreamLoaded => _player != null; + public EFileType GetISoundDataProviderType + { + get + { + if (_streamProvider?.GetType() == typeof(StreamDataProvider)) + { + return EFileType.File; + } + if (_streamProvider?.GetType() == typeof(NetworkDataProvider)) + { + return EFileType.WebStream; + } - public SoundFlowPlayer(MiniAudioEngine soundEngine, IStreamConverter streamConverter) - { - _soundEngine = soundEngine; - _streamConverter = streamConverter; + return EFileType.NotLoaded; + } } - public void Play(string path) + public SoundFlowPlayer(MiniAudioEngine audioEngine) { - var stream = _streamConverter.ConvertFileToStream(path); + _audioEngine = audioEngine; - // Test if this check is really necessary - if (_player == null) + var defaultPlaybackDevice = _audioEngine.PlaybackDevices.FirstOrDefault(d => d.IsDefault); + + // Handle case no default playback device is found. + if (defaultPlaybackDevice.Id == IntPtr.Zero) { - _player = new SoundPlayer(new StreamDataProvider(stream)); } + + _audioFormat = new AudioFormat + { + Format = SampleFormat.F32, + SampleRate = 48000, + Channels = 2 + }; - if (_player.State == PlaybackState.Playing ) + // Initialize the playback device. This manages the connection to the physical audio hardware. + _audioPlaybackDevice = _audioEngine.InitializePlaybackDevice(defaultPlaybackDevice, _audioFormat); + } + + public void Play(string filepath, EFileType fileType) + { + if (_player?.State == PlaybackState.Playing) { _player.Stop(); + _audioPlaybackDevice.Stop(); + } + + if (fileType == EFileType.File) + { + _streamProvider = new StreamDataProvider(_audioEngine, _audioFormat, File.OpenRead(filepath)); + } + + if (fileType == EFileType.WebStream) + { + _streamProvider = new NetworkDataProvider(_audioEngine, _audioFormat, filepath); + } + + if (_streamProvider != null) + { + _player = new SoundPlayer(_audioEngine, _audioFormat, _streamProvider); + _audioPlaybackDevice.MasterMixer.AddComponent(_player); + _audioPlaybackDevice.Start(); + _player.Play(); } - - _player = new SoundPlayer(new StreamDataProvider(stream)); - - Mixer.Master.AddComponent(_player); - _player.Play(); } public void PlayPause() { - switch (_player?.State) + if (_player != null) { - case PlaybackState.Playing: - _player?.Pause(); - break; - case PlaybackState.Paused: - case PlaybackState.Stopped: - _player?.Play(); - break; - default: - throw new ArgumentOutOfRangeException(); + switch (_player.State) + { + case PlaybackState.Playing: + _player?.Pause(); + break; + case PlaybackState.Paused: + case PlaybackState.Stopped: + _player?.Play(); + break; + default: + throw new ArgumentOutOfRangeException(); + } } } public void Stop() { - if (State != PlaybackState.Stopped) + if (_player != null && _player.State != PlaybackState.Stopped) { _player?.Stop(); + _audioPlaybackDevice.Stop(); } } public void IncreaseVolume() { - // Need to verify what SoundFlow's max volume level is - // For now this should be enough based on testing - _player.Volume = Math.Clamp(_player.Volume + .1f, 0f, 2f); + if (_player !=null) + { + // Need to verify what SoundFlow's max volume level is + // For now this should be enough based on testing + _player.Volume = Math.Clamp(_player.Volume + .1f, 0f, 2f); + } } public void DecreaseVolume() { - _player.Volume = Math.Clamp(_player.Volume - .1f, 0f, 2f); + if (_player != null) + { + _player.Volume = Math.Clamp(_player.Volume - .1f, 0f, 2f); + } } public void SeekForward() { - _player.Seek(Math.Clamp(_player.Time + 5f, 0f, _player.Duration - 0.1f)); + if (GetISoundDataProviderType == EFileType.File && _player != null) + { + if (_player.State is PlaybackState.Playing or PlaybackState.Paused) + { + _player.Seek(Math.Clamp(_player.Time + 5f, 0f, _player.Duration - 0.1f)); + } + } } public void SeekBackward() { - _player.Seek(Math.Clamp(_player.Time - 5f, 0f, _player.Duration)); + if (GetISoundDataProviderType == EFileType.File && _player != null) + { + if (_player.State is PlaybackState.Playing or PlaybackState.Paused) + { + _player.Seek(Math.Clamp(_player.Time - 5f, 0f, _player.Duration)); + } + } } public void Dispose() { - _soundEngine.Dispose(); + _audioPlaybackDevice.Dispose(); + _streamProvider?.Dispose(); + _player?.Dispose(); } } \ No newline at end of file diff --git a/src/Enums/EFileType.cs b/src/Enums/EFileType.cs index 1ea3943..100aa4d 100644 --- a/src/Enums/EFileType.cs +++ b/src/Enums/EFileType.cs @@ -3,5 +3,6 @@ namespace MusicSharp.Enums; public enum EFileType { File, - Stream + WebStream, + NotLoaded } \ No newline at end of file diff --git a/src/Program.cs b/src/Program.cs index 371b6b9..eb93eff 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -1,8 +1,6 @@ -using System.Net.Http; -using MusicSharp.UI; +using MusicSharp.UI; using MusicSharp.AudioPlayer; using SoundFlow.Backends.MiniAudio; -using SoundFlow.Enums; using Terminal.Gui.App; namespace MusicSharp; @@ -17,10 +15,8 @@ public static class Program /// public static void Main() { - using var httpClient = new HttpClient(); - IStreamConverter streamConverter = new SoundFlowPlayerStreamConverter(httpClient); - var soundEngine = new MiniAudioEngine(44100, Capability.Playback); - using IPlayer player = new SoundFlowPlayer(soundEngine, streamConverter); + using var audioEngine = new MiniAudioEngine(); + using IPlayer player = new SoundFlowPlayer(audioEngine); using var ui = new Tui(player); Application.Init(); diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index bef4c66..7cc98f1 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Text; using MusicSharp.AudioPlayer; +using MusicSharp.Enums; using MusicSharp.FileData; using SoundFlow.Enums; using Terminal.Gui.App; @@ -159,6 +160,12 @@ public Tui(IPlayer player) CanFocus = true, Text = "Play/Pause" }; + + playPauseButton.Accepting += (s, e) => + { + _player.PlayPause(); + e.Handled = true; + }; var stopButton = new Button { @@ -168,6 +175,14 @@ public Tui(IPlayer player) CanFocus = true, Text = "Stop", }; + + stopButton.Accepting += (s, e) => + { + _player.Stop(); + _progressBar.Fraction = 0; + TimePlayedLabel(); + e.Handled = true; + }; var volumeIncreaseButton = new Button { @@ -177,6 +192,12 @@ public Tui(IPlayer player) CanFocus = true, Text = "Volume +" }; + + volumeIncreaseButton.Accepting += (s, e) => + { + _player.IncreaseVolume(); + e.Handled = true; + }; var volumeDecreaseButton = new Button { @@ -186,6 +207,12 @@ public Tui(IPlayer player) IsDefault = false, Text = "Volume -" }; + + volumeDecreaseButton.Accepting += (s, e) => + { + _player.DecreaseVolume(); + e.Handled = true; + }; var seekForwardButton = new Button { @@ -195,6 +222,12 @@ public Tui(IPlayer player) CanFocus = true, Text = "Seek 5s" }; + + seekForwardButton.Accepting += (s, e) => + { + _player.SeekForward(); + e.Handled = true; + }; var seekBackwardButton = new Button { @@ -204,61 +237,10 @@ public Tui(IPlayer player) CanFocus = true, Text = "Seek -5s" }; - - playPauseButton.Accepting += (s, e) => - { - if (_player.IsStreamLoaded) - { - _player.PlayPause(); - } - - e.Handled = true; - }; - stopButton.Accepting += (s, e) => - { - if (_player.IsStreamLoaded) - { - _player.Stop(); - _progressBar.Fraction = 0; - TimePlayedLabel(); - } - - e.Handled = true; - }; - volumeIncreaseButton.Accepting += (s, e) => - { - if (_player.IsStreamLoaded) - { - _player.IncreaseVolume(); - } - - e.Handled = true; - }; - volumeDecreaseButton.Accepting += (s, e) => - { - if (_player.IsStreamLoaded) - { - _player.DecreaseVolume(); - } - - e.Handled = true; - }; - seekForwardButton.Accepting += (s, e) => - { - if (_player.IsStreamLoaded) - { - _player.SeekForward(); - } - - e.Handled = true; - }; + seekBackwardButton.Accepting += (s, e) => { - if (_player.IsStreamLoaded) - { - _player.SeekBackward(); - } - + _player.SeekBackward(); e.Handled = true; }; @@ -287,7 +269,7 @@ public Tui(IPlayer player) Width = Dim.Fill(), }; - nowPlayingView?.Add(_nowPlayingLabel); + // nowPlayingView?.Add(_nowPlayingLabel); _timePlayedLabel = new Label { @@ -304,13 +286,6 @@ public Tui(IPlayer player) #endregion - private void PlayHandler(string filePath) - { - _player.Play(filePath); - RunMainLoop(); - NowPlaying(TrackData.GetTrackData(filePath)); - } - private void OpenFile() { var d = new OpenDialog() @@ -353,35 +328,36 @@ private void OpenStream() var loadStreamButton = new Button { - Text = "Load stream", + Text = "Open stream", X = Pos.Center(), Y = Pos.Bottom(streamUrl), }; - - var cancelButton = new Button - { - Text = "Cancel", - X = Pos.Right(loadStreamButton), - Y = Pos.Bottom(streamUrl) - }; - + loadStreamButton.Accepting += (s, e) => { if (streamUrl.Text != string.Empty) { - _player.Play(streamUrl.Text); + _player.Play(streamUrl.Text, EFileType.WebStream); } e.Handled = true; + RequestStop(); }; - cancelButton.Accepting += (s, e) => + var closeButton = new Button + { + Text = "Close", + X = Pos.Right(loadStreamButton), + Y = Pos.Bottom(streamUrl) + }; + + closeButton.Accepting += (s, e) => { - RequestStop(); e.Handled = true; + RequestStop(); }; - streamDialog.Add(uriLabel, streamUrl, loadStreamButton, cancelButton); + streamDialog.Add(uriLabel, streamUrl, loadStreamButton, closeButton); Application.Run(streamDialog); } @@ -500,25 +476,6 @@ private void TimePlayedLabel() _timePlayedLabel.Text = $"00:00 / 00:00"; } } - - private static string GetAboutMessage() - { - var sb = new StringBuilder(); - sb.AppendLine(""" - __ ___ _ _____ __ - / |/ /_ _______(_)____/ ___// /_ ____ __________ - / /|_/ / / / / ___/ / ___/\__ \/ __ \/ __ `/ ___/ __ \ - / / / / /_/ (__ ) / /__ ___/ / / / / /_/ / / / /_/ / - /_/ /_/\__,_/____/_/\___//____/_/ /_/\__,_/_/ / .___/ - /_/ - """); - - sb.AppendLine(); - sb.AppendLine("MusicSharp v2.0.0"); - sb.AppendLine("Created by Mark-James M."); - - return sb.ToString(); - } private void PlaylistView_RowRender (object? sender, ListViewRowEventArgs obj) { @@ -543,4 +500,33 @@ private void PlaylistView_RowRender (object? sender, ListViewRowEventArgs obj) obj.RowAttribute = new Attribute (Color.Black, Color.Green); } } + + private void PlayHandler(string filePath) + { + _player.Play(filePath, EFileType.File); + + if (_player.State == PlaybackState.Playing) + { + RunMainLoop(); + NowPlaying(TrackData.GetTrackData(filePath)); + } + } + + private static string GetAboutMessage() + { + var sb = new StringBuilder(); + sb.AppendLine(""" + __ ___ _ _____ __ + / |/ /_ _______(_)____/ ___// /_ ____ __________ + / /|_/ / / / / ___/ / ___/\__ \/ __ \/ __ `/ ___/ __ \ + / / / / /_/ (__ ) / /__ ___/ / / / / /_/ / / / /_/ / + /_/ /_/\__,_/____/_/\___//____/_/ /_/\__,_/_/ / .___/ + /_/ + """); + sb.AppendLine(); + sb.AppendLine("MusicSharp v2.0.0"); + sb.AppendLine("Created by Mark-James M."); + + return sb.ToString(); + } } \ No newline at end of file From b538a06cfe7f48ddd1293b58f31fc4ce97af8016 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 19:46:06 -0400 Subject: [PATCH 079/146] Fix Now playing label so currently playing track wraps. --- src/UI/Tui.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 7cc98f1..d3876d3 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -9,6 +9,7 @@ using Terminal.Gui.App; using Terminal.Gui.Drawing; using Terminal.Gui.Input; +using Terminal.Gui.Text; using Terminal.Gui.ViewBase; using Terminal.Gui.Views; using Attribute = Terminal.Gui.Drawing.Attribute; @@ -267,9 +268,10 @@ public Tui(IPlayer player) X = 0, Y = 0, Width = Dim.Fill(), + Height = Dim.Fill(), + TextDirection = TextDirection.LeftRight_TopBottom }; - - // nowPlayingView?.Add(_nowPlayingLabel); + _nowPlayingLabel.TextFormatter.WordWrap = true; _timePlayedLabel = new Label { From 4c1f25ed588eb74d9512fd29eb8f5855a48d979a Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 19:55:41 -0400 Subject: [PATCH 080/146] Add "Add file to playlist" shortcut --- src/UI/Tui.cs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index d3876d3..2679c8e 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -76,12 +76,6 @@ public Tui(IPlayer player) }; var statusBar = new StatusBar([ - new Shortcut - { - Text = "Quit", - Key = Key.Esc, - Action = RequestStop - }, new Shortcut { Text = "Open file", @@ -99,7 +93,19 @@ public Tui(IPlayer player) Text = "Load playlist", Key = Key.F3, Action = OpenPlaylist - } + }, + new Shortcut + { + Text = "Add file to playlist", + Key = Key.F4, + Action = OpenPlaylist + }, + new Shortcut + { + Text = "Quit", + Key = Key.Esc, + Action = RequestStop + }, ]); #endregion Menus From 9990eebc6ac56fa9308e295be152c7833bb66544 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 22:22:30 -0400 Subject: [PATCH 081/146] Display empty now playing string when player is stopped. --- src/UI/Tui.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 2679c8e..0df0789 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -188,6 +188,7 @@ public Tui(IPlayer player) _player.Stop(); _progressBar.Fraction = 0; TimePlayedLabel(); + NowPlaying(string.Empty); e.Handled = true; }; From 4dcc24e7e5908a2b545ae4b6ee0daced6e474366 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 23:14:26 -0400 Subject: [PATCH 082/146] Add PublishSingleFile, PublishTrimmed, and TrimmerRootAssemblies. Add RuntimeIdentifiers Change Microsoft.CodeAnalysis.Common & Microsoft.CodeAnalysis.Workspaces.Common from version 4.13.0 to 4.11.0. --- src/MusicSharp.csproj | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index 7b632e6..883b982 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -3,14 +3,21 @@ Exe net9.0 - 1.0.0 + true + true + true + osx-x64 + 2.0.0 Mark-James McDougall Mark-James McDougall enable - - MusicSharp.ico + + + + + @@ -20,10 +27,9 @@ - - + + - From 34620a804eb87f8e9c702fdc6987ba7485ea50f1 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 23:15:24 -0400 Subject: [PATCH 083/146] Remove stylecop from project. --- src/MusicSharp.csproj | 8 -------- src/stylecop.json | 16 ---------------- 2 files changed, 24 deletions(-) delete mode 100644 src/stylecop.json diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index 883b982..e115fa0 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -18,14 +18,6 @@ - - - - - - - - diff --git a/src/stylecop.json b/src/stylecop.json deleted file mode 100644 index 42def37..0000000 --- a/src/stylecop.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - // ACTION REQUIRED: This file was automatically added to your project, but it - // will not take effect until additional steps are taken to enable it. See the - // following page for additional information: - // - // https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/EnableConfiguration.md - - "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", - "settings": { - "documentationRules": { - "companyName": "Mark-James McDougall", - "copyrightText": "Licensed under the GNU GPL v3 License. See LICENSE in the project root for license information.", - "headerDecoration": "-----------------------------------------------------------------------" - } - } -} From 59567572716f90554fcdb599fe5948ed9f55fed1 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 23:18:38 -0400 Subject: [PATCH 084/146] Remove references to unused resource designer. --- src/MusicSharp.csproj | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index e115fa0..8bddc22 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -25,20 +25,5 @@ - - - - True - True - Resources.resx - - - - - - ResXFileCodeGenerator - Resources.Designer.cs - - - + From 131c4d0ce290ca3d3a050a00363aaed536dda0e5 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 23:33:40 -0400 Subject: [PATCH 085/146] Add MusicSharp assembly to TrimmerRootAssembly as it references the other two Assemblies that need to be rooted. --- src/MusicSharp.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index 8bddc22..30e1e7f 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -14,6 +14,7 @@ + From 4905cc695b8b6f777f42de312da01b8788e8cdcf Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 23:50:59 -0400 Subject: [PATCH 086/146] Remove reflection from GetISoundDataProviderType property and use switch expression instead. --- src/AudioPlayer/SoundFlowPlayer.cs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index 9c18040..daac7e0 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -29,17 +29,12 @@ public EFileType GetISoundDataProviderType { get { - if (_streamProvider?.GetType() == typeof(StreamDataProvider)) + return _streamProvider switch { - return EFileType.File; - } - - if (_streamProvider?.GetType() == typeof(NetworkDataProvider)) - { - return EFileType.WebStream; - } - - return EFileType.NotLoaded; + StreamDataProvider => EFileType.File, + NetworkDataProvider => EFileType.WebStream, + _ => EFileType.NotLoaded + }; } } From b618df916bc59a4592b5e39241e2ee6d4c302ee7 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 23:52:46 -0400 Subject: [PATCH 087/146] Remove outdated tests. --- MusicSharp.sln | 6 ------ MusicSharpTests/MusicSharpTests.csproj | 23 ----------------------- MusicSharpTests/PlaylistLoaderTests.cs | 13 ------------- MusicSharpTests/SoundFlowPlayerTests.cs | 14 -------------- MusicSharpTests/Usings.cs | 1 - 5 files changed, 57 deletions(-) delete mode 100644 MusicSharpTests/MusicSharpTests.csproj delete mode 100644 MusicSharpTests/PlaylistLoaderTests.cs delete mode 100644 MusicSharpTests/SoundFlowPlayerTests.cs delete mode 100644 MusicSharpTests/Usings.cs diff --git a/MusicSharp.sln b/MusicSharp.sln index 7120784..d0869fd 100644 --- a/MusicSharp.sln +++ b/MusicSharp.sln @@ -12,8 +12,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution README.md = README.md EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MusicSharpTests", "MusicSharpTests\MusicSharpTests.csproj", "{B0797164-0016-4ED1-BDDA-42DE8D414CD6}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -24,10 +22,6 @@ Global {A1943162-1979-46C6-9082-7F49BEC191BA}.Debug|Any CPU.Build.0 = Debug|Any CPU {A1943162-1979-46C6-9082-7F49BEC191BA}.Release|Any CPU.ActiveCfg = Release|Any CPU {A1943162-1979-46C6-9082-7F49BEC191BA}.Release|Any CPU.Build.0 = Release|Any CPU - {B0797164-0016-4ED1-BDDA-42DE8D414CD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0797164-0016-4ED1-BDDA-42DE8D414CD6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0797164-0016-4ED1-BDDA-42DE8D414CD6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0797164-0016-4ED1-BDDA-42DE8D414CD6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/MusicSharpTests/MusicSharpTests.csproj b/MusicSharpTests/MusicSharpTests.csproj deleted file mode 100644 index 1273004..0000000 --- a/MusicSharpTests/MusicSharpTests.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - - net9.0 - enable - enable - - false - - - - - - - - - - - - - - - diff --git a/MusicSharpTests/PlaylistLoaderTests.cs b/MusicSharpTests/PlaylistLoaderTests.cs deleted file mode 100644 index 286e687..0000000 --- a/MusicSharpTests/PlaylistLoaderTests.cs +++ /dev/null @@ -1,13 +0,0 @@ -using MusicSharp.FileData; - -namespace MusicSharpTests; - -public class Tests -{ - [Test] - public void Load_NullPlaylist() - { - // Act and assert - // Assert.Throws(() => Playlist.LoadPlaylist(null)); - } -} \ No newline at end of file diff --git a/MusicSharpTests/SoundFlowPlayerTests.cs b/MusicSharpTests/SoundFlowPlayerTests.cs deleted file mode 100644 index 694b052..0000000 --- a/MusicSharpTests/SoundFlowPlayerTests.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace MusicSharpTests; - -public class SoundFlowPlayerTests -{ - [Test] - public void Play_NullFile() - { - // arrange - var isFileValid = File.Exists("thisisafail.exe"); - - // act and assert - Assert.That(isFileValid, Is.False); - } -} \ No newline at end of file diff --git a/MusicSharpTests/Usings.cs b/MusicSharpTests/Usings.cs deleted file mode 100644 index cefced4..0000000 --- a/MusicSharpTests/Usings.cs +++ /dev/null @@ -1 +0,0 @@ -global using NUnit.Framework; \ No newline at end of file From 616266043cfeca2ad6d9f4e3a3cc767a3062243f Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 23:53:54 -0400 Subject: [PATCH 088/146] Remove unused project icon. --- src/MusicSharp.ico | Bin 29243 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/MusicSharp.ico diff --git a/src/MusicSharp.ico b/src/MusicSharp.ico deleted file mode 100644 index dd2843dfa2c690719551c4c573db20bc9dca1028..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29243 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 From 78cb0b17220abf587aae3b4795c08b4223929397 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 23:55:42 -0400 Subject: [PATCH 089/146] Rename _streamProvider to _streamDataProvider(). --- src/AudioPlayer/SoundFlowPlayer.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index daac7e0..8c65775 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -17,7 +17,7 @@ public sealed class SoundFlowPlayer : IPlayer private readonly MiniAudioEngine _audioEngine; private readonly AudioPlaybackDevice _audioPlaybackDevice; private readonly AudioFormat _audioFormat; - private ISoundDataProvider? _streamProvider; + private ISoundDataProvider? _streamDataProvider; private SoundPlayer? _player; // If we don't know the state of the player, default to stopped? @@ -29,7 +29,7 @@ public EFileType GetISoundDataProviderType { get { - return _streamProvider switch + return _streamDataProvider switch { StreamDataProvider => EFileType.File, NetworkDataProvider => EFileType.WebStream, @@ -70,17 +70,17 @@ public void Play(string filepath, EFileType fileType) if (fileType == EFileType.File) { - _streamProvider = new StreamDataProvider(_audioEngine, _audioFormat, File.OpenRead(filepath)); + _streamDataProvider = new StreamDataProvider(_audioEngine, _audioFormat, File.OpenRead(filepath)); } if (fileType == EFileType.WebStream) { - _streamProvider = new NetworkDataProvider(_audioEngine, _audioFormat, filepath); + _streamDataProvider = new NetworkDataProvider(_audioEngine, _audioFormat, filepath); } - if (_streamProvider != null) + if (_streamDataProvider != null) { - _player = new SoundPlayer(_audioEngine, _audioFormat, _streamProvider); + _player = new SoundPlayer(_audioEngine, _audioFormat, _streamDataProvider); _audioPlaybackDevice.MasterMixer.AddComponent(_player); _audioPlaybackDevice.Start(); _player.Play(); @@ -158,7 +158,7 @@ public void SeekBackward() public void Dispose() { _audioPlaybackDevice.Dispose(); - _streamProvider?.Dispose(); + _streamDataProvider?.Dispose(); _player?.Dispose(); } } \ No newline at end of file From 12062bc30de0850d1731592929d3119999eacf91 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 29 Jul 2025 23:58:57 -0400 Subject: [PATCH 090/146] Minor formatting fix. --- src/UI/Tui.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 0df0789..66efe98 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -122,7 +122,6 @@ public Tui(IPlayer player) Source = new ListWrapper(_loadedPlaylist), AllowsMarking = true, }; - _playlistView.RowRender += PlaylistView_RowRender; _playlistView.VerticalScrollBar.AutoShow = true; _playlistView.HorizontalScrollBar.AutoShow = true; From b0df93a20be9e367a1c37308cf00b2061e35671d Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 00:04:11 -0400 Subject: [PATCH 091/146] Add UnconditionalSuppressMessage for AssemblyLoadTrimming because Application.Init() doesn't actually require unreferenced code when given no arguments. --- src/Program.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Program.cs b/src/Program.cs index eb93eff..0a71695 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -2,6 +2,7 @@ using MusicSharp.AudioPlayer; using SoundFlow.Backends.MiniAudio; using Terminal.Gui.App; +using System.Diagnostics.CodeAnalysis; namespace MusicSharp; @@ -13,6 +14,7 @@ public static class Program /// /// Entry point. /// + [UnconditionalSuppressMessage("AssemblyLoadTrimming", "IL2026:RequiresUnreferencedCode", Justification = "Application.Init doesn't actually require unreferenced code when given no arguments")] public static void Main() { using var audioEngine = new MiniAudioEngine(); From 59f97d2e91b69b3aba1ff8692fa8b2e1b68c8849 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 00:21:31 -0400 Subject: [PATCH 092/146] Remove SoundFlow from TrimmerRootAssembly. Can safely ignore as this is the only warning and the method is only ever called with primitive types: https://github.com/LSXPrime/SoundFlow/blob/master/Src/Utils/Extensions.cs#L49 --- src/MusicSharp.csproj | 1 - src/Program.cs | 8 +++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/MusicSharp.csproj b/src/MusicSharp.csproj index 30e1e7f..3eb367c 100644 --- a/src/MusicSharp.csproj +++ b/src/MusicSharp.csproj @@ -16,7 +16,6 @@ - diff --git a/src/Program.cs b/src/Program.cs index 0a71695..be141ec 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -14,7 +14,13 @@ public static class Program /// /// Entry point. /// - [UnconditionalSuppressMessage("AssemblyLoadTrimming", "IL2026:RequiresUnreferencedCode", Justification = "Application.Init doesn't actually require unreferenced code when given no arguments")] + [UnconditionalSuppressMessage("AssemblyLoadTrimming", + "IL2104:Assembly 'SoundFlow' produced trim warnings.", + Justification = """ + Can safely ignore as this is the only warning and the + method is only ever called with primitive types + https://github.com/LSXPrime/SoundFlow/blob/master/Src/Utils/Extensions.cs#L49 + """)] public static void Main() { using var audioEngine = new MiniAudioEngine(); From 09a8db9053384e1a4f7ebb2584b17a1b10b1b30b Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 00:22:05 -0400 Subject: [PATCH 093/146] Remove unnecessary comments. --- src/Program.cs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/Program.cs b/src/Program.cs index be141ec..78fd1b3 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -6,14 +6,8 @@ namespace MusicSharp; -/// -/// Entry Point class. -/// public static class Program { - /// - /// Entry point. - /// [UnconditionalSuppressMessage("AssemblyLoadTrimming", "IL2104:Assembly 'SoundFlow' produced trim warnings.", Justification = """ From a63fe2327e2aa9033ec3c4813c7168b76e74aee1 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 00:25:08 -0400 Subject: [PATCH 094/146] Remove IStreamConverter.cs and SoundFlowPlayerStreamConverter.cs as they are no longer necessary as of upgrade to SoundFlow 1.2.0. --- src/AudioPlayer/IStreamConverter.cs | 11 -------- .../SoundFlowPlayerStreamConverter.cs | 26 ------------------- 2 files changed, 37 deletions(-) delete mode 100644 src/AudioPlayer/IStreamConverter.cs delete mode 100644 src/AudioPlayer/SoundFlowPlayerStreamConverter.cs diff --git a/src/AudioPlayer/IStreamConverter.cs b/src/AudioPlayer/IStreamConverter.cs deleted file mode 100644 index eccf77c..0000000 --- a/src/AudioPlayer/IStreamConverter.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.IO; -using System.Threading.Tasks; - -namespace MusicSharp.AudioPlayer; - -public interface IStreamConverter -{ - public Stream ConvertFileToStream(string path); - - public Task ConvertUrlToStream(string url); -} \ No newline at end of file diff --git a/src/AudioPlayer/SoundFlowPlayerStreamConverter.cs b/src/AudioPlayer/SoundFlowPlayerStreamConverter.cs deleted file mode 100644 index 7522321..0000000 --- a/src/AudioPlayer/SoundFlowPlayerStreamConverter.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.IO; -using System.Net.Http; -using System.Threading.Tasks; - -namespace MusicSharp.AudioPlayer; - -public class SoundFlowPlayerStreamConverter : IStreamConverter -{ - private readonly HttpClient _httpClient; - - public SoundFlowPlayerStreamConverter(HttpClient httpClient) - { - _httpClient = httpClient; - } - - public Stream ConvertFileToStream(string path) - { - return File.OpenRead(path); - } - - public async Task ConvertUrlToStream(string url) - { - var stream = await _httpClient.GetStreamAsync(url); - return stream; - } -} \ No newline at end of file From 3123386f64183e2af94ca99d28a4083db82140c0 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 00:37:29 -0400 Subject: [PATCH 095/146] Remove unnecessary Trim warning suppression. --- src/Program.cs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/Program.cs b/src/Program.cs index 78fd1b3..90385e7 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -8,13 +8,6 @@ namespace MusicSharp; public static class Program { - [UnconditionalSuppressMessage("AssemblyLoadTrimming", - "IL2104:Assembly 'SoundFlow' produced trim warnings.", - Justification = """ - Can safely ignore as this is the only warning and the - method is only ever called with primitive types - https://github.com/LSXPrime/SoundFlow/blob/master/Src/Utils/Extensions.cs#L49 - """)] public static void Main() { using var audioEngine = new MiniAudioEngine(); From 00f5ff697daa7f3cd2427b1ff451cd475b55bd7c Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 00:37:48 -0400 Subject: [PATCH 096/146] Remove unnecessary using directive. --- src/Program.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Program.cs b/src/Program.cs index 90385e7..e477e9a 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -2,7 +2,6 @@ using MusicSharp.AudioPlayer; using SoundFlow.Backends.MiniAudio; using Terminal.Gui.App; -using System.Diagnostics.CodeAnalysis; namespace MusicSharp; From 92e37534d973125a2ded2cd8c294bde4814f6692 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 00:39:55 -0400 Subject: [PATCH 097/146] Remove null forgiving operator from nowPlayingView. --- src/UI/Tui.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 66efe98..af35b41 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -286,7 +286,7 @@ public Tui(IPlayer player) Y = Pos.Align(Alignment.End), }; - nowPlayingView?.Add(_nowPlayingLabel, _timePlayedLabel); + nowPlayingView.Add(_nowPlayingLabel, _timePlayedLabel); // Add the views to the main window Add(menuBar, _playlistView, _progressBar, playbackControls, nowPlayingView, statusBar); From 4f641f1355f0312a5b12eed801af71059263224c Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 17:49:36 -0400 Subject: [PATCH 098/146] Fix some null checks in SoundFlowPlayer.cs Remove unused IsStreamLoaded property --- src/AudioPlayer/SoundFlowPlayer.cs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index 8c65775..c800d0e 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -24,7 +24,6 @@ public sealed class SoundFlowPlayer : IPlayer public PlaybackState State => _player?.State ?? PlaybackState.Stopped; public float TrackLength => _player?.Duration ?? 0; public float CurrentTime => _player?.Time ?? 0; - public bool IsStreamLoaded => _player != null; public EFileType GetISoundDataProviderType { get @@ -55,14 +54,13 @@ public SoundFlowPlayer(MiniAudioEngine audioEngine) SampleRate = 48000, Channels = 2 }; - - // Initialize the playback device. This manages the connection to the physical audio hardware. + _audioPlaybackDevice = _audioEngine.InitializePlaybackDevice(defaultPlaybackDevice, _audioFormat); } public void Play(string filepath, EFileType fileType) { - if (_player?.State == PlaybackState.Playing) + if (_player != null && _player.State == PlaybackState.Playing) { _player.Stop(); _audioPlaybackDevice.Stop(); @@ -94,11 +92,11 @@ public void PlayPause() switch (_player.State) { case PlaybackState.Playing: - _player?.Pause(); + _player.Pause(); break; case PlaybackState.Paused: case PlaybackState.Stopped: - _player?.Play(); + _player.Play(); break; default: throw new ArgumentOutOfRangeException(); From 97046f6a91a07e5529eb2115f742b5c664406537 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 17:49:58 -0400 Subject: [PATCH 099/146] Remove IsStreamLoaded and GetISoundDataProviderType properties. --- src/AudioPlayer/IPlayer.cs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index 3a5713f..a6f7249 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -23,16 +23,6 @@ public interface IPlayer: IDisposable /// Returns the current time played. /// float CurrentTime { get; } - - /// - /// Indicates whether an audio stream is loaded. - /// - bool IsStreamLoaded { get; } - - /// - /// Indicates the type of audio stream loaded. - /// - EFileType GetISoundDataProviderType { get; } /// /// Method to play audio. From fc2d2d693aacedff9a537930338b49e4d8f28f32 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 17:52:18 -0400 Subject: [PATCH 100/146] Remove GetISoundDataProviderType and implement is check on _streamDataProvider instead. --- src/AudioPlayer/SoundFlowPlayer.cs | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index c800d0e..6fdbb28 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -24,18 +24,6 @@ public sealed class SoundFlowPlayer : IPlayer public PlaybackState State => _player?.State ?? PlaybackState.Stopped; public float TrackLength => _player?.Duration ?? 0; public float CurrentTime => _player?.Time ?? 0; - public EFileType GetISoundDataProviderType - { - get - { - return _streamDataProvider switch - { - StreamDataProvider => EFileType.File, - NetworkDataProvider => EFileType.WebStream, - _ => EFileType.NotLoaded - }; - } - } public SoundFlowPlayer(MiniAudioEngine audioEngine) { @@ -133,7 +121,7 @@ public void DecreaseVolume() public void SeekForward() { - if (GetISoundDataProviderType == EFileType.File && _player != null) + if (_streamDataProvider is StreamDataProvider && _player != null) { if (_player.State is PlaybackState.Playing or PlaybackState.Paused) { @@ -144,7 +132,7 @@ public void SeekForward() public void SeekBackward() { - if (GetISoundDataProviderType == EFileType.File && _player != null) + if (_streamDataProvider is StreamDataProvider && _player != null) { if (_player.State is PlaybackState.Playing or PlaybackState.Paused) { From 7d6b99640b56a9f91a5ccbcee032286429fb674b Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 17:52:45 -0400 Subject: [PATCH 101/146] Fix comment --- src/AudioPlayer/SoundFlowPlayer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index 6fdbb28..dd34037 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -105,7 +105,7 @@ public void IncreaseVolume() { if (_player !=null) { - // Need to verify what SoundFlow's max volume level is + // Verify what SoundFlow's max volume level is // For now this should be enough based on testing _player.Volume = Math.Clamp(_player.Volume + .1f, 0f, 2f); } From 91fb35d176246345d338a3fc4f5bb9288a8f3318 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 17:53:58 -0400 Subject: [PATCH 102/146] Remove "Add file to playlist" from shortcuts menu. --- src/UI/Tui.cs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index af35b41..52c5982 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -95,12 +95,6 @@ public Tui(IPlayer player) Action = OpenPlaylist }, new Shortcut - { - Text = "Add file to playlist", - Key = Key.F4, - Action = OpenPlaylist - }, - new Shortcut { Text = "Quit", Key = Key.Esc, From 204cbdda536acbaea34254a572e9609f23f09c83 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 17:59:01 -0400 Subject: [PATCH 103/146] Remove redundant string interpolation --- src/UI/Tui.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 52c5982..3e14dee 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -475,7 +475,7 @@ private void TimePlayedLabel() } else { - _timePlayedLabel.Text = $"00:00 / 00:00"; + _timePlayedLabel.Text = "00:00 / 00:00"; } } From efac5a0258cdb1e3155aee4ae3a448835b047923 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 18:21:13 -0400 Subject: [PATCH 104/146] _mainLoopTimeout should return false when player is not playing. --- src/UI/Tui.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 3e14dee..a8128fb 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -378,7 +378,7 @@ private void RunMainLoop() return true; } - return true; + return false; } ); } From e9921b7820d0b47b82ed271f3436364857e2f045 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 18:37:44 -0400 Subject: [PATCH 105/146] Remove redundant NowPlaying() method and set _nowPlayingLabel text directly. --- src/UI/Tui.cs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index a8128fb..e55dd20 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -181,7 +181,7 @@ public Tui(IPlayer player) _player.Stop(); _progressBar.Fraction = 0; TimePlayedLabel(); - NowPlaying(string.Empty); + _nowPlayingLabel!.Text = string.Empty; e.Handled = true; }; @@ -275,7 +275,7 @@ public Tui(IPlayer player) _timePlayedLabel = new Label { - Text = $"00:00 / 00:00", + Text = "00:00 / 00:00", X = Pos.Align(Alignment.End), Y = Pos.Align(Alignment.End), }; @@ -340,6 +340,7 @@ private void OpenStream() if (streamUrl.Text != string.Empty) { _player.Play(streamUrl.Text, EFileType.WebStream); + _nowPlayingLabel.Text = $"Web stream: {streamUrl.Text}"; } e.Handled = true; @@ -383,11 +384,6 @@ private void RunMainLoop() ); } - private void NowPlaying(string trackName) - { - _nowPlayingLabel.Text = trackName; - } - #region PlaylistMethods private void AddToPlaylist() @@ -510,7 +506,7 @@ private void PlayHandler(string filePath) if (_player.State == PlaybackState.Playing) { RunMainLoop(); - NowPlaying(TrackData.GetTrackData(filePath)); + _nowPlayingLabel.Text = TrackData.GetTrackData(filePath); } } From b04753039c20d850cce9729315ba8364677f8457 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 18:40:22 -0400 Subject: [PATCH 106/146] Remove test references from build.yml until new tests are written --- .github/workflows/build.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3354d7c..142a1d1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,10 +16,8 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: - dotnet-version: 8.0.* + dotnet-version: 9.0.* - name: Install dependencies run: dotnet restore - name: Build - run: dotnet build --configuration Release --no-restore - - name: Test - run: dotnet test --no-restore --verbosity normal + run: dotnet build --configuration Release --no-restore \ No newline at end of file From 280b2e073cd9f97c9277e207186002709b46d9bd Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 19:23:48 -0400 Subject: [PATCH 107/146] Remove unsued Resources.Designer.cs --- Properties/Resources.Designer.cs | 63 ------------------- Properties/Resources.resx | 101 ------------------------------- 2 files changed, 164 deletions(-) delete mode 100644 Properties/Resources.Designer.cs delete mode 100644 Properties/Resources.resx diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs deleted file mode 100644 index d836cf5..0000000 --- a/Properties/Resources.Designer.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace MusicSharp.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MusicSharp.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - } -} diff --git a/Properties/Resources.resx b/Properties/Resources.resx deleted file mode 100644 index 4fdb1b6..0000000 --- a/Properties/Resources.resx +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file From 15fcc539e24ad794e4a6baeb01647ffc99d1be05 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 21:01:13 -0400 Subject: [PATCH 108/146] Major refactor of the Playlist view to show artist, track, and album title instead of pathname. --- src/Data/AudioFile.cs | 9 + src/FileData/TrackData.cs | 15 -- .../PlaylistHelpers.cs} | 14 +- src/UI/Tui.cs | 209 +++++++++++++++--- 4 files changed, 201 insertions(+), 46 deletions(-) create mode 100644 src/Data/AudioFile.cs delete mode 100644 src/FileData/TrackData.cs rename src/{FileData/Playlist.cs => Helpers/PlaylistHelpers.cs} (75%) diff --git a/src/Data/AudioFile.cs b/src/Data/AudioFile.cs new file mode 100644 index 0000000..7412b70 --- /dev/null +++ b/src/Data/AudioFile.cs @@ -0,0 +1,9 @@ +using ATL; + +namespace MusicSharp.Data; + +public class AudioFile(string filepath) +{ + public Track TrackInfo { get; } = new(filepath); + public string Path { get; } = filepath; +} \ No newline at end of file diff --git a/src/FileData/TrackData.cs b/src/FileData/TrackData.cs deleted file mode 100644 index 113f191..0000000 --- a/src/FileData/TrackData.cs +++ /dev/null @@ -1,15 +0,0 @@ -using ATL; - -namespace MusicSharp.FileData; - -public static class TrackData -{ - public static string GetTrackData(string filePath) - { - var trackData = new Track(filePath); - - return $"{(string.IsNullOrWhiteSpace(trackData.Artist) ? "Unknown" : trackData.Artist)} - " + - $"{(string.IsNullOrWhiteSpace(trackData.Title) ? "Unknown" : trackData.Title)} - " + - $"{(string.IsNullOrWhiteSpace(trackData.Album) ? "Unknown": trackData.Album)}"; - } -} \ No newline at end of file diff --git a/src/FileData/Playlist.cs b/src/Helpers/PlaylistHelpers.cs similarity index 75% rename from src/FileData/Playlist.cs rename to src/Helpers/PlaylistHelpers.cs index 1ab856e..b38ab3b 100644 --- a/src/FileData/Playlist.cs +++ b/src/Helpers/PlaylistHelpers.cs @@ -1,10 +1,11 @@ using System.Collections.Generic; using System.Linq; using ATL.Playlist; +using MusicSharp.Data; -namespace MusicSharp.FileData; +namespace MusicSharp.Helpers; -public static class Playlist +public static class PlaylistHelpers { /// /// Load an M3U playlist. @@ -19,10 +20,15 @@ public static List LoadPlaylist(string playlist) return theReader.FilePaths.Select(s => s.Replace("%20", " ")).ToList(); } - public static void SavePlaylistToFile(string playlistFilePath, List playlistFiles) + public static void SavePlaylistToFile(string playlistFilePath, List filesForPlaylist) { var pls = PlaylistIOFactory.GetInstance().GetPlaylistIO(playlistFilePath); - pls.FilePaths = playlistFiles.ToList(); + + foreach (var file in filesForPlaylist) + { + pls.FilePaths.Add(file.Path); + } + pls.Save(); } } \ No newline at end of file diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index e55dd20..27481e9 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -1,10 +1,13 @@ using System; +using System.Collections; using System.Collections.ObjectModel; +using System.Collections.Specialized; using System.Linq; using System.Text; using MusicSharp.AudioPlayer; +using MusicSharp.Data; using MusicSharp.Enums; -using MusicSharp.FileData; +using MusicSharp.Helpers; using SoundFlow.Enums; using Terminal.Gui.App; using Terminal.Gui.Drawing; @@ -23,7 +26,7 @@ public class Tui : Toplevel private readonly Label _nowPlayingLabel; private readonly Label _timePlayedLabel; private readonly ListView _playlistView; - private readonly ObservableCollection _loadedPlaylist = []; + private readonly ObservableCollection _loadedPlaylist = []; private object? _mainLoopTimeout; private const uint MainLoopTimeoutTick = 100; // ms @@ -113,7 +116,7 @@ public Tui(IPlayer player) Height = Dim.Fill(10), CanFocus = true, BorderStyle = LineStyle.Rounded, - Source = new ListWrapper(_loadedPlaylist), + Source = new TrackListDataSource(_loadedPlaylist), AllowsMarking = true, }; _playlistView.RowRender += PlaylistView_RowRender; @@ -123,7 +126,7 @@ public Tui(IPlayer player) { if (args.Value != null) { - PlayHandler(args.Value.ToString()!); + PlayHandler((AudioFile)args.Value); } }; @@ -160,7 +163,7 @@ public Tui(IPlayer player) CanFocus = true, Text = "Play/Pause" }; - + playPauseButton.Accepting += (s, e) => { _player.PlayPause(); @@ -175,7 +178,7 @@ public Tui(IPlayer player) CanFocus = true, Text = "Stop", }; - + stopButton.Accepting += (s, e) => { _player.Stop(); @@ -193,7 +196,7 @@ public Tui(IPlayer player) CanFocus = true, Text = "Volume +" }; - + volumeIncreaseButton.Accepting += (s, e) => { _player.IncreaseVolume(); @@ -208,7 +211,7 @@ public Tui(IPlayer player) IsDefault = false, Text = "Volume -" }; - + volumeDecreaseButton.Accepting += (s, e) => { _player.DecreaseVolume(); @@ -223,7 +226,7 @@ public Tui(IPlayer player) CanFocus = true, Text = "Seek 5s" }; - + seekForwardButton.Accepting += (s, e) => { _player.SeekForward(); @@ -238,7 +241,7 @@ public Tui(IPlayer player) CanFocus = true, Text = "Seek -5s" }; - + seekBackwardButton.Accepting += (s, e) => { _player.SeekBackward(); @@ -301,7 +304,8 @@ private void OpenFile() if (!d.Canceled) { - PlayHandler(d.FilePaths[0]); + var audioFile = new AudioFile(d.FilePaths[0]); + PlayHandler(audioFile); } } @@ -334,7 +338,7 @@ private void OpenStream() X = Pos.Center(), Y = Pos.Bottom(streamUrl), }; - + loadStreamButton.Accepting += (s, e) => { if (streamUrl.Text != string.Empty) @@ -399,8 +403,9 @@ private void AddToPlaylist() if (!d.Canceled) { - foreach (var track in d.FilePaths) + foreach (var filepath in d.FilePaths) { + var track = new AudioFile(filepath); _loadedPlaylist.Add(track); } } @@ -419,10 +424,11 @@ private void OpenPlaylist() if (!d.Canceled) { - var playlist = Playlist.LoadPlaylist(d.FilePaths[0]); + var playlist = PlaylistHelpers.LoadPlaylist(d.FilePaths[0]); - foreach (var track in playlist) + foreach (var filepath in playlist) { + var track = new AudioFile(filepath); _loadedPlaylist.Add(track); } } @@ -442,7 +448,7 @@ private void SavePlaylist() if (!d.Canceled) { var currentTracks = _loadedPlaylist.ToList(); - Playlist.SavePlaylistToFile(d.FileName, currentTracks); + PlaylistHelpers.SavePlaylistToFile(d.FileName, currentTracks); } } @@ -474,42 +480,45 @@ private void TimePlayedLabel() _timePlayedLabel.Text = "00:00 / 00:00"; } } - - private void PlaylistView_RowRender (object? sender, ListViewRowEventArgs obj) + + private void PlaylistView_RowRender(object? sender, ListViewRowEventArgs obj) { if (obj.Row == _playlistView.SelectedItem) { return; } - if (_playlistView.AllowsMarking && _playlistView.Source.IsMarked (obj.Row)) + if (_playlistView.AllowsMarking && _playlistView.Source.IsMarked(obj.Row)) { - obj.RowAttribute = new Attribute (Color.Black, Color.White); + obj.RowAttribute = new Attribute(Color.Black, Color.White); return; } if (obj.Row % 2 == 0) { - obj.RowAttribute = new Attribute (Color.Green, Color.Black); + obj.RowAttribute = new Attribute(Color.Green, Color.Black); } else { - obj.RowAttribute = new Attribute (Color.Black, Color.Green); + obj.RowAttribute = new Attribute(Color.Black, Color.Green); } } - - private void PlayHandler(string filePath) + + private void PlayHandler(AudioFile audioFile) { - _player.Play(filePath, EFileType.File); + _player.Play(audioFile.Path, EFileType.File); if (_player.State == PlaybackState.Playing) { RunMainLoop(); - _nowPlayingLabel.Text = TrackData.GetTrackData(filePath); + _nowPlayingLabel.Text = + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Artist) ? "Unknown" : audioFile.TrackInfo.Artist)} - " + + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Title) ? "Unknown" : audioFile.TrackInfo.Title)} - " + + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Album) ? "Unknown" : audioFile.TrackInfo.Album)}"; } } - + private static string GetAboutMessage() { var sb = new StringBuilder(); @@ -527,4 +536,150 @@ __ ___ _ _____ __ return sb.ToString(); } + + private class TrackListDataSource : IListDataSource + { + private const int TitleColumnWidth = 30; + private const int ArtistColumnWidth = 60; + private const int AlbumColumnWidth = 60; + private int _count; + private BitArray _marks; + private ObservableCollection _loadedPlaylist; + + public TrackListDataSource(ObservableCollection audioFiles) + { + AudioFiles = audioFiles; + } + + private ObservableCollection AudioFiles + { + get => _loadedPlaylist; + set + { + if (value != null) + { + _count = value.Count; + _marks = new BitArray(_count); + _loadedPlaylist = value; + Length = GetMaxLengthItem(); + } + } + } + + public bool IsMarked(int item) + { + if (item >= 0 && item < _count) + { + return _marks[item]; + } + + return false; + } +#pragma warning disable CS0067 + public event NotifyCollectionChangedEventHandler CollectionChanged; +#pragma warning restore CS0067 + + public int Count => AudioFiles?.Count ?? 0; + public int Length { get; private set; } + + public bool SuspendCollectionChangedEvent + { + get => throw new NotImplementedException(); + set => throw new NotImplementedException(); + } + + public void Render( + ListView container, + bool selected, + int item, + int col, + int line, + int width, + int start = 0 + ) + { + container.Move(col, line); + + // Equivalent to an interpolated string like $"{Scenarios[item].Name, -widtestname}"; if such a thing were possible + var s = string.Format( + string.Format("{{0,{0}}}", -TitleColumnWidth), + AudioFiles[item].TrackInfo.Title + ); + RenderUstr(container, $"{s} {AudioFiles[item].TrackInfo.Artist} {AudioFiles[item].TrackInfo.Album}", col, + line, width, start); + } + + public void SetMark(int item, bool value) + { + if (item >= 0 && item < _count) + { + _marks[item] = value; + } + } + + public IList ToList() + { + return AudioFiles; + } + + private int GetMaxLengthItem() + { + if (_loadedPlaylist?.Count == 0) + { + return 0; + } + + var maxLength = 0; + + for (var i = 0; i < _loadedPlaylist.Count; i++) + { + string s = string.Format( + $"{{0,{-TitleColumnWidth}}}", + AudioFiles[i].TrackInfo.Title + ); + var sc = $"{s} {AudioFiles[i].TrackInfo.Artist} {AudioFiles[i].TrackInfo.Album}"; + int l = sc.Length; + + if (l > maxLength) + { + maxLength = l; + } + } + + return maxLength; + } + + // A slightly adapted method from: https://github.com/gui-cs/Terminal.Gui/blob/fc1faba7452ccbdf49028ac49f0c9f0f42bbae91/Terminal.Gui/Views/ListView.cs#L433-L461 + private void RenderUstr(View view, string ustr, int col, int line, int width, int start = 0) + { + var used = 0; + var index = start; + + while (index < ustr.Length) + { + (Rune rune, var size) = ustr.DecodeRune(index, index - ustr.Length); + var count = rune.GetColumns(); + + if (used + count >= width) + { + break; + } + + view.AddRune(rune); + used += count; + index += size; + } + + while (used < width) + { + view.AddRune((Rune)' '); + used++; + } + } + + public void Dispose() + { + _loadedPlaylist = null; + } + } } \ No newline at end of file From 706250d6534920688cf9385a290fa3e1656e18f5 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 21:18:12 -0400 Subject: [PATCH 109/146] Properly format playlist columns. --- src/UI/Tui.cs | 46 +++++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 27481e9..3034b8a 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -426,9 +426,8 @@ private void OpenPlaylist() { var playlist = PlaylistHelpers.LoadPlaylist(d.FilePaths[0]); - foreach (var filepath in playlist) + foreach (var track in playlist.Select(filepath => new AudioFile(filepath))) { - var track = new AudioFile(filepath); _loadedPlaylist.Add(track); } } @@ -539,9 +538,9 @@ __ ___ _ _____ __ private class TrackListDataSource : IListDataSource { - private const int TitleColumnWidth = 30; - private const int ArtistColumnWidth = 60; - private const int AlbumColumnWidth = 60; + private const int TitleColumnWidth = 50; + private const int ArtistColumnWidth = 30; + private const int AlbumColumnWidth = 40; private int _count; private BitArray _marks; private ObservableCollection _loadedPlaylist; @@ -600,13 +599,23 @@ public void Render( { container.Move(col, line); - // Equivalent to an interpolated string like $"{Scenarios[item].Name, -widtestname}"; if such a thing were possible - var s = string.Format( + // Equivalent to an interpolated string like $"{AudioFiles[item].Name, -widtestname}"; if it were possible + var trackTitle = string.Format( string.Format("{{0,{0}}}", -TitleColumnWidth), AudioFiles[item].TrackInfo.Title ); - RenderUstr(container, $"{s} {AudioFiles[item].TrackInfo.Artist} {AudioFiles[item].TrackInfo.Album}", col, - line, width, start); + + var artist = string.Format( + string.Format("{{0,{0}}}", -ArtistColumnWidth), + AudioFiles[item].TrackInfo.Artist + ); + + var album = string.Format( + string.Format("{{0,{0}}}", -AlbumColumnWidth), + AudioFiles[item].TrackInfo.Album + ); + + RenderUstr(container, $"{trackTitle} {artist} {album}", col, line, width, start); } public void SetMark(int item, bool value) @@ -633,12 +642,23 @@ private int GetMaxLengthItem() for (var i = 0; i < _loadedPlaylist.Count; i++) { - string s = string.Format( + var trackTitle = string.Format( $"{{0,{-TitleColumnWidth}}}", AudioFiles[i].TrackInfo.Title ); - var sc = $"{s} {AudioFiles[i].TrackInfo.Artist} {AudioFiles[i].TrackInfo.Album}"; - int l = sc.Length; + + var artist = string.Format( + $"{{0,{-ArtistColumnWidth}}}", + AudioFiles[i].TrackInfo.Artist + ); + + var album = string.Format( + $"{{0,{-AlbumColumnWidth}}}", + AudioFiles[i].TrackInfo.Album + ); + + var sc = $"{trackTitle} {artist} {album}"; + var l = sc.Length; if (l > maxLength) { @@ -657,7 +677,7 @@ private void RenderUstr(View view, string ustr, int col, int line, int width, in while (index < ustr.Length) { - (Rune rune, var size) = ustr.DecodeRune(index, index - ustr.Length); + var (rune, size) = ustr.DecodeRune(index, index - ustr.Length); var count = rune.GetColumns(); if (used + count >= width) From 582fba3e19b21b0f3b8f8e026d5d4276070bc3ff Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 21:36:10 -0400 Subject: [PATCH 110/146] Add logic to programmatically show play or pause text on _playPauseButton. --- src/UI/Tui.cs | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 3034b8a..1e26fe7 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -25,6 +25,7 @@ public class Tui : Toplevel private readonly ProgressBar _progressBar; private readonly Label _nowPlayingLabel; private readonly Label _timePlayedLabel; + private readonly Button _playPauseButton; private readonly ListView _playlistView; private readonly ObservableCollection _loadedPlaylist = []; private object? _mainLoopTimeout; @@ -155,25 +156,33 @@ public Tui(IPlayer player) BorderStyle = LineStyle.Rounded }; - var playPauseButton = new Button + _playPauseButton = new Button { X = 0, Y = 0, IsDefault = false, CanFocus = true, - Text = "Play/Pause" + Text = "Play" }; - playPauseButton.Accepting += (s, e) => + _playPauseButton.Accepting += (s, e) => { _player.PlayPause(); + _playPauseButton.Text = _player.State switch + { + PlaybackState.Stopped => "Play", + PlaybackState.Playing => "Pause", + PlaybackState.Paused => "Play", + _ => _playPauseButton.Text + }; + e.Handled = true; }; var stopButton = new Button { X = 0, - Y = Pos.Bottom(playPauseButton), + Y = Pos.Bottom(_playPauseButton), IsDefault = false, CanFocus = true, Text = "Stop", @@ -185,12 +194,13 @@ public Tui(IPlayer player) _progressBar.Fraction = 0; TimePlayedLabel(); _nowPlayingLabel!.Text = string.Empty; + _playPauseButton.Text = "Play"; e.Handled = true; }; var volumeIncreaseButton = new Button { - X = Pos.Right(playPauseButton), + X = Pos.Right(_playPauseButton), Y = 0, IsDefault = false, CanFocus = true, @@ -205,7 +215,7 @@ public Tui(IPlayer player) var volumeDecreaseButton = new Button { - X = Pos.Right(playPauseButton), + X = Pos.Right(_playPauseButton), Y = Pos.Bottom(volumeIncreaseButton), CanFocus = true, IsDefault = false, @@ -248,7 +258,7 @@ public Tui(IPlayer player) e.Handled = true; }; - playbackControls.Add(playPauseButton, stopButton, volumeIncreaseButton, + playbackControls.Add(_playPauseButton, stopButton, volumeIncreaseButton, volumeDecreaseButton, seekForwardButton, seekBackwardButton); #endregion @@ -344,6 +354,7 @@ private void OpenStream() if (streamUrl.Text != string.Empty) { _player.Play(streamUrl.Text, EFileType.WebStream); + _playPauseButton.Text = "Pause"; _nowPlayingLabel.Text = $"Web stream: {streamUrl.Text}"; } @@ -365,7 +376,6 @@ private void OpenStream() }; streamDialog.Add(uriLabel, streamUrl, loadStreamButton, closeButton); - Application.Run(streamDialog); } @@ -474,6 +484,7 @@ private void TimePlayedLabel() _timePlayedLabel.Text = $"{timePlayed} / {trackLength}"; } } + else { _timePlayedLabel.Text = "00:00 / 00:00"; @@ -510,11 +521,13 @@ private void PlayHandler(AudioFile audioFile) if (_player.State == PlaybackState.Playing) { - RunMainLoop(); _nowPlayingLabel.Text = - $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Artist) ? "Unknown" : audioFile.TrackInfo.Artist)} - " + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Title) ? "Unknown" : audioFile.TrackInfo.Title)} - " + + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Artist) ? "Unknown" : audioFile.TrackInfo.Artist)} - " + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Album) ? "Unknown" : audioFile.TrackInfo.Album)}"; + + _playPauseButton.Text = "Pause"; + RunMainLoop(); } } From 6ebba83b173c78a0134474fe5fc62a1b9b28e8b0 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 22:42:38 -0400 Subject: [PATCH 111/146] Add remove from playlist option. --- src/UI/Tui.cs | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 1e26fe7..0a33feb 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -49,7 +49,7 @@ public Tui(IPlayer player) new MenuItemv2[] { new("_Open file", "Open audio file", OpenFile), - new("Open _stream", "Open stream", OpenStream), + new("Open _stream", "Open a stream URL", OpenStream), new("_Quit", "Quit MusicSharp", RequestStop) } ), @@ -58,8 +58,9 @@ public Tui(IPlayer player) new MenuItemv2[] { new("_Add to playlist", "Add track(s) to playlist", AddToPlaylist), + new("_Remove from playlist", "Remove selected track from playlist", RemoveFromPlaylist), new("Open _playlist", "Open a playlist", OpenPlaylist), - new("_Save playlist", "Save files to playlist", SavePlaylist) + new("_Save playlist", "Save to playlist", SavePlaylist) } ), new MenuBarItemv2( @@ -118,7 +119,8 @@ public Tui(IPlayer player) CanFocus = true, BorderStyle = LineStyle.Rounded, Source = new TrackListDataSource(_loadedPlaylist), - AllowsMarking = true, + AllowsMarking = false, + AllowsMultipleSelection = false }; _playlistView.RowRender += PlaylistView_RowRender; _playlistView.VerticalScrollBar.AutoShow = true; @@ -460,9 +462,9 @@ private void SavePlaylist() PlaylistHelpers.SavePlaylistToFile(d.FileName, currentTracks); } } - + #endregion - + private void TimePlayedLabel() { if (_player.State != PlaybackState.Stopped) @@ -484,7 +486,7 @@ private void TimePlayedLabel() _timePlayedLabel.Text = $"{timePlayed} / {trackLength}"; } } - + else { _timePlayedLabel.Text = "00:00 / 00:00"; @@ -525,12 +527,18 @@ private void PlayHandler(AudioFile audioFile) $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Title) ? "Unknown" : audioFile.TrackInfo.Title)} - " + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Artist) ? "Unknown" : audioFile.TrackInfo.Artist)} - " + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Album) ? "Unknown" : audioFile.TrackInfo.Album)}"; - + _playPauseButton.Text = "Pause"; RunMainLoop(); } } + private void RemoveFromPlaylist() + { + var s = _playlistView.SelectedItem; + _loadedPlaylist.RemoveAt(s); + } + private static string GetAboutMessage() { var sb = new StringBuilder(); @@ -551,7 +559,7 @@ __ ___ _ _____ __ private class TrackListDataSource : IListDataSource { - private const int TitleColumnWidth = 50; + private const int TitleColumnWidth = 35; private const int ArtistColumnWidth = 30; private const int AlbumColumnWidth = 40; private int _count; @@ -617,17 +625,17 @@ public void Render( string.Format("{{0,{0}}}", -TitleColumnWidth), AudioFiles[item].TrackInfo.Title ); - + var artist = string.Format( string.Format("{{0,{0}}}", -ArtistColumnWidth), AudioFiles[item].TrackInfo.Artist ); - + var album = string.Format( string.Format("{{0,{0}}}", -AlbumColumnWidth), AudioFiles[item].TrackInfo.Album ); - + RenderUstr(container, $"{trackTitle} {artist} {album}", col, line, width, start); } @@ -659,17 +667,17 @@ private int GetMaxLengthItem() $"{{0,{-TitleColumnWidth}}}", AudioFiles[i].TrackInfo.Title ); - + var artist = string.Format( $"{{0,{-ArtistColumnWidth}}}", AudioFiles[i].TrackInfo.Artist ); - + var album = string.Format( $"{{0,{-AlbumColumnWidth}}}", AudioFiles[i].TrackInfo.Album ); - + var sc = $"{trackTitle} {artist} {album}"; var l = sc.Length; From 04e5afea743cb44ed5a9cf8d22e2db168aa88a73 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 23:02:39 -0400 Subject: [PATCH 112/146] Group methods in Tui.cs by logical categories. --- src/UI/Tui.cs | 100 +++++++++++++++++++++++++++----------------------- 1 file changed, 54 insertions(+), 46 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 0a33feb..f7244c8 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -302,6 +302,24 @@ public Tui(IPlayer player) } #endregion + + private void PlayHandler(AudioFile audioFile) + { + _player.Play(audioFile.Path, EFileType.File); + + if (_player.State == PlaybackState.Playing) + { + _nowPlayingLabel.Text = + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Title) ? "Unknown" : audioFile.TrackInfo.Title)} - " + + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Artist) ? "Unknown" : audioFile.TrackInfo.Artist)} - " + + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Album) ? "Unknown" : audioFile.TrackInfo.Album)}"; + + _playPauseButton.Text = "Pause"; + RunMainLoop(); + } + } + + #region OpenMethods private void OpenFile() { @@ -380,6 +398,8 @@ private void OpenStream() streamDialog.Add(uriLabel, streamUrl, loadStreamButton, closeButton); Application.Run(streamDialog); } + + #endregion private void RunMainLoop() { @@ -422,6 +442,12 @@ private void AddToPlaylist() } } } + + private void RemoveFromPlaylist() + { + var s = _playlistView.SelectedItem; + _loadedPlaylist.RemoveAt(s); + } private void OpenPlaylist() { @@ -463,36 +489,6 @@ private void SavePlaylist() } } - #endregion - - private void TimePlayedLabel() - { - if (_player.State != PlaybackState.Stopped) - { - if (_player.TrackLength > 3599) - { - var timePlayed = TimeSpan.FromSeconds((double)new decimal(_player.CurrentTime)).ToString(@"hh\:mm\:ss"); - var trackLength = TimeSpan.FromSeconds((double)new decimal(_player.TrackLength)) - .ToString(@"hh\:mm\:ss"); - - _timePlayedLabel.Text = $"{timePlayed} / {trackLength}"; - } - - else - { - var timePlayed = TimeSpan.FromSeconds((double)new decimal(_player.CurrentTime)).ToString(@"mm\:ss"); - var trackLength = TimeSpan.FromSeconds((double)new decimal(_player.TrackLength)).ToString(@"mm\:ss"); - - _timePlayedLabel.Text = $"{timePlayed} / {trackLength}"; - } - } - - else - { - _timePlayedLabel.Text = "00:00 / 00:00"; - } - } - private void PlaylistView_RowRender(object? sender, ListViewRowEventArgs obj) { if (obj.Row == _playlistView.SelectedItem) @@ -516,27 +512,35 @@ private void PlaylistView_RowRender(object? sender, ListViewRowEventArgs obj) obj.RowAttribute = new Attribute(Color.Black, Color.Green); } } - - private void PlayHandler(AudioFile audioFile) + + #endregion + + private void TimePlayedLabel() { - _player.Play(audioFile.Path, EFileType.File); - - if (_player.State == PlaybackState.Playing) + if (_player.State != PlaybackState.Stopped) { - _nowPlayingLabel.Text = - $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Title) ? "Unknown" : audioFile.TrackInfo.Title)} - " + - $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Artist) ? "Unknown" : audioFile.TrackInfo.Artist)} - " + - $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Album) ? "Unknown" : audioFile.TrackInfo.Album)}"; + if (_player.TrackLength > 3599) + { + var timePlayed = TimeSpan.FromSeconds((double)new decimal(_player.CurrentTime)).ToString(@"hh\:mm\:ss"); + var trackLength = TimeSpan.FromSeconds((double)new decimal(_player.TrackLength)) + .ToString(@"hh\:mm\:ss"); - _playPauseButton.Text = "Pause"; - RunMainLoop(); + _timePlayedLabel.Text = $"{timePlayed} / {trackLength}"; + } + + else + { + var timePlayed = TimeSpan.FromSeconds((double)new decimal(_player.CurrentTime)).ToString(@"mm\:ss"); + var trackLength = TimeSpan.FromSeconds((double)new decimal(_player.TrackLength)).ToString(@"mm\:ss"); + + _timePlayedLabel.Text = $"{timePlayed} / {trackLength}"; + } } - } - private void RemoveFromPlaylist() - { - var s = _playlistView.SelectedItem; - _loadedPlaylist.RemoveAt(s); + else + { + _timePlayedLabel.Text = "00:00 / 00:00"; + } } private static string GetAboutMessage() @@ -557,6 +561,8 @@ __ ___ _ _____ __ return sb.ToString(); } + #region IListDataSource + private class TrackListDataSource : IListDataSource { private const int TitleColumnWidth = 35; @@ -723,4 +729,6 @@ public void Dispose() _loadedPlaylist = null; } } + + #endregion } \ No newline at end of file From d9e5a45c6ca5ab4f169efe71d029ddea4c7bbacc Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 23:13:59 -0400 Subject: [PATCH 113/146] Make RenderUstr() static. --- src/UI/Tui.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index f7244c8..114a0b0 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -697,7 +697,7 @@ private int GetMaxLengthItem() } // A slightly adapted method from: https://github.com/gui-cs/Terminal.Gui/blob/fc1faba7452ccbdf49028ac49f0c9f0f42bbae91/Terminal.Gui/Views/ListView.cs#L433-L461 - private void RenderUstr(View view, string ustr, int col, int line, int width, int start = 0) + private static void RenderUstr(View view, string ustr, int col, int line, int width, int start = 0) { var used = 0; var index = start; From c1cf3044ee6edc86f64f726400ec383645104cf3 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 30 Jul 2025 23:16:42 -0400 Subject: [PATCH 114/146] Change TitleColumnWidth to 40 --- src/UI/Tui.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 114a0b0..d0a2998 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -565,7 +565,7 @@ __ ___ _ _____ __ private class TrackListDataSource : IListDataSource { - private const int TitleColumnWidth = 35; + private const int TitleColumnWidth = 40; private const int ArtistColumnWidth = 30; private const int AlbumColumnWidth = 40; private int _count; From b73c67275e1dd3e512b9f3d809ca2c681736f3ba Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Fri, 1 Aug 2025 16:41:05 -0400 Subject: [PATCH 115/146] - Add EFileType as AudioFile class property. - Refactor IPlayer.cs Play() method to use an AudioFile object as parameter. - Have all Tui.cs play options call PlayHandler() instead ofer _player.Play() directly. --- src/AudioPlayer/IPlayer.cs | 7 ++++--- src/AudioPlayer/SoundFlowPlayer.cs | 11 ++++++----- src/Data/AudioFile.cs | 4 +++- src/Enums/EFileType.cs | 2 +- src/UI/Tui.cs | 12 ++++++------ 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index a6f7249..65e9e83 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -1,4 +1,5 @@ using System; +using MusicSharp.Data; using MusicSharp.Enums; using SoundFlow.Enums; @@ -27,9 +28,9 @@ public interface IPlayer: IDisposable /// /// Method to play audio. /// - /// The filepath to the file or stream. - /// The type of audio (File or WebStream). - void Play(string filepath, EFileType fileType); + /// The AudioFile. + /// The type of audio (File or Stream). + void Play(AudioFile audioFile); /// /// Method to pause audio playback. diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index dd34037..bd35c5f 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Linq; +using MusicSharp.Data; using MusicSharp.Enums; using SoundFlow.Abstracts.Devices; using SoundFlow.Backends.MiniAudio; @@ -46,7 +47,7 @@ public SoundFlowPlayer(MiniAudioEngine audioEngine) _audioPlaybackDevice = _audioEngine.InitializePlaybackDevice(defaultPlaybackDevice, _audioFormat); } - public void Play(string filepath, EFileType fileType) + public void Play(AudioFile audioFile) { if (_player != null && _player.State == PlaybackState.Playing) { @@ -54,14 +55,14 @@ public void Play(string filepath, EFileType fileType) _audioPlaybackDevice.Stop(); } - if (fileType == EFileType.File) + if (audioFile.Type == EFileType.File) { - _streamDataProvider = new StreamDataProvider(_audioEngine, _audioFormat, File.OpenRead(filepath)); + _streamDataProvider = new StreamDataProvider(_audioEngine, _audioFormat, File.OpenRead(audioFile.Path)); } - if (fileType == EFileType.WebStream) + if (audioFile.Type == EFileType.Stream) { - _streamDataProvider = new NetworkDataProvider(_audioEngine, _audioFormat, filepath); + _streamDataProvider = new NetworkDataProvider(_audioEngine, _audioFormat, audioFile.Path); } if (_streamDataProvider != null) diff --git a/src/Data/AudioFile.cs b/src/Data/AudioFile.cs index 7412b70..657515e 100644 --- a/src/Data/AudioFile.cs +++ b/src/Data/AudioFile.cs @@ -1,9 +1,11 @@ using ATL; +using MusicSharp.Enums; namespace MusicSharp.Data; -public class AudioFile(string filepath) +public class AudioFile(string filepath, EFileType fileType) { public Track TrackInfo { get; } = new(filepath); public string Path { get; } = filepath; + public EFileType Type { get; } = fileType; } \ No newline at end of file diff --git a/src/Enums/EFileType.cs b/src/Enums/EFileType.cs index 100aa4d..9b80434 100644 --- a/src/Enums/EFileType.cs +++ b/src/Enums/EFileType.cs @@ -3,6 +3,6 @@ namespace MusicSharp.Enums; public enum EFileType { File, - WebStream, + Stream, NotLoaded } \ No newline at end of file diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index d0a2998..c728acb 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -305,7 +305,7 @@ public Tui(IPlayer player) private void PlayHandler(AudioFile audioFile) { - _player.Play(audioFile.Path, EFileType.File); + _player.Play(audioFile); if (_player.State == PlaybackState.Playing) { @@ -334,7 +334,7 @@ private void OpenFile() if (!d.Canceled) { - var audioFile = new AudioFile(d.FilePaths[0]); + var audioFile = new AudioFile(d.FilePaths[0], EFileType.File); PlayHandler(audioFile); } } @@ -373,8 +373,8 @@ private void OpenStream() { if (streamUrl.Text != string.Empty) { - _player.Play(streamUrl.Text, EFileType.WebStream); - _playPauseButton.Text = "Pause"; + var audioFile = new AudioFile(streamUrl.Text, EFileType.Stream); + PlayHandler(audioFile); _nowPlayingLabel.Text = $"Web stream: {streamUrl.Text}"; } @@ -437,7 +437,7 @@ private void AddToPlaylist() { foreach (var filepath in d.FilePaths) { - var track = new AudioFile(filepath); + var track = new AudioFile(filepath, EFileType.File); _loadedPlaylist.Add(track); } } @@ -464,7 +464,7 @@ private void OpenPlaylist() { var playlist = PlaylistHelpers.LoadPlaylist(d.FilePaths[0]); - foreach (var track in playlist.Select(filepath => new AudioFile(filepath))) + foreach (var track in playlist.Select(filepath => new AudioFile(filepath, EFileType.File))) { _loadedPlaylist.Add(track); } From d96e6806da3ae734412e089549acf3e435a662b9 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sat, 2 Aug 2025 17:45:43 -0400 Subject: [PATCH 116/146] Remove unused comment param. --- src/AudioPlayer/IPlayer.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index 65e9e83..5e68d17 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -29,7 +29,6 @@ public interface IPlayer: IDisposable /// Method to play audio. /// /// The AudioFile. - /// The type of audio (File or Stream). void Play(AudioFile audioFile); /// From 588a4755d9c8435080bbaf9d4a939db66774a04e Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 3 Aug 2025 12:21:03 -0400 Subject: [PATCH 117/146] - Fix play/pause functionality. --- src/AudioPlayer/IPlayer.cs | 9 +---- src/AudioPlayer/SoundFlowPlayer.cs | 59 +++++++++++++++--------------- src/UI/Tui.cs | 23 ++++++------ 3 files changed, 44 insertions(+), 47 deletions(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index 5e68d17..ca8724d 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -26,15 +26,10 @@ public interface IPlayer: IDisposable float CurrentTime { get; } /// - /// Method to play audio. + /// Method to play and pause audio. /// /// The AudioFile. - void Play(AudioFile audioFile); - - /// - /// Method to pause audio playback. - /// - void PlayPause(); + void PlayPause(AudioFile audioFile); /// /// Method to stop audio playback. diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index bd35c5f..75881a7 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -20,6 +20,7 @@ public sealed class SoundFlowPlayer : IPlayer private readonly AudioFormat _audioFormat; private ISoundDataProvider? _streamDataProvider; private SoundPlayer? _player; + private AudioFile? _nowPlaying; // If we don't know the state of the player, default to stopped? public PlaybackState State => _player?.State ?? PlaybackState.Stopped; @@ -47,36 +48,9 @@ public SoundFlowPlayer(MiniAudioEngine audioEngine) _audioPlaybackDevice = _audioEngine.InitializePlaybackDevice(defaultPlaybackDevice, _audioFormat); } - public void Play(AudioFile audioFile) + public void PlayPause(AudioFile audioFile) { - if (_player != null && _player.State == PlaybackState.Playing) - { - _player.Stop(); - _audioPlaybackDevice.Stop(); - } - - if (audioFile.Type == EFileType.File) - { - _streamDataProvider = new StreamDataProvider(_audioEngine, _audioFormat, File.OpenRead(audioFile.Path)); - } - - if (audioFile.Type == EFileType.Stream) - { - _streamDataProvider = new NetworkDataProvider(_audioEngine, _audioFormat, audioFile.Path); - } - - if (_streamDataProvider != null) - { - _player = new SoundPlayer(_audioEngine, _audioFormat, _streamDataProvider); - _audioPlaybackDevice.MasterMixer.AddComponent(_player); - _audioPlaybackDevice.Start(); - _player.Play(); - } - } - - public void PlayPause() - { - if (_player != null) + if (_player != null && audioFile.Path.Equals(_nowPlaying?.Path)) { switch (_player.State) { @@ -91,6 +65,32 @@ public void PlayPause() throw new ArgumentOutOfRangeException(); } } + + if (!audioFile.Path.Equals(_nowPlaying?.Path)) + { + if (_player != null && _player.State == PlaybackState.Playing) + { + _player.Stop(); + _audioPlaybackDevice.Stop(); + _nowPlaying = null; + } + + _streamDataProvider = audioFile.Type switch + { + EFileType.File => new StreamDataProvider(_audioEngine, _audioFormat, File.OpenRead(audioFile.Path)), + EFileType.Stream => new NetworkDataProvider(_audioEngine, _audioFormat, audioFile.Path), + _ => _streamDataProvider + }; + + if (_streamDataProvider != null) + { + _player = new SoundPlayer(_audioEngine, _audioFormat, _streamDataProvider); + _audioPlaybackDevice.MasterMixer.AddComponent(_player); + _audioPlaybackDevice.Start(); + _player.Play(); + _nowPlaying = audioFile; + } + } } public void Stop() @@ -99,6 +99,7 @@ public void Stop() { _player?.Stop(); _audioPlaybackDevice.Stop(); + _nowPlaying = null; } } diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index c728acb..03752e4 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -169,15 +169,9 @@ public Tui(IPlayer player) _playPauseButton.Accepting += (s, e) => { - _player.PlayPause(); - _playPauseButton.Text = _player.State switch - { - PlaybackState.Stopped => "Play", - PlaybackState.Playing => "Pause", - PlaybackState.Paused => "Play", - _ => _playPauseButton.Text - }; - + var selected = _playlistView.SelectedItem; + var selectedTrack = _loadedPlaylist.ElementAt(selected); + PlayHandler(selectedTrack); e.Handled = true; }; @@ -305,7 +299,7 @@ public Tui(IPlayer player) private void PlayHandler(AudioFile audioFile) { - _player.Play(audioFile); + _player.PlayPause(audioFile); if (_player.State == PlaybackState.Playing) { @@ -314,9 +308,16 @@ private void PlayHandler(AudioFile audioFile) $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Artist) ? "Unknown" : audioFile.TrackInfo.Artist)} - " + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Album) ? "Unknown" : audioFile.TrackInfo.Album)}"; - _playPauseButton.Text = "Pause"; RunMainLoop(); } + + _playPauseButton.Text = _player.State switch + { + PlaybackState.Stopped => "Play", + PlaybackState.Playing => "Pause", + PlaybackState.Paused => "Play", + _ => _playPauseButton.Text + }; } #region OpenMethods From 4bbdc8e4a8508156c5386d650d4608c140c521e1 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 3 Aug 2025 12:29:12 -0400 Subject: [PATCH 118/146] Convert _loadedPlaylist to nullable. Add null handling for _loadedPlaylist --- src/UI/Tui.cs | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 03752e4..93cd3f9 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -27,7 +27,7 @@ public class Tui : Toplevel private readonly Label _timePlayedLabel; private readonly Button _playPauseButton; private readonly ListView _playlistView; - private readonly ObservableCollection _loadedPlaylist = []; + private readonly ObservableCollection? _loadedPlaylist = []; private object? _mainLoopTimeout; private const uint MainLoopTimeoutTick = 100; // ms @@ -170,8 +170,13 @@ public Tui(IPlayer player) _playPauseButton.Accepting += (s, e) => { var selected = _playlistView.SelectedItem; - var selectedTrack = _loadedPlaylist.ElementAt(selected); - PlayHandler(selectedTrack); + + if (_loadedPlaylist != null) + { + var selectedTrack = _loadedPlaylist.ElementAt(selected); + PlayHandler(selectedTrack); + } + e.Handled = true; }; @@ -439,7 +444,7 @@ private void AddToPlaylist() foreach (var filepath in d.FilePaths) { var track = new AudioFile(filepath, EFileType.File); - _loadedPlaylist.Add(track); + _loadedPlaylist?.Add(track); } } } @@ -447,7 +452,7 @@ private void AddToPlaylist() private void RemoveFromPlaylist() { var s = _playlistView.SelectedItem; - _loadedPlaylist.RemoveAt(s); + _loadedPlaylist?.RemoveAt(s); } private void OpenPlaylist() @@ -467,7 +472,7 @@ private void OpenPlaylist() foreach (var track in playlist.Select(filepath => new AudioFile(filepath, EFileType.File))) { - _loadedPlaylist.Add(track); + _loadedPlaylist?.Add(track); } } } @@ -485,8 +490,11 @@ private void SavePlaylist() if (!d.Canceled) { - var currentTracks = _loadedPlaylist.ToList(); - PlaylistHelpers.SavePlaylistToFile(d.FileName, currentTracks); + if (_loadedPlaylist != null) + { + var currentTracks = _loadedPlaylist.ToList(); + PlaylistHelpers.SavePlaylistToFile(d.FileName, currentTracks); + } } } @@ -571,14 +579,14 @@ private class TrackListDataSource : IListDataSource private const int AlbumColumnWidth = 40; private int _count; private BitArray _marks; - private ObservableCollection _loadedPlaylist; + private ObservableCollection? _loadedPlaylist; - public TrackListDataSource(ObservableCollection audioFiles) + public TrackListDataSource(ObservableCollection? audioFiles) { AudioFiles = audioFiles; } - private ObservableCollection AudioFiles + private ObservableCollection? AudioFiles { get => _loadedPlaylist; set @@ -630,17 +638,17 @@ public void Render( // Equivalent to an interpolated string like $"{AudioFiles[item].Name, -widtestname}"; if it were possible var trackTitle = string.Format( string.Format("{{0,{0}}}", -TitleColumnWidth), - AudioFiles[item].TrackInfo.Title + AudioFiles?[item].TrackInfo.Title ); var artist = string.Format( string.Format("{{0,{0}}}", -ArtistColumnWidth), - AudioFiles[item].TrackInfo.Artist + AudioFiles?[item].TrackInfo.Artist ); var album = string.Format( string.Format("{{0,{0}}}", -AlbumColumnWidth), - AudioFiles[item].TrackInfo.Album + AudioFiles?[item].TrackInfo.Album ); RenderUstr(container, $"{trackTitle} {artist} {album}", col, line, width, start); @@ -672,17 +680,17 @@ private int GetMaxLengthItem() { var trackTitle = string.Format( $"{{0,{-TitleColumnWidth}}}", - AudioFiles[i].TrackInfo.Title + AudioFiles?[i].TrackInfo.Title ); var artist = string.Format( $"{{0,{-ArtistColumnWidth}}}", - AudioFiles[i].TrackInfo.Artist + AudioFiles?[i].TrackInfo.Artist ); var album = string.Format( $"{{0,{-AlbumColumnWidth}}}", - AudioFiles[i].TrackInfo.Album + AudioFiles?[i].TrackInfo.Album ); var sc = $"{trackTitle} {artist} {album}"; From 0ad47651b283ab95992b693b2b7269728d7e0950 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 3 Aug 2025 12:30:14 -0400 Subject: [PATCH 119/146] Refactor Helpers folder to Playlist. --- src/{Helpers => Playlist}/PlaylistHelpers.cs | 2 +- src/UI/Tui.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/{Helpers => Playlist}/PlaylistHelpers.cs (97%) diff --git a/src/Helpers/PlaylistHelpers.cs b/src/Playlist/PlaylistHelpers.cs similarity index 97% rename from src/Helpers/PlaylistHelpers.cs rename to src/Playlist/PlaylistHelpers.cs index b38ab3b..52621e1 100644 --- a/src/Helpers/PlaylistHelpers.cs +++ b/src/Playlist/PlaylistHelpers.cs @@ -3,7 +3,7 @@ using ATL.Playlist; using MusicSharp.Data; -namespace MusicSharp.Helpers; +namespace MusicSharp.Playlist; public static class PlaylistHelpers { diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 93cd3f9..0842629 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -7,7 +7,7 @@ using MusicSharp.AudioPlayer; using MusicSharp.Data; using MusicSharp.Enums; -using MusicSharp.Helpers; +using MusicSharp.Playlist; using SoundFlow.Enums; using Terminal.Gui.App; using Terminal.Gui.Drawing; From 9c7b769550cb422bb4fbb249d56640e0a1a86e18 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 3 Aug 2025 13:44:13 -0400 Subject: [PATCH 120/146] Add screenshot Update README.md --- README.md | 26 ++++++++------------------ screenshots/musicsharp.png | Bin 0 -> 163169 bytes 2 files changed, 8 insertions(+), 18 deletions(-) create mode 100644 screenshots/musicsharp.png diff --git a/README.md b/README.md index 1888844..ff0a9d1 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,21 @@ # MusicSharp [![.NET](https://github.com/markjamesm/Baseball-Sharp/actions/workflows/dotnet.yml/badge.svg?branch=master)](https://github.com/markjamesm/MusicSharp/actions) [![C#](https://img.shields.io/badge/Language-CSharp-darkgreen.svg)](https://en.wikipedia.org/wiki/C_Sharp_(programming_language)) [![License](https://img.shields.io/badge/License-GPL-orange.svg)](https://www.gnu.org/licenses/gpl-3.0.en.html) -A cross-platform Terminal User Interface (TUI) music player written in C# (.NET 8) with the goal of being minimalistic and light on resources. +A cross-platform Terminal User Interface (TUI) music player written in C# with the goal of being minimalist +and light on resources. -**Note**: A major rewrite of MusicSharp (version 2) is actively being developed in the -[musicsharp-v2 branch](https://github.com/markjamesm/MusicSharp/tree/musicsharp-v2). This version will feature: - -- A completely rewritten UI, making use of Terminal.Gui 2.0. -- Library functionality to manage audio files. -- Standalone application (no .NET runtime required). +![Screenshot of MusicSharp](screenshots/musicsharp.png?raw=true) ## Features -- Cross-platform support (Windows, Mac, Linux). -- Play audio files. -- Load and play from music playlists (M3U). -- Streaming support. +- Plays MP3, FLAC, and WAV files, with support for internet radio streams. +- Cross-platform (Windows, Mac, Linux). +- Standalone application (no .NET runtime required). +- M3U playlist support. ## Installation -Download the [latest release of MusicSharp](https://github.com/markjamesm/MusicSharp/releases) and follow the installation instructions. - -## Screenshot - -Screenshot of MusicSharp - -MusicSharp makes use of the [SoundFlow](https://github.com/LSXPrime/SoundFlow) and [Terminal.Gui](https://github.com/migueldeicaza/gui.cs) libraries. +Download and run the [latest release of MusicSharp](https://github.com/markjamesm/MusicSharp/releases). ## Want to Contribute? diff --git a/screenshots/musicsharp.png b/screenshots/musicsharp.png new file mode 100644 index 0000000000000000000000000000000000000000..c941c644beb2f3b2e7bde06189c45e683e79d434 GIT binary patch literal 163169 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 Date: Sun, 3 Aug 2025 13:47:02 -0400 Subject: [PATCH 121/146] Remove unused using directive. --- src/AudioPlayer/IPlayer.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index ca8724d..812221b 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -1,6 +1,5 @@ using System; using MusicSharp.Data; -using MusicSharp.Enums; using SoundFlow.Enums; namespace MusicSharp.AudioPlayer; From 83954ffc74bf083189127de61800982fea8f1abf Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 3 Aug 2025 13:54:34 -0400 Subject: [PATCH 122/146] Add _volume field to track changes in audio volume across tracks. --- src/AudioPlayer/SoundFlowPlayer.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index 75881a7..0d84ec1 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -21,6 +21,7 @@ public sealed class SoundFlowPlayer : IPlayer private ISoundDataProvider? _streamDataProvider; private SoundPlayer? _player; private AudioFile? _nowPlaying; + private float _volume; // If we don't know the state of the player, default to stopped? public PlaybackState State => _player?.State ?? PlaybackState.Stopped; @@ -46,6 +47,7 @@ public SoundFlowPlayer(MiniAudioEngine audioEngine) }; _audioPlaybackDevice = _audioEngine.InitializePlaybackDevice(defaultPlaybackDevice, _audioFormat); + _volume = 1f; } public void PlayPause(AudioFile audioFile) @@ -87,6 +89,7 @@ public void PlayPause(AudioFile audioFile) _player = new SoundPlayer(_audioEngine, _audioFormat, _streamDataProvider); _audioPlaybackDevice.MasterMixer.AddComponent(_player); _audioPlaybackDevice.Start(); + _player.Volume = _volume; _player.Play(); _nowPlaying = audioFile; } @@ -110,6 +113,7 @@ public void IncreaseVolume() // Verify what SoundFlow's max volume level is // For now this should be enough based on testing _player.Volume = Math.Clamp(_player.Volume + .1f, 0f, 2f); + _volume = _player.Volume; } } @@ -118,6 +122,7 @@ public void DecreaseVolume() if (_player != null) { _player.Volume = Math.Clamp(_player.Volume - .1f, 0f, 2f); + _volume = _player.Volume; } } From ab54d4a03aa1167a72624821470f006e3d691726 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 3 Aug 2025 14:04:39 -0400 Subject: [PATCH 123/146] Change colors of selected row to white and blue. --- src/UI/Tui.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 0842629..47bf708 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -502,6 +502,8 @@ private void PlaylistView_RowRender(object? sender, ListViewRowEventArgs obj) { if (obj.Row == _playlistView.SelectedItem) { + obj.RowAttribute = new Attribute(Color.White, Color.Blue); + return; } From bebd41e07dd1234594061e9deb6d891c8255f810 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 3 Aug 2025 14:22:54 -0400 Subject: [PATCH 124/146] Update screenshot Add padding to "Seek 5s button". --- screenshots/musicsharp.png | Bin 163169 -> 138659 bytes src/UI/Tui.cs | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/screenshots/musicsharp.png b/screenshots/musicsharp.png index c941c644beb2f3b2e7bde06189c45e683e79d434..97debb77481e62fd303d6e42330d4425fa68e9aa 100644 GIT binary patch literal 138659 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

6_?c?Yj_oX8lML*zp&^Fc(ysv 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�p`2C@DAv0k4=qDZL{eo>53mjuM-XT#?bG~ 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 z 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 J__W8v{|8?m=V$-` literal 163169 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 From bc51d3d26a7510643e083011d3f4b9d90ca0fe7b Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 3 Aug 2025 17:02:13 -0400 Subject: [PATCH 125/146] Fix bug in playPauseButton. --- src/AudioPlayer/IPlayer.cs | 6 ++++++ src/AudioPlayer/SoundFlowPlayer.cs | 12 ++++++------ src/UI/Tui.cs | 11 ++++++++--- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index 812221b..8fb729d 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -23,6 +23,12 @@ public interface IPlayer: IDisposable /// Returns the current time played. ///

float CurrentTime { get; } + + /// + /// Returns the currently playing track. + /// + AudioFile? NowPlaying { get; } + /// /// Method to play and pause audio. diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index 0d84ec1..5370d91 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -20,13 +20,13 @@ public sealed class SoundFlowPlayer : IPlayer private readonly AudioFormat _audioFormat; private ISoundDataProvider? _streamDataProvider; private SoundPlayer? _player; - private AudioFile? _nowPlaying; private float _volume; // If we don't know the state of the player, default to stopped? public PlaybackState State => _player?.State ?? PlaybackState.Stopped; public float TrackLength => _player?.Duration ?? 0; public float CurrentTime => _player?.Time ?? 0; + public AudioFile? NowPlaying { get; set; } public SoundFlowPlayer(MiniAudioEngine audioEngine) { @@ -52,7 +52,7 @@ public SoundFlowPlayer(MiniAudioEngine audioEngine) public void PlayPause(AudioFile audioFile) { - if (_player != null && audioFile.Path.Equals(_nowPlaying?.Path)) + if (_player != null && audioFile.Path.Equals(NowPlaying?.Path)) { switch (_player.State) { @@ -68,13 +68,13 @@ public void PlayPause(AudioFile audioFile) } } - if (!audioFile.Path.Equals(_nowPlaying?.Path)) + if (!audioFile.Path.Equals(NowPlaying?.Path)) { if (_player != null && _player.State == PlaybackState.Playing) { _player.Stop(); _audioPlaybackDevice.Stop(); - _nowPlaying = null; + NowPlaying = null; } _streamDataProvider = audioFile.Type switch @@ -91,7 +91,7 @@ public void PlayPause(AudioFile audioFile) _audioPlaybackDevice.Start(); _player.Volume = _volume; _player.Play(); - _nowPlaying = audioFile; + NowPlaying = audioFile; } } } @@ -102,7 +102,7 @@ public void Stop() { _player?.Stop(); _audioPlaybackDevice.Stop(); - _nowPlaying = null; + NowPlaying = null; } } diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index e9e79b2..d0bbba9 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -170,13 +170,18 @@ public Tui(IPlayer player) _playPauseButton.Accepting += (s, e) => { var selected = _playlistView.SelectedItem; - - if (_loadedPlaylist != null) + var selectedTrack = _loadedPlaylist?.ElementAtOrDefault(selected); + + if (selectedTrack != null) { - var selectedTrack = _loadedPlaylist.ElementAt(selected); PlayHandler(selectedTrack); } + if (_player.NowPlaying != null) + { + PlayHandler(_player.NowPlaying); + } + e.Handled = true; }; From be7d7e1668f40df5ac7d66a62b9e971ca621df31 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 3 Aug 2025 18:28:04 -0400 Subject: [PATCH 126/146] Fix bug when pausing tracks in playlist. --- src/UI/Tui.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index d0bbba9..293d247 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -177,7 +177,7 @@ public Tui(IPlayer player) PlayHandler(selectedTrack); } - if (_player.NowPlaying != null) + if (selectedTrack == null && _player.NowPlaying != null) { PlayHandler(_player.NowPlaying); } @@ -310,6 +310,14 @@ public Tui(IPlayer player) private void PlayHandler(AudioFile audioFile) { _player.PlayPause(audioFile); + + _playPauseButton.Text = _player.State switch + { + PlaybackState.Stopped => "Play", + PlaybackState.Playing => "Pause", + PlaybackState.Paused => "Play", + _ => _playPauseButton.Text + }; if (_player.State == PlaybackState.Playing) { @@ -320,14 +328,6 @@ private void PlayHandler(AudioFile audioFile) RunMainLoop(); } - - _playPauseButton.Text = _player.State switch - { - PlaybackState.Stopped => "Play", - PlaybackState.Playing => "Pause", - PlaybackState.Paused => "Play", - _ => _playPauseButton.Text - }; } #region OpenMethods From dfc25b04a369a54b5a19cdc39e797793ba6a737e Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 3 Aug 2025 19:12:18 -0400 Subject: [PATCH 127/146] Move stream's _nowPlayingLabel into PlayHandler() method. --- src/UI/Tui.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 293d247..d5fdb09 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -321,10 +321,15 @@ private void PlayHandler(AudioFile audioFile) if (_player.State == PlaybackState.Playing) { - _nowPlayingLabel.Text = - $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Title) ? "Unknown" : audioFile.TrackInfo.Title)} - " + - $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Artist) ? "Unknown" : audioFile.TrackInfo.Artist)} - " + - $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Album) ? "Unknown" : audioFile.TrackInfo.Album)}"; + _nowPlayingLabel.Text = audioFile.Type switch + { + EFileType.File => + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Title) ? "Unknown" : audioFile.TrackInfo.Title)} - " + + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Artist) ? "Unknown" : audioFile.TrackInfo.Artist)} - " + + $"{(string.IsNullOrWhiteSpace(audioFile.TrackInfo.Album) ? "Unknown" : audioFile.TrackInfo.Album)}", + EFileType.Stream => $"Web stream: {audioFile.Path}", + _ => _nowPlayingLabel.Text + }; RunMainLoop(); } @@ -386,7 +391,6 @@ private void OpenStream() { var audioFile = new AudioFile(streamUrl.Text, EFileType.Stream); PlayHandler(audioFile); - _nowPlayingLabel.Text = $"Web stream: {streamUrl.Text}"; } e.Handled = true; From f5a31cda2282949ceb72172320f5390970df8b56 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Sun, 3 Aug 2025 22:50:11 -0400 Subject: [PATCH 128/146] Add functionality to autoplay next track in playlist. --- src/AudioPlayer/IPlayer.cs | 2 +- src/AudioPlayer/SoundFlowPlayer.cs | 2 +- src/UI/Tui.cs | 24 ++++++++++++++++++++++-- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index 8fb729d..69498a9 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -27,7 +27,7 @@ public interface IPlayer: IDisposable /// /// Returns the currently playing track. /// - AudioFile? NowPlaying { get; } + AudioFile? NowPlaying { get; set; } /// diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index 5370d91..7a102ca 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -70,7 +70,7 @@ public void PlayPause(AudioFile audioFile) if (!audioFile.Path.Equals(NowPlaying?.Path)) { - if (_player != null && _player.State == PlaybackState.Playing) + if (_player != null && _player.State != PlaybackState.Stopped) { _player.Stop(); _audioPlaybackDevice.Stop(); diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index d5fdb09..eba21b4 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -28,6 +28,7 @@ public class Tui : Toplevel private readonly Button _playPauseButton; private readonly ListView _playlistView; private readonly ObservableCollection? _loadedPlaylist = []; + private int _playlistIndex; private object? _mainLoopTimeout; private const uint MainLoopTimeoutTick = 100; // ms @@ -129,6 +130,7 @@ public Tui(IPlayer player) { if (args.Value != null) { + _playlistIndex = args.Item; PlayHandler((AudioFile)args.Value); } }; @@ -170,6 +172,7 @@ public Tui(IPlayer player) _playPauseButton.Accepting += (s, e) => { var selected = _playlistView.SelectedItem; + _playlistIndex = selected; var selectedTrack = _loadedPlaylist?.ElementAtOrDefault(selected); if (selectedTrack != null) @@ -335,6 +338,23 @@ private void PlayHandler(AudioFile audioFile) } } + private void AutoPlayNextTrack() + { + if (Math.Abs(_player.TrackLength - _player.CurrentTime) < 0.5f) + { + if (_playlistIndex + 1 < _loadedPlaylist?.Count) + { + var nextTrack = _loadedPlaylist.ElementAtOrDefault(_playlistIndex + 1); + + if (nextTrack != null) + { + PlayHandler(nextTrack); + _playlistIndex++; + } + } + } + } + #region OpenMethods private void OpenFile() @@ -426,10 +446,10 @@ private void RunMainLoop() { _progressBar.Fraction = _player.CurrentTime / _player.TrackLength; TimePlayedLabel(); - return true; } - + + AutoPlayNextTrack(); return false; } ); From 7c27b9f45ec25d0109ed53610f849ddbc94d48bf Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 4 Aug 2025 22:35:53 -0400 Subject: [PATCH 129/146] Change Playback buttons to symbols. --- src/UI/Tui.cs | 96 ++++++++++++++++++++++----------------------------- 1 file changed, 42 insertions(+), 54 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index eba21b4..0cb67f6 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -159,16 +159,27 @@ public Tui(IPlayer player) CanFocus = true, BorderStyle = LineStyle.Rounded }; - - _playPauseButton = new Button + + var seekBackwardButton = new Button { X = 0, Y = 0, - IsDefault = false, CanFocus = true, - Text = "Play" + Text = "<<" + }; + seekBackwardButton.Accepting += (s, e) => + { + _player.SeekBackward(); + e.Handled = true; + }; + + _playPauseButton = new Button + { + X = Pos.Right(seekBackwardButton), + Y = 0, + CanFocus = true, + Text = "▶" }; - _playPauseButton.Accepting += (s, e) => { var selected = _playlistView.SelectedItem; @@ -187,35 +198,44 @@ public Tui(IPlayer player) e.Handled = true; }; - + + var seekForwardButton = new Button + { + X = Pos.Right(_playPauseButton), + Y = 0, + CanFocus = true, + Text = ">>" + }; + seekForwardButton.Accepting += (s, e) => + { + _player.SeekForward(); + e.Handled = true; + }; + var stopButton = new Button { - X = 0, - Y = Pos.Bottom(_playPauseButton), - IsDefault = false, + X = Pos.Right(seekForwardButton), + Y = 0, CanFocus = true, - Text = "Stop", + Text = "⏹︎", }; - stopButton.Accepting += (s, e) => { _player.Stop(); _progressBar.Fraction = 0; TimePlayedLabel(); _nowPlayingLabel!.Text = string.Empty; - _playPauseButton.Text = "Play"; + _playPauseButton.Text = "▶"; e.Handled = true; }; - + var volumeIncreaseButton = new Button { - X = Pos.Right(_playPauseButton), - Y = 0, - IsDefault = false, + X = 0, + Y = Pos.Bottom(seekBackwardButton), CanFocus = true, Text = "Volume +" }; - volumeIncreaseButton.Accepting += (s, e) => { _player.IncreaseVolume(); @@ -224,49 +244,17 @@ public Tui(IPlayer player) var volumeDecreaseButton = new Button { - X = Pos.Right(_playPauseButton), - Y = Pos.Bottom(volumeIncreaseButton), - CanFocus = true, + X = Pos.Right(volumeIncreaseButton), + Y = Pos.Bottom(seekForwardButton), IsDefault = false, Text = "Volume -" }; - volumeDecreaseButton.Accepting += (s, e) => { _player.DecreaseVolume(); e.Handled = true; }; - var seekForwardButton = new Button - { - X = Pos.Right(volumeIncreaseButton), - Y = 0, - IsDefault = false, - CanFocus = true, - Text = "Seek 5s " - }; - - seekForwardButton.Accepting += (s, e) => - { - _player.SeekForward(); - e.Handled = true; - }; - - var seekBackwardButton = new Button - { - X = Pos.Right(volumeDecreaseButton), - Y = Pos.Bottom(seekForwardButton), - IsDefault = false, - CanFocus = true, - Text = "Seek -5s" - }; - - seekBackwardButton.Accepting += (s, e) => - { - _player.SeekBackward(); - e.Handled = true; - }; - playbackControls.Add(_playPauseButton, stopButton, volumeIncreaseButton, volumeDecreaseButton, seekForwardButton, seekBackwardButton); @@ -316,9 +304,9 @@ private void PlayHandler(AudioFile audioFile) _playPauseButton.Text = _player.State switch { - PlaybackState.Stopped => "Play", - PlaybackState.Playing => "Pause", - PlaybackState.Paused => "Play", + PlaybackState.Stopped => "▶", + PlaybackState.Playing => "⏸︎", + PlaybackState.Paused => "▶", _ => _playPauseButton.Text }; From 71f7d90b957bcb36c2850067fd4c13c05c5ecb08 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 4 Aug 2025 23:52:24 -0400 Subject: [PATCH 130/146] Replace volume buttons with volume slider. --- src/AudioPlayer/IPlayer.cs | 9 +--- src/AudioPlayer/SoundFlowPlayer.cs | 15 +----- src/UI/Tui.cs | 81 +++++++++++++++--------------- 3 files changed, 45 insertions(+), 60 deletions(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index 69498a9..ff1148a 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -42,14 +42,9 @@ public interface IPlayer: IDisposable void Stop(); /// - /// Method to increase audio playback volume. + /// Change audio volume /// - void IncreaseVolume(); - - /// - /// Method to decrease audio playback volume. - /// - void DecreaseVolume(); + void ChangeVolume(float amount); /// /// Skip ahead in the audio file 5s. diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index 7a102ca..ad387b1 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -106,22 +106,11 @@ public void Stop() } } - public void IncreaseVolume() - { - if (_player !=null) - { - // Verify what SoundFlow's max volume level is - // For now this should be enough based on testing - _player.Volume = Math.Clamp(_player.Volume + .1f, 0f, 2f); - _volume = _player.Volume; - } - } - - public void DecreaseVolume() + public void ChangeVolume(float amount) { if (_player != null) { - _player.Volume = Math.Clamp(_player.Volume - .1f, 0f, 2f); + _player.Volume = Math.Clamp(amount, 0f, 2f); _volume = _player.Volume; } } diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 0cb67f6..c0d8129 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -1,5 +1,6 @@ using System; using System.Collections; +using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.Linq; @@ -116,7 +117,7 @@ public Tui(IPlayer player) X = 0, Y = Pos.Bottom(menuBar), Width = Dim.Fill(), - Height = Dim.Fill(10), + Height = Dim.Fill(11), CanFocus = true, BorderStyle = LineStyle.Rounded, Source = new TrackListDataSource(_loadedPlaylist), @@ -159,7 +160,7 @@ public Tui(IPlayer player) CanFocus = true, BorderStyle = LineStyle.Rounded }; - + var seekBackwardButton = new Button { X = 0, @@ -172,7 +173,7 @@ public Tui(IPlayer player) _player.SeekBackward(); e.Handled = true; }; - + _playPauseButton = new Button { X = Pos.Right(seekBackwardButton), @@ -198,7 +199,7 @@ public Tui(IPlayer player) e.Handled = true; }; - + var seekForwardButton = new Button { X = Pos.Right(_playPauseButton), @@ -211,7 +212,7 @@ public Tui(IPlayer player) _player.SeekForward(); e.Handled = true; }; - + var stopButton = new Button { X = Pos.Right(seekForwardButton), @@ -228,36 +229,36 @@ public Tui(IPlayer player) _playPauseButton.Text = "▶"; e.Handled = true; }; - - var volumeIncreaseButton = new Button - { - X = 0, - Y = Pos.Bottom(seekBackwardButton), - CanFocus = true, - Text = "Volume +" - }; - volumeIncreaseButton.Accepting += (s, e) => - { - _player.IncreaseVolume(); - e.Handled = true; - }; - var volumeDecreaseButton = new Button + // Verify what SoundFlow's max volume level is + // For now this should be enough based on testing + List volumeOptions = + [ + 0f, .1f, .2f, .3f, .4f, .5f, .6f, .7f, .8f, 1.0f, 1.2f, 1.4f + ]; + + var volumeSlider = new Slider(volumeOptions) { - X = Pos.Right(volumeIncreaseButton), - Y = Pos.Bottom(seekForwardButton), - IsDefault = false, - Text = "Volume -" + Title = "Volume", + X = 0, + Y = Pos.Bottom(_playPauseButton), + Width = Dim.Fill(), + Height = Dim.Auto(), + Type = SliderType.LeftRange, + AllowEmpty = false, + ShowLegends = false, + BorderStyle = LineStyle.Rounded, }; - volumeDecreaseButton.Accepting += (s, e) => + volumeSlider.OptionsChanged += (s, e) => { - _player.DecreaseVolume(); - e.Handled = true; + var value = e.Options.FirstOrDefault().Value; + var flo = (float)value.Data; + _player.ChangeVolume(flo); }; - playbackControls.Add(_playPauseButton, stopButton, volumeIncreaseButton, - volumeDecreaseButton, seekForwardButton, seekBackwardButton); - + playbackControls.Add(_playPauseButton, stopButton, seekForwardButton, seekBackwardButton, + volumeSlider); + #endregion #region PlaybackInfo @@ -297,11 +298,11 @@ public Tui(IPlayer player) } #endregion - + private void PlayHandler(AudioFile audioFile) { _player.PlayPause(audioFile); - + _playPauseButton.Text = _player.State switch { PlaybackState.Stopped => "▶", @@ -421,7 +422,7 @@ private void OpenStream() streamDialog.Add(uriLabel, streamUrl, loadStreamButton, closeButton); Application.Run(streamDialog); } - + #endregion private void RunMainLoop() @@ -436,7 +437,7 @@ private void RunMainLoop() TimePlayedLabel(); return true; } - + AutoPlayNextTrack(); return false; } @@ -465,7 +466,7 @@ private void AddToPlaylist() } } } - + private void RemoveFromPlaylist() { var s = _playlistView.SelectedItem; @@ -514,13 +515,13 @@ private void SavePlaylist() } } } - + private void PlaylistView_RowRender(object? sender, ListViewRowEventArgs obj) { if (obj.Row == _playlistView.SelectedItem) { obj.RowAttribute = new Attribute(Color.White, Color.Blue); - + return; } @@ -540,9 +541,9 @@ private void PlaylistView_RowRender(object? sender, ListViewRowEventArgs obj) obj.RowAttribute = new Attribute(Color.Black, Color.Green); } } - + #endregion - + private void TimePlayedLabel() { if (_player.State != PlaybackState.Stopped) @@ -590,7 +591,7 @@ __ ___ _ _____ __ } #region IListDataSource - + private class TrackListDataSource : IListDataSource { private const int TitleColumnWidth = 40; @@ -757,6 +758,6 @@ public void Dispose() _loadedPlaylist = null; } } - + #endregion } \ No newline at end of file From c9ad8cf13b8b1c24f65e5159ba2943e598e68e3d Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 5 Aug 2025 21:35:39 -0400 Subject: [PATCH 131/146] Set volume slider to be in the middle. --- src/UI/Tui.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index c0d8129..afa1f53 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -249,11 +249,12 @@ public Tui(IPlayer player) ShowLegends = false, BorderStyle = LineStyle.Rounded, }; + volumeSlider.SetOption(6); volumeSlider.OptionsChanged += (s, e) => { var value = e.Options.FirstOrDefault().Value; - var flo = (float)value.Data; - _player.ChangeVolume(flo); + var volumeLevel = (float)value.Data; + _player.ChangeVolume(volumeLevel); }; playbackControls.Add(_playPauseButton, stopButton, seekForwardButton, seekBackwardButton, From ab4cb6fc34949be790cc017d1e2f9d924e7c1785 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 5 Aug 2025 21:44:20 -0400 Subject: [PATCH 132/146] Change progress bar style to continuous. --- src/UI/Tui.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index afa1f53..38d763a 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -145,6 +145,7 @@ public Tui(IPlayer player) Height = 3, CanFocus = false, BorderStyle = LineStyle.Rounded, + ProgressBarStyle = ProgressBarStyle.Continuous, Fraction = 0f, }; From 9e4bb63e11a648b3862a378360cb3c54aa1ef530 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 5 Aug 2025 21:57:10 -0400 Subject: [PATCH 133/146] Update hotkeys --- src/UI/Tui.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 38d763a..7dfe0a5 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -50,19 +50,19 @@ public Tui(IPlayer player) Title = "_File", new MenuItemv2[] { - new("_Open file", "Open audio file", OpenFile), - new("Open _stream", "Open a stream URL", OpenStream), - new("_Quit", "Quit MusicSharp", RequestStop) + new("_Open file", "Open audio file", OpenFile, Key.F1), + new("Open _stream", "Open a stream URL", OpenStream, Key.F2), + new("_Quit", "Quit MusicSharp", RequestStop, Key.Esc) } ), new MenuBarItemv2( Title = "Playlist", new MenuItemv2[] { - new("_Add to playlist", "Add track(s) to playlist", AddToPlaylist), - new("_Remove from playlist", "Remove selected track from playlist", RemoveFromPlaylist), - new("Open _playlist", "Open a playlist", OpenPlaylist), - new("_Save playlist", "Save to playlist", SavePlaylist) + new("_Add to playlist", "Add track(s) to playlist", AddToPlaylist, Key.A.WithAlt), + new("_Remove from playlist", "Remove selected track from playlist", RemoveFromPlaylist, Key.R.WithAlt), + new("Load _playlist", "Load a playlist", OpenPlaylist, Key.L.WithAlt), + new("_Save playlist", "Save to playlist", SavePlaylist, Key.S.WithAlt) } ), new MenuBarItemv2( @@ -98,7 +98,7 @@ public Tui(IPlayer player) new Shortcut { Text = "Load playlist", - Key = Key.F3, + Key = Key.L.WithAlt, Action = OpenPlaylist }, new Shortcut @@ -235,7 +235,7 @@ public Tui(IPlayer player) // For now this should be enough based on testing List volumeOptions = [ - 0f, .1f, .2f, .3f, .4f, .5f, .6f, .7f, .8f, 1.0f, 1.2f, 1.4f + 0f, .2f, .4f, .6f, .8f, 1.0f, 1.2f, 1.4f, 1.6f, 1.8f, 2.0f ]; var volumeSlider = new Slider(volumeOptions) @@ -250,7 +250,7 @@ public Tui(IPlayer player) ShowLegends = false, BorderStyle = LineStyle.Rounded, }; - volumeSlider.SetOption(6); + volumeSlider.SetOption(5); volumeSlider.OptionsChanged += (s, e) => { var value = e.Options.FirstOrDefault().Value; From e23fce04b9a6968e90cc6b25ec97885348869619 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Tue, 5 Aug 2025 22:38:48 -0400 Subject: [PATCH 134/146] Add skip track functionality Add Playback menu --- src/UI/Tui.cs | 51 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 4 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 7dfe0a5..5c2712a 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -55,12 +55,23 @@ public Tui(IPlayer player) new("_Quit", "Quit MusicSharp", RequestStop, Key.Esc) } ), + new MenuBarItemv2( + Title = "_Playback", + new MenuItemv2[] + { + new("Seek backward", string.Empty, _player.SeekBackward, Key.N.WithAlt), + new("Seek forward", string.Empty, _player.SeekForward, Key.M.WithAlt), + new("Previous", string.Empty, SkipBackward, Key.CursorLeft.WithAlt), + new("Next", string.Empty, SkipForward, Key.CursorRight.WithAlt), + } + ), new MenuBarItemv2( Title = "Playlist", new MenuItemv2[] { new("_Add to playlist", "Add track(s) to playlist", AddToPlaylist, Key.A.WithAlt), - new("_Remove from playlist", "Remove selected track from playlist", RemoveFromPlaylist, Key.R.WithAlt), + new("_Remove from playlist", "Remove selected track from playlist", RemoveFromPlaylist, + Key.R.WithAlt), new("Load _playlist", "Load a playlist", OpenPlaylist, Key.L.WithAlt), new("_Save playlist", "Save to playlist", SavePlaylist, Key.S.WithAlt) } @@ -235,7 +246,7 @@ public Tui(IPlayer player) // For now this should be enough based on testing List volumeOptions = [ - 0f, .2f, .4f, .6f, .8f, 1.0f, 1.2f, 1.4f, 1.6f, 1.8f, 2.0f + 0f, .1f, .2f, .4f, .6f, .8f, 1.0f, 1.2f, 1.4f, 1.6f, 1.8f, 2.0f ]; var volumeSlider = new Slider(volumeOptions) @@ -250,7 +261,7 @@ public Tui(IPlayer player) ShowLegends = false, BorderStyle = LineStyle.Rounded, }; - volumeSlider.SetOption(5); + volumeSlider.SetOption(6); volumeSlider.OptionsChanged += (s, e) => { var value = e.Options.FirstOrDefault().Value; @@ -260,7 +271,7 @@ public Tui(IPlayer player) playbackControls.Add(_playPauseButton, stopButton, seekForwardButton, seekBackwardButton, volumeSlider); - + #endregion #region PlaybackInfo @@ -300,6 +311,8 @@ public Tui(IPlayer player) } #endregion + + #region PlaybackMethods private void PlayHandler(AudioFile audioFile) { @@ -346,6 +359,36 @@ private void AutoPlayNextTrack() } } + private void SkipForward() + { + if (_playlistIndex + 1 < _loadedPlaylist?.Count) + { + var nextTrack = _loadedPlaylist?.ElementAtOrDefault(_playlistIndex + 1); + + if (nextTrack != null) + { + PlayHandler(nextTrack); + _playlistIndex++; + } + } + } + + private void SkipBackward() + { + if (_playlistIndex - 1 >= 0) + { + var nextTrack = _loadedPlaylist?.ElementAtOrDefault(_playlistIndex - 1); + + if (nextTrack != null) + { + PlayHandler(nextTrack); + _playlistIndex--; + } + } + } + + #endregion + #region OpenMethods private void OpenFile() From fe7069e18bbd97095d89ad1ca280c4cf7112a634 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 6 Aug 2025 00:12:08 -0400 Subject: [PATCH 135/146] Working on playback device selection functionality. --- src/AudioPlayer/IPlayer.cs | 12 ++- src/AudioPlayer/SoundFlowPlayer.cs | 6 ++ src/UI/Tui.cs | 120 +++++++++++++++++++++++++++-- 3 files changed, 129 insertions(+), 9 deletions(-) diff --git a/src/AudioPlayer/IPlayer.cs b/src/AudioPlayer/IPlayer.cs index ff1148a..0133965 100644 --- a/src/AudioPlayer/IPlayer.cs +++ b/src/AudioPlayer/IPlayer.cs @@ -1,6 +1,7 @@ using System; using MusicSharp.Data; using SoundFlow.Enums; +using SoundFlow.Structs; namespace MusicSharp.AudioPlayer; @@ -13,6 +14,11 @@ public interface IPlayer: IDisposable /// Gets a value indicating whether the audio player is playing. /// PlaybackState State { get; } + + /// + /// Gets the list of audio playback devices. + /// + DeviceInfo[] PlaybackDevices { get; } /// /// Returns the total length of the audio file. @@ -29,7 +35,11 @@ public interface IPlayer: IDisposable /// AudioFile? NowPlaying { get; set; } - + /// + /// Changes the current audio playback device. + /// + void ChangePlaybackDevice(DeviceInfo device); + /// /// Method to play and pause audio. /// diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index ad387b1..ecc0976 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -27,6 +27,7 @@ public sealed class SoundFlowPlayer : IPlayer public float TrackLength => _player?.Duration ?? 0; public float CurrentTime => _player?.Time ?? 0; public AudioFile? NowPlaying { get; set; } + public DeviceInfo[] PlaybackDevices => _audioEngine.PlaybackDevices; public SoundFlowPlayer(MiniAudioEngine audioEngine) { @@ -49,6 +50,11 @@ public SoundFlowPlayer(MiniAudioEngine audioEngine) _audioPlaybackDevice = _audioEngine.InitializePlaybackDevice(defaultPlaybackDevice, _audioFormat); _volume = 1f; } + + public void ChangePlaybackDevice(DeviceInfo device) + { + _audioEngine.SwitchDevice(_audioPlaybackDevice, device); + } public void PlayPause(AudioFile audioFile) { diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 5c2712a..5a8dbaf 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -10,6 +10,7 @@ using MusicSharp.Enums; using MusicSharp.Playlist; using SoundFlow.Enums; +using SoundFlow.Structs; using Terminal.Gui.App; using Terminal.Gui.Drawing; using Terminal.Gui.Input; @@ -65,6 +66,13 @@ public Tui(IPlayer player) new("Next", string.Empty, SkipForward, Key.CursorRight.WithAlt), } ), + new MenuBarItemv2( + Title = "Audio", + new MenuItemv2[] + { + new("Audio device", string.Empty, SelectAudioDevice, Key.N.WithAlt), + } + ), new MenuBarItemv2( Title = "Playlist", new MenuItemv2[] @@ -438,7 +446,6 @@ private void OpenStream() X = Pos.Center(), Y = Pos.Bottom(streamUrl), }; - loadStreamButton.Accepting += (s, e) => { if (streamUrl.Text != string.Empty) @@ -457,7 +464,6 @@ private void OpenStream() X = Pos.Right(loadStreamButton), Y = Pos.Bottom(streamUrl) }; - closeButton.Accepting += (s, e) => { e.Handled = true; @@ -617,6 +623,64 @@ private void TimePlayedLabel() } } + private void SelectAudioDevice() + { + var deviceDialog = new Dialog + { + Title = "Select Audio Device", + Width = Dim.Auto(DimAutoStyle.Auto, 5), + Height = Dim.Auto(DimAutoStyle.Auto, 7) + }; + + var audioDeviceList = new ObservableCollection(); + + foreach (var device in _player.PlaybackDevices) + { + audioDeviceList.Add(device); + } + + var audioDeviceListView = new ListView() + { + Title = "Audio Devices", + X = 0, + Y = 0, + Width = Dim.Auto(), + Height = Dim.Auto(), + AllowsMarking = true + }; + audioDeviceListView.SetSource(audioDeviceList); + + var setAudioDeviceButton = new Button + { + Text = "Select", + X = 2, + Y = Pos.Bottom(audioDeviceListView), + }; + setAudioDeviceButton.Accepting += (s, e) => + { + var selectedDevice = audioDeviceList.ElementAt(audioDeviceListView.SelectedItem); + _player.ChangePlaybackDevice(selectedDevice); + + e.Handled = true; + RequestStop(); + }; + + var closeButton = new Button + { + Text = "Close", + X = Pos.Right(setAudioDeviceButton), + Y = Pos.Bottom(audioDeviceListView) + }; + closeButton.Accepting += (s, e) => + { + e.Handled = true; + RequestStop(); + }; + + deviceDialog.Add(audioDeviceListView, setAudioDeviceButton, closeButton); + Application.Run(deviceDialog); + } + private static string GetAboutMessage() { var sb = new StringBuilder(); @@ -637,6 +701,47 @@ __ ___ _ _____ __ #region IListDataSource + private class AudioListDataSource : IListDataSource + { + public AudioListDataSource() + { + + } + + public bool IsMarked(int item) + { + throw new NotImplementedException(); + } + + public void Render(ListView listView, bool selected, int item, int col, int line, int width, int start = 0) + { + throw new NotImplementedException(); + } + + public void SetMark(int item, bool value) + { + throw new NotImplementedException(); + } + + public IList ToList() + { + throw new NotImplementedException(); + } + + public int Count { get; } + public int Length { get; } + public bool SuspendCollectionChangedEvent { get; set; } + +#pragma warning disable CS0067 + public event NotifyCollectionChangedEventHandler? CollectionChanged; +#pragma warning restore CS0067 + + public void Dispose() + { + throw new NotImplementedException(); + } + } + private class TrackListDataSource : IListDataSource { private const int TitleColumnWidth = 40; @@ -645,12 +750,6 @@ private class TrackListDataSource : IListDataSource private int _count; private BitArray _marks; private ObservableCollection? _loadedPlaylist; - - public TrackListDataSource(ObservableCollection? audioFiles) - { - AudioFiles = audioFiles; - } - private ObservableCollection? AudioFiles { get => _loadedPlaylist; @@ -665,6 +764,11 @@ private ObservableCollection? AudioFiles } } } + + public TrackListDataSource(ObservableCollection? audioFiles) + { + AudioFiles = audioFiles; + } public bool IsMarked(int item) { From 5b28221d7a6ae899d5189085b4bc12df32d37b88 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 6 Aug 2025 16:25:00 -0400 Subject: [PATCH 136/146] Fix device switching so the AudioPlaybackDevice is properly disposed of. --- src/AudioPlayer/SoundFlowPlayer.cs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/AudioPlayer/SoundFlowPlayer.cs b/src/AudioPlayer/SoundFlowPlayer.cs index ecc0976..1a26dca 100644 --- a/src/AudioPlayer/SoundFlowPlayer.cs +++ b/src/AudioPlayer/SoundFlowPlayer.cs @@ -16,7 +16,7 @@ namespace MusicSharp.AudioPlayer; public sealed class SoundFlowPlayer : IPlayer { private readonly MiniAudioEngine _audioEngine; - private readonly AudioPlaybackDevice _audioPlaybackDevice; + private AudioPlaybackDevice _audioPlaybackDevice; private readonly AudioFormat _audioFormat; private ISoundDataProvider? _streamDataProvider; private SoundPlayer? _player; @@ -40,20 +40,14 @@ public SoundFlowPlayer(MiniAudioEngine audioEngine) { } - _audioFormat = new AudioFormat - { - Format = SampleFormat.F32, - SampleRate = 48000, - Channels = 2 - }; - + _audioFormat = AudioFormat.DvdHq; _audioPlaybackDevice = _audioEngine.InitializePlaybackDevice(defaultPlaybackDevice, _audioFormat); _volume = 1f; } public void ChangePlaybackDevice(DeviceInfo device) { - _audioEngine.SwitchDevice(_audioPlaybackDevice, device); + _audioPlaybackDevice = _audioEngine.SwitchDevice(_audioPlaybackDevice, device); } public void PlayPause(AudioFile audioFile) From d5e60f5b579342e20b5f7fb0d475d23953d30aca Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 6 Aug 2025 16:29:00 -0400 Subject: [PATCH 137/146] Change Audio to Settings menu. --- src/UI/Tui.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 5a8dbaf..a3abcec 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -66,13 +66,6 @@ public Tui(IPlayer player) new("Next", string.Empty, SkipForward, Key.CursorRight.WithAlt), } ), - new MenuBarItemv2( - Title = "Audio", - new MenuItemv2[] - { - new("Audio device", string.Empty, SelectAudioDevice, Key.N.WithAlt), - } - ), new MenuBarItemv2( Title = "Playlist", new MenuItemv2[] @@ -84,6 +77,13 @@ public Tui(IPlayer player) new("_Save playlist", "Save to playlist", SavePlaylist, Key.S.WithAlt) } ), + new MenuBarItemv2( + Title = "Settings", + new MenuItemv2[] + { + new("Audio device", "Select playback device", SelectAudioDevice, Key.N.WithAlt), + } + ), new MenuBarItemv2( Title = "Help", new MenuItemv2[] From 64af7c0abf19f50e72f0631e928e7ff5cb39ab55 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Wed, 6 Aug 2025 23:47:14 -0400 Subject: [PATCH 138/146] Add select audio device dialog --- src/UI/Tui.cs | 129 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 111 insertions(+), 18 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index a3abcec..6def010 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -628,8 +628,10 @@ private void SelectAudioDevice() var deviceDialog = new Dialog { Title = "Select Audio Device", - Width = Dim.Auto(DimAutoStyle.Auto, 5), - Height = Dim.Auto(DimAutoStyle.Auto, 7) + X = Pos.Center(), + Y = Pos.Center(), + Width = Dim.Auto(), + Height = Dim.Auto() }; var audioDeviceList = new ObservableCollection(); @@ -644,17 +646,18 @@ private void SelectAudioDevice() Title = "Audio Devices", X = 0, Y = 0, - Width = Dim.Auto(), + Width = Dim.Auto() + 10, Height = Dim.Auto(), - AllowsMarking = true + Source = new AudioDeviceListDataSource(audioDeviceList), + AllowsMarking = true, + AllowsMultipleSelection = false }; - audioDeviceListView.SetSource(audioDeviceList); var setAudioDeviceButton = new Button { Text = "Select", X = 2, - Y = Pos.Bottom(audioDeviceListView), + Y = Pos.Bottom(audioDeviceListView) + 1 }; setAudioDeviceButton.Accepting += (s, e) => { @@ -669,7 +672,7 @@ private void SelectAudioDevice() { Text = "Close", X = Pos.Right(setAudioDeviceButton), - Y = Pos.Bottom(audioDeviceListView) + Y = Pos.Bottom(audioDeviceListView) + 1 }; closeButton.Accepting += (s, e) => { @@ -701,35 +704,124 @@ __ ___ _ _____ __ #region IListDataSource - private class AudioListDataSource : IListDataSource + private class AudioDeviceListDataSource : IListDataSource { - public AudioListDataSource() + private int _count; + private BitArray _marks; + private ObservableCollection? _audioDeviceList; + private ObservableCollection? AudioDeviceList { - + get => _audioDeviceList; + set + { + if (value != null) + { + _count = value.Count; + _marks = new BitArray(_count); + _audioDeviceList = value; + Length = GetMaxLengthItem(); + } + } + } + + public AudioDeviceListDataSource(ObservableCollection audioDeviceList) + { + AudioDeviceList = audioDeviceList; } public bool IsMarked(int item) { - throw new NotImplementedException(); + if (item >= 0 && item < _count) + { + return _marks[item]; + } + + return false; + } + + public void Render( + ListView container, + bool selected, + int item, + int col, + int line, + int width, + int start = 0 + ) + { + container.Move(col, line); + var audioDevice = AudioDeviceList?[item].Name; + RenderUstr(container, $"{audioDevice}", col, line, width, start); } + + // A slightly adapted method from: https://github.com/gui-cs/Terminal.Gui/blob/fc1faba7452ccbdf49028ac49f0c9f0f42bbae91/Terminal.Gui/Views/ListView.cs#L433-L461 + private static void RenderUstr(View view, string ustr, int col, int line, int width, int start = 0) + { + var used = 0; + var index = start; + + while (index < ustr.Length) + { + var (rune, size) = ustr.DecodeRune(index, index - ustr.Length); + var count = rune.GetColumns(); + + if (used + count >= width) + { + break; + } - public void Render(ListView listView, bool selected, int item, int col, int line, int width, int start = 0) + view.AddRune(rune); + used += count; + index += size; + } + + while (used < width) + { + view.AddRune((Rune)' '); + used++; + } + } + + private int GetMaxLengthItem() { - throw new NotImplementedException(); + if (_audioDeviceList?.Count == 0) + { + return 0; + } + + var maxLength = 0; + + for (var i = 0; i < _audioDeviceList.Count; i++) + { + var trackTitle = AudioDeviceList?[i].Name; + + var sc = $"{trackTitle}"; + var l = sc.Length; + + if (l > maxLength) + { + maxLength = l; + } + } + + return maxLength; } public void SetMark(int item, bool value) { - throw new NotImplementedException(); + if (item >= 0 && item < _count) + { + _marks[item] = value; + } } public IList ToList() { - throw new NotImplementedException(); + return AudioDeviceList; } - public int Count { get; } - public int Length { get; } + public int Count => AudioDeviceList?.Count ?? 0; + public int Length { get; private set; } public bool SuspendCollectionChangedEvent { get; set; } #pragma warning disable CS0067 @@ -738,7 +830,7 @@ public IList ToList() public void Dispose() { - throw new NotImplementedException(); + _audioDeviceList = null; } } @@ -779,6 +871,7 @@ public bool IsMarked(int item) return false; } + #pragma warning disable CS0067 public event NotifyCollectionChangedEventHandler CollectionChanged; #pragma warning restore CS0067 From 0c8831bf5b5575ee994358ded51a261966dbd56f Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 11 Aug 2025 17:46:06 -0400 Subject: [PATCH 139/146] Move loadedPlaylist.SelectedItem when skipping tracks or autoplaying next track. --- src/UI/Tui.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 6def010..fbe8aad 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -362,6 +362,7 @@ private void AutoPlayNextTrack() { PlayHandler(nextTrack); _playlistIndex++; + _playlistView.SelectedItem = _playlistIndex; } } } @@ -377,6 +378,7 @@ private void SkipForward() { PlayHandler(nextTrack); _playlistIndex++; + _playlistView.SelectedItem = _playlistIndex; } } } @@ -391,6 +393,7 @@ private void SkipBackward() { PlayHandler(nextTrack); _playlistIndex--; + _playlistView.SelectedItem = _playlistIndex; } } } From 455ec3177b61f43b921fcac1b62ca455127cb876 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 11 Aug 2025 17:51:01 -0400 Subject: [PATCH 140/146] Update screenshot --- screenshots/musicsharp.png | Bin 138659 -> 136638 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/screenshots/musicsharp.png b/screenshots/musicsharp.png index 97debb77481e62fd303d6e42330d4425fa68e9aa..9c1d233aa30c7d131f7c9c53d7c298f895acb9b6 100644 GIT binary patch literal 136638 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
  • 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

    a|Q)MqTUWL_s!Cz;7~dDlMO38H;F=SU=E zAXDprs20?P4Q|my4;TU7AB~uRF;1F(4pdPgM=ih^-m2)+aE;awN5!$Kj)o%vMshQ%W^kh59o@QAWuxxSQTx&&GFd7jGRuG zn*W~0_aoIh&QzPWF?}m^PjxG1?ViRzhO0cI!rJztD84(wus3peajHUg5#JIUA2_Ja zJ=W%qNmbDd1AtFZebB(?x~GnZ{EQ!8t#X9xUg41f@36#7iqr%ZR{h5*|MP&%a#qn| ziE&>{al~gCqWC=Cd`wiO;|iZj8Lco~KCglLjR&^jfjN@@mte;7iekTNvmhOb>$c!3w@KYeduP0nmH!HN@wx!;T7hR15CYA7n z5w@)#tEzmE&Ys^WPm4>l{=dyGe_sxV$lpQM5wnCK>jY&~T45Yz%2gH>LO7633Q`Lc z=*7o8qY=f%p$k58a1U6>?coSWkUz5Ji^C~xCspPFKm7y16-R|k#)~fl1p6SSlvq+1 z9xA*Nbb>11!Ui-vnT#@8hm6Lq)1eIWR&?_<_CJy>0NNG7sN8b2qXQQ$a zmGWAlv+@7W0P9+YfBAI0Bh(!$%*=bg7M5w47DdEq(AsHp$NrIB{h@#i-1+fchx^An z0f9XKlno?wi-=$WHuS}JUEwp|KfLj@p7^gmO*kr5>r`*T?4FR}O`UP$rdAf3PJQJr zeVos05s%^(A0RiCr$+7<>-BGbSj~g#C|SYLqul^~ot_Mhyq&&ifb66SVQ=`CzXg0B z+}UyWC+E|Ok3wqCmdRd0_8ewUt2YexTNQQhNy=u5v|POR+CZelC03lF;^-Xt{_;E! z>XtRB4EbK z^hfZ)=-&H@5JcRD0iEx#HLpB=9_hhU49jT?U(OBwyHlHFtTbO z;3te@rZKHQD5uds?mObkazFL}o?ybm#*(bC?KO^zIo}?_UkCoYGTZj=-cLxAAt6{Y zD6N7attRoc9T4%+M0|u^WK$%U(JE9`DTkq;_;JC8zx1y#mit8z&o zRUWDNrG$_y^SW9IJp~=a_=8a8#Z4BXCPTOc9ka$~8tK1$8eTO%^6xdig^emgVq7ay8ZgcF_>hTO4*sBqKGWn!jL2>l5ANpm zHQNZR0P_wgC_$Co>wlg|@OuB;M*S?fH~ZJ*DLEf~=pqWfI0ujnz8BUhfRLbH0DWJ6 zzZ{pdPu~8TNivs_2h9WToR)ubjiu?N?wHaQ$`y0Irw$^dZj{X#hi4X=opabW%lM=h zHTD!UFq&sgkuCnTr78>PbK!6cL1pE>*VaU$nuowxD7?4xx6A(~{sIyD9L(c-5AbaU z46P*v6a#uAjNejXtdz#ETKx3Whxz9ivPTL{Uj^Rqwijs=9W74r!o*)cIUyJT@2thA zF9?_`KRB7S`FRQSuewk&xYzT-G50{>+#oJofClgE*sA zF2j{F_WH4JEkQG^KkD~?$-eye<6?b|h>1%OhANU*3WI9*-H{6uX2>F;FWogOaH(ST z(JuR#DhFc-BegMx`YOnahlr!bPyJq1^zK@^*gLg|DXhj;h^OxBQL1^1;2qIM!{0|8 zSoxAL3~`EkDyXdcfTn&srvXL{4!2vY>jR^pob|GeP)`-z4`xb{YYD1#Qu zBdl3k9_5uULXx>jzym=BM}vz2Gqhz=Gn##OgnjHyOV)nHjVl#{mu+&=LKaPA7VZgg zCvj#M%9=Tl@KN}CZQB&`u*(2)2unZyA z`s}UEw{Dz9wKEI+&0fHNT>I^*=b2F9(ATQ5NUwH2vKJ5e1mdW#6EY|r12?2e$VTSC z&2m&bdp>{oVE6<5M&l8Ies-04*Q zmoZsdMAfql^EmPE;)Yj#Fo>=v3|UF@l20#8dCr){b&FgyWaVt4RHU+=)+vz7Vh|4O z!oXCFkqF|lIPxwyWJw=o%ZvNy2r|VIcmAbVpsr_MNrBZIq1NJIW&}QiR2Kbfe4?xg z=UIitAANo%?l`Wd6y0$_+^0txveXt6Y>&N+#xFnViR3o1i6Ji8aUK}|BLMuLq($48 zRbk2UBE3k~gty%4DQ)--L(l43`TNvI39)<*ccdR#$lgN0EzfGW6BtA2@_L&1ygrNjeVO4oLCO7!DFq(Uj(Bl#kB%$+JHHkpz1AeP z7XO@&`EPxszG7R%?tiGgxkO@SEFdWXn)Lg^<@&!fuOtMqb5iNQLwUV=lZvm`eH0sc zZczH=l3{7En2hybl0PCZt~*eoqT=q8M^}DeZ)^~r}K)* zg56xt*weHCy%yzHu^KBBpYff6tHxt=e#*9}a8C=grF9#Pj4+@WoGw*eoO7ZN`eWZ_ z8Ecq`HB$S1wnlMpvzoM)0)8#Y$;O!3z2eR}cK8jS6irb&7dF?kkv_Lcr z(3>-F{4u}jwNrGdcJxl-g$^=6uq%vpME$jQ;EsOHN!W*)ME|7P(WoR5P1>ho=cl?T zt`-ISQ)B2k54eA_XZW8J0Zd!+(@<7I!DL-EQ5KyI;S=(pmceSRFes7JlV-AVuscd+PJ=j>nyp`@r^-sC{_ihz%c|pC9|J=Ai$2mN?b{zu% z$<#4KftJFTdJUz!jqEJM8aMhcUynr%M)an?<%I?q{NBOC92fXoe+kYIeK&%gRo0i$ zl)E=`vf-VEJs*x$-uBgb;+HmQJvWxxtUb4|Hv_#ivLPY?zc?I26Q2?g8K2FwmC*ij z!B4IHJN_(L<7}Ww>W3wj0sM-{8OukOGnSmaj?&L* zs3s~(6n5sm2TONBOp+{jt{pR&?;`%I_z?yHurJBU!wf1r7flsV0O^r5( z6=P9z{gQ!cj==J(z!4QM-5|;z{hk)w%%I)<^`K{l!Oz;Kmj+YE`c5tMNyy2%w<0nx zD0R-gR!;|dHX%;_Na_A~dMQ&;T3Ov*j1|kJ7u8k$a^tF427;!7e60e1?Dcl-eyUoUIi7g= zAt&lhKi4``aIO#B32l-qBmbh^Xvlo{hZ$#P^F@K4%&8G>O>9 z?}s4UiPlaDAg$f)s!x1or^hlY%1Ufn8rR1gYc$|1T?c$}yM=8G`)U+{uMasctSld9 z<|v_oFP=b#s1D2Mql~~e5(64F8Ub{G<8K}5-aIVWLK%Lr$BXEf9mMgBh>XZFsrqyD zHFl6CcI&rC6ySbmt+bTcprT}w$yI_RMJiHk&Qio`(Sdqy;k2aef;rAo@UWbRVGo09 zJPhhM!PE=G6dWHT;uj)R>&0$V4hz|zGsReSm{kuo!z!XgVE#l418xCc5UsLZK+|Qs zT($kEO(Jk+G!9+Ruk}qdD82mkh5iBad(P|!F ztwmDVfTgqyp6&iqnEkkR$`^S}tnU7WmZt7UKRpAB6|XETqgT6#OS$d1H^b#{J>J&h zuvY=SEsC6r@69hK6sbFn$u6vco>8g`h`<}5C@>#}c}?K?874Kz(OvJS7fyhKH?Dt9 zW6m9NDn^$S58|SOF5MU}6{s42q%AQ$(!?=$7V{3iBc*TOBP2z=F5sUjkSfVB=z4#m zzS`A<-{Xog$Tswxhxayn1vy3&IhULPoIYB)cH{p-V+~$KOh%DMP0$mQ*^b0W1B$nL zO6`2|=u$nuX89C#$<3+xPdt(kpiQ;zFfE4%t5x&GWq7tod^PUCji5?rknP{;FJ4sc zWt^RJ-&^T*Pm}mN?m-{uquM4zn}9Wy6~XL z(vOw2AvUKykY^?m|DTJvG=QlkcgpOP&i0T$Z^n9{4#O_*oL;oPK0xW0?lmC7J}%6? zGK4-1aGx~aq|J{uRT?)^evvB&B|_Da$a-I4?D}d13i(KTM^AY#%5_=g$MUTejHe{jen#@raqE<<*WLPxB~DE}vrm4=hr=T3L2Rw*U? z#pM-$i}O~h_UefsL&`PFRTB(f{kGjJHDkO}shJIbId(e@MN)!v&jU~>SPidJ1WMV!Zopy_F z;B))bT1lACIid=2WRrAUWm<1dSoxFV4I=slTBM2>vZs<*I=ec%({q5tE8|cmU7nkn9g@jelQ~i< zXnOfEa#JkQ+P5cmLs)A7zVTM`J(9bPF3Kuazmw*(?we!VPbrh`O+|UiQLfFvTUn#f z{3Z0ZR+@BFXz1~t&gH(X5eqvL^HQtf42{Dk=;XHW3^jt5QzPd@3k)NFttz8QkQAY~ zrInP#!#APm-I|$MmeYhd%ln;AUXdf8+-|@}lOK8!+VH%Pe^?qxbeM455v^>OF%a;AOF-8GVUOTe=K7D&q(uMsANCjX#Z&E zMl5=~o9}rJGM~0ReJC@AuqvYK-JEf>UtytzdB600&OzY1T?#4DDRGrL^OmiSFYlD@ z9pMp4COGC610j)M<_EzZ_uAzS9CZ0Zl}LCdT_}D({1NLL?|bd9VWQ@bwpiPHPQOda zi*JtsKFnnvJi(JOr!1Lk8xpB!j#2h==@t<7>#Cju@BJst{KQ-bWV~qgzuV)T&itI~ z`N{BX@};rM33<8&wA|MKDXo&kB4l#J=T`rOngoB7bFKjbfbG(P3T7T|>)l+y7-YIA z^@ePSA6__DB%<r%cGAUtB_MuD)7OcxoG8XZG%dHs}MdUba2+vpKz{1Y=UHaIg{x3vb z2gpKCXE-e6nE`9i$2}{YC2902V1Fp0@Y;URF)(rdzV$Zq#>-*}ge<+s1?xQ;d-;Oo ze_U|>HgGjX?bA=G@+F1`(PU>Es^iaHf#IS*A@+|>pJG47>HtFhC|=N45-iq70fb@h z=Xr@zv=I~K2_3BY&@%tgZ;D%J0&?2^@;@`%{{_^aX%Vdf6?S>FitveyH83ENh$5c# zKkMiAQ7|X&jeufqKChYDW#%Uo7Qrn0n2STnI6)YO^=rJSOXc`5^34T4-Xx8XE{mbh zAntJEcv{}SufRaCV$AA3RY#L$(6p{&f_>uF8rb78v66_okqkc;yfK@=eCAxVp0E<2 zuKT6a;CMI)W04d4{o4f)57agUv-ooF-nqfcs_OSu$uVUQ9I+%E+x)*DgabPReAg?< zSfS^ZNGndOz#&uq3&wKj`~uudkB7+ak3rvj@^P_7DHeP-!6fMmk00jD%l0@JX3U=r zoV)nJt~tL&MwxF8X{k8&-1qpvXYL+dnoai1-^cK&o9Xb}AgSjt&&2a;ZN6>~l^toyd+QO8)Sw814QO1J}6j`)aKs9@+Xa-ATOVN!87Apz3h5NY#xqKIQ5d zWL%7#Q%uXpR|-lhGdZj?JF&jajp((A#hhTRki4*+q6cI`!CZFpZ8!9eq_7twylHPU z#*ofmXz;nNjNV4WY$%WB4hhaX?tCfbC+52%#&fJb=l}0xzHQphJ)a_Or&i+E!1qEK|fe2MjRI3TK~pGfljT5rJ(8SYEo3Y|N%9 zb8rfCS$!W~J<_2^KV2^VKui?A#vcMgO$A&0wrqWzq<;J}z}~j?d)?=jyW$L3#AqmB zuUO@$o!cyLIKPE%s7h`AUwdaz23G-lYB~E_pxgwP8(c(eMOhx-A5Ys7NYT?G zm4|UepilQ86Lz{t7-9#U(6_L1ySn~F-<9*`n97I|S>K3$Zkk))xT(dIl}%LjG(cHu zQT)ZJZh(M(40~c_r>$P7mTKE~eIxXcvhrXeMSZFd&G8GYSvpZTDXRL)NWEyY?Cl%I z*VtcCVA#>4XYwBZaQTWwLHyOz1kiIXH{MX2dv(jX*%8JYw-CB1CwLMsgGDB{hu%Vm zqKB<@R{?_IGvC?8PEi%_@MCglqQfc=rIPXtuqpio5~Kw0o{QXEHV<6fnAEc3Ek?YfTurK(Q9M12L;c32Xc-+}!Wh zmNqES>ly`*NEruG6@Nf{t7{!(M;>cl|8hd8py*{`zR$KiOSs$p4P=lbn@@O{jX z*~~!sbFey`N&q&tekMZA{>vZ#ai;&}0+18`$B;yx)KFf#p zld&KFaIL?$M**;)ICzhT@Q!T^OwIXZg|m<0<4o1Gq$iZ3$*Vk^+5+r%KsokTYDElv zZzU~BY-OnXkEX}SBo6!}AC%{FFS>$`$J^Oex!?7o!4jo3ulN6Y3JfOV%*RpTc5-C? zcQPQ;3Be+^hPs0yqDb{*$uX^VvSd;L-J8g-Wy2uAY0OGG;_oWoo-pVuzw0|?J zzND`XYaL?O25SbN4Z*v{&tZt4+%Mhu09}5mrLn$>YyB$(Y`)rbj5YoDIQcHZT!V`M ziq~=DEqR#AbT$l=U4q<4feD}Ukoeu#!(;>XM(*=mI(m3MFV%3PJ2L%OC+OTc@SyIF z^WOdM#I((|RQs5u)g`G&Kq@tl8M@^Vi&@ua_g39{rtt`$-W zhKS@+BBaOlH__hrL24^*meF)#*fC(TC)aywt~j50JI58kbiVX2DT>$2*3>aRj=z$) zFe(v$3B2@W=`ni*uHYCQQ=+BlptSzo4BtnX2XGP25WsjQ|E_v6maL0NxK>ST1BE}J zs(hE77-Wc0-AMITP`>PMJ;(UPvqmR`s!#GgHc!R7SUM+^Dy?!{RgXf+Xa@Xo<)6y0 z$bY~i6fhW32-gc8WYCqu3qALW!_KGgrp;2RV=Jhin2%hP<%}?OT<^z=myjsO^SD_t zLl2=D5Ca9UVP2dvpFl%i1s>6BoDVXU#@<%-OY(y)b85(S*FO-4iA5sd_QqdDgL%A-bFwxm&-4> zJMyq!n&%WC@!9+9j`*P=oGKlU*QNIt|GHuJ>EAtR>TgeCudID~Kcke^_SK(5wJPDt zUH5YyH6Z0m#S-LP0WYBn55BoTi6IxFE|9S=0BoYz@V0A3ULR$mMI>~6MIvKU+mguL z4gf~J&(vC*%#4HVZjX+F6_k!D1z2&$dc6PPTz|v2jbQFi7kfk-#^L8g;*j72H7>IItJ}A+i}vjP6!n^BM9Sa*XF7&NJ!|+O;$NU4D$HV zky7AM%#8v1LBvmTKZMfv$tdr*fn{imtybo}y%b3HORlK{qHqtcjJ$3-cg6O^2)K{{`}x@yE5HWiO1^5YDH86+ITbC&(82zzWA>2amw*I8KomaY zR*;`)tUCIy1!a)Ri`y>Vv1 zx5y)5x_9)t1JD|bsD{r2kajO9jDaV+4APfPuKA#!w?F3#;%q88@+|4lk1RmBK4VuwRFr! z;@);7D9spw2P`eSwT_i-H4Gqij%sl&ts+6^d;NDR%1d$@oEmq=tb2%1+N0p5!)9;U z%Ei9FA|z`)<Z!p`(D7E_Ve+`C&(_fvy=Ka11LyP( zvh!217evc}+>AW%;}-kf+@J-f0;QQa1oT2M@~U@4wKY6VAn6@fMz4x0T_qtm~-@Umsvez#ynd9I8sKK&2D@MiRY7T8MrUylvg;>O+ z3nthEg%Hyy+U?(Jq(k9yc>Cd7&rqsxPvqgW#moUX3{g}yo3Qc(l0(JESliKl%h8|z zCXd6GrqT2!$LTADZ+zv#+Wz{9gjzDR;mL!M8NDj#9ioB5kDN;YVNYvlw*U9oC0f&# zEXwouBc3NMjRr=c^arW*4HRT1%(c>8k1{TWug2YUq5&XwbB<*f6etweVI2smv4X)QKOwmkZQ+>>6~!Pcc6QtD=<2h>;J_=H_! zT><=kUQ}|QB8{(cCu0v^1;#>u`8YEMU7 z+U>_#yp6N~|C+EGXsMXm{v>z6HkUIB{BFf>^YBHH=UwG#U(W_ooOI76#-MIwWQQjm zLU!J|3Z?g?_kPs{T^R`deQrsQjx8oz4nh{1_cCb9PhQ)Ss?y)4!;js1nD>I(>zDrY z_07s-a|S2R9gXMEt%%gO$~H}#q}{HZu+$QAmz!hLU@?!~=x}uRM^emg=t58#(RW`S zoAxa`)WpgP$G=g+nQc0IVAt}DZEmJDOsv#10dmxKn4YmFym<~N`WQL1`+YZ#%>G7Y zs$>;~-fD5g)_QE5+J_={N;h`PZf=b1f{^Qy!u=V}Gd_hZH`Zt^wF&y|xWO-)jsq-2 z$+eXHSm%ViKp%bfxkrr}iZd(j5v`lD>4*3GT92o0qFr~lD3JZ6y0;5PS`9Yjub%1E z7W+1IG-4|!%@e+~MrL=^3!Yg@Pv=LIZ<5EC8)+vrYnO(0-=k>{8~$)Yr3y1cUsxf= zpSEl&b=w^8eWbvUWhAkXxrp8V*&}2Rh`yfDn->F~`QGr&j(}=iG46!~?^zd4KvyPm zS%(=96X8eNd zH?QCmHiDag*OR=(L4)nW{h*nbf98A3EGssZ;!wEAjooc)e=jX%Dfchn(+vlEIdbW( z}lkiZB z_@BM43pK>#mKw_F_+F1 z-$&=rzZ){R=55Bf@mZ<5*`S4zS|`~3IHYn5B8o=w4DC#Kxb+pcwn#RN`t-6Tn0g&6 zhx{7mUSHM*rl4v5n(HsFZP6DXS0%Fp?p%wLV>FhBJP95ZrkgbQQu~&oLoh5rbKI>5 z<4(MNdHsiyXj`6j*gfHUnF!u?4e7k{=QTG-{CmE;di-i?g z)19+yv;B9!Ed3Cj?A=hAejGN>ANB>ly+JQ%(K+r19}VsPp>Jg!KV}Znzjo4&v};j| zvY7SWOGGfc@Hi6+f6(0#>UO=bIS2Bu~-LIOewO1_!Z5aTL&3%Fa7`qvrGn34Gd!%oB^!2;R9 zH(xkXSb@SfXx^X5;SWXjZy>hjHm8oB1@9W5xQI-TkVlI-mOpPG^U+HaZoTA*G74?0 z9NcSTg8WS`T*5cj_D>KE(>nXTtP$V(<+@(IJ%@x(F7Wgg_-{>_=b%~8Cl=EAzT4me zk@e^-=Y#hVg_i+uPL-zR9`@zI@{_Tyu$h(DR`< zUvUjgkle3~=cy04IziDt9{;6GVQ*)N%{_NU{~=J|)r&Jz2G{nJ<3m`TPmyn#H^kK% z}w5!g%#@b{Vn#;#LFoz~`qoHoXQ5o?WIacv7P#dB)z;Ei%jlBHnU=jHtL<`TN)qG0ob@{jQOSO4?=o=H6WH~Md=2Sa9TT=4?a*FYH&%C|@GT(ynl$n-9sF)$_#3yi$F#ULbhM9g3&Vqr6(;v2HwFy7 zkq7+;j~02sK}c#R=J*)jx*~~eq+j}Bv!@@ivJ@qUaHYp4Vrw-XZBEud9c%d-xO?^j zBa#~&9-5wYX#Byo9xqrilP6Ybp0~*$e=%QFT$p^6o(p-e36e%6Crp8YF54eF)$g_R zyf{U?V7X`ST(t5|fVpej&E8~r++O~~`Jy2^SN=r#J2ynIJ@Z`J?3tKVR}(qDux+W$ zH|>zB@sBz{Osry84}7iwfG-e!u;V-ZrI1f+?TSd~caHo}J>!a^j z$Qby0;ZT;j(+5&v4bkt%gKuGC6Z_gnguvF8W=hlS!)}5phcS-)G|5?OMUBA#(1v}W zwv7I`^f%jvue`yRvZcZLqM_~sT08sS);v4)34y=J42?7k#CpM!HF20NmtcE+92uC=g}CECrA#zCk==FHzzY_k!x5Te$M6wDkg{Gt++=TyS6kl zxmASLAV0AR9_-mQMei5K-#}j^pG6NeQ6@vI-B3`R7Q6J*U&L8II$~+NQSu}_g$K%_ z2!2PPeR$^l2!8f87)j6JKS1ddT3hyFB?(wWAyQZE2mR4hPAXhunqmk&`r5eFTmpji zm7!3&@05_6h0ZZsz@W`favK{L|6)*+>*n@V6+X**BB<(A9 zPy93(EGUO`U3^nX!!z@qawrV)*1Sk~C4kShM?8Y!3YSw|0JdiI(3!e5JRHbVfO1 zuZ@vh{<(hqH@zFHaGjJ2dd?B94#?ePLJ>JTJ&cY2M+<<+p(j)|*!IP-#H7eMci0ro zw9V{3lxvN51qXXP*F`6Ikg(ZWiNSczBQY)`mL4H}lRr{1TsmjYGlA6bOd<2*x01YN z$R~KzL%Qt&T0V1w(X>Q1L8|UBT3Jv6uvJNpx`g79b-EFaMoZb8xstwCl3v%}rBwnv!5R3d8QnDPqJ2$?S`=*=U>!&<%jEJ9mj-WJ}Z zX=ddZhiwChuwdbyKnezggKW-@Ef0Kna&>$X2cj3R^CEXzLslTaTPsshFL&jaPhdyT zpeZ<=x)c$*_2TI1wFjKOrC=>~gNUG&J{1+;DQKM?l3M-wFr*=iXqcxwQ`M?bNNZ7; zr5M~i{vO}EQRlbk&*D3c?7p9hq(%GorRcl*+!;uB51O3}MGl;@nX{KYUa{S8-mMu3 zs}=jDQitl=Q;DD{xHBxK>syX(s|mg9MJV-T*w}0|k+34VWOJ<8<o+hL%l_1;7Kbj9_rHi8$AXMolcnd{YC5?R5}dYy3Q!7C@KNq zinJur$)o5`*J?~qOe1GU1V!#KNH?9rWu_wQWahbRX4GM>F>oa1=XW564hr)V6Y}Pv368&&1KnD6oUm8NcPc1y@?%HLxPbF65e!{V>#Dbb^I+e8k* z6vl3*yG6^2Xe!@FBNTu{IU%RTfj}g<%&FYjfYZ_==x?VoSh794hnuYn8B4}%`Xxu7*rDS7I<~%sZ2V(# zMf2%Up)?i9`Wj~c%w+Pwt1(sN{g)N{^1r@17|YSf_R*Z{}h=DN8x zW6!9fIlHhw@59LbmZFikK}28;TMS%GQbZ_sh{1) z%NQ(8xjNzUYe*lM{5eYi1b08ri3Ubpyv-b>lsPUDlMu3>kiwj=rJCEUS#|OCMS&8I zg1O<(3U5ai^M;dk__dTrO~eGf@My}eg-vjWE=nt)%X;>pOnpivobKGoB0@s|k&}BA zi{^ZrhxF<13A)qvPw=M6vZEOT5l5O@@Wustp99FW z!!LN|z?SsrU@ba2P({Mv@3Ik@i$W2$!!4YT89_q)@fU!l^hK;zk8>-sL3xJkyp>Nau3809r0c0gMq|>r$TOXeU6->3kS> zTTGHn)VX?}eb%yXE+QhLL30x@+$$%A%0H~t)&?y+s(ya^<=60Gcep+ne06E}Y&x_K z^wbO*ZA&;5bOA1egumw`&*D+1Zy}-AXz%)4#pv%0ci;SVa6r`E8FiS_wR&G2cCb9} z3Hr1s=$Hl#>ocdMyf(lgFLcgcZ}Z(4(Ea@z55R7}d#!%fdQhNv zML<%ii#uIIufK-9me7ZAr;}y%@WCE zRQrHaHluqW*!etepxHEyQF{5Jxcztv>PA5CFi1c8!WY=RHiRMoh?7GGFQ7^3L__-zKhRB7+2v70JyH|jrJ~XVRMVa*`h=;;588y1t#j3=s0Lb^3-s_@!AZywvy&1 zfP<8n(BrwZ*nsL{Bss4o59z*teN&N3)hk~;sekFu-9ZkRe+lbfcrSxLb*!kh#{8mxUrVC~h@J@gxm}$^c!k(5Vf1#x&Agtcn8n zV;>pCUu`DmPcVt7WvzwJ#GV#WRXR#wi@)ijtqAcPP@R+_rTG zvm=aBf4*U87qseFI15FaAEoG%9CH4nv+eJ${)atz#J=MpeXv#Q_HX0Ta<;ibH=`L- zVd%O0i8?x6@ltE2XBSP%!-t38_?O6N>gDNW>4^tax*~4pxjuN66jqv8!O5Ksch@P< zYvvL5C<3%Z=w-pUSk4+>l~+FR^-Q3>5c{Pq!ZcG*1kS>OVFsA-3y~)T=DYQ67X^iZ zs_F?TpGdsU&8wBz+7hb{7ce-Q;$)0q0f~B@h ziLJ~1Q^8&yX4R{@kwAM?7uct)e#`o>Og(5+XA%Vs{9Xy~3Jj%QE|qMj7Zxl0OTP?8 z@jPGzpfBcqTW$XJjT%xDu~E1T9e~I>sA&=+vL>nnb3a$)!tM{<$+`uY8xkmpX=d^$ z0)c`Z|48V2@KW!7lf9MXL^T^~HM(Vv;R#=V5nkD#?HIzFrvby8uxCenk${S6DlJwp zTmJ04s9iX&+yC7tth%%;4DZ^{O(~m5!-;R_J~*6hny()24_e=D2SMDAb{&_($sQR* zq}CXnU@B_%>sm#Tbow_2C%fu{>)mMO3Ong~XW{%VNt9O=kVL-skp*s?W z9`p!zF9~-BCODj(<3~QFo`L-l~NVh=- z(>Epp>yZJ|avL;Pl?T+*o5god`ZUn})Ch;dXC4Eo0=ETHvCiYPZ!m0-96eSO=>RQt!?an6nMKq z-5vg{D1N(lmiq}X&vWA=6#f+0sIi2vjF4NbD6rAX$PP&MXU6Oqxz$6?<^!*5>3&J_ z*47?$?Y^zKeb@BL%JlwhGS+^q@v^Re6V}u0u9j#-+=RG`@^YeJVjSMmjEd)&FYbKLo? zCd}hGXYgwKk;Pah5lCUbs$Ls7-2Pr+ZctE|3nrABSC?xNBVTne$T9I!rpJ}jN;|u1 z5aYVNug~b%0Ah30d!CF70y_&7CcG084x}e~W3ePm%@DJw9keS4>P{{8PQi3UrcO?$DRBXP+Q;o?F!Y`M{Cl z7+A?cFUeO^H9VoA!1;a#vs6N4kqeXhc`4Gbf>xyvA^Y5fp>L#!7Z+GWbFo?q`+P6D zZ|T};Ro#~&#|1bQ5WqKw(6!azBNA3Qk#!gbRzHHkihmp%UL|FVGD*+Hv22mJVda1RAmgV1+ zXrTXur`2ywd~@=l_pKOfA)Agn5Ru2?1K{kZB`tH5UPxfSoXF(Dzmqn;`J@Ex~Tw7g@->K}QNxGR!2L+nO_V!__5n948Q zGhHe0E@cwm^KM-Wpoo}u#0lGs{a@?Su3fXB{CE+~${m%+pUgsi0wd|s;EcxZcc{37 z%J2f9rz&zCu>VuodViwKrTtF^!L@;j7%Cak}KC%R+R~Ah5gyd zCXNyl4Pm;urjX<_$jmRM;evMo9D8$Z*5~&@VE(J4Q7BESv@=TNdImCR75T=q+;$ml zt>}$dBnwYF2h$S|&{N1egzpHP)*&-5*4!|J zY(8t*p2%O}7UE@A;aeQk=l@Wfr}#PMj$9dZ<}>rSZZtb%d5V}iPuH?P}|x<(zDR zkA?K18|PKt(_bJex_qdW;_Ckm8TyAThk${kzjs50ff%@>-o46W(Lk#E00iHS-IF|i zxx16;Dt|)**_i&gM$p-2Y1&!DEkjI*hBz+Vk^&?;Ray-RuFU2k=ZBT6lKNt_<}P5# zl0053(OkO;t{5+o;JKdw;e96MHxXLWczg4Ro{IW7owd8z@wO{WiI=$>qr_^t?$7op zumh8^;N7#X6IGZ3{V{o;2_1`;IAvS3{Nu)5d^ij$q^kVdI+&`+{^pZPf7b~OcNm~` zPrmEk+R7`B3*?>r1;EXOA*`6DcDaZ`b+>NXo$NR9v}ByKp0IX%;qG{38cmU25@mx_ z+>+no-8}td26=;{X*c=UcoTg@`LW`e4Y{-O#d+c=ex(36>nt%~5Z=e(^ZplzVwZQnEy6}fs#G`Q2Qyms&EkP)#edH2-^9Mp7m4R ztzcfUknqko86%EN>f&x7LgJOyBiz!( za?R~&B&Lc29vJ03KvXa|Y01Jowe3YU8$!n3@65X(E+NuG6wAx=ZxY+S0tYb3F-DQH zcXfG$m0a#Wp4`3qB?b@9S03t&4%cH&+@CwItP`y;R7M{(I$+3da zoGanhe%Yr-8%5rIQ>dS&cj9^g&p6AzA&5IzJFJ?`7Ti^Y3<(-6Fd`2y>iNYgon^=3 zTj&=9KFA-`LTlj$`tqJ+4my}N4jq7&Yy_E$Y|=AN&y!cUI6A&vgb%#it>&=JR^JYq zd2VeLLhb#gLLb*=xAO8&ZvVVuv${_L=F@-oqq7#Jocv4O<_PVUf(w#8bDUtZ67Ame z9cy}SyeMfuVdYgUOH*}>-dUKo^BgPI((0wciI5qe3z5cvk1Fi(3fTRg?|_QZYyP8= zD2*_tkgl$tIs^+|FLXBrhzcWA{BRqtA42)eb+8FYD17UK28S@IA>8!UH8p&(^Vh>R zBw)1I(;92n@5G2<mU zF+dQUc05%xu(IXSvUpTrEnSk)vO(!o&n8gXYXDR9Mw38~q166nm(BF;kx#E3M2@-{ z?>PxTMCi+X1D~aH-w;sCd zI>x4o=0ENh05LC=)6!t(soBx7CidW{<=Pf)9aHv##u6I=7fVL9bZC;%?lrwGmJ*tB z?ce4%B$JgvdL2{75^98Gt_W3CmOlIi+GPy0N0GT7vPBwL0aOi*fgP_^1om|49IuLR zo57+#l%mA*J)^y!R*96mMs$-PGurZ+$h6MSViqc*hzMbg9$hY23^^b#Wv^&`P}mzc z&d!v*JRZUUlEf#!4hHiOz0XlpHQgF^DMB;TWphMM4(Yad#sq)2m|pMOvZZZEzgy>M$g+HLy0L9ebPIr(unToC53BKOP0 zFH*7E!GEIqm?t@yg^B6OvC|i5 znswGCNDumae9!b&^izoQm1uOK{>!t-Ynfu!Ql^MBOZY!G5V13xVWq*rHL22p99k|B z6Ly7%nAK`?5%w;<+Ktv}QQ-Yju$SL5e^AM8r-UY9KGnsIAz~)6+BkWi>u(v!&0?CP zA&+CGbQ{&RlN@x3iik}-mhUdu+yqa~UqCD$+KtE|{%t1Vuu z4Bi-h_v6lGg&<=q(_!<`Q)#-|Saa_Z^ob6i4>yrE)h&*8C)fm2cmwN07PJrkj~fF1)*i1k^d{PN#oe>b0Z=eymhyE7qHtL8cf-P+mK+#2n3y1vYZcTn`u zd(#Ue+pa?%D+-Il<`MBB|CwQ;oU(?^0~~Ab=p6D`T|s>*c1DX3vJwhTMuWFPuN&k# zCk9S0hEHwER{wF`#aY{89rfmhNb36Am`LqhU7YgIGw0#XdW13|Xr-kcIlS{%kAU3{ zflY5iw#)=fVLgJzsA^DCEg(*eRcfkCZ-jg<Yz|T zfWjTyhIYb_u49jL@`>0bYQlCE#s|eTkFjBgf_F!;%PoA$E@h9LI5uj2ZK?@(cIAGF zs?<9E0BJOZJmZkRDRG~U5#UH$+%d0s;VfkhYlq>5;cXf-)=56U-A27@Rt;e{q`x^` zG18*AqEJu}kwOj|=8$Pgwln(2@-^4QWF@Pb_FgNfuMFOnZzu`IwCtwHn2Kl*!7~gw z)*eYzwR3f^HWjX1-NeyPabGhUpOm&Z{6SluGF4v26*>=A5a}@Es{$+i9B+$A?`Y}i zF#VTa{6Dsb3ti~{&rlbOWC8}W2ou^Og7**E2%@|6B@!LUdaUlMPM-f}qT1ZTzU{(# zcZL0-G!?5|8Q#D_@~Yq-etv2eMz0yRO}@rCraenGoKUC{U`L_mR0TmL$u##hOmm^n z^}Kc~`^WA2fk9LRb66N}I=N{FE^4b}%~dLO?W4u^BO4_D!CbSF%vU_aMvvXywo`lb zJk9v0W7{TmXy(lhZp?0_iAMxUd>Qp&{`FrXzFpnmVyE{1omqgOJYGk&g>Ezp_JnI5bMUdKEqk;#N_o!`M_-*OlsuuWeH68< z9)0>1{~(IpVPUJHx!khJ7{9b@ts*hIP zSQ2wB#6P}8L8*9yx%cDv>*%nCCn~y92^$~gzn$m|_W{l9Rz_#%{Pj1|seys#-3xBx zDGKNFh&AlmvyucyWG=_un|;rLCC)<2kn?NE=QnuhNcM55jn7;wMyN~Zy^>~nJ^!nd z#Nd>kH%Ro`y{e#18%%GTHLHTCi|NuiUyqXLGRH-6#_BN-i(Vu8V74GTyzOHxB5L_) z+vXfXqb<a_jygCxCxKan=(;}tGPQ=dCC zIp~nqKaQA&gWcn`udz{~Yn@zoNgArlM_EuP|O7_kNB05%xs%&+^ z5y->nAHz4UG*~6~2BM+Mq%U0OcLpn8zO2SM%kKoPv14xpqffbX)?qFUXUB>(pM6M8 zPg#4WHo2BIR!CE&{Kn65PDd52XF8w{=`p*hkfWlBS6K}NbsoFxEe;K#;+pY(;8zgH65NWRaV_vSby`vv_{h*h^M$b-|)Q|P1d$j(F%?& zvork9V@CA{r8L73$t`@tz05Yn1g55*MtbNqif0Q0B**a51jPfbv$0PhBi2LU%;9%~ z?gsw`I0fgBRZ!Y;QVbXteGv}`WDCdffQwyf7U60#*Lfue*c)d>Vk@w;2VV4%*=upl zrW1w-X(~a&c~X4%@e~rX zF%&^l(u5mzx1*eDpM)kRP2AUBOAT(c<2}A%jtrk3`_u4!N3$*&$0gw->UFK5;1i|8D|R?!g0jJmW* zFj7ZmRR^n#3z7}K?z%eR^oZpbn#qDVy`SV1{xY_!@9C0;c!DrE*PFL*5kr|NyF6oU ztlXVwboTDi#5u9HPI@sZZ10B#PAb_y*Duh${dO0rg7nGBSkkN%j}uUIN7-+Mt(VK% z=qAgzo0P)hO}?5`Slbgrf10_ldDrlv$A$^e14&!X>YPmLV>Dn;AH91VkeRJ%!U9{$NQe=wgg1n{b+=LNO*gf=o(Mc z#YIhT^J~*=PTCN2aZhiv3f|yQbLdY>J8fLh*$Ph+kxGZqEtCuHUgGx0JIWMdE>7oV ztYc0lAgRff=20>28Mq*AxXsHS*)H@$v%1qu^K^p8G?7g2x$7U(st&5_YQI&OvCl-K z5A^=+%hE~K$;3s;$@&se_3_c6s!Nu=HzOq2*T~TOV(jaY$}=HyCjhFszv>fMl%~oz zx21uzjM**AtMUhp(()`0EJIyV(+wKvsR1?jC|^E5AwK0XHquc;H&ME3SbQhSI%vi( z14G~;CyyE!r>kGg^+Vg(q16f z0z|f&d6bg}Fvi5R1rN8ye z8RPr_xxT)WZL_;3!SR-g_uAN~V7SIm@ZwdtmOl3ZhJCr>x{7uj+}w#|GK*C={76dn zT;toezM34hRem*cU*?#;fIekB2g`n|N-&M}Y4#V+xIUd>Mt?|Mlr4O*1wNWx!~q90 zo3(F_?n2Q7nG}}@Y88w3z0mhSR#m5=ZR80`d(e)J;@khWTMWuid$Ax`$t~UicK)*=L>)AY$-kb$CiiZ`_{lI z0HbOiVn_c<-lr7M$&0$y)_WZ8gFga?{`0A-F!GH&u|fH^>X3fkZ-=r|(zU(B+eO1F zXvb)q%k$?B9%Q4cL^&?Oqs#3JgWLOpuIHxADUAwh5MmbSNd2iOJQl{=pTF< zIy5Grh~UW8Eo7oR(=%$-@0AwkFe-=Knj0#m^hiW&NoTSso~s(AP>Yq6|Hz@k?w6?|eWdg@0h*hJT^)gX(Y75^7wVD?%)yEBo@?n9a7HH-?_0#f#T zj^G`GA^GEvj);+$$-vBEsI>$X76**|b-rF`UtG7+pAyyn>~Kvxb6Jy)9&S<2&CqcPB5 z5jjUv(1nkYS9O0YaJ}zI5>l76xO1}IHR7NXlle$hFYGx)-=ol%^YA3 zxaIw$PXbo`6;N>et9BZfRP=(23R;<6KL}0Vo76|zIjH8gEXt;B6|r8AUpUWIHyT(V zQq03fkj$s`ewTf*ZcB}+1W9w!!sjl$jfpz5Nvu;|pL*R>x9+9Fb+N*tRk)(fGs+#I z`!0ho-8-UOcE3zm--RI?IG2uJ|AzW?xMdVs(|w2)!5iPUM^D!#*EXWJLp9hB+5g~s zUUM=2_V+Xmr5r&rDh>1Y$Kgb!+ya%0rJFQ1hg=glp0V|RnSu?nvxyKI)9?}li1!rw z0u(XeNk*8Pt294z?BB?)n){69Ci!nfJD}Dfz2<@gLR6Db9|Q&z)wyk~CoK_|l?>i> zmz{}EQYG8v*t8^;yN)QkV{Bu{jf8j=2%EdO+(O>NbWN@UB3pDctSpvD983kuKC2}P zY*)4Qs^^skhGN>VJvWCx82qG!FnD5=unxa*19Nyd(QLhUw)xv!>!aSoL~HNd5u!VO zvHO}T+rjK8kE0MhYImm2*SPgCeI;+-HT1yQD&O7&%JCmmg#6kRS}SO#F~g!_6ql!u zjvvM9HDKH#EMnq2kUaguVjjslYI>_aMsV&^Y7R(@WXZ~RJ7(>k+F4ZK4(zp!gua{q zcL%}&uvu>UkDfWyM#{O`JOeFcx5f_l{MIip5M7U_im1|?<`;28?W6iRw7g5kInM0V zaO&D>Nz1tkX7`(9!(5N(0Ihe+HvAKV*63n_X&ceq)_cTB#ma4+rj=@fRb)WB8r8G~ zu~_3G>QJ8gaMxa=Z{BIMxp;D0KE1o}T#pmVR>wTvB%GbHaFF&k3Cy3_-P`;Z#tu8P z|3?wF)eG4`TU^XdJYcD=;&r?|FJX^PG&~2OXI=Z!obEl2x=c89@n^x%__nU0FVURn zpO+({E7l?OU{Yyjj@0=bzy+7V1t_RV0Mbkm(htT|D zWZSjodQ}QF9rf)Q(enVWh6#sGgG$$P$|g5wuHtn=TpE?^jfm#2Jl{rGc)*baL7a>#*=`}as4N)S9sf|keg!1auFvyYnV?6-ou>j zXq(Y>)YySrID83m7^_=d6++F?_;OaufvA-2bGZcJfhTK|JuQjRtz}!^ti_&mruQCF z2bjgc%%7*~!-d7Rv0j#P3Y^dWN0OZ0Pz6;6R+A>cKHHlA#x7%UerEh&8-4n9Jms{1 zd6=^XNvpZMXVrlqrodU95i~$Iws!xmHHe!d~-6=^Z9$2 zy8usi6Ex(ho`s}|vCQ;A6IV{fWR$*v4Z zYZeo+k9iIx=32CFHU5pq(bTrJh}(!{V=G73svE~r;u_t&C5;4?lPBCUVUL!Fk!ede zkAE2VqhqvW$}KH0A9P4I#w_JtB1ou}F*60w7Xo}3^H*y#st6?(YedY$#RH4trs|thyXb^tBH8)52}68etYx3PdH+rBpVM{%43U=P;d?Evl3VwD z0VJYMUglxx^LHIOt>%#)dd!vEBo34O$~lOOPP;svsz>KFWGJ0TJfTKav3?XXuh%R= zNop0wpRF<2Z*)>-S8!y_k-xx)6>8f#JAZTAoUkEmWoPS})4vtd^b|<(8j8A))-xHV z?22b{O?p|&r($2mu7#J_C~_{bEBJ60!0c`$tXM&kn`JH1>gp$QMP|Xm6x!A|*gcsn zC%an1YaR%_2P=ZUi&el(Mj+$`|8;MW4r|AWeZ-u941o|(x)|}1t%MhO$ zvjJjVfBSsBn%aoC)UD4vDyD@@UO@Xgs1kpvfK$8wqyjnY&^ z9k(p-em5?hV$<-#;@GIj-ovi&g@GI7`DEP>$p8!5GGlMOo_QFJt|kg)Pp7h>M(&KY-O!%lF2bjJ$A%{cLOHePGx~~(9 z+itV0B;W6c2u&t-k=*Klpew@9PZHDvY#cr7tM>WGO)MXcc26aG;^eGa%!DPJBym`! zS1D78(pITq(Y;#8G4lKXoF5W zTr}59?pk517Hia79%pO3r^$w^tymPu9PK2Sb}P<5vkj7WI27>TJ*h*FyIYz}yg=&R zu+Y@cHzH4Aq9e=$M$jeLPC~B(@g&_uwiel@uDr%!e#gOR6JK5$Jb}b(D6Y{G(dyMT zaoEmLJ0u>=S24E2@fNlxAcYcCvqf1v$VSz6w;plLDaGf#EH1*Qe#At}mJ>=#|E3ke zQ8P8n8^J6WH@}le-f*Kvuv!5HkW2lSaFZ(2%;m%(N#=9LF0{%4g)k-)kyaEI*_)A!15;l=vCU1CUOnRxkWLp)!zf8Zo_)^hge2I&{LLgq64rdRcmX3XnWqNw*Cc>J@^neuIrTV~6E=^)do2L9}Ds23KJ2 z_3Pa!endB4^Km|+>kb*7#$$b@vGgc8&ip4^VXifHlnq?m-;lPr@mqpwcVbft*;k;L z_%O5G@VyB;;`~D6gA|2$wXov~Y7>?T-MI*p^E)?HFH`j*XO20z0*ea?B%QFJs0hQ2 zLE0PT`WiEhW^p`83iw8Cyu>VA9dF_nC! zF)ApaBqu~Z4wr^Gi(-ZcTmJXzh&hZ&pR?O?umd{$fj#_Dai&Rw?V3aKG*f{LLBIo6 zg%J>+7$>CdWh#JjQh(}6;OstA=JT!$lVz&1O<5;O5`;0qM+({bz!a9hvPO4`6y1K{ zgP*Ln!NQee}l^;dN2+^vK&pw?Rk~lCH3w^OE zApbSMrj@lICGn^a)?c4@9BmUA+&uT|K6bFZjn-y`2$#mAhNZiZDt1ce<|{6R?0#u~ zJlEo$ee;C-0$N4OPWJ$_Q*#MrYHqa8HYRHHkgHzM1i}jIogW*twbj(o6LQe<-xw{# z#$L-;3-~io8=8Cu&Hmv7PF?tE>X%g|>%UmS5fJE%e9EEKdcOTb0)xWla#QIo?&+@0 zF|21o96WGv4*xr6XMWlu`wcPBzXd@}XgQT*RuU5x!$HGYJZMkh$ET{{)L`FZdZQ=R zbygaQ-_nbKD6z!B$0fc42Fy#e0OQ+M8CSN?H}LDWy42r^j@|hhS9x?F?35`+P_Mmb zG<*&N{2LQbAWQU`huek62vnCW$yI7>{LqQpNIOz1&w0Sg(Lmywgop27k{p4&|4)Xf zu7ia*BlN;U`xBbY+-;-(Ew&hV_%#$OS|@U>1-5&-$+hMl#(~=@WAU*cY<>DcKQKv( zE^AK`7rz>OTe;ZlfMOG@aQ?kI8aV#E@4Vs0*9EsXQBzB+hkG$?gvEyM_L!iw0pE0j zN<_L()Rk-Ic{`N66wUc9A3jMHT-w&_&v~aCoVl{6x6c8S+guP=qHLG^+{1V$`B8Be zT#`6Ud7(y555)DpFNllydG7!w()$Sp98sRnPR8qf&QI1r=uB+32}i_s5Mv`bj9{Lz zoED-Un*LAv6nmg$UC6&KGC$UY4qN4IE{&r#{V)c+uzw$PluH^*;yR1&Js_~iYy~~CvbDHcGBq4xc1g&nz? z`!e>8upe)Y8#(M2#Pf{t&O;1O-a?OS?a?=ua1S0J@mBlJyIn)D(QsY<=+k7MV$5=0 zXu`+{$wS8bT$#N5_mMfQ?#cUcyI5y~Tv7!zDwz6pCC`Dp!Ap&FP%;;i@y}9*e9@s$ z5WPiS@Y!jWQA2>v>WgKt*JKUNTK@pkxiq;{_Hk)#Eo4hNQ4P)`SoC2$`A4Xxjl$j> z21g)MAwk`2p9(ekr)2eDxkD31(!#FzSx;+hTa4(K;TI2Ujt~(oLFfzFv=~P2)O#hib%mMT)*h$qbyJ+!YWX{fT z&S4A17{oaVstc$n2EwQ=aYC&HE9m+PamcCz@>RJA*6e>YRa`^(VXLtKgEy@B5vKd~ zgGkp+`(UmDBY?XB3})P7%Gu5}(ad^Kb|t{r8xkB(Rrv!4be+%t$Tf~w!|G-?a17|f z-AesH>72ZPFm|_#U>+Pjt?hSMDlm^h*v4=gV3yyQPT9~h=XgvQx)SfXy}VA#;JCBC ziFw1#^j&=6@!z$ggt^~Eho#={>C(W=e+rujEW&`<6~G1%_h(JXrra`es#q4l zc(+Lfs!fc<*v8khG0>1+qpB zKcgbTG;v@=z~Y|U;x~**Qr$|@Nq{c_?({M9_R0L_p!@IW=_Jd&qV5cT*&FK@ zza_4*kGEN4-;(j`RV+l2Sq}C`Nc`X6XMk)&9`Tg%@OYGBsm9tvcFa$TYu*Kaoyvb5 zC*W_hz}1lishpoh!pfKU{ zOw3_#nT_Dc0JTL5dJ%`tM$sm?k+CEpp4m316uQD-IkRvqw7#;8^G#V;I`Zt3;;Z0n z)ws9FUHiT&e>f%D2Kr~}zA2T|`NfU)cx9x;>DE{2p4kOT7T zxOB`p?jM)|OD#NfQWJj4)koZ;(Ngf4Q3HfSp4>*a`Bz{>r%NHDNVZXxPzV}YaxKBV z(36#OOMwdm^30;h7OU!JAc`V)dOlPgbazHl;4~`X3)8HA)u3Q6S%N!PTnKw7i9Ljw zs49i+=;4O-56ZFYQZE`G@Q3QX*rET(mle*E;25Cs;wb+>FX)61uu&d?9;T`aIVkUig*LLW{? znQv@IlsO%F9`Hr&Z0s9Ug>|p^*As-Ee6df{gJhNK=feeo(|0df-Ulq+C|AftT^|P% zUe`dUME8JE;3HrkBY6aI?J*#0WeYs5EAW3d%#|xEqob}sGw>VuHv4D*wwA{!0)chO+K9o=iZ+Nl34UJ?Unr<5pw^p&#;sqv z#`qvMD2P|C_-XIdVs>mp#3!o^g1P@A}T zr}3cA8grF{Y}B^(IQ{F^qpN^ ze2j@ax(Uhw1pJX3bb-9Q@4z_ZBwok>`Za&mm@B^XI@9*A0!yd~SP+F9hJ%=WhLF41 zF3lZ`g#~Vt@t+JFYbYZ0p&ZfV?9g{?A*23FUf236@9&?AC+9-uM2p42Vgp<27g5V` zpio~@JV^>=T!qF{UWZ^k!KRM$h2f)U4$DAUtherDJnGl~+)(%vSHfG;OqtEi$?B`| z8O0YjeD2%>g`KP)^^futI~xGl1?S|r z&~4|fU#SWT>##=;+5Zj>$jhZymy-YFS8Mz|)tdh2&YABd;5E2`SbF;Ff^Qsn<8Srr zg~|9oF`jjWdSF<)0VNBg^(SVwO6m-@0&p7H=0@!s-jF=wSzlC3oYsL^bHRJjgE&Cc_r#^qB#?95$#U3R1rm(0!pgq@;9tfqR5GHWisCtEKVoQ_g#of zn7ZmQh{#{pjSt!VXU4~Xzp4grriH(qwp@4OXV#-x?eX(gP%%Q~siC&P;dJAmsJ)_py@>=t!^aYA3` z*5T;PPT|HnakG9XP5^!ISuqB~!5lGKef;stBI_P${LF*ws~=W9?!OOaJ2h4g#yt3KKTxV4FBw@ z=yAq^7z%-!LRLr%^(#}tIsi<0_%F0h%}&Mz?+k}xVxeT#?9c#%BJc4ilZ&;{ zu4;^%J>jFF+G|0_=)A#xHI}{0k*@GbHT!q%TD;0FmSx0#AYeNuO$;C?vO*B>#b$}W z)%0m`!1VtI_OarQRWA?Q+vrxD?-Gprj6Z-gDa)?mOTIIIx^j=zM2pTXiH4R~JAZ@5 zU>T(BC22sm8_LQu^6aY}N(28w+vTo(lIm;r(<8-1Pcq-2DM0;C!Jnf&`DXTkVk$sGAX}7TbNqz0Um5fUoJjWgJs@=1 z8T$Ttd_NfzQhVhdq+JM|6xZ>c#R?k^Hz*lhM)rPa0E+1(&Ndw#7t5oIAiy~0tz{Hr;y!#=rC zX1*PLD|ja`FuIleF5Ws$9njEx{L9(Ma4>DF_^&tP?Xa#4E~>y&DI5QNwyI3UdTEGtYy&9^S`MdsdiBn>O(7 z+qDHRZ#prz;dw`q2{dV6EEcmsGS35&Um4GKCg_X}mNqyQFTf*8OdSJ3x>fxeCP=FG?CE? z@ZBE)-GOj^`P{PW=e?VBd>#B>sQ87Z=7sfr1KmA>I3~~MewoL7Wxahv;?r%!bEEGy zqgag6P7F6u@6df+7W7L&X6$H=7`PDe18EuE2kIPH_>Kjgr`xPLJY}{l?_hnOa4_-t1c`)x^>7B&%PGJml%JqEqsj+S3jlv2(JzGGcf!bj~6B zE8+eLFR(i^qBJOroZmOCu{+S76VZsIVM5E)4DzQ;-YNW|DcchXv%afs&Nc!dPi@)i zCy`apJV`bq+Y1>&vtW-rddrJK!tY95z_Z{tId4wO50KAe6037zyXu(%8Lv_3E`|-3u zD^*DCVWCRKg`ySHGT4l#`v0S`(B@Venn_B(BG0Mrz1pf28D60Qq%b}XO`^qlwHpbc zw{XFkpRt^mg|P-@1AxZvkr(e|(c>iR7u2ToVoMs(WeBo0qRV3>d#G^ z2Bs$&qD?t^wc&9>7yKO8PcEcXK>vv3}UnWK9V!hMaZS^-Cc*Fns zd+1Q~Wqv#`a!s*Ejy3nb^P|VJup6ZeZ}#jRxi>u&0X3c%+U0K5)FkN-la9#z6g#V)@YrWRmD@I>WgNmGm91jnVN=sAq2_7Dy z10Ej1T~cD)o%|~?8$3Mn1}7C2eJvFgPJK^zdnZ>rJUq>q^h}bcsr|Qlx31d|4?~rT z=>zGD>6IRB;}aE!mqqX@32+g;3bimX?`+`Y*0mUUcJszGL7!=@m0HKEVC7r*J{I?) zV>g34xISMG1s%3#i#NA>d2NCGe*JjoMTnQ)&lopu6@WLUHk+akp|SVYxknG8B*nwG zRk~qnZkdtAPDe+opM4H%y70r7Sap8`c0^wvVka4pukLZ+>5~qSq3&7A4fKv2$M9#^ z5{9y=uLo*>>ZXUX+T9^D}o--z%HRu{>$bRUOa&e$9HeO zYd`c6pm#BeMLxVaP@(Uu3m#r6g5I*Tk(8~XvMnKYa*nu{ zdvB!=ahm$Qs6T8AW69IXYNeAL!=CtTj$Y`{ijhTek)H^g}7NA7i|}L zJievFi8Fszxl0kQo}D+wJsb$rc8%p98E=dq3gZ2IjaR0S6|-|l6l#d4WWWl(+y5r^ zIbT~%D3PNQSs8(FK1qC-tZBC5OX35^ZVcz`i16Drq(@3(nj~~JME3|Ql(__mvpc2q z$$Y~Wtw1tFiJ|r{>E01$c1Vtp9fU^ZGf{>zSrN68tkV*$a@|#pddlV2hbI>Pk?Yn5 zd4Nioz5oMZw~AI0Y0AUF{0998PYIqql+#U^M@S?s`tn$jx4@FU|B)pV0rvOA`uXr6vBB>WB+Cw#Nh9=!4E)37&xz|Nc zrf!|As`~1qQf!h~@hvAM(`4U`TVrvpszB?Px8)*Z9`wrCpzhzi&A~@sM^J}v5HkyR z`exp-@D1@?{XV4j=||!z%H4=ftD;)1nL9HNU73AF&t=ZJU!t~sKRnhkNJdj_@0usXOv1TdA)%o^5!ZJU_AX1YGi{C0jo_F7A3`lm53?X45{vhY9)feS2ommCR&(l`rzT1E2 z;$h@TeBAc<>nM-ShuUn95|7GbH~M#EgS?ZrQCg*fuFei`T}|x*$0?=ir0L)8-`{W(< zsLyK4#Aif{n8msU%y-{s++)3EvPIEn+H32}p%1_|yT)LKWVTx2o+2+tuVRlvjzVTo z?%Bgu=-1d*xmL!nJgq`s^N`zDyq6Q#@yNMLku$~Js56SA`L*fqqZ>yuKJRYANU)n2 zCISKc=lJRPU_xEOJ7JZlD*>3(#-ShvTUuUnXKLckcPo{haFzInVk#lo@N9rsyECRv zzhcC$VE;Lyru#X`x233{2zPSW?dNP<3662aYCURGYKdwAYU!$H>ccUX9Kpis!s@rj z>EhrC@r$hTEgeCfjW-BAd_7)!_%X2v|FH14OP(vNS1Y|We#?sqkkH$s(G7^k{-F9b z<*7k0LpDjqqX1s=U7~1{Z%+f=dwDaBl$hRvPMa<&#XO~vkBa}xoy><9IGBy30wr`IxStbc0%(|kPPdLlZ-~;ag)YC zlV#8Iledf`u@Q`JLT84zKC&5aesRV+kNuvQl%6uK5;Qq|;WjZhMey_0vm0m-5~B|h zFcJ{lGudi=F%8cGyaxGxY%+n=Vq9*vZ#&o8d6*n;QMFPT!9HD;qe|Ub>7{*LKP}gL ziNC0GJY5uiVRoJ=khYPDaL;LKC{HsneR}m`e$CBjz;)2qjo&Tv#i20GJ@@jF>KXIn zX0hfIy>yLdHVx`$SHEl7QS6KIi+)mjV++q(cgKgnrZV<>_J?NCuHcQ_ zbBJ;K#Qw8+v(}42;Aq!h z;In`;3mD5e;yI`q+YK;*K{*8c)q@SC$`p;IZ56#eXBa^G2Qi)p4iuoVi;C)Cp+TKNgYD|>)9B9G50ob|h!pX%)u_`cQ( z==doO(CHj+?*N|@Du@>*jaODi)ImF0+Ko^9P-T4xudy~cVaL+{lY8F%%W%Aj2xF5Q zH-Ix$lo%%iMYNv}c08Qynb{E-E4tW8S()vHPQvk6Lpx(FdtF_;ySQr{i;Qx@Bf?$b z;|>8Y`|v96Asjk}x3b6a<7I}v}kmw%ezDfr9bF5T?BpL6=VxxVm{^H=2l`-U9u z`p<1qZqC22c)KWa8|&(Gs>KKSgdwZ||3K zqN09&ejG!#{yN|abH}{``{`>cjoOb?B|1;7HuYW%a_kp5+o`^mWxi9+PedC%c{JATq z@8oaiYNG1ohEor244|Z>gu>tV|JRfM8Sy__8vjpA8R-ZA+44W0{J$-qdD(fYxVzzo z^alRV%>3Ksb&YsQw;gGt-h-l?{g)zgp0a;kUu zya}`%@Si{G2o1w~&|`n!ijZ$+riUlj&E%8q?3B6JWD{&_3j6i6%JS>Qqr3eq=Z)YT zuXFz)>{8IdY|F)0hg%G!LK~0HYhQC!W#QC`z>+JUDg$mUp?_|xY)F;4a@a(53Z7`6LP_h4r ztUt<|;>8(pR7jU-BD{v){=;kLVDDmnomC3={)tSQodG6K@~eqHJ0aFdkw>Zk_MLuy zXm_ek@MY2qPl+nPF(GUyQwFF=xnZ%A%V71R!Lsc9kctWONI{aJaZ*ikk26JX{VDsETwj~do7^cTxBFoug)Gq7hD z6!il^#Qvhwm{c_RYvkM)|I5KP|=?+Tb~QHMhm`-K5Obw{yP|CDtZR?^pLTI z??mn#GKuag_>3J3^fR7{vhgfQ05TOwU9Wl2c2DEK&&ym;k7GUmR1`U(K^*qpAK4*w zp~jk`H!5^>^wcvu8gj2H40hJKsu1SQ(S2#Oa&sDT_AdI2e`@(NwhJx2tlfnv`V8J~ zGeLZ~uEKrYA;7A$ZOv*KCf0L;(da!(s;0@@h=0v5`tIr5Y!P*5P5vCjohTYG39E&s z=WG!V$3BWLy3N0`G??offr>vL_Bj{fc8t$Z*BR3;_+$IzwRW3*7rN9KWUTE2Gn7AQ_rPwN%9@`8e!Pdm zpt9%7-=5m62FlxN;c>*$TkXk_E|8}2K48)d?BCwqD44=m1$;AX>BEUpKGnl$VLiUp z6VC>?)Rlw7fx!th!DnBaHK3?I;sB03-y&qQNMI6F4Mi~60UB!mjQOx@9)SL1UG|?s zez`b*#El(ueb{xKhcb;plT>K<2+Pu)Ll%s@TXF3e%1kKz+%+ofy)Qxx*QA!gx+hZG!Xr;bc_^dz_9XfD|`c0MM#Z%R;INfdx zGu9=KJ!>)seKzE*Y?}C{z7^+>ut8TYmA*FlM{4(dbW^KuO;5-A+py2}oM+_?AooU0 zepH+5NG51@ATy5o1sxvAg+K+#qYiRMDbq`~lkiuRDQsr!0_>{&lheBD9!XogAwtJd zy;P@J0cPuCS>-g|(4S^F!yUTGzJ;0@zXkh{*#6Rp9Z7I2RYz*nLo>ytDEh|$22I}3i8-fu;#x8_Ge1n_dwKn z=*;ucg)PB7A=$RyO`ouCKG+zJkW;jSY}}4{8SF$X}AcxKdmSEF$1J=Y_n^^e`R#Y$8qa;Gds|I?Tg7B z4&cBk92o|C2cw5zJ z{hIzYutC$avirf5x8AlQQ4Qf&P?UBOT|4_d<}azRj*uuuj4qckP3tC4FLDBsM zy}zP`3~lbqU_VT=Pm?iBL-yt9cEKK&T~}u2tRC3%r8rsfHH_IiCM%qTYYQW$1=lVi z!$0R!!WRnyv8!2ej$YWOqYaOjU~zfF0M_IUtB0&~B@@oyGtJ$)hpsn~Ec|jLjO;r7 zCe+1BuSk$dBEEA+-XmS5_Q09wC=T$PH{NMD|MH0n;7Oj8!t=E2D1Jr7hiXIJQ_fH$ z-IkN_du_kMEP$|XBlcr6dCVV0nhW9l)0Xl_&_~kA(=e$lM>PDbDNr==8hoZO8f@gV zfWyxD0gS=!;Ho#a|Dye4HiHF|sd$#OS0u|KEctm|({A;i&pn2?&)mml&v=7oU35{K z9Hbo^Bw#mo)gBTs8664RSd8vZ^9c>6l&{nT{4}b7hawi;5u%V25}IZ`382^0b75A* z#(1`126Q^E+9qGFmm3Z@C(HjOirr4%PgZVjkA`$d7$%xAgKTlYYZ`MZT7_G{t#NqRKdpuz6-PDp|9=%)6 zg(=Ud5i9HCHmqYkcIqtLLg-l1u)9mdeH><@+0lBhQ?cxpV8@Emh=Y!t<3!&Ih2s@% zU~`-I5fAI}cIwDT=0bKkIHA=Nx-&r25@3#G5e441d9l9OH9wF17A8|@f9&<6<}u`S zFxc6W{wHWU0eOP}Cw5DPA7&RiE?W`u4tC?kr6l9@a_(;G)OhPua~I?7X^1(@)bFWF zLV=;#R{YhUh5lW(^DGcjHwrMY>^%>#<>;6P zc637cA?uS`B2`yAO3)> zE?)b5DIOWRLL?G~&D{dcY(qz7(=L+Z!16=w1T^T zd_9GTF-U@E$D^K(tLFjbVylk_Gp{B@Ss!F&h7%FgI#u9hQM2$XGfxEOYk@$VN47Ko zP*;9rHFCQ%mCYhn?;(=*O1}tsB9!e3-AmS@fyCwww_8G83k=tbn2sr0eNdgENAN$k z^w$rN>+qRkP2_O`S8VBpX@-$yvsoB@to;|{5X2?PRlF#XJS*!bJuwX@*mbQ28$?NZ!G)|EZ666MI%_%yc3tKDF%Zi7)a8 z7sq`-&nylxd3oAnao6s+ReNzQx}~@!e_`}kXbU7Kn?4P>oWPh~yPuz(Rka5mcUpQ3 zT)>W*2|p=>R8=649L1?ggRhc$OcCen5I%3tXtK>z9zHzM2sTdJq#i!`&?l^DlvPJ* zM--j`a3^zpE5vc#Oln&twwf@zw=}_At{LRIsZH|ac+`MZG2t;rBE%M{4rwbD17ZrI zA#89Q$68)P2~|;Gdj8>7f32dHuLo0fZaR~R&N~o`8pCME(Ai9fl&7ObTjowZg-37g zyh{P?gUSXkmIIGBwWrJWY8e|pFd9f9B&8-lY49mtP8lb&)6#vu7QdZpJNEW-#}i#w z{DMYr{K!UUg!hPyF~MYZI=v zVI?wFJK<2leko(v6Z$+HY@6imq@CBewuN&_oCa((HHD#hFQ1uZk%O<;f_4JLk4T94 zpR1Yqk0zedFp#sYT~)8)@zr7&ryu7nNtZmA`&C$DtTj63Ok>x20b6mgiLS-c z4b@`H*A!;YNGNMpk=q>Vm1q%9&ESS|FVs$xC-ytdjWG}0WE^pJ^ANlJq+oW7_D@3T z4>Cb5U@6)lKzPr`&mU^@Jm;#1g6rQ35HeYX=7&=P*!vxMqKIVNl#(ee=-6jTtu|(q z>L-olr!&8L*ACiP70IM<@n@hkslg8zaAM;Y>nD}=CDbW$%;8-uINlSAl8A$|GaOSa z5MuvCCPGt$Q#UGoa1o+$4N%E+8Amq1O8*8H${m0b4zV8CN=xuub=Osp|Ht+@dap!- z-}|t*BFGnPSK=Ar7+M2Zk9o3n4e?&x+)W(fcP&t8yGnU36r2Ow777W$rULxy2gMQ~ z7<0SdT7-Fl!;|6f$;e4{%^#e`h|k7Ehrg<#6Jj@a-Js|2B;~l1DGoW76mgEF&Xpd= zFUnX(;jO`CQu=AG81&S{0H;W5|*%1tRz6XSg z(X|3VIRqm_()XmC|Nm5hZ`;==hq_OvVXhfvfXd`QHRpI}_f6!-^2!){!Y zRxwWLJ;rg|Wi(Uo+p%qwhNU}}4D1puZ6Lo4=Tvdk1IN(kQ;g2e*IMWj-D(s!O{M)<)*2siMe!u4FXzrr0sMw zTd?;)NVgHRI|(dZ9!NE+WahXi2fL1%Kb0Go%!0UY?k2nF2G*;2pvhw9&i*_0 z21u=YU>DmjAdBH0vhD3np6J@Z-L{Nn>`LbK*!##NAt@gYK=Yaxbq$u|r0_UEe21R3 zFhdkIGVF55m(u3_jOPbE2*ChZe@IP}y#R6}KM~~Nlbh_~xwHA#$GReE_GN&HO77NcI_w7m!4&l7b6zseat72voN)p4*zGkBV zkM)^`s7i;4}b>9Vg1J-gcxc=4SgjiUL)!)%+)wfm-XY z%KMCo^(t<~bYIc$;+)8bi`mcETgF|O_0472CXRhL4e3@rL$>63yc@U%>}*aqc%Pg> zLW)bj5}v8{LeA&lLO3^eVb79^8p{Np&-odAkII}6ls-#VK`N7^d_Di(RqY^(wv}Ln z4G_K~&tp-L#7I64dqmlAgU{!M21KbqRB?{GW5r5^pvGJ%5s3_2QE7(syxrYAPW9ZO zY3b@EQCpuTQ_ATzGHYpOck9mNXdn&HL!2V(N2ifK)&rRvn_00Ha?^3hXI-8A{8v`* z*F_h~{?ZiDDymh&7YwTp&0JL9VY_ATxR$A{q|u}Q&Efb4$DBzYfN^7Ux$h5`@=ZX_#FEJ73;hHi;Q|y`q8;{0MU%r0E4=Q7ls18^?og z{pFI4fftZ&BVp*yV5xLzeFNix>HarsQ7m%+>Q3w$tOwZ0+>lq=}rv7tgnd>~^ zBwA68YxEk&P8IOPA(;QQ4uMY|dxE@`z7AzOr38rz{VfRnD83N27S`CgrH_39XOAP;kGl-=S`_qp$^wGKFX`bj0m`|(!@Z@=g+=~Hjw~_3E#c z=XpPPma*KKiRY)=`ZfJz%~g`FX;!OXA^^KBZSdvY>r8W~x7S!!w`gxBJBAA(5KqFa z3WDcl1zl@|oljZ%B1bz`$}2m0G86gwi<2mbboEJMKBh~d*kty+?`!5d?uKr9Y~+P! zo=WodZ^8Ph?YT~ybPpBZVSBWmv?jl9D zqL2hG(-pog9Sc`j3x9fCErp9`P#X*RFGad9nWh0-5C5=+9(3vFUS~JNVBsgdZ#Wu< zL(TWN%s@-Rd7k;{*%WLjSaX^nNH+(2Brv!2%>ls0j$8GhZMSpCwj(T_+W0QebMB~y zQ48GW)n+?0l0ogm0Xa2-+A{2|D96V&t{JF|6)m}>)P40`iA3s;D($$4om7Uaf=Ea$ z_L5W(TzpmiWJ<`n`$eLldchMOz$d@QC#AR7GWSQqqu$9(+(i~|tM=1SO7)!}ajCtL z>Cd;NdGp>z`Oi3F>b;uR=*4@@jyJ{OqA>dI%sd?HqhGy4Nr?U3%(?~fQJ(fGauGS) zU3k2>eU)ip4)Z{Jh~RMMqWv@0=)%$it9Wz)*$+2~`@K3W_x?KL0QM+t+omW8;I@d} zfVa5v=OW6VwZ4h===^SYOq+JSy-^!2YQ4a{HxTT4x(hz-B5qrYs}9%*wl+9_`?5up zH~;A%Abg;6M5()Us*@kMzhHPZ@a~ey^w=}l6;Cy=D}uy-W+Or|;^406ZtJ`KO$O15 zR-Fs6-Z<*JSIAV@m7G9VzEa=&UIk7>G@;YNCyh*BAa(&#heZB3;|W;-Y(YHOd(L`) z)Bed6{=;T(;nJ2ZBsLb&=;^^G?1W{*DCXi0Nd3!Kg`G`hQ9u8Hi9s97nqI>o_qn6b zhd6L7UEljT5Mp`ljN_U{n2F3>=t^co1n|Z~>FMEM?q2>a<_NUqP5krMw;2e-B&_(9 z%;=T*;VSY?{qrIpwyjB4qoh)CArBKCLXZW_LCA4q$yC(6v;@9m~LWcwaYojTuQ^K@w1Z!li1 z8?J{e#EIYaEoVRevkYS^>H>HEtV9|YhmY;uKkpuZ*8RrTigA2pPX4JMON(BQk$yFK zYtQ32w8mU-H)dC99~2cy>_(wGQ`nTWWn1jFtWhU8IO%=`s-C zBx-3{71Am)Jir5_Smxd@;Aztf@@{BQGP)#ep%pu}BZR+7bap>bT(yM=G&v+aN<50u z34hAUPF$@c(d6fQXI@n!RA1$-gxjoE6tFG*V*wAd?-68oGes?q3F1H6UHx`>8dL-A zP0X2EUUpYe`7R|UwnjEmmXJv9GEGhXzqU-!kxD^9$$Z|vzNSV-rDx~obMIv9+v6qK{OjPGt)6+si6|Aaw^FD9`WiKjfGAIjjWM+- zDY>=u>lx($)T{BeWra6RqrBz)dW0i*n<|8MR&Q;A0lKj)kO_v%qDVL(tS}3&qS2KB zbXY`^_qJ;<-66;4AizaWX7dLVWKQn-atl&p@x?d5T1p}}ixDfg7O4Ecc6(mp(XQ+) zWMNm8$*xb@+JNi$11lpVdkwvL^^QY(Z`@dOgBz!##`ZToL#qa`1Jz?tHVkhrl7W zSCIeq-Qy?OEGcYOeO0U2o?e)=Dd5!MWR$9O7!ED#G&+^QcS9Mc{*&PndoZ!TT!Gfp{P49_3(_N z2$`~8bZ1P-^vO_K%^=ASC5CrzfrQ1n&*?5VJcCmNHpU2D=V+k`H(6)#Tdnm|Ne7m) z8NW_0g`CQ6S$H#Onef^x(f_}CV`Cw$fi1TMM_KqE+nok?83mYZz8}RbcgLi`^bOKP zIbH8yIh#1Cn@Qaib$Q6T0Aic>CI%9^yrwp^Vuo$+F=pAug^fBSO;8eZ@HU595%g)c zjYMr1X>?{3#tgzyEdo0fq~1;y)iN{vzq)Qv+|pxZuG?%Kxcyg~h%A0U zXl_0izclBC{)>ls3a^00?+D~?$_;?i%tlJ{H9AYJ1I2H)jWB^OOdKUH2SfR_Ss237 zZCArP9r5}&soqNYQaqiF`Qoi$4jk_ho#@R3zx7r_u9?qxB0^8e1 z?xVjC8qa-&tDjwV&a9cWTQ7oc!*${X|L&{y^K=BZd2Q**+i%u}XG^=w4JtzCDVp&v z39ey_t$ifF8~Q;jTbJQ495;kcHh+?LhSwMjy}~M#(}IT0a9Q~P9e*k(_Y`ry6n+cJ z6nteCO3zF6k}&N=9s2Ke^b zdF{2Qdul)9G44O+bgsFakKT>@vPUuOUdPq;$ewOuv*^n~;p3q7SsveolyB$BTXTCo z^74BWO-=K(q`HxE!GW1qX+wU!gS}h6SWn>hlr^6#Vqu79ptORk3Lv=s458=3 z9Iq|X+*P8RZNGfIba6L^4l|&7!vBFk^W)^zGz>lMHu>S%c?=l(%@TUto$;eZ@z}i8 zzZRx4L%kkXq^hW>=sRnd`TiJo@nxA&{`bEd*@W>*Fl?x>@n^@9D8$1?^6AibLof6m<-c{g z#d1kRMlL85Zi~lojH425d|aH{Dmp~0P?bK(2e=?5o~iljNHrEN>^3mwG+sI!fO+jU zR&FMGuJikFN~A8egh}g7nqJz4_i9y>f+W))_Ox8XIP0= zM4BO%GqNi}wwXRO34vl#_Bs3eQc`1<_p0t`6Sie|2kcz<8fBkd?mM2oT6c}%_pPMU z`q|9{c^9I6GQW&zMDOHboW#CfAAH%*Ufz&at3WJWv`yaG@z4+ z7gwd7h^`;gUog+Ha_a@pgU*}T&y90REqxaFr%pBp4L+Uj)eTRTz4Pc{_C5V6U202$ zAINK;lu|S?8wJX{{Ndm__0i;f!E0FZ%=2RuQpKi$u?4^fC&>Eb234Fg8KSkEPw>8RKBG5wL*TuVVaejlqM>`U zu{PezVdjra1FUtbkN`Q?jXWE+a5P4jRXeZXr4xIL@9LgnZr0@EI(kLrFZP|T*9*UT zz^heXUwXs&?S0U~fCd-K2hMrdHw|2sGLdNm;2*!st6ze)L%>_6itktcqUj2SommqV zBEcjIX7(hrI{#kDB8Enpr>*eQtC||>FF#JjSWjR_JFIMV2Z^~_%6^DZ4SuvkZh$?F zeD0G)pJ|I2*pvy>J3k{s#KPGK65R0h=o^JE`fQqi)okhHmRYU!>tlw4+FlNAvdJ4v z=1D2#ILb3y1P3}R%&tj$jO0kW=PthdPSuFxVH0g@u|iL{H3>dH|4#g6rzCr9H_m11 zqZX$9H0N;U>%~&`Ty?-t7uTV8vQmBr3y2MH(Yn^ktV3Q-ivoV@*_4^Vby-p3C!_YO zNhhd6Z4l;iYyWx~+opKjMK5@clQk14gpVyw)%yg%97PG<+>BXRhl6t0?wK{-n_UdK z-ggR#W%l{E-X;vMJ$Pz%RLir+E%qxg+i{a*Vc_%YWFF4a1ck-1R`pzZ=wp*e_Sd(O zy$&2SX2;Lug?2c{KQjR4Gsuei^?~>K3axMx*~`nhQz6{8HbC9Xm(K#}V+`+#lLD^r zl;(pI*b2d)h-LbH>pRD*q=(lhC#T977o~H)kC+x^c#DqIn;ywBFWy>s{Rk%#TP`W( zIeczt(WY?`&`9GSqygH0Fu&T${-p=STHAv%WBaXYpWH<+Z@)khaqNKT2xwa$Me0}m?)~4X|v_4sk8~yo&!i5{8jUtO|5NRx&zTg=_l7m)9J_bPb&j6H3V}jP*_5^DTU@7V zqxyuB$~#o5vU5+U5dkX^AlvPtC^in>yicz+SaUL*=;W~yq&KFCw#8|w9uj6iu0AP8 zakD~|SR^DBbm;&D;Fb@gH}SUnr?Sf{!&Tb3Dzlfa+KKZdDw_{liX;~!pQqNK-qg3; zs#K6nUA6VLqyJ+RY#yYPl-Ctp>^vAm$s*I3@9xp0cOUkqOFZMWkqK;Y)aVJgua%M} z(cfBXjqJvtt4r6oprz3UL^j~jowf2Q^u=->9bFqVoHtT6-Zt8{^x2a!^^`ih!HkVm zA{wk6x8NFM@6T-Mc@SnDR3a)9@SSxjsjVy`0?zNqtE!!Gul95p1Y+#@nfkz1_Bh~k zre$D%$aND;{wG{EDZXHObTm0dHAN-`l=4X}?$)z5(i@;W)CRv082}yEWkkAo63sB}37mKe=BSsDBT#`s!X4+%DcAF^MVh^i z8_eVx&h!m|#c6EEcetTbIN#a&yKgt6Ycv%^r);gn8_1i-YfF2@Wa5fWGW2F5VU zKq6p9}d z=^6^CJcntqI33xk>|@;Et-tv{Ts$hW<<;VKdo&bsIS4UKq2CdRS?j;m#x*A!yw18@ z0}tM_IiIW!kqmB(8;&||t`^&=Kxnn8Zsqvp9!p|dP5XpmTDkj~UM&P{<(yv*!`f1k zHXlgxUFs)Ldjt?5UyDLJG3V}BUw8z=V$5EEbt!M6RI!n;0slYtNK0x<`t*Eg@AOP^ z_x>z)>yp$n)^_P*KWN(~bqg>6NDC_Kp=n{5OFChkI~q}=&LaS`o+?DvvC^kHs(ap3 zeD%Dv>k&9NN|05o-6~OlodOWo zvAjLhB19oDus=dzNv<)2tmLfPs%F=TiDcl~0H3Pv|!e`;#0 zTFUom;|CKMlG7iBe3*3eFdpeCcmMwHn7OXqId}Aw`}>He0L!y*|Eu%t_RDO++5SAfiLQ%@+HdJ8GR_jtIVbBIcG%$i1 z?0lsASjXKEaa@T+ewUWKLK^J;qYyXEKh6`*NeW!Tw~-UZZJ@N>lN z5vl_r-Z2s}b7k#PK^`?nb6uoSn^9VsxXC-F6vR+79d=v~SyRCt}u2;JmE2rk_2WAqMJBFX+{v zO*+iEn-dtEytc&}>>5*w99t|JV&CUtbI4a24Yi_wN=ECZOUYc^KcE-duZJ?vjM37g z;`~h?*NE~L?_XV~z$HN-Bg4zS`(H|zVc2jr_gC%oXwrrWt)&om@{ov@wc*sJ3$#ja z8=WL+O6i04=aCK9Yv|=as^FZu1&Z#B9p&L9w+j^0m4lTH7F(cP= zvW`ata^5KvbG2ZosCcaTs%GbKYr4TDM)YK5Qj_lc$<~y!@K?)^zCf;R8Q&W|e(0$hqExA%rl80e4ps)YY$t*A zQ>FD)CN@|mwjcFo$MBYhv$ZEdZL;Bn%Sq7D466N>V&0Ofm+#)lN2qa9MdSSz(kdJx z6xXLRP31i<6lRu;5G6mK8Hw~<-o8sLH(>a_f+fe=VKqU$z8~c0v9Geb&yLAqz&7Yk||Z~h|?pnyx%u~jqlfAx_V>4Xs6lA5R4>Jp^umQweuf>@r%^^X!5{} zqsEOwueR0~wl=w=eHYw-lPu1+E$X#Gy{rIrl zL^0dYUqN>L?0Zb~=Txm?|F0h0YuOwZn=yjRC zYSk+vlvuohoVxb`S;U-*u4?t~DU|Bp+>>IsYEJYgFzC-gm@6u38R(qBP8wZM{j-EL zWB)j%m1vDnUTeobh!sKYLO9P(rNj`&gST;&LRV?><<*a0dK8BV7Vs$LW;s1P5+oSRF3+LC zCG^5>OFY;X=er73gS6SId@H#6&NV}^^M-a>v5$`wxf- zXk?{WvaUX)D>Xl2sdwG68CEUU{;8aA2!$FH<94MxSubeh|H1A585YOn2#IDE>Xu7I z4zcL~oY_b=ho#85mq5dSEexB0B^_KjP_=;8cbW(3*b()p1)gEp2}*T6t*Sy#hq8>> zse>|7Y2t0o6%joo@Mwe{biu=%nw%&t6jEDoA84(FcvCNCdPNI#+>(S^`*#NaJ1_qs z0NWgCaj+ungzcf$O#=fLXnpipEBG^R~Xk4`>~**F?~taSDEw(=X&8ypS9x{w%#24Vp- zD#NR)6jHn{LVat4@88uQlpV*IuNOr=h0hOKaK*R(o1^`o(@RqBm1T~-uDppOQ`sBA zQs_PG>SG~57~H%$LfWP59ZZu+ev|Q$z{s<`z{_EOOtQ70(PIn`M6z>`olSy=ia1K9 z6wcmYd%|Ot)k?hfvseSrMyw8@Pr?-t1s;tuY4%0Gark_M=+d?7htJ2oHvK=QB88Np zU0z3|gE$WjY9}S^=M(@#-kOX#3P|=mW3G3D|u0CZx8kwik}; zep5bEySgO9nyOBZWb3UfP=JbvxpQ0PQKF-Z(oBI$k6;Rw7@efE=5ZRLGc^bAH3`{B zp^>8TdYc4qOcC|}+5%Fc39J9=;8hJ(Vhui_+N2X0)rc|;cr9&!D|zcz7dxTa>p6`^ z$UANi!V%lj1273<=M(nL$1~ErY|=c$#r-!!3p+bXsc00PHQ^|UfLVHQ3jtvea^}9j zx8SEUdjdUh?}%EY2(V0&#+e*A2zli)Jh5zfk7cMAJPr(OCkpZ%SOZc z_>;8!3Q^(agz}q0GXnju;ED=}vI0+xiVow(iB`}E=u#!G`&&u{6drBMqg%-ow5Zfg?kLfY4Z@(g zF5CDq<_p1ibGrXSBVq&tTEF+P>EI+1f$Ball3A%iP*Ub8&HZpV&7IquD3UiPfE__2 z&&PL+3M?`uwgVqhaWL!c#PQ#+F|xV?rp%BEe{CC;Kn~SSY*aFM5|xYM$^_4yL?!Ui zlQw8O!2GN9XPSD2{r_(s63Jhc8he87i?OoWtNhP1VYo zR-YrEh^%_%9Lw-hnfHo3n6Lfe5t?xF}4y4@0}jechbqb z-ldtXgDV;q)xVq-yUxL0IY_n!!2-XynYJ(KDPkEJF}hfk$(JpDP!$5Z{T*hrpTpw$ z`YVJr4^z=zzcmF)wf>Q%*gKUIRF&h^zbO^8q%gm{o*j=3L^hEBh~(#}BROapukxRl ztbAMl|B>|;Zc#^T*RV>dq=GaINJ}XtJ%rMYgw&`=m(o2T2r3eik^>?FA`Fc*N_Tg| z&<(>dJ>Q(?Jm34Axb`2wHT$>sz1Ldzy%xW&GHG$N3Ktu?!o8Q<;$eSA*Nj7s>Q3DE z?IkX}_C*-}M~wcb=tC@`h$s1TGc~gU6kMZp;}#?N#nw|gpHd}DM)_NF1_iHFD6F@n zry7Tv)35@DQm3(?!;i6_>)q3KoUvj*Vb5#nrw2Jxm+~V_^)={?%Kvc1YQE@qreyAC z&?V`lQOl#RKi4n6QW_tB;-ZdJgRm;yb9#i z@p<)j~>fW71KtA!Sr) zwD)R3D(^_V&6xn7B@C|MVgZ$zKHI!2XiY$sbz5jF4nd*pTt3u(CtP-^E-V|@u?h4Z zRZ=DzIFd)}ENp}7;!&7xTJ&V~3HXxS{xbK8t+|sj|F-uk`ACd*) z$h{sOCk^iO>&_g&;VTBP;^PrVgF06+t1j!VzFrU%- zpfP0kxY@n`kuXl{jbN6kB=#6RPV3%V?}1<=pb`~t9W+40&guQ(Rc?2c2Q4_+hx9}wASQ{4kElerAIn474cj)B*#|`9F$isvGxwmt;JMHG)y|76;#cybgQF#|7i}IQz zxl(DTIqJjX6meIqTj6J$AV&LwTz;6}d%9HZC^{g7S>kqNs;u#*4avl{^Db=?jg0<6 z-RyUHu$5n5#$(6+@FyCw%DYFj6dvJUBCL3Bl38M=7)2!qw}-`&fAd+4o1@ZrZP zhqOj1w;W%DoPW=IXl>r!)4w$_#fr*~$&$OUixES^Fs+dV_F2%fPebdTEkUf`3N=a9 zu5SqRpv(}dBh$^`4>&=sL4t?ZYg5_J=NrGQzYM|RF^9iR4Rx`l_=}@aLd~*wD|lwe zh1j7rXg~d?^PyBWTsT2tWG2ts^&HjL8c^K$#M?Yl_Mg<^e{qeJ3fB?k{0{MvD1JdO zd>0+j3M6Z^3wV|nK_hX~)|+yR>vW+1t~~7V6hr8Ps&CXngfEW>aL?XZE7H=<=PQv=62JJQPFmf_&Cb>s@nd?@+;Xcurlc7XZ4% z?P)M*US56AZN{8|Nfcz~a^hycxoK#rsaf1w`PSb1a^lAh)=y=nEk}Ogw2Qv}@;%e9 zUYyo-4bgg#hPB5$do^jEU^Pi zCwZAfn?tkhHAOAIE|^~K+=GInayOu$W9qP@O~UK~_QJLpgH^y~^PiylkEA`BuLd>^ zD`St*jh8129s)Uj=>U#32&;T2FzWGYO0@uI=$K5i781~W%rEr{&$(+ z+WyCVF1x}`5g9x8YPn&GVLbg&43PR)#yq_g%B4O^p@Mg!X$vgWZ*%c~lKs)c{R9#@ zt_dQ^7w2&Gtu%eupJS#@rIzxe2M|>xsQflb^#&FAni!@U3_pwXsCo2z0AF<8Aa~c} z_}hE@_dQaDGd)9BJI4o!iQ?2j=r5W_0m?{$v|_Use~TY}cs}m-)6p1e8mc+ARa8aw z?+I}X^d_qmbLY8qZ_(&wK@Zc1hcP6XInvB4-xF4!T&%W+Y4SZG9NXeE8#B|wrT!gQ zWD$SwwFQFP2~?3xV3)i2Ln3D*X&4ONFRqp4+*zmvsZaiCbA0$+lN!RjtF~pO7^-9F z;m+NYs?{Knp7;M}0Z?7CP45mE`RkNSX&Uqkyw|Ir;x%NI^7s-;`2<!RhQo%0m)i#_Xy~x>imG{Yp?b6RF@5r#w^P^%;N@7W| zak)>}mFi4fz1@6y0MZXUAO6s?(pLtS6NQf!dR)xPfR?Z}Tb8hM+`Q)&QaTH0AA*g< zcr>)%9e8Z2ybZ~?+s2+2&MR!?Rvw^-GK-3trCb}e2Zo`DMCmnpSr((cN%Xt zqI!H^VPOu2qA=ezIY;gii%UFqY7lJGns0McQ{(5>S7lWes#FS|$u3$JE@_!s>C+r> zpqN3`ZXvC)uvi^&BT+E3r$~nR0pO;(81QrVC2S=GqXi&b5F8akO-0dt6f2Odc2q2} z0uTIrcLYV*;@!Mz02r^&VVkB9t(H|>4Z-n(QS^KjpfDMG_p5 zwr{%K4!6a@<9Ku;;bE&?BX(}ue}HTnfaV_xCHzg2#Oj(UV+sg+{qvsI2Oz5R`l~i^ zz@Kop245`e5G0bL)iFNoxD!yFiw_}Q)u12c@&)M3Hk{1q8}|PPZHbcb%SaUm&?p`f z8WI0Mjv~yPWMPWL&ge%X&3k2uExMmy#$y;Fuq17HC4U4s-*O>86xN(%l0W<@f)6Pth-@O-u4_EG0+gdsh8xR;l_MH&~wD;*h`ZP>W0<#KFtm6clIAO3Dj2^KoIqI58`w+CW$2WAJ$| zLX6Oac|VvwZ94D7d8WVtNf65=#~ga=a2y_;Vc;NKQ7-PMMbRkfJD&FV|A?qC0z?9X zFlo~7QgDBIs6p66Pba(0_o2}_5m}@kU>{_j_Gc-3@pFdq>DF@3CuwRWvXd#@(`*Acx9|0S{IDvMtrTz^t~>NW7aJx0$UfBc zE%yE+lKy{Vg#1w|I>K|CHH6VCOc4G$2t`qMPP=C+3^K~y0Zj0WCIP(6&uL&m_(%gz zfbEwJ(?KszkpG0?E%PEt&n~XFDv?soXx`Va6J_sdXJl!skiHsYK%#iZ#`C3I;Aw|< z45K*_bkd2esjb`gDm3ef?`U65(qyTTGK$y{r**E{v(*wc6UuZ~gX`K?nvi{&Z-%7) zRY}6dT|*JaQ4zRcogc~)NEpk&t*IZ79jVi_3qhi>cL3OD44={qKP|s+cg$vu+*LuQ zf_k3(Qp|%Rv_=@dE8b~}7se)LrU2T>CGKNg0uK zv+BDr7=?M+2pxaDN3Lob)sdXmYY<<^GdB3=ygWsd3;t;9{}eV^5jrkDttV|N1|3d= zTwAx$RW9c@eYwub_&{*&0WSBk0%%JVFICvhOmAvbhT+~OlUm}R@nQ`zwI9r<-+8ia z0uo_VBn*!xBHXBQ3{^OBE~mS0`BS^5*QjjuHArH_4C>2AMK*>9b)RqYNbWgerSv&mtqr^nL zM=iwJsZGsL*TkZVt9SoWQ2+T&*T$aY_c5kY2ohcpAoSjRRvW~}*U*TkI7z`sJ?L)) z=w>_dpos=o7bNB+FLpvR2>BVk0>#PVUX0HSMvOXc-v4l0k(z;HVeT$zvJZ0i!F)11 z2P#=C4D~%-4F9D-vmiII%r10(gFBwh2B` ztY-jN(*GRBBgdJsgNpUO2dn)e#PVGrE0~;U{?q&ea=k6RbD=Kk;O`p4mG5MedrMYKCf^IY2G#gUhRo6eRG+p`JA!VH>49 z_SKID|L++6qb%}}Uav=s9umrEKcyxL5<2XHVqLdr`%(#GjNAeQZlP>Fyt+HK)FA4r z?Oc3%qq!stRg^&ZV@Z<#gH~uhQd6yK4K|i7?avy)|5>z&flM=2S;7Hwe(;Ml3+@9x z9oxKkU3*U*KM-bNtmSpgqZEE|RZi$G@7LX_wac#Yem@NKtn(ZB>d8hp5)0X@Dt>Us zplQ2&W*exbXePx%SmXo`pzA&B3KMMQ_D-7{TAUXl&%Ja<6g?*DU;gVg{l~95bRs>c zmSGD+5MT@gawXc|xO|09Q^ikPS?0!Pqd2|zfv4Yf+0>ZWHU#T^cX!S%>f@4?!=Fi| zFVP0yGkL{JP9x0{$SlD%P4(mn9W@s%SJ)nR;ft~WB{D6~UQ5_$wl)NiqoFDB>J{a< zhDLc1U6c&=tx}h%=HQ6Zq+_}Kf(Dx0eGo@G-_s0s5f+nQWrTz^iOO$2V_Rq(f_bpaQg`v*0)c$nzFvtnZ7;N~48yvpzj2&J9ZtEFL=a!@9&a852W z%nLfznju>Ly=Hjd>^?~FWdMb_Px0rSvw73|rVWm1B!=@5OiVUgo{*+WGB2##i)60s zJgJE26NG=Ef1*hKgl%F?`YrWC2=AF$Wnnxg*(!q;{rK!|p)h!^B=I=a*jlsM&)3(g zcgVo{&BPgEuA$A1N4*o@*+t_J5*v@C)iZoj*x8A|w$jcah-^5#Vfgu$;fjHxSSc+L z9~*|AX!;-C%V0I!%C{Z$s?rZwaqDd(rk9Po#+G~}?1Z1`E>_{^UoT3A)N}aky)P{X zc81~VQ7afFyvD)qVePzdVtscpB)Mx5V&|28+&HQctIB!k=#R#p~-r~t6eIJl%V}eL z&+W=<(Nw@sh5*P7Z$oU{NcVB;rF8pEt|8vUbP`R99#4r9yFRk)sH7}M@uc;{$AnXiFaDzyPGnH zZxh2V`DEl3Uyb5nPBI>ULbF>#OZ6eZ(eymOrlW=PcV9}zW8|CCFvsg+%>Pa%B0C~A zBI2vO$zIhERl|r_Jyax7To3wu&IWfDCXS)EA&HHj)1oCcsI;qTLcBN6ULPQIVRyT` zS=wG*v#IZ{(7G|iO0`s4PXCjtb7LMcooN}yH-C7S`+0or}a5C=g6jgJUtg|u4LgC)asKcaq%~$ zCAk0js;+hUBBbPUC^PpkF|4z!+=HD{`SIh)!M@#+qovcFVR&@;9ge+r%*@T~q<^or zQkpO3R%iCXF4?WfGR^ofFCQH?3w$NP!cHwbU)f`eOs9U#!ZUw~%r0-IPopV#*tnk_ z^*(e^bH2FjnU+5?YV19O#amwS@A!tCoJWstKD}XTDi!FOsmxtA@t*}@e5_6 zSL@d3sog@7FJJx^66Y|ol>O;E?ws)!asmu1OiGf!iYgG?7vJ>e=5@JOjjNtQO$xj0 zuPDWTjHcD0+&)vzaClu9*jP)uPq#;d{QuXIZK~X!~!N&sni`O;fGM6BD`PxGr_#ZdL z`HF(EEj;o%_@F#G`E5$h3x?Pt|hcGHj`j$%7`ynZvb{mb$=h5k_bXUKGB zGs5!V?7RDpPqxWBBvOC1;a*1DUq`W0{tqErvY-F+<=4L7L2?(d$)@zP>#N{217seav-{cI=iheBohykK)$N&*} zoR|nWgaz3A5Ndp#6PWfzz!8&zrI>MDVuG@IR`EIIIx2E+`q*76k9KE7pFXeQz!!1U zU?~;&zf}`H!o8L4zt%gqiOL_nR@hFa^f*2%^C<4U^`9OqJ2BF^j2fVq4&HoTcD(O` zb}k673dsFT7wB`+QCSA)7!a?wH9rP<%w>ndQ>=jSLhjebPkah9A?*y2WllMLFa zJ;vnaTxhoa=&#KB#rDWM`&Sl}sH$CwVXG>U{vHjDi45P=Eqauu;aTNYTAvQ^k0T<7 zz__^Gd~&t&H9jHX`z%{C*2j@JOj*lK*zSwuP)Jc)eaP~kovK4|;?HY9aL~D5O!lO= zsA@ByuB8G`RjYEq`B4?;9~7M;4Erx=(Ls2kfiskdpaR%>W-Z6dm;mATtJ`yoX1dT93c}r*8h^w$pNs^I405&y zg(^MwK}7P{soRA12-R;z#$p%g2%=hV~h|7O5v=pd6)Xy;?oi@8}F$I0!{%h6sAr|jdV+3+pwBe00# z@@6Wyq$y+cTe+==;c{r%8TasWe6&}0H&dU(e~3nr9fMISRg)I4G@va63$YGl9}Cwx z`Cc+0>5b4yK7U4sQ=Zhih1{Lco3;zEhscg%VzR)7sp6Iz@_tO{{bH_OCu$+pflR@{ zuUQ?k(axJ%WXc|ARqxk6jup`9`m^$;Fm_C3@p^Yetv!0vzh`=yfq5!6uu&*4U5l>E zXn;84nC8HbL3eR=>Ln`ZnFL_0;gxpqxk4k{$)bmwSC3Bfk!sZyx|_#v?t5 zo^r3^=_;eR&X;>$GXSZp6zYFvlujrUYxd=~KWr!-$gUc^$PD5MqP zA61QMqBuggScz!~_TJ_j{WPFH2A-2bYjtlC{_9U}fB&fact@B{hAQ<1oqXSE@jC!= z;tLR!kypn17tr-Yt4pfBnwBG4QMu&|`5X9K5clGeRDEMmMZVZ@^}x$Gr^ACf8@Z=h z?)H29)_*jvX@W^p!AYht48a?(ihr1fqUcyNJllKx$?%wHS5^zcOXd+RbUCc=r_O+S zw@oxG;Galu+1Y)Mv%evEjqH1T&UKy?Ao84BS-PL$sq(n0MYNv(&!R<c{ZcXX?hR}Q-!%|R6K;L_x9 zhp2W%<W&Zd?H-Tv#~Ms^e=sHEV)1KeZAG@YUSfK+B8iA2Z{oTUja zj3E2d0*2_#oL%9s{7C}pI(?~uFLnKI7YMxi#{2BXwYIwtu)0i*cO}T7NFwFt$tXW0 z+EBRro$U*Yec@4v8%JnyFSmH7ZudFbH1-MJ0wlxGEh2Xk?~ReHv-wCbtq`csY0Xxb>l``B*edFryjsslc%r3;w#HF_7>di zhllzfw3^ap(#AgTW>1hJ4F(+5=QVG#D^DbZ3_boIv~eRcRV=BjQgu2UV0?sc&$18% zs>EVRm2?WRQA-r7=cWE~1f#aipV}5--4Q@yu$1cVOcLoUSGvagB&nP1H>ue z-0r91TqRZ9C==_pkDA$55?=fd4%Psx48GGlp5<=`ehljX&kyD4O-|HvWza{D*sz8= zJ#J=;80_06QCk`8+K0NJ+KNf}@{>=0zE55H7RQHrc4-jeXbW;r@s#t~3hrwswpZ=- zi_Wtpm!WNgO zQF$fo45FEXsPkl-mvFRipLGoLxuhjgo-y=a=$M>Vma&bK_t;%!3an!Q&w)Wl?TOEK z-qEmyg6{1cYs!0^LR`Zvdf?ZAU6U84)%RT*$8U$nCx}Nj5&rc4E?~Cbp)&NH@qbRp z#;SY(93mzWgnU|pDEL;aleWqq;6mk&jfqv0&6#n$(ti*?cz$ZLO6^RGU z?#{R*!iQFJ7usC4#9GP#ZV0TG0zMhlPeQC zRoPwy^QWGfbv)O=#F}puZ-(??wL{zycm@@IrZEjx?rdIHZ#vij{n+^5&pE>^O{ap$ z$nWabZDYNOG8MJl=sDv;l9y3A$l5K7`VpO`Px|dK`+QE`6@QH51bRu|X#!`XK!yNY zYNJOizljdrli??gpw~$oDIbK)D+E^O1E=*67@_k;ehdA2^+`8H_q{p&yfZiX4#d*yc za8!?!AIbO^0$*Z(co~7qEhEOig!*P|2DoMWfft!}-CQ3fLxcS!u^JROmu=JVgz{fK zLpZ4#faRlCt?e@|xLFMO`7ar^qf#ZXH)x!O)SI*^C`)-+4m{=Pz8wQ3I`uRB=Z|Y> z+>=)c2vs)$g`8LW*d3Y!n|0b-^om2sl9eCCJe%zOQ`sMcGS1Q9Z8Ro~M^hbt2UV+DTu*bq-VBhLhYlv&ZAGVnC zfS3~|1NPdsl$c+bW)7L73Yr52sHJ$b*A;G5yA3G&(-M?5(*FK3;2Q=kd{(@{T)$zz z^3m-df>V9SMY{Qvz?e3M5${Z*K1`nc-r{j==q8_%H>q!*P_5RaMnxNO#?eJL0SMn! zcL>|4DHz_=Wm5J)sZoHY9!Rr!@=1z8={}i!6LreUxyGgXZtTnFKa<5HVLYQ033?rW z#CubLOhw4Pr%ex=@Dt>kIEBtJQo%SDvuCeC(H)qQ3G)P<&iFSZ{!f$ zqFbX4)@bf!O=y3Pr2*CUutO{CfV+n1zc5OR`@M$0;l93eB@pg?i^3D@GL~@aM5tPT zJOcmy7x;_7_73u^*G!Q_#X~W`0cTx79IkX;GpvB~RG?UtUv>EOz-rlrgBHnb?y6Gf zCmB+Uv7oiirfm)=6i6@I7YM4eD`dKfT&N2hS}+tG+4_@r=K#A*bKo^NbBkbc>9TrW z+)IlDKJ!BZ^>TN-7;S9ymxA&0v%S&@urPe0j8Qw>U=f zv}L556Z2SSr$XTKBzTSR+jq3muL6GXx&S(T+(ek>YYnFG39t^{R|?H-S6V;7lt527 zc0!W7x_%=tY)L?jgGEebJWb_{OZMELuyf?fpjXJy}#?)a&%Z`TpeXpc~Fdk(Yqszsri6FyUw++i6h|*ub z5GnjMPQCdi(q5&~O+6fnFfOG{HbN2KYT%qEfx{ZNCi-insz`N9M}H$xaSuRZv%YD! zuI(6OcKixl&$d2$h)nODKKl&(V>7U42a$(d&`e(XEheH6I;9!hB*y

    6_?c?Yj_oX8lML*zp&^Fc(ysv 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�p`2C@DAv0k4=qDZL{eo>53mjuM-XT#?bG~ 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 z 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 J__W8v{|8?m=V$-` From 8403dc62e916694a8597db0da0a3383c7d02d70a Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 11 Aug 2025 17:58:34 -0400 Subject: [PATCH 141/146] Remove screenshot padding. --- screenshots/musicsharp.png | Bin 136638 -> 74549 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/screenshots/musicsharp.png b/screenshots/musicsharp.png index 9c1d233aa30c7d131f7c9c53d7c298f895acb9b6..0810c6fe471c1b0ebf939ca366fb533c0a8bb0f5 100644 GIT binary patch literal 74549 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

    r>z<+u#4Gmr)a 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%0AEtb996du`FI+w*vMW0b{O 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 literal 136638 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

  • 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

    a|Q)MqTUWL_s!Cz;7~dDlMO38H;F=SU=E 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 Date: Mon, 11 Aug 2025 18:02:13 -0400 Subject: [PATCH 142/146] Remove raw parameter from screenshot. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ff0a9d1..9c0df84 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ A cross-platform Terminal User Interface (TUI) music player written in C# with the goal of being minimalist and light on resources. -![Screenshot of MusicSharp](screenshots/musicsharp.png?raw=true) +![Screenshot of MusicSharp](screenshots/musicsharp.png) ## Features From b9c14889b6780099b8709fa26f87d117f6852195 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 11 Aug 2025 18:07:44 -0400 Subject: [PATCH 143/146] Link to raw image file in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9c0df84..ff0a9d1 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ A cross-platform Terminal User Interface (TUI) music player written in C# with the goal of being minimalist and light on resources. -![Screenshot of MusicSharp](screenshots/musicsharp.png) +![Screenshot of MusicSharp](screenshots/musicsharp.png?raw=true) ## Features From fbce3995b9da1de29ba478ca0b22b067c8d963a2 Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 11 Aug 2025 18:25:08 -0400 Subject: [PATCH 144/146] Update README.md installation instructions. --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ff0a9d1..e194387 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,19 @@ and light on resources. ## Installation -Download and run the [latest release of MusicSharp](https://github.com/markjamesm/MusicSharp/releases). +Download the [latest release of MusicSharp](https://github.com/markjamesm/MusicSharp/releases) for your platform and follow the instructions below to launch it: + +### Windows + +Open MusicSharp.exe. + +### Linux & Mac + +Execute MusicSharp from your preferred terminal: + +```bash +./MusicSharp +``` ## Want to Contribute? From ff4795fd219b4c5714a98218116381ab7ff296bb Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 11 Aug 2025 18:35:14 -0400 Subject: [PATCH 145/146] Switch hotkeys from Alt to Ctrl to support Mac. --- src/UI/Tui.cs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index fbe8aad..2db27b8 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -60,28 +60,28 @@ public Tui(IPlayer player) Title = "_Playback", new MenuItemv2[] { - new("Seek backward", string.Empty, _player.SeekBackward, Key.N.WithAlt), - new("Seek forward", string.Empty, _player.SeekForward, Key.M.WithAlt), - new("Previous", string.Empty, SkipBackward, Key.CursorLeft.WithAlt), - new("Next", string.Empty, SkipForward, Key.CursorRight.WithAlt), + new("Seek backward", string.Empty, _player.SeekBackward, Key.N.WithCtrl), + new("Seek forward", string.Empty, _player.SeekForward, Key.M.WithCtrl), + new("Previous", string.Empty, SkipBackward, Key.CursorLeft.WithCtrl), + new("Next", string.Empty, SkipForward, Key.CursorRight.WithCtrl), } ), new MenuBarItemv2( Title = "Playlist", new MenuItemv2[] { - new("_Add to playlist", "Add track(s) to playlist", AddToPlaylist, Key.A.WithAlt), + new("_Add to playlist", "Add track(s) to playlist", AddToPlaylist, Key.A.WithCtrl), new("_Remove from playlist", "Remove selected track from playlist", RemoveFromPlaylist, - Key.R.WithAlt), - new("Load _playlist", "Load a playlist", OpenPlaylist, Key.L.WithAlt), - new("_Save playlist", "Save to playlist", SavePlaylist, Key.S.WithAlt) + Key.R.WithCtrl), + new("Load _playlist", "Load a playlist", OpenPlaylist, Key.L.WithCtrl), + new("_Save playlist", "Save to playlist", SavePlaylist, Key.S.WithCtrl) } ), new MenuBarItemv2( Title = "Settings", new MenuItemv2[] { - new("Audio device", "Select playback device", SelectAudioDevice, Key.N.WithAlt), + new("Audio device", "Select playback device", SelectAudioDevice, Key.N.WithCtrl), } ), new MenuBarItemv2( @@ -94,7 +94,7 @@ public Tui(IPlayer player) wrapMessage: false, buttons: "_Ok" ), - Key.A.WithCtrl + Key.I.WithCtrl ) } ), @@ -117,7 +117,7 @@ public Tui(IPlayer player) new Shortcut { Text = "Load playlist", - Key = Key.L.WithAlt, + Key = Key.L.WithCtrl, Action = OpenPlaylist }, new Shortcut From 86693bb07833725f7d65e04344e9c3f8044bafdf Mon Sep 17 00:00:00 2001 From: Mark-James McDougall Date: Mon, 11 Aug 2025 19:00:29 -0400 Subject: [PATCH 146/146] Change SkipBackward and SkipForward hotkeys to use shift. --- src/UI/Tui.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/UI/Tui.cs b/src/UI/Tui.cs index 2db27b8..920f776 100644 --- a/src/UI/Tui.cs +++ b/src/UI/Tui.cs @@ -62,8 +62,8 @@ public Tui(IPlayer player) { new("Seek backward", string.Empty, _player.SeekBackward, Key.N.WithCtrl), new("Seek forward", string.Empty, _player.SeekForward, Key.M.WithCtrl), - new("Previous", string.Empty, SkipBackward, Key.CursorLeft.WithCtrl), - new("Next", string.Empty, SkipForward, Key.CursorRight.WithCtrl), + new("Previous", string.Empty, SkipBackward, Key.CursorLeft.WithShift), + new("Next", string.Empty, SkipForward, Key.CursorRight.WithShift), } ), new MenuBarItemv2( @@ -81,7 +81,7 @@ public Tui(IPlayer player) Title = "Settings", new MenuItemv2[] { - new("Audio device", "Select playback device", SelectAudioDevice, Key.N.WithCtrl), + new("Audio device", "Select playback device", SelectAudioDevice, Key.D.WithCtrl), } ), new MenuBarItemv2(