From 2d64eaa3efd14f71d07b381550df9c0b09f8106a Mon Sep 17 00:00:00 2001 From: Luna Date: Tue, 22 Oct 2019 18:30:55 -0300 Subject: [PATCH 1/5] add embed example script --- .gitignore | 1 + examples/embed.scri | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 examples/embed.scri diff --git a/.gitignore b/.gitignore index 3cef7be..3fa9744 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ zig-cache/ +*.mp3 diff --git a/examples/embed.scri b/examples/embed.scri new file mode 100644 index 0000000..d9c7efa --- /dev/null +++ b/examples/embed.scri @@ -0,0 +1,3 @@ +load :0; +embed 3 1 ./file.mp3 +quicksave; From 6e66850d905c3aaf646d8add316c78e591183f59 Mon Sep 17 00:00:00 2001 From: Luna Date: Tue, 22 Oct 2019 18:57:36 -0300 Subject: [PATCH 2/5] use sf_open_fd --- examples/embed.scri | 2 +- src/image.zig | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/examples/embed.scri b/examples/embed.scri index d9c7efa..eb26536 100644 --- a/examples/embed.scri +++ b/examples/embed.scri @@ -1,3 +1,3 @@ load :0; -embed 3 1 ./file.mp3 +embed 3 1 file.mp3 quicksave; diff --git a/src/image.zig b/src/image.zig index 3badd58..4b275f9 100644 --- a/src/image.zig +++ b/src/image.zig @@ -31,14 +31,17 @@ pub fn sopen( var cstr_path = try std.cstr.addNullByte(allocator, path); defer allocator.free(cstr_path); - var file = c.sf_open(cstr_path.ptr, mode, fmt); + var fs_file = try std.fs.File.openRead(path); + + var file = c.sf_open_fd(fs_file.handle, mode, fmt, 1); const st: i32 = c.sf_error(file); if (st != 0) { + var msg = c.sf_error_number(st); std.debug.warn( "Failed to open {} ({})\n", path, - c.sf_error_number(st), + msg[0..std.mem.len(u8, msg)], ); return ImageError.OpenFail; From 1c6ef1d4d5fcc6798ea5539de1517306cbf6e054 Mon Sep 17 00:00:00 2001 From: Luna Date: Tue, 22 Oct 2019 19:08:38 -0300 Subject: [PATCH 3/5] Revert "use sf_open_fd" This reverts commit 6e66850d905c3aaf646d8add316c78e591183f59. --- examples/embed.scri | 2 +- src/image.zig | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/examples/embed.scri b/examples/embed.scri index eb26536..d9c7efa 100644 --- a/examples/embed.scri +++ b/examples/embed.scri @@ -1,3 +1,3 @@ load :0; -embed 3 1 file.mp3 +embed 3 1 ./file.mp3 quicksave; diff --git a/src/image.zig b/src/image.zig index 4b275f9..3badd58 100644 --- a/src/image.zig +++ b/src/image.zig @@ -31,17 +31,14 @@ pub fn sopen( var cstr_path = try std.cstr.addNullByte(allocator, path); defer allocator.free(cstr_path); - var fs_file = try std.fs.File.openRead(path); - - var file = c.sf_open_fd(fs_file.handle, mode, fmt, 1); + var file = c.sf_open(cstr_path.ptr, mode, fmt); const st: i32 = c.sf_error(file); if (st != 0) { - var msg = c.sf_error_number(st); std.debug.warn( "Failed to open {} ({})\n", path, - msg[0..std.mem.len(u8, msg)], + c.sf_error_number(st), ); return ImageError.OpenFail; From c8b5327634a94a42c76d25b14c5221751755c91b Mon Sep 17 00:00:00 2001 From: Luna Date: Tue, 22 Oct 2019 19:09:05 -0300 Subject: [PATCH 4/5] libsndfile cant open mp3s --- .gitignore | 1 + examples/embed.scri | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3fa9744..b43912f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ zig-cache/ *.mp3 +*.wav diff --git a/examples/embed.scri b/examples/embed.scri index d9c7efa..b78f7c9 100644 --- a/examples/embed.scri +++ b/examples/embed.scri @@ -1,3 +1,3 @@ load :0; -embed 3 1 ./file.mp3 +embed 3 1 ./file.wav; quicksave; From 430677fc07655e190bcea7951bd11075b2911445 Mon Sep 17 00:00:00 2001 From: Luna Date: Tue, 22 Oct 2019 19:16:09 -0300 Subject: [PATCH 5/5] enhance embed custom plugin - seek to 0 on setup - ignore and copy original bytes if we reached end of audio file --- src/custom.zig | 4 +++- src/image.zig | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/custom.zig b/src/custom.zig index 4c8c611..0727113 100644 --- a/src/custom.zig +++ b/src/custom.zig @@ -164,6 +164,8 @@ pub const Embed = struct { &in_fmt, ); + image.sseek(self.sndfile, 0); + self.buf = try self.allocator.alloc(f32, @intCast(usize, in_fmt.channels)); } @@ -173,7 +175,7 @@ pub const Embed = struct { const read_bytes = c.sf_readf_float(self.sndfile, self.buf.ptr, 1); if (read_bytes == 0) { - std.debug.warn("WARN! reached EOF for embed\n"); + bufs.out[0] = bufs.in[0]; return; } diff --git a/src/image.zig b/src/image.zig index 3badd58..9748bc9 100644 --- a/src/image.zig +++ b/src/image.zig @@ -65,7 +65,7 @@ pub fn swrite(file: *c.SNDFILE, buf: [*]f32, frames: i64) !void { } } -fn sseek(file: *c.SNDFILE, offset: usize) void { +pub fn sseek(file: *c.SNDFILE, offset: usize) void { const offset_i64 = @intCast(i64, offset); const frames = c.sf_seek(file, offset_i64, c.SEEK_SET); const frames_current = c.sf_seek(file, 0, c.SEEK_CUR);