C# PowerShell Shell
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
build
docs
src
wav
.editorconfig
.gitattributes
.gitignore
.travis.yml Update .travis.yml Oct 31, 2017
LICENSE.TXT
NuGet.Config
README.md
Reference.txt
SimpleWavSplitter.sln
_config.yml
appveyor.yml
build.cake
build.ps1
build.sh
circle.yml

README.md

SimpleWavSplitter

Gitter

Build status Build Status CircleCI

NuGet MyGet

CodeFactor

Split multi-channel WAV files into single channel WAV files.

Download

Platforn Type Version Download
Windows (GUI .NET4.5/WPF) Portable 0.3.4 SimpleWavSplitter.Wpf-Release-0.3.4.zip
Windows/Linux/OSX (GUI mono/Avalonia) Portable 0.3.4 SimpleWavSplitter.Avalonia-Release-0.3.4.zip
Windows/Linux/OSX (Console mono/WPF) Portable 0.3.4 SimpleWavSplitter.Console-Release-0.3.4.zip

Mirrors

Softpedia Download Mirror

NuGet

SimpleWavSplitter is delivered as a NuGet package.

You can find the package on NuGet or by using nightly build feed:

  • Add https://www.myget.org/F/simplewavsplitter-nightly/api/v2 to your package sources
  • Update your package using WavFile feed

You can install the package like this:

Install-Package WavFile -Pre

Package Dependencies

Does not require any external dependencies.

Package Sources

Resources

Using SimpleWavSplitter

Please check first the sample apps and the helper class.

  • SimpleWavSplitter.Console
  • SimpleWavSplitter.Wpf
  • SimpleWavSplitter.Avalonia

Split Wav Files

using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading;
using WavFile;
using static System.Console;
using static System.Math;

namespace SimpleWavSplitter.Console
{
    class Program
    {
        static void Main(string[] args)
        {
            string fileName = string.Empty;
            string outputPath = string.Empty;
            if (args.Count() == 1)
            {
                fileName = args[0];
                outputPath = fileName.Remove(fileName.Length - Path.GetFileName(fileName).Length);
            }
            else if (args.Count() == 2)
            {
                fileName = args[0];
                outputPath = args[1];
            }
            else
            {
                var v = Assembly.GetExecutingAssembly().GetName().Version;
                WriteLine(
                    string.Format(
                        "SimpleWavSplitterConsole v{0}.{1}.{2}", 
                        v.Major, v.Minor, v.Build));
                Write(Environment.NewLine);
                WriteLine("Usage:");
                WriteLine("SimpleWavSplitter.Console <file.wav> [<OutputPath>]");
                Environment.Exit(-1);
            }

            try
            {
                long bytesTotal = 0;
                var splitter = new WavFileSplitter(
                    value => Write(string.Format("\rProgress: {0:0.0}%", value)));
                var sw = Stopwatch.StartNew();
                bytesTotal = splitter.SplitWavFile(fileName, outputPath, CancellationToken.None);
                sw.Stop();
                Write(Environment.NewLine);
                WriteLine(
                    string.Format(
                        "Data bytes processed: {0} ({1} MB)", 
                        bytesTotal, Round((double)bytesTotal / (1024 * 1024), 1)));
                WriteLine(string.Format("Elapsed time: {0}", sw.Elapsed));
                Environment.Exit(0);
            }
            catch (Exception ex)
            {
                WriteLine(ex.Message);
                WriteLine(ex.StackTrace);
                Environment.Exit(-1);
            }
        }
    }
}

Get Wav Header

using System.IO;
using static System.Console;

string fileName = "test.wav";

using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
    var h = WavFileInfo.ReadFileHeader(fs);
    Write(
        string.Format(
            "FileName:\t\t{0}\nFileSize:\t\t{1}\n{2}", 
            Path.GetFileName(fileName), fs.Length, h));
}

License

SimpleWavSplitter is licensed under the MIT license.