Windows 7 and above (windows 10 recommended, use windows 11 if you want the ability to enable the Mica effect)
Linux distributions (the ones dotnet and avalonia run on, with libasound)
if you know how to implement a better linux IWavePlayer for naudio please consider improving SilverAudioPlayer.Unix.PlayProviderExtension.Naudio.ASound
as the current implementation handles playing via conversion to WAV and writing the WAV file in its entirety to libasound the moment it can
Warning The current as is implementation of
SilverAudioPlayer.Unix.PlayProviderExtension.Naudio.ASound
may lead to hearing loss, please consider lowering your system’s output volume before extensive testing on your part. YOU HAVE BEEN WARNED
You could grab the latest release from github releases and write it down in a directory that is writable by the program (UI/Plugin settings are stored where the program is stored right now, maybe next release that will be changed)
You could also install it via the silvercraft scoop bucket by using:
scoop bucket add silvercraft https://github.com/thesilvercraft/SilverCraftBucket
scoop install silveraudioplayer
Or if you’re feeling daring grab the sources from github by:
git clone https://github.com/thesilvercraft/SilverAudioPlayer.git
And compile it yourself (that’s why open source is good)
dotnet build
Before compiling it yourself consider editing SilverAudioPlayer.Avalonia.csproj
In visual studio you can comment out features you dont want by selecting their <DefineConstraints>
line and using CTRL+K+C
Modular means different things for different people but in this case modular would be defined as having code devided up into multiple optional components all housing important code but as previously mentioned are fully optional.
You don’t want the awful Jellyfin integration code (I’m critising my code, jellyfin for the most part is awsome)? Remove its module
You don’t want to be able to play midis? Remove the midi module
You don’t want to be able to play flacs? Remove the flac decoder
You don’t want to be able to do anything with the player? Remove the player
I introduce breaking changes with each update, since v4 I have been attempting to follow some sort of semver.
I make no promises.
To sum it up where a.b.c.d are the version digits, if a is changed something major API breaking has happened you will have to modify your code to a large extent,
if b is changed something might break your code but it probably won’t update regardless,
if c is changed you probably don’t have to worry at all,
changes in d shouldn’t be noticable at all.
Follow the plugin guide (and let me know if any issues arise), for now attempt installing SilverAudioPlayer.Shared to a class library containing a class that implements one of:
IPlayProvider
for implementing new players (most of the time you should just implement INaudioWaveStreamWrapper
if a new player isn’t needed to play that file)IMetadataProvider
for implementing new metadata providers (the things that read metadata from files/streams)IMusicStatusInterface
for implementing things that track/control playback (eg. discord rich presence/SMTC/Cd Art Display)IWakeLockProvider
for implementing ways to let the OS know NOT to go to sleepIPlayStreamProvider
for implementing ways of letting the user add new tracks from an external source (eg. internet radio streams, media servers (jellyfin, dlna, etc.))[Export(typeof([YOURMODULEINTERFACETYPE]))]
Check out the issues