From 8c3c5a3ac2dce74b7bbd8c40427ab23ce65bd504 Mon Sep 17 00:00:00 2001 From: Luna Date: Sun, 26 Jan 2020 00:13:53 -0300 Subject: [PATCH] add invert cmd --- doc/README.md | 4 ++++ examples/invert.scri | 3 +++ src/lang.zig | 2 ++ src/printer.zig | 1 + src/runner.zig | 10 ++++++++++ 5 files changed, 20 insertions(+) create mode 100644 examples/invert.scri diff --git a/doc/README.md b/doc/README.md index b3cc13c..cc77cd1 100644 --- a/doc/README.md +++ b/doc/README.md @@ -288,3 +288,7 @@ GVerb algorithm from SWH plugins. - drylevel (dB): -70..0, default 0 - earlylevel (dB): -70..0, default 0 - taillevel (dB): -70..0, default -17.5 + +## `invert split index` + +> A utility plugin that inverts the signal, also (wrongly) known as a 180 degree phase shift. diff --git a/examples/invert.scri b/examples/invert.scri new file mode 100644 index 0000000..bd7b695 --- /dev/null +++ b/examples/invert.scri @@ -0,0 +1,3 @@ +load :0; +invert 3 1; +quicksave; diff --git a/src/lang.zig b/src/lang.zig index 60bf549..2b022dd 100644 --- a/src/lang.zig +++ b/src/lang.zig @@ -36,6 +36,7 @@ pub const CommandType = enum { ThruZero, Foverdrive, Gverb, + Invert, Noise, WildNoise, @@ -201,6 +202,7 @@ pub const Lang = struct { _ = try self.keywords.put("thruzero", .ThruZero); _ = try self.keywords.put("foverdrive", .Foverdrive); _ = try self.keywords.put("gverb", .Gverb); + _ = try self.keywords.put("invert", .Invert); // custom implementations (not lv2) _ = try self.keywords.put("noise", .Noise); diff --git a/src/printer.zig b/src/printer.zig index 1fb6c68..0d75ea4 100644 --- a/src/printer.zig +++ b/src/printer.zig @@ -30,6 +30,7 @@ pub fn printList(list: langs.CommandList, stream: var) !void { .ThruZero => "thruzero", .Foverdrive => "foverdrive", .Gverb => "gverb", + .Invert => "invert", .Noise => "noise", .WildNoise => "wildnoise", diff --git a/src/runner.zig b/src/runner.zig index 451dac5..dd6d49e 100644 --- a/src/runner.zig +++ b/src/runner.zig @@ -344,6 +344,11 @@ pub const Runner = struct { try image.runPlugin("http://plugin.org.uk/swh-plugins/gverb", pos, params); } + fn invertCmd(self: *Runner, pos: Position, params: ParamList) !void { + var image = try self.getImage(); + try image.runPlugin("http://plugin.org.uk/swh-plugins/inv", pos, params); + } + fn runCommand(self: *Runner, cmd: *lang.Command) !void { var params = ParamList.init(self.allocator); defer params.deinit(); @@ -629,6 +634,11 @@ pub const Runner = struct { try self.gverbCmd(pos, params); }, + .Invert => { + const pos = try cmd.consumePosition(); + try self.gverbCmd(pos, params); + }, + else => blk: { std.debug.warn("Unsupported command: {}\n", .{cmd.command}); break :blk RunError.UnknownCommand;