Program to check if stereo wav files have identical channels (faux-stereo) and convert them to mono.

Overview

zrtstr

Build Status Build status License

Command line application for checking WAV-files for identical channels, detecting faux-stereo files generated by some audio-editing software and DAWs (such as old versions of Cubase). Outputs a true-mono WAV file on detection of faux-stereo. Takes left channel of the input file, writes in the same location with -MONO suffix in file name.

Developed using these wonderful crates:

Hound, Clap, pbr

Usage

Basically, provide zrtstr with input file as an argument, or run it from a directory full of target WAV files.

Full help available on --help switch.

Latest Windows binaries are luckily provided in Releases via Appveyor.

How does it work?

Zrtstr reads interleaved channel samples from a target stereo file one by one and compares left and right samples. If the difference is present (or higher than the threshold given in --dither mode) than file considered true-stereo and program tries to write a mono copy.

How to build

Developed on Rust Nightly, but should build with stable or beta as well.

To build the code, run:

$ cargo build --release

and the executable will be in target/release/zrtstr.

TODO

Here are the current problems and planned features:

  • Float support: Add writing support for IEEE Float files (upstream-dependent)
  • Add automatic tests

Contributing

This is an enthusiast project, so any help and/or critique will be much appreciated.

Feel free to file a bug report or feature request via Issues.

License

zrtstr licensed under GNU General Public License version 2 or later;

See LICENSE file for full details.

You might also like...
A library and application for lossless, format-preserving, two-pass optimization and repair of Vorbis data, reducing its size without altering any audio information.
A library and application for lossless, format-preserving, two-pass optimization and repair of Vorbis data, reducing its size without altering any audio information.

OptiVorbis A library and application for lossless, format-preserving, two-pass optimization and repair of Vorbis data, reducing its size without alter

Idiomatic Rust bindings for OpenAL 1.1 and extensions (including EFX).

alto alto provides idiomatic Rust bindings for OpenAL 1.1 and extensions (including EFX). WARNING Because Alto interacts with global C state via dynam

High-level PortMidi bindings and wrappers for Rust

portmidi-rs High-level PortMidi bindings for Rust. PortMidi website: http://portmedia.sourceforge.net/portmidi/ Installation Add this to your Cargo.to

PortAudio bindings and wrappers for Rust.

rust-portaudio PortAudio bindings and wrappers for Rust. PortAudio is a free, cross-platform, open-source, audio I/O library. rust-portaudio is still

A Rust environment for sound synthesis and algorithmic composition.

Sorceress A Rust environment for sound synthesis and algorithmic composition, powered by SuperCollider. Overview Sorceress is a Rust crate that provid

Implements the free and open audio codec Opus in Rust.

opus-native Overview Implements the free and open audio codec Opus in Rust. Status This crate is under heavy development. Most functionality is not wo

An open-source and fully-featured Digital Audio Workstation, made by musicians, for musicians
An open-source and fully-featured Digital Audio Workstation, made by musicians, for musicians

Meadowlark An open-source and fully-featured Digital Audio Workstation, made by musicians, for musicians. *Current design mockup, not a functioning pr

A next-generation music player and manager

ouverture A next-generation music player and manager Very much at Work-In-Planning stage now Planned features GUI (localizable) Backend (something lik

Midnote is a terminal application that reads a MIDI file and displays you its notes bar-by-bar, while playing it.

MIDNOTE Midnote is a terminal application that reads a MIDI file and displays you its notes bar-by-bar, while playing it. Goals As a blind musician my

Comments
  • Dev

    Dev

    v0.1.2: feat: Support reading IEEE Float files fix: Showing errors when processing multiple files refactor: Separate config module refactor: Abstracting sample copying logic to macros refactor: Clippy warnings fix

    opened by indiscipline 0
  • Compilation fails because of an outdated version of pbr

    Compilation fails because of an outdated version of pbr

    PBR fails to compile when building zrtstr due to this error:

    error[E0283]: type annotations required: cannot resolve `std::string::String: std::convert::AsRef<_>`
       --> /Users/basta/.cargo/git/checkouts/pb-06f1c94bfc11587f/a1bf8ce/src/pb.rs:334:68
        |
    334 |                             base = base + repeat!(self.bar_current.as_ref(), curr_count - 1) +
        |                                           -------------------------^^^^^^------------------- in this macro invocation
    
    error: aborting due to previous error
    

    Upgrading PBR to the latest version fixes the problem entirely. I don't know Rust well enough to contribute a proper fix, but fiddling with the PBR version and regenerating the Cargo.lock file made the compilation process succeed without any problems, and the tool works as expected.

    opened by mattbasta 0
Releases(0.1.2)
Owner
Kirill
Kirill
A wav encoding and decoding library in Rust

Hound A wav encoding and decoding library in Rust. Hound can read and write the WAVE audio format, an ubiquitous format for raw, uncompressed audio. T

Ruud van Asseldonk 345 Dec 27, 2022
MIDI-controlled stereo-preserving granular-synthesizer LV2 plugin

Stereog "Stereog" rhymes with "hairy dog." Stereog is a MIDI-controlled stereo-preserving granular synthesizer LV2 plugin. It is experimental software

Ed Cashin 6 Jun 3, 2022
A small program that converts midi files to RPE (Re: Phigros Edit) Charts

Midi to RPE(Re: Phigros Edit) chart converter $ mid2json --help Usage: mid2json [OPTIONS] <MIDI_PATH> Arguments: <MIDI_PATH> Name of the input fil

液氦 4 Jun 8, 2023
A CLI and library to convert data to sound, and vice versa (dependency-free)

Data to sound A simple crate to convert data to sound, and sound to data. The sound file format is wave (.wav). You can use it as a library or as a co

Awiteb 8 Feb 28, 2023
A small program to feed the audio from your QRP-Labs QDX digital transceiver through to your computer's speakers

A small program to feed the audio from your QRP-Labs QDX digital transceiver through to your computer's speakers. Also gives you a small user interface in which you can see a signal-strength meter, control the output volume coming from your speakers, and to tune the QDX to a particular frequency (receive SSB and other signals!).

Matt Gumbley 3 Jul 24, 2023
Encrypt and decrypt files by playing melodies on your MIDI keyboard.

midicrypt Encrypt and decrypt files by playing melodies on your MIDI keyboard. Written in Rust. ❯ ./midicrypt -h midicrypt 0.1.0 NINNiT Encrypts and D

null 2 Jun 24, 2022
Build custom songs for Pokémon Mystery Dungeon: Explorers of Sky from Soundfonts and MIDI files

skysongbuilder A tool to build custom songs for Pokémon Mystery Dungeon: Explorers of Sky from Soundfonts and MIDI files Features: Optimizations down

Adakite 3 Sep 23, 2023
envelope - a command line utility and tool to help you manage your .env files

envelope envelope is a command line utility and tool to help you manage your .env files. How it works envelope is basically a command line utility tha

Mattia Righetti 6 Oct 14, 2023
Simple personal server to serve audiofiles files from folders.

Simple personal server to serve audio files from directories. Intended primarily for audio books, but anything with decent directories structure will do. Focus here is on simplicity and minimalistic design.

Ivan Zderadicka 571 Dec 29, 2022
Tools for working with MIDI files - written by All the Music LLC for musicians.

Tools for Generating and Working with MIDI Files NOTICE: This repo is under construction and is not ready for use. Once it is ready, and the other rep

null 9 Nov 17, 2022