add draft impl for ampCmd
This commit is contained in:
parent
276100c556
commit
176bbd446a
4 changed files with 58 additions and 2 deletions
|
@ -1,3 +1,4 @@
|
||||||
load :0;
|
load :0;
|
||||||
echo 3 0 1 0.2;
|
amp 10 1;
|
||||||
|
# echo 3 0 1 0.2;
|
||||||
quicksave;
|
quicksave;
|
||||||
|
|
10
src/lang.zig
10
src/lang.zig
|
@ -19,6 +19,16 @@ pub const Command = struct {
|
||||||
pub fn print(self: *const Command) void {
|
pub fn print(self: *const Command) void {
|
||||||
std.debug.warn("cmd:{}\n", self.command);
|
std.debug.warn("cmd:{}\n", self.command);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn intArgAt(self: *const Command, idx: usize) !i32 {
|
||||||
|
var arg = self.args.at(idx);
|
||||||
|
return try std.fmt.parseInt(i32, arg, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn floatArgAt(self: *const Command, idx: usize) !f32 {
|
||||||
|
var arg = self.args.at(idx);
|
||||||
|
return try std.fmt.parseFloat(f32, arg);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const CommandList = std.ArrayList(*Command);
|
pub const CommandList = std.ArrayList(*Command);
|
||||||
|
|
17
src/plugin.zig
Normal file
17
src/plugin.zig
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
/// Control port
|
||||||
|
pub const Param = struct {
|
||||||
|
/// Port symbol
|
||||||
|
sym: []const u8,
|
||||||
|
|
||||||
|
/// Control value
|
||||||
|
value: f32,
|
||||||
|
};
|
||||||
|
|
||||||
|
pub const ParamList = std.ArrayList(Param);
|
||||||
|
|
||||||
|
pub const Position = struct {
|
||||||
|
split: usize,
|
||||||
|
index: usize,
|
||||||
|
};
|
|
@ -1,6 +1,7 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const lang = @import("lang.zig");
|
const lang = @import("lang.zig");
|
||||||
const images = @import("image.zig");
|
const images = @import("image.zig");
|
||||||
|
const plugin = @import("plugin.zig");
|
||||||
|
|
||||||
const Image = images.Image;
|
const Image = images.Image;
|
||||||
|
|
||||||
|
@ -70,6 +71,8 @@ pub const Runner = struct {
|
||||||
return RunError.NoBMP;
|
return RunError.NoBMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO, copy load_path into a temporary file, then use that
|
||||||
|
// file to work on things.
|
||||||
self.image = try Image.open(self.allocator, load_path);
|
self.image = try Image.open(self.allocator, load_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,6 +138,24 @@ pub const Runner = struct {
|
||||||
std.debug.warn("out path: {}\n", out_path);
|
std.debug.warn("out path: {}\n", out_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Run the http://lv2plug.in/plugins/eg-amp plugin over the file.
|
||||||
|
fn ampCmd(self: *Runner, split: i32, index: i32, gain: f32) !void {
|
||||||
|
var param = try self.allocator.create(plugin.Param);
|
||||||
|
defer self.allocator.destroy(param);
|
||||||
|
|
||||||
|
param.* = Param{ .sym = "gain", .value = gain };
|
||||||
|
|
||||||
|
var params = plugin.ParamList.init(self.allocator);
|
||||||
|
defer params.deinit();
|
||||||
|
|
||||||
|
// TODO impl this
|
||||||
|
try image.runPlugin(
|
||||||
|
"http://lv2plug.in/plugins/eg-amp",
|
||||||
|
plugin.Position{ .split = split, .index = index },
|
||||||
|
params,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
fn runCommand(self: *Runner, cmd: *lang.Command) !void {
|
fn runCommand(self: *Runner, cmd: *lang.Command) !void {
|
||||||
return switch (cmd.command) {
|
return switch (cmd.command) {
|
||||||
.Noop => {},
|
.Noop => {},
|
||||||
|
@ -143,8 +164,15 @@ pub const Runner = struct {
|
||||||
try self.loadCmd(path);
|
try self.loadCmd(path);
|
||||||
break :blk;
|
break :blk;
|
||||||
},
|
},
|
||||||
|
|
||||||
.Quicksave => try self.quicksaveCmd(),
|
.Quicksave => try self.quicksaveCmd(),
|
||||||
|
|
||||||
|
// .Amp => blk: {
|
||||||
|
// const split = try cmd.intArgAt(0);
|
||||||
|
// const index = try cmd.intArgAt(1);
|
||||||
|
// const gain = try cmd.floatArgAt(2);
|
||||||
|
// try self.ampCmd(split, index, gain);
|
||||||
|
// }
|
||||||
|
|
||||||
else => blk: {
|
else => blk: {
|
||||||
std.debug.warn("Unknown command: {}\n", cmd.command);
|
std.debug.warn("Unknown command: {}\n", cmd.command);
|
||||||
break :blk RunError.UnknownCommand;
|
break :blk RunError.UnknownCommand;
|
||||||
|
|
Loading…
Reference in a new issue