diff --git a/Makefile b/Makefile
index a3c78e0..6716d69 100644
--- a/Makefile
+++ b/Makefile
@@ -31,9 +31,15 @@ arngment: ${OBJ}
${OBJ}: ${HDR}
-play: all
+play:
+ @${MAKE} _play_$$(uname)
+
+_play_OpenBSD: all
./arngment ${ARNGMENT_ARGS} | aucat -e s16 -h raw -i -
+_play_Linux: all
+ ./arngment ${ARNGMENT_ARGS} | aplay -f dat -t raw -
+
clean:
rm -f arngment ${OBJ} ${P}-${V}.tgz
diff --git a/lrand48_uniform.c b/lrand48_uniform.c
index c52259e..6acb362 100644
--- a/lrand48_uniform.c
+++ b/lrand48_uniform.c
@@ -30,6 +30,11 @@
* .
*/
+/* lrand48, visibility for glibc */
+#if !defined(__OpenBSD__)
+#define _DEFAULT_SOURCE
+#endif
+
#include
#include
diff --git a/main.c b/main.c
index 089c347..33639c7 100644
--- a/main.c
+++ b/main.c
@@ -13,6 +13,11 @@
* .
*/
+/* getopt, srand48, visibility for glibc */
+#if !defined(__OpenBSD__)
+#define _DEFAULT_SOURCE
+#endif
+
#include
#include
#include
diff --git a/synth.c b/synth.c
index e8f21fa..9d3bdc8 100644
--- a/synth.c
+++ b/synth.c
@@ -15,6 +15,13 @@
#include
+/*
+ * Apparently, it's too hard for OSes to expose M_PI in a portable way.
+ * Definition taken from
+ * $OpenBSD: math.h,v 1.36 2018/03/10 20:52:58 kettenis Exp $
+ */
+#define JUST_PI ((double)3.14159265358979323846)
+
#define CLAMP(x, a, b) ((x) < (a) ? (a) : (x) > (b) ? (b) : (x))
double
@@ -27,7 +34,7 @@ synth_distortion(double gain, double x)
double
synth_sinewave(double t, double a)
{
- return sin(2.0 * M_PI * t * a);
+ return sin(2.0 * JUST_PI * t * a);
}
double