Guest User

bytebeat.js

a guest
Apr 7th, 2016
579
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // bytebeat.js
  2. // Run using node like this:
  3. // node bytebeat.js < input.js | pacat --format=u8 --channels=1 --rate=8000 (PulseAudio)
  4. // node bytebeat.js < input.js | aplay --rate=8000 (ALSA)
  5.  
  6. function dataread(buf) {
  7.     expr += buf;
  8. }
  9.  
  10. if (process.stdout.isTTY) {
  11.     console.log('stdout = tty, exiting');
  12.     process.exit(1);
  13. }
  14.  
  15. var CHUNK = 1024;
  16. var LIM = Number(process.argv[2]) || -1;
  17. var expr = 'return ';
  18.  
  19. process.stdin.on('data', function(buf) {
  20.     expr += buf;
  21. });
  22.  
  23. process.stdin.on('end', function() {
  24.     var fun = new Function('t', expr);
  25.     var t = 0;
  26.     function write() {
  27.         var ok = true;
  28.         while (ok && (t < LIM || LIM == -1)) {
  29.             var data = new Buffer(CHUNK);
  30.             for (var k = 0; k < CHUNK; ++k) {
  31.                 data[k] = fun(t+k);
  32.             }
  33.             ok = process.stdout.write(data);
  34.             t += CHUNK;
  35.         }
  36.         if (t < LIM || LIM == -1) {
  37.             process.stdout.once('drain', write);
  38.         }
  39.     };
  40.     write();
  41. });
Advertisement
Add Comment
Please, Sign In to add comment