From ca1d5eb71479d2d368ec8c655bd2754a6143a2e6 Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Fri, 1 Jan 2021 22:36:08 -0800 Subject: [PATCH] Goofing around with examples --- Cargo.lock | 178 ++++++++++++++++++--------------------- Cargo.toml | 2 +- examples/blits.rs | 13 ++- examples/wave-deinter.rs | 10 +++ examples/wave-inter.rs | 32 +++++++ 5 files changed, 133 insertions(+), 102 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ef92812..bcfe990 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,20 +1,37 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] -name = "aho-corasick" -version = "0.7.15" +name = "ansi_term" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" +checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" dependencies = [ - "memchr", + "winapi", ] +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" + [[package]] name = "bwavfile" version = "0.9.2" dependencies = [ "byteorder", - "docopt", + "clap", "encoding", "serde_json", "uuid", @@ -27,15 +44,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] -name = "docopt" -version = "1.1.0" +name = "clap" +version = "2.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f525a586d310c87df72ebcd98009e57f1cc030c8c268305287a476beb653969" +checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" dependencies = [ - "lazy_static", - "regex", - "serde", + "ansi_term", + "atty", + "bitflags", "strsim", + "textwrap", + "unicode-width", + "vec_map", ] [[package]] @@ -102,59 +122,26 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" +[[package]] +name = "hermit-abi" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" +dependencies = [ + "libc", +] + [[package]] name = "itoa" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" [[package]] -name = "lazy_static" -version = "1.4.0" +name = "libc" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "memchr" -version = "2.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" - -[[package]] -name = "proc-macro2" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "quote" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "regex" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", - "thread_local", -] - -[[package]] -name = "regex-syntax" -version = "0.6.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" +checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb" [[package]] name = "ryu" @@ -164,23 +151,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "serde" -version = "1.0.117" +version = "1.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "06c64263859d87aa2eb554587e2d23183398d617427327cf2b3d0ed8c69e4800" [[package]] name = "serde_json" @@ -195,38 +168,55 @@ dependencies = [ [[package]] name = "strsim" -version = "0.9.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] -name = "syn" -version = "1.0.57" +name = "textwrap" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4211ce9909eb971f111059df92c45640aad50a619cf55cd76476be803c4c68e6" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", + "unicode-width", ] [[package]] -name = "thread_local" -version = "1.0.1" +name = "unicode-width" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "unicode-xid" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" [[package]] name = "uuid" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fde2f6a4bea1d6e007c4ad38c6839fa71cbb63b6dbf5b595aa38dc9b1093c11" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/Cargo.toml b/Cargo.toml index 92b0b6e..f249277 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ byteorder = "1.3.4" encoding = "0.2.33" serde_json = "1.0.61" uuid = "0.8.1" -docopt = "1.1.0" +clap = "2.33.3" [profile.release] debug = true diff --git a/examples/blits.rs b/examples/blits.rs index 552dcf7..be06383 100644 --- a/examples/blits.rs +++ b/examples/blits.rs @@ -9,6 +9,7 @@ //! TODO: Implement command-line interface use std::f64; +use std::io; use bwavfile::{WaveWriter, WaveFmt}; fn sine_wave(t: u64, amplitude : i32, wavelength : u32) -> i32 { @@ -88,7 +89,10 @@ impl ToneBurstSignal for Vec { } -fn main() -> () { +fn main() -> io::Result<()> { + + let sample_rate = 48000; + let bits_per_sample = 24; // BLITS Tone signal format // From EBU Tech 3304 ยง4 - https://tech.ebu.ch/docs/tech/tech3304.pdf @@ -190,17 +194,11 @@ fn main() -> () { ToneBurst::Silence(200) ]; - - let sample_rate = 48000; - let bits_per_sample = 24; - let length = [&left_channel_sequence, &right_channel_sequence, ¢er_channel_sequence, &lfe_channel_sequence, &ls_channel_sequence, &rs_channel_sequence].iter() .map(|i| i.duration(sample_rate)).max().unwrap_or(0); - println!("Will generate tone of length {} frames", &length); - let frames = (0..=length).map(|frame| { (left_channel_sequence.signal(frame, sample_rate, bits_per_sample), right_channel_sequence.signal(frame, sample_rate, bits_per_sample), @@ -220,4 +218,5 @@ fn main() -> () { } fw.end().expect("Failed to close frame writer"); + Ok(()) } diff --git a/examples/wave-deinter.rs b/examples/wave-deinter.rs index e69de29..f44c56a 100644 --- a/examples/wave-deinter.rs +++ b/examples/wave-deinter.rs @@ -0,0 +1,10 @@ +//! wave-inter.rs +//! (c) 2021 Jamie Hardt. All rights reserved. +//! +//! This program demonstrats combining several wave files into a single +//! polyphonic wave file. + +fn main() -> std::io::Result<()> { + + Ok(()) +} \ No newline at end of file diff --git a/examples/wave-inter.rs b/examples/wave-inter.rs index e69de29..16c2bf8 100644 --- a/examples/wave-inter.rs +++ b/examples/wave-inter.rs @@ -0,0 +1,32 @@ +//! wave-inter.rs +//! (c) 2021 Jamie Hardt. All rights reserved. +//! +//! This program demonstrates combining several wave files into a single +//! polyphonic wave file. + +extern crate clap; + +use std::io; +use clap::{Arg, App}; + +fn main() -> io::Result<()> { + let matches = App::new("wave-inter") + .version("0.1") + .author("Jamie Hardt") + .about("Combine several wave files into a single polyphonic wave file.") + .arg(Arg::with_name("OUTPUT") + .long("output") + .short("o") + .help("Output file name. If absent, will be basename, minus any channel extension, of first INPUT.") + ) + .arg(Arg::with_name("INPUT") + .help("Input wave file") + .required(true) + .multiple(true) + ) + .get_matches(); + + println!("Command line opts: {:?}", matches); + + Ok(()) +} \ No newline at end of file