Newer
Older
EARS-LINUX / programdeltafixer / WavePlayer.cs
using System;
using System.Diagnostics;
using System.IO;

public static class WavePlayer
{
    private static Process _current;

    private static bool IsUnix
    {
        get
        {
            int p = (int)Environment.OSVersion.Platform;
            return p == 4 || p == 6 || p == 128;
        }
    }

    public static void Play(string absolutePath)
    {
        Stop();

        if (!IsUnix)
        {
            try
            {
                var sp = new System.Media.SoundPlayer(absolutePath);
                sp.Play();
            }
            catch (Exception ex) { Console.WriteLine("Playback failed: " + ex.Message); }
            return;
        }

        foreach (string player in new[] { "paplay", "aplay" })
        {
            try
            {
                var psi = new ProcessStartInfo(player, "\"" + absolutePath + "\"")
                {
                    UseShellExecute = false,
                    RedirectStandardError = true
                };
                _current = Process.Start(psi);
                return;
            }
            catch { /* not installed, try the next one */ }
        }

        Console.WriteLine("No audio player found — install pulseaudio-utils or alsa-utils");
    }

    public static void Stop()
    {
        try
        {
            if (_current != null && !_current.HasExited) _current.Kill();
        }
        catch { }
        _current = null;
    }
}