Skip to content

Commit b67dc93

Browse files
committed
Add SoundFlowPlayerStreamConverter.cs class to convert audio file paths into stream.
1 parent 0c7f797 commit b67dc93

File tree

6 files changed

+26
-20
lines changed

6 files changed

+26
-20
lines changed

src/AudioPlayer/IPlayer.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ public interface IPlayer: IDisposable
2626
/// <summary>
2727
/// Method to play audio.
2828
/// </summary>
29-
/// <param name="path">The filepath of the audio file to play.</param>
30-
/// /// <param name="stream">The audio stream.</param>
29+
/// <param name="stream">The audio stream.</param>
3130
void Play(Stream stream);
3231

3332
/// <summary>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using System.IO;
2+
using System.Threading.Tasks;
3+
4+
namespace MusicSharp.AudioPlayer;
5+
6+
public interface IStreamConverter
7+
{
8+
public Stream ConvertFileToStream(string path);
9+
10+
public Task<Stream> ConvertUrlToStream(string url);
11+
}

src/AudioPlayer/SoundFlowPlayer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public void DecreaseVolume()
7878

7979
public void SeekForward()
8080
{
81-
_player.Seek(Math.Clamp(_player.Time + 5f, 0f, _player.Duration - 1));
81+
_player.Seek(Math.Clamp(_player.Time + 5f, 0f, _player.Duration - 0.1f));
8282
}
8383

8484
public void SeekBackwards()

src/Helpers/Converters.cs renamed to src/AudioPlayer/SoundFlowPlayerStreamConverter.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22
using System.Net.Http;
33
using System.Threading.Tasks;
44

5-
namespace MusicSharp.Helpers;
5+
namespace MusicSharp.AudioPlayer;
66

7-
public class Converters
7+
public class SoundFlowPlayerStreamConverter : IStreamConverter
88
{
99
private readonly HttpClient _httpClient;
1010

11-
public Converters(HttpClient httpClient)
11+
public SoundFlowPlayerStreamConverter(HttpClient httpClient)
1212
{
1313
_httpClient = httpClient;
1414
}
1515

16-
public static Stream ConvertFileToStream(string path)
16+
public Stream ConvertFileToStream(string path)
1717
{
1818
return File.OpenRead(path);
1919
}

src/Program.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.Net.Http;
66
using MusicSharp.UI;
77
using MusicSharp.AudioPlayer;
8-
using MusicSharp.Helpers;
98
using SoundFlow.Backends.MiniAudio;
109
using SoundFlow.Enums;
1110

@@ -23,11 +22,9 @@ public static void Main()
2322
{
2423
var soundEngine = new MiniAudioEngine(44100, Capability.Playback);
2524
using IPlayer player = new SoundFlowPlayer(soundEngine);
26-
2725
using var httpClient = new HttpClient();
28-
var converters = new Converters(httpClient);
29-
30-
var ui = new Tui(player, converters);
26+
IStreamConverter streamConverter = new SoundFlowPlayerStreamConverter(httpClient);
27+
var ui = new Tui(player, streamConverter);
3128

3229
ui.Start();
3330
}

src/UI/Tui.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
using MusicSharp.Enums;
99
using MusicSharp.PlaylistHandlers;
1010
using MusicSharp.AudioPlayer;
11-
using MusicSharp.Helpers;
1211
using Terminal.Gui;
1312

1413
namespace MusicSharp.UI;
@@ -35,17 +34,17 @@ public class Tui
3534

3635
private List<string> _playlist = new List<string>();
3736

38-
private readonly Converters _converters;
37+
private readonly IStreamConverter _streamConverter;
3938

4039
/// <summary>
4140
/// Initializes a new instance of the <see cref="Tui"/> class.
4241
/// </summary>
4342
/// <param name="player">The player to be injected.</param>
44-
/// <param name="converters">Helper class to convert files and urls to Stream type.</param>
45-
public Tui(IPlayer player, Converters converters)
43+
/// <param name="streamConverter">Helper class to convert files and urls to Stream type.</param>
44+
public Tui(IPlayer player, IStreamConverter streamConverter)
4645
{
4746
_player = player;
48-
_converters = converters;
47+
_streamConverter = streamConverter;
4948
}
5049

5150
/// <summary>
@@ -180,7 +179,7 @@ public void Start()
180179
try
181180
{
182181
_player.LastFileOpened = a.Value.ToString();
183-
_player.Play(Converters.ConvertFileToStream(_player.LastFileOpened));
182+
_player.Play(_streamConverter.ConvertFileToStream(a.Value.ToString()));
184183
NowPlaying(_player.LastFileOpened);
185184
UpdateProgressBar();
186185
}
@@ -254,7 +253,7 @@ private void OpenFile()
254253
try
255254
{
256255
_player.LastFileOpened = d.FilePath.ToString();
257-
var stream = Converters.ConvertFileToStream(d.FilePath.ToString());
256+
var stream = _streamConverter.ConvertFileToStream(d.FilePath.ToString());
258257
_player.Play(stream);
259258
NowPlaying(_player.LastFileOpened);
260259
AudioProgressBar.Fraction = 0F;
@@ -293,7 +292,7 @@ private void OpenStream()
293292
{
294293
try
295294
{
296-
var stream = await _converters.ConvertUrlToStream(streamUrl.Text.ToString());
295+
var stream = await _streamConverter.ConvertUrlToStream(streamUrl.Text.ToString());
297296
_player.Play(stream);
298297
}
299298
catch (Exception ex)

0 commit comments

Comments
 (0)