shithub: pplay

Download patch

ref: 22bca74feebe60c2059c931861c8b9ee567c6c50
parent: 9681dab6c716b544e3a07e39a6c6a52b900de6b4
author: qwx <qwx@sciops.net>
date: Sun Jan 5 02:43:12 EST 2025

add pcminv: invert samples

--- a/mkfile
+++ b/mkfile
@@ -18,7 +18,11 @@
 # override $MANFILES??
 TARG=\
 	pcmmix\
+	pcminv\
 	pplay\
 
 $O.pcmmix: pcmmix.$O
 	$LD $LDFLAGS -o $target pcmmix.$O
+
+$O.pcminv: pcminv.$O
+	$LD $LDFLAGS -o $target pcminv.$O
--- /dev/null
+++ b/pcminv.c
@@ -1,0 +1,27 @@
+#include <u.h>
+#include <libc.h>
+
+void
+main(int argc, char **argv)
+{
+	int fd;
+	long n;
+	s16int *p, *e, buf[IOUNIT / sizeof *p];
+
+	ARGBEGIN{
+	}ARGEND
+	fd = 0;
+	if(*argv != nil && (fd = open(*argv, OREAD)) < 0)
+		sysfatal("open: %r");
+	for(;;){
+		if((n = read(fd, buf, sizeof buf)) <= 0)
+			break;
+		for(p=buf,e=buf+n/sizeof(*buf); p<e; p++)
+			*p = -(*p);
+		if(write(1, buf, n) != n)
+			sysfatal("write: %r");
+	}
+	if(n < 0)
+		sysfatal("read: %r");
+	exits(nil);
+}
--