MusicSharp
MusicSharp copied to clipboard
MusicSharp is a lightweight TUI music player written in C#.
MusicSharp currently isn't cross-platform, but the player class is loosely coupled to the cross-platform GUI by using Dependency Injection (DI). Currently, the GUI class injects the [Winplayer class](https://github.com/markjamesm/MusicSharp/blob/main/src/model/WinPlayer.cs) through constructor...
[Tui.cs ](https://github.com/markjamesm/MusicSharp/blob/main/src/view/Tui.cs) houses MusicSharp's TUI components, and its getting fairly long as the UI complexity increases. A good idea would be to split various methods (such as NowPlaying, Play, etc)...
- Implement a playlist save and load feature. - Display the list of songs in the playlist in the GUI
Currently, there is little to no error handling present. It is a good idea to present the user the errors the application generates. I think it can be done using...
Terminal.Gui supports different themes which can be chosen by a user while the application is running. It would be nice to have a menu item which allows users to switch...
Currently, MusicSharp does not support pasting stream URLs into the TextField that loads streams, and so users must manually type out the stream URL (which can get cumbersome). This issue...
Tests need to be written for certain methods, namely those in [Winplayer.cs](https://github.com/markjamesm/MusicSharp/blob/main/src/model/WinPlayer.cs). I've already written one test for the Play() method, but I need to write more for the other...
When saving a playlist, the player crashes with an error. Despite this, an .M3U file is created with the saved songs and can be loaded and used upon MusicSharp's relaunch.
Currently, the player crashes whenever a file is loaded during or after a stream is played. **Steps to Replicate** - Open an MP3 stream (you can use this [Soma.fm stream](http://ice6.somafm.com/sonicuniverse-128-mp3)...
After playing audio (either a file or web stream) for approximately 22 hours, MusicSharp will crash due to unmanaged heap corruption. The error originates in the [SoundFlow](https://github.com/LSXPrime/SoundFlow/tree/master) library used for...