diff options
| author | makefu <github@syntax-fehler.de> | 2013-12-30 03:09:34 +0100 | 
|---|---|---|
| committer | makefu <github@syntax-fehler.de> | 2013-12-30 03:09:34 +0100 | 
| commit | 4db3c97ab8a76bd28dc737755c331e89a671d162 (patch) | |
| tree | 613dca51529b400e5a875c1599f495f7ba058b3d /Cancer | |
| parent | 0b81bca953ec7cdf373ff97b11ebd6fb847d733f (diff) | |
krebsuino -> god
Diffstat (limited to 'Cancer')
| -rw-r--r-- | Cancer/Kübelwagen/Makefile | 14 | ||||
| -rwxr-xr-x | Cancer/Kübelwagen/alarm | 27 | ||||
| -rw-r--r-- | Cancer/Kübelwagen/index.c | 206 | ||||
| -rwxr-xr-x | Cancer/Kübelwagen/playmobil | 12 | ||||
| -rw-r--r-- | Cancer/Kübelwagen/sin.js | 37 | 
5 files changed, 296 insertions, 0 deletions
| diff --git a/Cancer/Kübelwagen/Makefile b/Cancer/Kübelwagen/Makefile new file mode 100644 index 00000000..9be84e13 --- /dev/null +++ b/Cancer/Kübelwagen/Makefile @@ -0,0 +1,14 @@ + +CC := gcc -std=c99 +CFLAGS := -D_XOPEN_SOURCE=500 +LIBS := $(shell pkg-config --cflags --libs jack) -lm + +.PHONY: all clean + +all: a.out + +clean: +	rm -f a.out + +a.out: index.c +	$(CC) $(CFLAGS) -o $@ $^ $(LIBS) diff --git a/Cancer/Kübelwagen/alarm b/Cancer/Kübelwagen/alarm new file mode 100755 index 00000000..a117c433 --- /dev/null +++ b/Cancer/Kübelwagen/alarm @@ -0,0 +1,27 @@ +#! /bin/sh +# +# //Kübelwagen/alarm SLEEPARGS... +# +# where SLEEPARGS are passed to sleep(3) +# +set -euf +cd $(dirname $(readlink -f $0)) +exec >&2 + +make + +jackd -d alsa & +trap "kill -0 $! && kill $!" EXIT INT + +for i in `seq 8000 1000 10000`; do +  echo $i 100 +done | ./a.out 1 +echo 'if you heard that sound, then goto sleep..^_^' + +echo sleep "$@" +sleep "$@" + +echo 'wake up!' +while :; do +  echo $(echo "($(od -tu -An -N 2 /dev/urandom)%1000)+500"|bc) $(echo "($(od -tu -An -N 2 /dev/urandom)%500)+100"|bc) +done | ./a.out 1 diff --git a/Cancer/Kübelwagen/index.c b/Cancer/Kübelwagen/index.c new file mode 100644 index 00000000..9a15c7c3 --- /dev/null +++ b/Cancer/Kübelwagen/index.c @@ -0,0 +1,206 @@ +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <stdio.h> +#include <math.h> + +#include <jack/jack.h> + +const double PI = 3.14; + +/*Our output port*/ +jack_port_t *output_port; + +typedef jack_default_audio_sample_t sample_t; + +/*The current sample rate*/ +jack_nframes_t sr; + +/*samples in cycle*/ +jack_nframes_t samincy; +/*the current offset*/ +long offset=0; + +/*frequency of our sound*/ +int tone = 262; +int length = 1000000; + +char const *name = "<undefined>"; + +int process (jack_nframes_t nframes, void *arg){ +  /*grab our output buffer*/ +  sample_t *out = (sample_t *) jack_port_get_buffer  +                               (output_port, nframes); + +  int _tone = tone > 0 ? tone : 1; + +  /*For each required sample*/ +  for(jack_nframes_t i=0;i < nframes;i++){ +    /*Copy the sample at the current position in the cycle to the buffer*/ + +    jack_nframes_t samincy = sr / _tone; +    sample_t scale = 2 * PI / samincy; +    out[i] = sin(offset * scale); + +    /*and increment the offset, wrapping to 0 if needed*/ +    /*(Dumb increment fixed thanks to Jussi Sainio)*/ +    offset++; +    if(offset >= samincy) +      offset = 0;     +  } +            +  return 0;       +} + +int srate (jack_nframes_t nframes, void *arg){ +  printf ("the sample rate is now %lu/sec\n", nframes); +  sr=nframes; +  return 0; +} + +void error (const char *desc){ +  fprintf (stderr, "JACK error: %s\n", desc); +} + +void jack_shutdown (void *arg){ +  exit (1); +} + +void usage(void) { +  fprintf (stderr, "usage: %s [Hz [ms]]\n", name); +} + +int main (int argc, char *argv[]){ +  jack_client_t *client; +  const char **ports; + +  name = argv[0]; +   +  if (argc < 2) { +    usage(); +    return 1; +  } +  if (argc >= 2) { +    tone = atoi(argv[1]); +    if (tone == 0) { +      usage(); +      return 1; +    }  +    fprintf(stderr, "tone: %dHz\n", tone); +    if (argc >= 3) { +      length = atoi(argv[2]) * 1000; +      if (length == 0) { +        usage(); +        return 1; +      }  +      fprintf(stderr, "length: %dms\n", length/1000); +    } +  } +   +  /* tell the JACK server to call error() whenever it +     experiences an error.  Notice that this callback is +     global to this process, not specific to each client. +      +     This is set here so that it can catch errors in the +     connection process +  */ +  jack_set_error_function (error); +   +  /* try to become a client of the JACK server */ +   +  if ((client = jack_client_open(argv[0], JackNullOption, NULL)) == 0) { +    fprintf (stderr, "jack server not running?\n"); +    return 1; +  } +   +  /* tell the JACK server to call `process()' whenever +     there is work to be done. +  */ +   +  jack_set_process_callback (client, process, 0); +   +  /* tell the JACK server to call `srate()' whenever +     the sample rate of the system changes. +  */ +   +   +  jack_set_sample_rate_callback (client, srate, 0); +   +  /* tell the JACK server to call `jack_shutdown()' if +     it ever shuts down, either entirely, or if it +     just decides to stop calling us. +  */ +   +  jack_on_shutdown (client, jack_shutdown, 0); +   +  /* display the current sample rate. once the client is activated  +     (see below), you should rely on your own sample rate +     callback (see above) for this value. +  */ +  printf ("engine sample rate: %lu\n", jack_get_sample_rate (client)); +   + +  sr=jack_get_sample_rate (client); +   +  /* create two ports */ +   +   +  output_port = jack_port_register (client, "output",  +                     JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); + +  /* tell the JACK server that we are ready to roll */ +   +  if (jack_activate (client)) { +    fprintf (stderr, "cannot activate client"); +    return 1; +  } +   +  /* connect the ports*/ +  if ((ports = jack_get_ports (client, NULL, NULL,  +                   JackPortIsPhysical|JackPortIsInput)) == NULL) { +    fprintf(stderr, "Cannot find any physical playback ports\n"); +    exit(1); +  } +   +  int i=0; +  while(ports[i]!=NULL){ +    if (jack_connect (client, jack_port_name (output_port), ports[i])) { +      fprintf (stderr, "cannot connect output ports\n"); +    } +    i++; +  } +   +  free (ports); + +  //while (1) { //scanf("%i %i", &tone, &length) == 2) { +  char buf[BUFSIZ]; +  while (fgets(buf, BUFSIZ, stdin) == buf) { +    //if (strstr(buf, "Hz\n")) { +    //  sscanf(buf, "%i", &tone); +    //  fprintf(stderr, "%dHz\n", tone); +    //} +    //if (strstr(buf, "us\n")) { +    //  sscanf(buf, "%i", &length); +    //  fprintf(stderr, "%dus\n", length); +    //} + +    int length = 0; +    int c; +    int pos = 0, n; +    while ((c = sscanf(buf + pos, "%i%i%n", &tone, &length, &n)) == 2) { + +      if (length > 0) { +        usleep(length * 1000); +      } + +      pos += n; + +      fprintf(stderr, "%dHz %dms\n", tone, length); +    } +  } +  ///* 3 seconds of bleep is plenty*/ +  ///usleep(length); +  jack_client_close(client); + +  exit(0); +} diff --git a/Cancer/Kübelwagen/playmobil b/Cancer/Kübelwagen/playmobil new file mode 100755 index 00000000..51ed70d6 --- /dev/null +++ b/Cancer/Kübelwagen/playmobil @@ -0,0 +1,12 @@ +#! /bin/sh +file=`mktemp` +trap "rm -f $file" EXIT INT TERM + +gcc -xc -lm -o $file - <<EOF +#include<math.h> +main(t) { +  for (t=${2-0};;++t) putchar($1); +} +EOF + +$file | aplay diff --git a/Cancer/Kübelwagen/sin.js b/Cancer/Kübelwagen/sin.js new file mode 100644 index 00000000..0f472715 --- /dev/null +++ b/Cancer/Kübelwagen/sin.js @@ -0,0 +1,37 @@ + + + +var x = 3000; + +var t = 0; +var i = 0; +var j = 0.00001; +var t0 = new Date(); +(function rec () { +   +  var t1 = new Date(); +  console.error('dt = ' + (t1 - t0)); +  t0 = t1; + +  if (x === 3000) { +    x = 1000; +  } else { +    x = 3000; +  }; + +  console.log('2000 50  0 50  2000 50  0 50  ' + x + ' 100  0 0'); +  return setTimeout(rec, 1000); + +  i += 0.01; +  console.log((2000 + Math.sin(i) * 1000 | 0) + ' 0'); +  return setTimeout(rec, 1); + +  var f = Math.abs(1000 + 500 * Math.tan( t )); +  var scale = 1; + +  console.log(((f * scale)|0) + ' 0'); + +  t++; +  setTimeout(rec, 100); +  //process.nextTick(rec); +})(); | 
