All Projects → wieslawsoltes → SimpleWavSplitter

wieslawsoltes / SimpleWavSplitter

Licence: MIT license
Split multi-channel WAV files into single channel WAV files.

Programming Languages

C#
18002 projects
HTML
75241 projects
powershell
5483 projects
CSS
56736 projects
shell
77523 projects
Batchfile
5799 projects

Projects that are alternatives of or similar to SimpleWavSplitter

Avalonia
A cross platform XAML framework for .NET
Stars: ✭ 12,588 (+83820%)
Mutual labels:  multi-platform, avalonia, avaloniaui
ColorBlender
A .NET library for color matching and palette design.
Stars: ✭ 27 (+80%)
Mutual labels:  wpf, avalonia, avaloniaui
DialogHost.Avalonia
AvaloniaUI control that provides a simple way to display a dialog with information or prompt the user when information is needed
Stars: ✭ 92 (+513.33%)
Mutual labels:  multi-platform, avalonia, avaloniaui
Steamtools
🛠「Steam++」是一个开源跨平台的多功能Steam工具箱。
Stars: ✭ 4,458 (+29620%)
Mutual labels:  wpf, avalonia, avaloniaui
Egorozh.ColorPicker
🎨🎨🎨 Best of the best ColorPicker on WPF and AvaloniaUI
Stars: ✭ 39 (+160%)
Mutual labels:  wpf, avalonia, avaloniaui
IconPacks.Browser
The Browser for all available Icon packages from MahApps.Metro.IconPacks
Stars: ✭ 74 (+393.33%)
Mutual labels:  wpf, avalonia, avaloniaui
Synfonia
Cross-platform C# Audio Player made with AvaloniaUI
Stars: ✭ 153 (+920%)
Mutual labels:  avalonia, avaloniaui
CefGlue
.NET binding for The Chromium Embedded Framework (CEF)
Stars: ✭ 44 (+193.33%)
Mutual labels:  wpf, avalonia
Material.Icons.Avalonia
Avalonia control for display material icons from Material.Icons: https://github.com/SKProCH/Material.Icons
Stars: ✭ 19 (+26.67%)
Mutual labels:  avalonia, avaloniaui
Core2d
A multi-platform data driven 2D diagram editor.
Stars: ✭ 475 (+3066.67%)
Mutual labels:  multi-platform, wpf
Reactivehistory
Reactive undo/redo framework for .NET.
Stars: ✭ 82 (+446.67%)
Mutual labels:  multi-platform, wpf
Material.Avalonia
Material design in AvaloniaUI
Stars: ✭ 279 (+1760%)
Mutual labels:  avalonia, avaloniaui
xdelta3-cross-gui
A cross-platform GUI for creating xDelta3 patches, available for Windows, Linux, and Mac
Stars: ✭ 50 (+233.33%)
Mutual labels:  avalonia, avaloniaui
Xamarin.Forms.Platform.Avalonia
Xamarin Forms platform implemented with Avalonia (A multi-platform .NET UI framework)
Stars: ✭ 36 (+140%)
Mutual labels:  multi-platform, avalonia
Android-Wave-Recorder
A powerful and efficient library to record WAVE form audio files (WAV) in Android
Stars: ✭ 137 (+813.33%)
Mutual labels:  wav, wave
Citrus.Avalonia
Modern styles for Avalonia controls.
Stars: ✭ 326 (+2073.33%)
Mutual labels:  avalonia, avaloniaui
WoWDatabaseEditor
Integrated development environment (IDE), an editor for Smart Scripts (SAI/smart_scripts) for TrinityCore based servers. Featuring a 3D view built with OpenGL and custom ECS framework
Stars: ✭ 155 (+933.33%)
Mutual labels:  avalonia, avaloniaui
X-Filer-Cross-Platform
📁📁📁 X-Filer Cross-Platform - is a simple File Manager looking like popular browsers 📁📁📁
Stars: ✭ 19 (+26.67%)
Mutual labels:  avalonia, avaloniaui
ReactiveValidation
A small validation library for WPF and Avalonia which uses a fluent interface and allows display messages near controls in GUI with MVVM
Stars: ✭ 50 (+233.33%)
Mutual labels:  wpf, avalonia
SvgToXaml
Svg to xaml conveter.
Stars: ✭ 45 (+200%)
Mutual labels:  avalonia, avaloniaui

SimpleWavSplitter

Gitter

Build Status CI

NuGet NuGet MyGet

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

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
  • Alternative nightly build feed https://pkgs.dev.azure.com/wieslawsoltes/GitHub/_packaging/Nightly/nuget/v3/index.json
  • Update your package using WavFile feed

You can install the package like this:

Install-Package WavFile -Pre

Resources

Using SimpleWavSplitter

Please check first the sample apps and the helper class.

  • SimpleWavSplitter.Console
  • 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].