From aedf47dbe112d1bcfd320be854b6d9a642aaa26a Mon Sep 17 00:00:00 2001 From: Luna Date: Sat, 13 Jul 2019 17:20:14 -0300 Subject: [PATCH] add revdelay cmd --- doc/README.md | 9 +++++++++ examples/revdelay.scri | 3 +++ src/lang.zig | 2 ++ src/runner.zig | 17 +++++++++++++++++ 4 files changed, 31 insertions(+) create mode 100644 examples/revdelay.scri diff --git a/doc/README.md b/doc/README.md index 6ab542d..7a34553 100644 --- a/doc/README.md +++ b/doc/README.md @@ -129,6 +129,15 @@ Parameters: - `click`: Crackle, 0..1, default 0 - `wear`: Wear, 0..1, default 0 +## `revdelay split index delay_time dry_level wet_level feedback xfade_samp` + +Parameters: + - `delay_time`: Delay time (s), 0..5, default 0 + - `dry_level`: Dry Level (dB), -70..0, default 0 + - `wet_level`: Wet Level (dB), -70..0, default 0, + - `feedback`: Feedback, 0..1, default 0 + - `xfade_samp`: Crossfade samples (int), 0..5000, default 1250 + ## TODO `echo split index delay` Run an echo filter on the given loaded file. diff --git a/examples/revdelay.scri b/examples/revdelay.scri new file mode 100644 index 0000000..48827b1 --- /dev/null +++ b/examples/revdelay.scri @@ -0,0 +1,3 @@ +load :0; +revdelay 3 1 0 0 0 0 1250; +quicksave; diff --git a/src/lang.zig b/src/lang.zig index bacb55a..0c38a93 100644 --- a/src/lang.zig +++ b/src/lang.zig @@ -25,6 +25,7 @@ pub const CommandType = enum { Highpass, Delay, Vinyl, + RevDelay, }; pub const Command = struct { @@ -141,6 +142,7 @@ pub const Lang = struct { _ = try self.keywords.put("highpass", .Highpass); _ = try self.keywords.put("delay", .Delay); _ = try self.keywords.put("vinyl", .Vinyl); + _ = try self.keywords.put("revdelay", .RevDelay); } pub fn parse(self: *Lang, data: []const u8) !CommandList { diff --git a/src/runner.zig b/src/runner.zig index 0ebc0eb..5632dca 100644 --- a/src/runner.zig +++ b/src/runner.zig @@ -240,6 +240,11 @@ pub const Runner = struct { try image.runPlugin("http://plugin.org.uk/swh-plugins/vynil", pos, params); } + fn revDelayCmd(self: *Runner, pos: Position, params: ParamList) !void { + var image = try self.getImage(); + try image.runPlugin("http://plugin.org.uk/swh-plugins/revdelay", pos, params); + } + fn runCommand(self: *Runner, cmd: *lang.Command) !void { var params = ParamList.init(self.allocator); defer params.deinit(); @@ -367,6 +372,18 @@ pub const Runner = struct { try self.vinylCmd(pos, params); }, + .RevDelay => blk: { + const pos = try cmd.consumePosition(); + + try cmd.appendParam(¶ms, "delay_time"); + try cmd.appendParam(¶ms, "dry_level"); + try cmd.appendParam(¶ms, "wet_level"); + try cmd.appendParam(¶ms, "feedback"); + try cmd.appendParam(¶ms, "xfade_samp"); + + try self.revDelayCmd(pos, params); + }, + else => blk: { std.debug.warn("Unsupported command: {}\n", cmd.command); break :blk RunError.UnknownCommand;