Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
148 commits
Select commit Hold shift + click to select a range
467616a
Upgrade Terminal.Gui package from 0.90.3 --> 1.18.0
markjamesm Mar 18, 2025
2436c43
Cleanup TUI class code.
markjamesm Mar 18, 2025
ce27520
Initial commit of TUI using Terminal.Gui 2.0
markjamesm Mar 19, 2025
93995ff
Add using statement to Tui.
markjamesm Mar 19, 2025
9a4e849
Working on implementing playback buttons.
markjamesm Mar 19, 2025
eb1209c
Added playback control buttons.
markjamesm Mar 20, 2025
dcc9737
Reactor player logic to map player state to public property PlayerStatus
markjamesm Mar 20, 2025
a433a6d
Remove copyright message as license is included in repository.
markjamesm Mar 20, 2025
e18cacb
Add OpenStream dialog.
markjamesm Mar 20, 2025
c4eae03
Add null checks for button.
markjamesm Mar 20, 2025
55a4a47
Add CanFocus = true property to buttons.
markjamesm Mar 20, 2025
5a9f2b3
Add playback controls region.
markjamesm Mar 20, 2025
e1405d6
Add progress bar & now playing label.
markjamesm Mar 21, 2025
36ba8a7
Fix progressbar & now playing design.
markjamesm Mar 21, 2025
b5cf501
Working on music library view.
markjamesm Mar 21, 2025
0c8abc1
Added initial support for library view window.
markjamesm Mar 23, 2025
a266288
Add method for playback when clicking a playlist item.
markjamesm Mar 23, 2025
26653d3
Add check to stop player if a new song is selected.
markjamesm Mar 23, 2025
2b29f01
Update atl core library from 3.13.0 => 6.19.0
markjamesm Mar 23, 2025
6446e55
Updare Terminal.Gui from 2.0.0-prealpha.1893 => 2.0.0-prealpha.1895
markjamesm Mar 23, 2025
eac052d
Add about dialog.
markjamesm Mar 24, 2025
2a733f2
Remove unnecessary using directive.
markjamesm Mar 24, 2025
0358897
Add status bar.
markjamesm Mar 24, 2025
eb03b62
Delete old UI class.
markjamesm Mar 24, 2025
8636ee0
Add TrackHelpers.cs class.
markjamesm Mar 24, 2025
77f03ca
Remove unused comment from Program.cs
markjamesm Mar 24, 2025
97b6152
Update System.Text.Json to 9.03
markjamesm Mar 24, 2025
f36a941
Add EFCore track information.
markjamesm Mar 24, 2025
f16f18b
Check for string.Empty instead of string.null
markjamesm Mar 24, 2025
388b9b1
Add packages necessary for EFCore.
markjamesm Mar 24, 2025
41f99a6
Specify correct using statement.
markjamesm Mar 24, 2025
1055ffa
Fix spacing issue in property name.
markjamesm Mar 24, 2025
2ab2090
Refactor RunMainLoop() method to add time played information.
markjamesm Mar 25, 2025
746ab1e
Update project to .NET 9
markjamesm Mar 29, 2025
99869a0
Merge branch 'musicsharp-v2' into ef-core-library
markjamesm Mar 29, 2025
61a93bc
Create DB schema.
markjamesm Mar 30, 2025
1f25549
Add initial efcore migration
markjamesm Mar 30, 2025
5b56e5f
Add new class for library functionality.
markjamesm Mar 30, 2025
86b7dc8
Refactor DB classes.
markjamesm Mar 30, 2025
16359ee
Delete unused Library.cs class.
markjamesm Mar 30, 2025
2e72940
Add support for FLAC and WAV files to file open dialogs.
markjamesm Mar 30, 2025
d86c99a
Remove references to EFCore as I created a new branch 'efcore-library…
markjamesm Mar 30, 2025
85dd029
Add suport for saving playlist files
markjamesm Mar 30, 2025
49c9f86
Formatting fixes
markjamesm Mar 30, 2025
fec9f84
Update SoundFlow library 1.0.3 --> 1.1.1
markjamesm Jul 14, 2025
49f7b00
Remove Load_NullPlaylist() test for now.
markjamesm Jul 14, 2025
2a7ac56
Update Terminal.Gui from 2.0.0-prealpha.1895 --> 2.0.0-develop.4525
markjamesm Jul 14, 2025
beb330b
Add new using statements for latest Terminal.Gui beta.
markjamesm Jul 14, 2025
1312677
Resolve newly introduced TGUI001 (https://github.com/tznind/gui.cs/bl…
markjamesm Jul 14, 2025
77b2afe
Update private fields to use readonly.
markjamesm Jul 14, 2025
88caa00
Update packages
markjamesm Jul 14, 2025
3152ba3
Downgrade Terminal.Gui from nightly to latest stable alpha
markjamesm Jul 14, 2025
02ec484
Add comments for IsStreamLoaded.
markjamesm Jul 15, 2025
05b564d
Add idea/ folder to gitignore
markjamesm Jul 15, 2025
2088ef4
Remove .idea/ folder
markjamesm Jul 15, 2025
8d01dff
Change playbackControls and nowPlaying from Window to View type.
markjamesm Jul 15, 2025
8b0a5dd
Adjust formatting
markjamesm Jul 15, 2025
bad1511
Simplify player state logic by Refactoring PlayerState property to S…
markjamesm Jul 15, 2025
02c3399
Remove LastFileOpened property as it is no longer used.
markjamesm Jul 15, 2025
e46048a
Remove unnecessary using statements.
markjamesm Jul 15, 2025
f097223
Replace MenuBar with MenuBarV2.
markjamesm Jul 15, 2025
81e1b6a
Implement null check in library view before calling PlayHandler().
markjamesm Jul 15, 2025
2d11ce2
Implement check to see if user has entered a streamUrl before playing.
markjamesm Jul 15, 2025
2e75922
Change location of _mainLoopTimeout
markjamesm Jul 15, 2025
eca252f
Rename _playlistTracks field to the more appropriate _musicLibrary.
markjamesm Jul 15, 2025
ac7e560
Nav menu code formatting fix.
markjamesm Jul 15, 2025
b4048b8
Rename library to playlist.
markjamesm Jul 15, 2025
680ee15
Implement basic add file to playlist functionality.
markjamesm Jul 16, 2025
ad99d9d
Reset TimePlayedLabel and progressbar when stop button is clicked.
markjamesm Jul 16, 2025
723ba7c
Update playlist height.
markjamesm Jul 28, 2025
6ba4678
Formatting fix
markjamesm Jul 28, 2025
8aa290d
Update GetTrackData() method to return "Unknown" if one of the track …
markjamesm Jul 28, 2025
a351daf
Refactor Playlist.cs into FileData directory.
markjamesm Jul 28, 2025
697d73f
Align TimePlayed Label to bottom right of view.
markjamesm Jul 29, 2025
e16d1d4
Refactor about menu dialog.
markjamesm Jul 29, 2025
ff7e5ba
- AutoShow playlistView scrollbars
markjamesm Jul 29, 2025
aa22652
Merge branch 'main' into musicsharp-v2
markjamesm Jul 29, 2025
cc2f8f5
Remove redundant call to _player.Play().
markjamesm Jul 29, 2025
cd761a2
Update SoundFlow from 1.1.1 --> 1.2.0
markjamesm Jul 29, 2025
2302cad
Major refactor to align with SoundFlow 1.2.0 changes
markjamesm Jul 29, 2025
b538a06
Fix Now playing label so currently playing track wraps.
markjamesm Jul 29, 2025
4c1f25e
Add "Add file to playlist" shortcut
markjamesm Jul 29, 2025
9990eeb
Display empty now playing string when player is stopped.
markjamesm Jul 30, 2025
4dcc24e
Add PublishSingleFile, PublishTrimmed, and TrimmerRootAssemblies.
markjamesm Jul 30, 2025
34620a8
Remove stylecop from project.
markjamesm Jul 30, 2025
5956757
Remove references to unused resource designer.
markjamesm Jul 30, 2025
131c4d0
Add MusicSharp assembly to TrimmerRootAssembly as it references the o…
markjamesm Jul 30, 2025
4905cc6
Remove reflection from GetISoundDataProviderType property and use swi…
markjamesm Jul 30, 2025
b618df9
Remove outdated tests.
markjamesm Jul 30, 2025
6162660
Remove unused project icon.
markjamesm Jul 30, 2025
78cb0b1
Rename _streamProvider to _streamDataProvider().
markjamesm Jul 30, 2025
12062bc
Minor formatting fix.
markjamesm Jul 30, 2025
b0df93a
Add UnconditionalSuppressMessage for AssemblyLoadTrimming because App…
markjamesm Jul 30, 2025
59f97d2
Remove SoundFlow from TrimmerRootAssembly. Can safely ignore as this …
markjamesm Jul 30, 2025
09a8db9
Remove unnecessary comments.
markjamesm Jul 30, 2025
a63fe23
Remove IStreamConverter.cs and SoundFlowPlayerStreamConverter.cs as t…
markjamesm Jul 30, 2025
3123386
Remove unnecessary Trim warning suppression.
markjamesm Jul 30, 2025
00f5ff6
Remove unnecessary using directive.
markjamesm Jul 30, 2025
92e3753
Remove null forgiving operator from nowPlayingView.
markjamesm Jul 30, 2025
4f641f1
Fix some null checks in SoundFlowPlayer.cs
markjamesm Jul 30, 2025
97046f6
Remove IsStreamLoaded and GetISoundDataProviderType properties.
markjamesm Jul 30, 2025
fc2d2d6
Remove GetISoundDataProviderType and implement is check on _streamDat…
markjamesm Jul 30, 2025
7d6b996
Fix comment
markjamesm Jul 30, 2025
91fb35d
Remove "Add file to playlist" from shortcuts menu.
markjamesm Jul 30, 2025
204cbdd
Remove redundant string interpolation
markjamesm Jul 30, 2025
efac5a0
_mainLoopTimeout should return false when player is not playing.
markjamesm Jul 30, 2025
e9921b7
Remove redundant NowPlaying() method and set _nowPlayingLabel text di…
markjamesm Jul 30, 2025
b047530
Remove test references from build.yml until new tests are written
markjamesm Jul 30, 2025
280b2e0
Remove unsued Resources.Designer.cs
markjamesm Jul 30, 2025
15fcc53
Major refactor of the Playlist view to show artist, track, and album …
markjamesm Jul 31, 2025
706250d
Properly format playlist columns.
markjamesm Jul 31, 2025
582fba3
Add logic to programmatically show play or pause text on _playPauseBu…
markjamesm Jul 31, 2025
6ebba83
Add remove from playlist option.
markjamesm Jul 31, 2025
04e5afe
Group methods in Tui.cs by logical categories.
markjamesm Jul 31, 2025
d9e5a45
Make RenderUstr() static.
markjamesm Jul 31, 2025
c1cf304
Change TitleColumnWidth to 40
markjamesm Jul 31, 2025
b73c672
- Add EFileType as AudioFile class property.
markjamesm Aug 1, 2025
d96e680
Remove unused comment param.
markjamesm Aug 2, 2025
588a475
- Fix play/pause functionality.
markjamesm Aug 3, 2025
4bbdc8e
Convert _loadedPlaylist to nullable.
markjamesm Aug 3, 2025
0ad4765
Refactor Helpers folder to Playlist.
markjamesm Aug 3, 2025
9c7b769
Add screenshot
markjamesm Aug 3, 2025
2a6048c
Remove unused using directive.
markjamesm Aug 3, 2025
83954ff
Add _volume field to track changes in audio volume across tracks.
markjamesm Aug 3, 2025
ab54d4a
Change colors of selected row to white and blue.
markjamesm Aug 3, 2025
bebd41e
Update screenshot
markjamesm Aug 3, 2025
bc51d3d
Fix bug in playPauseButton.
markjamesm Aug 3, 2025
be7d7e1
Fix bug when pausing tracks in playlist.
markjamesm Aug 3, 2025
dfc25b0
Move stream's _nowPlayingLabel into PlayHandler() method.
markjamesm Aug 3, 2025
f5a31cd
Add functionality to autoplay next track in playlist.
markjamesm Aug 4, 2025
7c27b9f
Change Playback buttons to symbols.
markjamesm Aug 5, 2025
71f7d90
Replace volume buttons with volume slider.
markjamesm Aug 5, 2025
c9ad8cf
Set volume slider to be in the middle.
markjamesm Aug 6, 2025
ab4cb6f
Change progress bar style to continuous.
markjamesm Aug 6, 2025
9e4bb63
Update hotkeys
markjamesm Aug 6, 2025
e23fce0
Add skip track functionality
markjamesm Aug 6, 2025
fe7069e
Working on playback device selection functionality.
markjamesm Aug 6, 2025
5b28221
Fix device switching so the AudioPlaybackDevice is properly disposed of.
markjamesm Aug 6, 2025
d5e60f5
Change Audio to Settings menu.
markjamesm Aug 6, 2025
64af7c0
Add select audio device dialog
markjamesm Aug 7, 2025
0c8831b
Move loadedPlaylist.SelectedItem when skipping tracks or autoplaying …
markjamesm Aug 11, 2025
455ec31
Update screenshot
markjamesm Aug 11, 2025
8403dc6
Remove screenshot padding.
markjamesm Aug 11, 2025
4c02b61
Remove raw parameter from screenshot.
markjamesm Aug 11, 2025
b9c1488
Link to raw image file in README.md
markjamesm Aug 11, 2025
fbce399
Update README.md installation instructions.
markjamesm Aug 11, 2025
ff4795f
Switch hotkeys from Alt to Ctrl to support Mac.
markjamesm Aug 11, 2025
86693bb
Change SkipBackward and SkipForward hotkeys to use shift.
markjamesm Aug 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -364,3 +364,5 @@ FodyWeavers.xsd

# Visual Studio Code
.vscode

.idea/
13 changes: 0 additions & 13 deletions .idea/.idea.MusicSharp/.idea/.gitignore

This file was deleted.

4 changes: 0 additions & 4 deletions .idea/.idea.MusicSharp/.idea/encodings.xml

This file was deleted.

10 changes: 0 additions & 10 deletions .idea/.idea.MusicSharp/.idea/indexLayout.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/.idea.MusicSharp/.idea/vcs.xml

This file was deleted.

6 changes: 0 additions & 6 deletions MusicSharp.sln
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
23 changes: 0 additions & 23 deletions MusicSharpTests/MusicSharpTests.csproj

This file was deleted.

13 changes: 0 additions & 13 deletions MusicSharpTests/PlaylistLoaderTests.cs

This file was deleted.

14 changes: 0 additions & 14 deletions MusicSharpTests/SoundFlowPlayerTests.cs

This file was deleted.

1 change: 0 additions & 1 deletion MusicSharpTests/Usings.cs

This file was deleted.

63 changes: 0 additions & 63 deletions Properties/Resources.Designer.cs

This file was deleted.

101 changes: 0 additions & 101 deletions Properties/Resources.resx

This file was deleted.

32 changes: 17 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,33 @@
# 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.
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.

## Screenshot
### Linux & Mac

<img src="https://user-images.githubusercontent.com/20845425/99861949-06763200-2b66-11eb-9d5a-9bf2ea5151ee.png" alt="Screenshot of MusicSharp">
Execute MusicSharp from your preferred terminal:

MusicSharp makes use of the [SoundFlow](https://github.com/LSXPrime/SoundFlow) and [Terminal.Gui](https://github.com/migueldeicaza/gui.cs) libraries.
```bash
./MusicSharp
```

## Want to Contribute?

Expand Down
Binary file added screenshots/musicsharp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading