add implicit arg index for Command helper funcs

This commit is contained in:
Luna 2019-07-10 20:46:22 -03:00
parent c743681515
commit 3a8f84a3b2
3 changed files with 37 additions and 34 deletions

View File

@ -1,3 +1,3 @@
load :0; load :0;
highpass 3 1 1000 0 0; highpass 3 1 7800 0 0;
quicksave; quicksave;

View File

@ -27,6 +27,7 @@ pub const CommandType = enum {
pub const Command = struct { pub const Command = struct {
command: CommandType, command: CommandType,
args: ArgList, args: ArgList,
cur_idx: usize = 0,
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);
@ -48,7 +49,8 @@ pub const Command = struct {
return try std.fmt.parseInt(usize, arg, 10); return try std.fmt.parseInt(usize, arg, 10);
} }
pub fn consumePosition(self: *const Command) !plugin.Position { pub fn consumePosition(self: *Command) !plugin.Position {
self.cur_idx = 2;
return plugin.Position{ return plugin.Position{
.split = try self.usizeArgAt(0), .split = try self.usizeArgAt(0),
.index = try self.usizeArgAt(1), .index = try self.usizeArgAt(1),
@ -88,12 +90,13 @@ pub const Command = struct {
} }
pub fn appendParam( pub fn appendParam(
self: *const Command, self: *Command,
params: *plugin.ParamList, params: *plugin.ParamList,
symbol: []const u8, symbol: []const u8,
idx: usize,
) !void { ) !void {
var val = try self.floatArgAt(idx); var val = try self.floatArgAt(self.cur_idx);
self.cur_idx += 1;
try params.append(plugin.Param{ try params.append(plugin.Param{
.sym = symbol, .sym = symbol,
.value = val, .value = val,

View File

@ -224,22 +224,22 @@ pub const Runner = struct {
.Amp => blk: { .Amp => blk: {
const pos = try cmd.consumePosition(); const pos = try cmd.consumePosition();
try cmd.appendParam(&params, "gain", 2); try cmd.appendParam(&params, "gain");
try self.ampCmd(pos, params); try self.ampCmd(pos, params);
}, },
.RFlanger => blk: { .RFlanger => blk: {
const pos = try cmd.consumePosition(); const pos = try cmd.consumePosition();
try cmd.appendParam(&params, "delay_depth_avg", 2); try cmd.appendParam(&params, "delay_depth_avg");
try cmd.appendParam(&params, "law_freq", 3); try cmd.appendParam(&params, "law_freq");
try self.rFlangerCmd(pos, params); try self.rFlangerCmd(pos, params);
}, },
.Eq => blk: { .Eq => blk: {
const pos = try cmd.consumePosition(); const pos = try cmd.consumePosition();
try cmd.appendParam(&params, "lo", 2); try cmd.appendParam(&params, "lo");
try cmd.appendParam(&params, "mid", 3); try cmd.appendParam(&params, "mid");
try cmd.appendParam(&params, "hi", 4); try cmd.appendParam(&params, "hi");
try self.eqCmd(pos, params); try self.eqCmd(pos, params);
}, },
@ -247,10 +247,10 @@ pub const Runner = struct {
.Phaser => blk: { .Phaser => blk: {
const pos = try cmd.consumePosition(); const pos = try cmd.consumePosition();
try cmd.appendParam(&params, "lfo_rate", 2); try cmd.appendParam(&params, "lfo_rate");
try cmd.appendParam(&params, "lfo_depth", 3); try cmd.appendParam(&params, "lfo_depth");
try cmd.appendParam(&params, "fb", 4); try cmd.appendParam(&params, "fb");
try cmd.appendParam(&params, "spread", 5); try cmd.appendParam(&params, "spread");
try self.phaserCmd(pos, params); try self.phaserCmd(pos, params);
}, },
@ -264,34 +264,34 @@ pub const Runner = struct {
.Chorus => blk: { .Chorus => blk: {
const pos = try cmd.consumePosition(); const pos = try cmd.consumePosition();
try cmd.appendParam(&params, "voices", 2); try cmd.appendParam(&params, "voices");
try cmd.appendParam(&params, "delay_base", 3); try cmd.appendParam(&params, "delay_base");
try cmd.appendParam(&params, "voice_spread", 4); try cmd.appendParam(&params, "voice_spread");
try cmd.appendParam(&params, "detune", 5); try cmd.appendParam(&params, "detune");
try cmd.appendParam(&params, "law_freq", 6); try cmd.appendParam(&params, "law_freq");
try cmd.appendParam(&params, "attendb", 7); try cmd.appendParam(&params, "attendb");
try self.chorusCmd(pos, params); try self.chorusCmd(pos, params);
}, },
.PitchScaler => blk: { .PitchScaler => blk: {
const pos = try cmd.consumePosition(); const pos = try cmd.consumePosition();
try cmd.appendParam(&params, "mult", 2); try cmd.appendParam(&params, "mult");
try self.pitchScalerCmd(pos, params); try self.pitchScalerCmd(pos, params);
}, },
.Reverb => blk: { .Reverb => blk: {
const pos = try cmd.consumePosition(); const pos = try cmd.consumePosition();
try cmd.appendParam(&params, "roomLength", 2); try cmd.appendParam(&params, "roomLength");
try cmd.appendParam(&params, "roomHeight", 3); try cmd.appendParam(&params, "roomHeight");
try cmd.appendParam(&params, "sourceLR", 4); try cmd.appendParam(&params, "sourceLR");
try cmd.appendParam(&params, "sourceFB", 5); try cmd.appendParam(&params, "sourceFB");
try cmd.appendParam(&params, "listLR", 6); try cmd.appendParam(&params, "listLR");
try cmd.appendParam(&params, "listFB", 7); try cmd.appendParam(&params, "listFB");
try cmd.appendParam(&params, "hpf", 8); try cmd.appendParam(&params, "hpf");
try cmd.appendParam(&params, "warmth", 9); try cmd.appendParam(&params, "warmth");
try cmd.appendParam(&params, "diffusion", 10); try cmd.appendParam(&params, "diffusion");
try self.reverbCmd(pos, params); try self.reverbCmd(pos, params);
}, },
@ -299,9 +299,9 @@ pub const Runner = struct {
.Highpass => blk: { .Highpass => blk: {
const pos = try cmd.consumePosition(); const pos = try cmd.consumePosition();
try cmd.appendParam(&params, "freq", 2); try cmd.appendParam(&params, "freq");
try cmd.appendParam(&params, "gain", 3); try cmd.appendParam(&params, "gain");
try cmd.appendParam(&params, "noClip", 4); try cmd.appendParam(&params, "noClip");
try self.highpassCmd(pos, params); try self.highpassCmd(pos, params);
}, },