expanding on activity
This commit is contained in:
parent
572dc67a8c
commit
d827dbb754
3 changed files with 59 additions and 28 deletions
|
|
@ -15,6 +15,7 @@ pub const Activity = struct {
|
||||||
0 => { try self.reset(); },
|
0 => { try self.reset(); },
|
||||||
1 => { try self.setfreq(); },
|
1 => { try self.setfreq(); },
|
||||||
2 => { try self.relay(); },
|
2 => { try self.relay(); },
|
||||||
|
3 => { try self.slide_freq(); },
|
||||||
else => {},
|
else => {},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -27,6 +28,29 @@ pub const Activity = struct {
|
||||||
try self.soundnode.freqamp.setfreq(self.operands[0], self.operands[1]);
|
try self.soundnode.freqamp.setfreq(self.operands[0], self.operands[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn slide_freq(self: *Activity) !void {
|
||||||
|
|
||||||
|
try self.soundnode.freqamp.reset();
|
||||||
|
|
||||||
|
const init_freq: f16 = self.operands[0];
|
||||||
|
const final_freq: f16 = self.operands[1];
|
||||||
|
|
||||||
|
const timediff: u32 = self.end_tick - self.start_tick;
|
||||||
|
const elapsed: u32 = self.soundnode.freqamp.current_tick - self.start_tick;
|
||||||
|
const freqdiff: f128 = ((@as(f128, final_freq - init_freq))) / @as(f128, @floatFromInt(timediff));
|
||||||
|
|
||||||
|
const res_freq: f16 = init_freq + @as(f16, @floatCast(freqdiff * @as(f128, @floatFromInt(elapsed)) ));
|
||||||
|
|
||||||
|
try self.soundnode.freqamp.setfreq(res_freq, self.operands[2]);
|
||||||
|
|
||||||
|
if (self.soundnode.freqamp.current_tick % 44100 == 0) {
|
||||||
|
print("TIMEDIFF {d}\n", .{timediff});
|
||||||
|
print("FREQDIFF {d}\n", .{@as(f16, @floatCast(freqdiff))});
|
||||||
|
print("RESFREQ {d}\n", .{res_freq});
|
||||||
|
self.soundnode.freqamp.prnt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn relay(self: *Activity) !void {
|
pub fn relay(self: *Activity) !void {
|
||||||
|
|
||||||
try self.soundnode.freqamp.reset();
|
try self.soundnode.freqamp.reset();
|
||||||
|
|
@ -34,10 +58,6 @@ pub const Activity = struct {
|
||||||
for (self.soundnode.wire_in.items, 0..) |wired_sn, i| {
|
for (self.soundnode.wire_in.items, 0..) |wired_sn, i| {
|
||||||
|
|
||||||
const current_index: u32 = self.soundnode.freqamp.current_index();
|
const current_index: u32 = self.soundnode.freqamp.current_index();
|
||||||
if (current_index == 0) {
|
|
||||||
print("relaying {s} to {s}\n", .{wired_sn.name, self.soundnode.name});
|
|
||||||
}
|
|
||||||
|
|
||||||
const clist = wired_sn.freqamp.freqamps[current_index];
|
const clist = wired_sn.freqamp.freqamps[current_index];
|
||||||
|
|
||||||
for (clist.lst.items) |freqamp| {
|
for (clist.lst.items) |freqamp| {
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ pub const FreqAmpList = struct {
|
||||||
|
|
||||||
pub const FreqAmpBuffer = struct {
|
pub const FreqAmpBuffer = struct {
|
||||||
|
|
||||||
const buffer_ticks_default = 44100 * 3;
|
const buffer_ticks_default = 44100;
|
||||||
|
|
||||||
allocator: Allocator,
|
allocator: Allocator,
|
||||||
buffer_ticks: u32 = buffer_ticks_default,
|
buffer_ticks: u32 = buffer_ticks_default,
|
||||||
|
|
@ -178,18 +178,15 @@ pub const FreqAmpBuffer = struct {
|
||||||
var clist = self.freqamps[cur_index];
|
var clist = self.freqamps[cur_index];
|
||||||
|
|
||||||
// If this freq already is set, sum the r_amps
|
// If this freq already is set, sum the r_amps
|
||||||
// Currently turned off
|
|
||||||
|
|
||||||
if (0>0) {
|
for (clist.lst.items) |freqamp| {
|
||||||
for (clist.lst.items) |freqamp| {
|
|
||||||
|
|
||||||
if (freqamp.freq == freq) {
|
if (freqamp.freq == freq) {
|
||||||
|
|
||||||
freqamp.r_amp = r_amp;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
freqamp.r_amp = r_amp;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise, append new freqamp
|
// Otherwise, append new freqamp
|
||||||
|
|
@ -207,21 +204,19 @@ pub const FreqAmpBuffer = struct {
|
||||||
|
|
||||||
// If this freq already is set, sum the r_amps
|
// If this freq already is set, sum the r_amps
|
||||||
|
|
||||||
if (0>0) {
|
for (clist.lst.items) |freqamp| {
|
||||||
for (clist.lst.items) |freqamp| {
|
|
||||||
|
|
||||||
if (freqamp.freq == freq) {
|
if (freqamp.freq == freq) {
|
||||||
|
|
||||||
freqamp.r_amp += r_amp;
|
freqamp.r_amp += r_amp;
|
||||||
|
|
||||||
if (freqamp.r_amp > 1) {
|
if (freqamp.r_amp > 1) {
|
||||||
freqamp.r_amp = 1;
|
freqamp.r_amp = 1;
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise, append new freqamp
|
// Otherwise, append new freqamp
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ pub fn main() !void {
|
||||||
var settings: SoundSettings = SoundSettings{};
|
var settings: SoundSettings = SoundSettings{};
|
||||||
|
|
||||||
const start_tick: u32 = 0;
|
const start_tick: u32 = 0;
|
||||||
const end_tick: u32 = 44100 * 120;
|
const end_tick: u32 = 44100 * 10;
|
||||||
|
|
||||||
var left: SoundNode = try SoundNode.init(allocator, "left_sink");
|
var left: SoundNode = try SoundNode.init(allocator, "left_sink");
|
||||||
defer left.deinit();
|
defer left.deinit();
|
||||||
|
|
@ -49,7 +49,22 @@ pub fn main() !void {
|
||||||
a.operands[0] = 410.0;
|
a.operands[0] = 410.0;
|
||||||
a.operands[1] = 0.8;
|
a.operands[1] = 0.8;
|
||||||
|
|
||||||
|
var sine2: SoundNode = try SoundNode.init(allocator, "sine2");
|
||||||
|
defer sine2.deinit();
|
||||||
|
|
||||||
|
var a4 = Activity{
|
||||||
|
.start_tick = 0,
|
||||||
|
.end_tick = end_tick,
|
||||||
|
.opcode = 3,
|
||||||
|
.soundnode = &sine2,
|
||||||
|
};
|
||||||
|
|
||||||
|
a4.operands[0] = 410.0;
|
||||||
|
a4.operands[1] = 820.0;
|
||||||
|
a4.operands[2] = 0.5;
|
||||||
|
|
||||||
try sine.activities.append(&a);
|
try sine.activities.append(&a);
|
||||||
|
try sine2.activities.append(&a4);
|
||||||
|
|
||||||
var a2 = Activity{
|
var a2 = Activity{
|
||||||
.start_tick = 0,
|
.start_tick = 0,
|
||||||
|
|
@ -72,11 +87,12 @@ pub fn main() !void {
|
||||||
|
|
||||||
//Preset sink nodes
|
//Preset sink nodes
|
||||||
try soundnodes.append(&sine);
|
try soundnodes.append(&sine);
|
||||||
|
try soundnodes.append(&sine2);
|
||||||
try soundnodes.append(&left);
|
try soundnodes.append(&left);
|
||||||
try soundnodes.append(&right);
|
try soundnodes.append(&right);
|
||||||
|
|
||||||
try left.wire_in.append(&sine);
|
try left.wire_in.append(&sine2);
|
||||||
try right.wire_in.append(&sine);
|
try right.wire_in.append(&sine2);
|
||||||
|
|
||||||
var tick: u32 = start_tick;
|
var tick: u32 = start_tick;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue