<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.extremist.software/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=1.162.96.214</id>
	<title>Noisebridge - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.extremist.software/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=1.162.96.214"/>
	<link rel="alternate" type="text/html" href="https://wiki.extremist.software/wiki/Special:Contributions/1.162.96.214"/>
	<updated>2026-04-05T15:30:49Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.13</generator>
	<entry>
		<id>https://wiki.extremist.software/index.php?title=Bytebeat&amp;diff=34221</id>
		<title>Bytebeat</title>
		<link rel="alternate" type="text/html" href="https://wiki.extremist.software/index.php?title=Bytebeat&amp;diff=34221"/>
		<updated>2013-10-01T11:55:44Z</updated>

		<summary type="html">&lt;p&gt;1.162.96.214: /* busybox awk */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== bytebeat in x86 assembler ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ; noise.asm -- just fooling around :-)&lt;br /&gt;
 ; mct and leif, ; Sun Feb 19 19:08:13 PST 2012&lt;br /&gt;
 ; &lt;br /&gt;
 ; Build with:&lt;br /&gt;
 ;&lt;br /&gt;
 ;       nasm -felf32 noise.asm&lt;br /&gt;
 ;       ld -melf_i386 -o noise noise.o&lt;br /&gt;
 ;&lt;br /&gt;
 ; Run with:&lt;br /&gt;
 ;&lt;br /&gt;
 ;       ./noise | aplay&lt;br /&gt;
 ;&lt;br /&gt;
 ; Equivalent to:&lt;br /&gt;
 ;        python -c&#039;import sys;[sys.stdout.write(chr((t&amp;gt;&amp;gt;10^t&amp;gt;&amp;gt;(t&amp;gt;&amp;gt;13)%4)%256)) for t in xrange(2**20)]&#039; |aplay&lt;br /&gt;
&lt;br /&gt;
 global _start&lt;br /&gt;
&lt;br /&gt;
 section .data&lt;br /&gt;
&lt;br /&gt;
 section .bss&lt;br /&gt;
&lt;br /&gt;
         var:    resb 1  ; one bye variable&lt;br /&gt;
&lt;br /&gt;
 section .text&lt;br /&gt;
&lt;br /&gt;
         ; f(x) = (x &amp;gt;&amp;gt; 10 ^ x&amp;gt;&amp;gt;((x&amp;gt;&amp;gt;13)%4)) % 256&lt;br /&gt;
&lt;br /&gt;
         _start: mov esi, 0&lt;br /&gt;
&lt;br /&gt;
                 ;int 3&lt;br /&gt;
&lt;br /&gt;
         .loop: &lt;br /&gt;
&lt;br /&gt;
                 mov edi, esi&lt;br /&gt;
                 shr edi, 13 ; edi := x &amp;gt;&amp;gt; 13&lt;br /&gt;
&lt;br /&gt;
                 mov eax, edi&lt;br /&gt;
                 cwd&lt;br /&gt;
                 mov bx, 4&lt;br /&gt;
                 div bx  ; dx := (x &amp;gt;&amp;gt; 13) % 4&lt;br /&gt;
&lt;br /&gt;
                 mov eax, esi&lt;br /&gt;
                 mov cx, dx&lt;br /&gt;
                 shr eax, cl   ; eax := x &amp;gt;&amp;gt; ((x &amp;gt;&amp;gt; 13) % 4)&lt;br /&gt;
&lt;br /&gt;
                 mov edi, esi&lt;br /&gt;
                 shr edi, 10   ; edi := x &amp;gt;&amp;gt; 10&lt;br /&gt;
&lt;br /&gt;
                 xor eax, edi&lt;br /&gt;
                 mov [var], al&lt;br /&gt;
&lt;br /&gt;
                 mov eax, 4      ; sys_write&lt;br /&gt;
                 mov ebx, 1      ; stdout&lt;br /&gt;
                 mov ecx, var    ; buffer&lt;br /&gt;
                 mov edx, 1      ; length&lt;br /&gt;
                 int 80h         ; syscall&lt;br /&gt;
&lt;br /&gt;
                 inc esi&lt;br /&gt;
                 jmp .loop&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Basic Sierpinski harmony bytebeat t &amp;amp; t &amp;gt;&amp;gt; 8 in as few bytes as possible:&lt;br /&gt;
         .globl _start&lt;br /&gt;
 _start: inc %ebx             # output fd 1 in %ebx for write()&lt;br /&gt;
         inc %edx             # byte count of 1 in %edx for write()&lt;br /&gt;
 loop:   inc %eax             # increment t each time through the loop&lt;br /&gt;
         push %eax            # save it on the stack&lt;br /&gt;
         and %ah, %al         # compute t &amp;amp; t &amp;gt;&amp;gt; 8, our output sample&lt;br /&gt;
         push %eax            # store it on the stack for write()&lt;br /&gt;
         lea 3(%ebx), %eax    # a three-byte way to set %eax to 4 (__NR_write)&lt;br /&gt;
         mov %esp, %ecx       # pass sample pointer to write() (little-endian!)&lt;br /&gt;
         int $0x80            # invoke system call&lt;br /&gt;
         pop %eax             # discard sample&lt;br /&gt;
         pop %eax             # restore t into %eax&lt;br /&gt;
         jmp loop             # and repeat&lt;br /&gt;
 ### Kragen Javier Sitaker&lt;br /&gt;
 ### 2012-01-10&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile with gcc -m32 -nostdlib and pipe the output to aplay.  After stripping, the ELF is 240 bytes; size(1) says it has 18 bytes of code.&lt;br /&gt;
&lt;br /&gt;
=== bytebeat in &amp;amp;lt;140-character command lines with python ===&lt;br /&gt;
&lt;br /&gt;
From @wiretapped:&lt;br /&gt;
 python -c&#039;import sys;[sys.stdout.write(chr(( t^t&amp;gt;&amp;gt;(t&amp;gt;&amp;gt;11)%3^t&amp;gt;&amp;gt;(t&amp;gt;&amp;gt;12)%4                    )%256)) for t in xrange(2**19)]&#039;|aplay&lt;br /&gt;
 python -c&#039;import sys;[sys.stdout.write(chr(( t&amp;gt;&amp;gt;(t&amp;gt;&amp;gt;11)%4^(t&amp;gt;&amp;gt;10)*(t&amp;gt;&amp;gt;15)                   )%256)) for t in xrange(2**19)]&#039;|aplay&lt;br /&gt;
 python -c&#039;import sys;[sys.stdout.write(chr(( t&amp;lt;&amp;lt;3+(t&amp;gt;&amp;gt;10)%3^t&amp;gt;&amp;gt;4+(t&amp;gt;&amp;gt;12)%4^t**(2+(t&amp;gt;&amp;gt;13)%8) )%256)) for t in xrange(2**18)]&#039;|aplay&lt;br /&gt;
 python -c&#039;import sys;[sys.stdout.write(chr(( t^t&amp;gt;&amp;gt;4^(t*((t&amp;gt;&amp;gt;(11+(t&amp;gt;&amp;gt;16)%3))%16))^t*3        )%256)) for t in xrange(2**20)]&#039;|aplay&lt;br /&gt;
 python -c&#039;import sys;[sys.stdout.write(chr(( t+(t&amp;gt;&amp;gt;(5+(t&amp;gt;&amp;gt;10)%4)^t)                         )%256)) for t in xrange(2**21)]&#039;|aplay&lt;br /&gt;
 python -c&#039;import sys;[sys.stdout.write(chr(( t+(t&amp;gt;&amp;gt;(5+(t&amp;gt;&amp;gt;10)%8))^t|t&amp;gt;&amp;gt;12                   )%256)) for t in xrange(2**21)]&#039;|aplay&lt;br /&gt;
 python -c&#039;import sys;[sys.stdout.write(chr(( t|(((t&amp;gt;&amp;gt;1)%(8+(t&amp;gt;&amp;gt;14)%4))+(t&amp;gt;&amp;gt;6))              )%256)) for t in xrange(2**18)]&#039;|aplay&lt;br /&gt;
 python -c&#039;import sys;[sys.stdout.write(chr(( t*(3+(t&amp;gt;&amp;gt;10)%(4+(t&amp;gt;&amp;gt;11)%8))|(t&amp;gt;&amp;gt;5)             )%256)) for t in xrange(2**20)]&#039;|aplay&lt;br /&gt;
&lt;br /&gt;
From @isislovecruft (#FYB):&lt;br /&gt;
 python -c&#039;import sys;[sys.stdout.write(chr(((~t&amp;gt;&amp;gt;2)*(2+(42&amp;amp;t*((7&amp;amp;t&amp;gt;&amp;gt;10)*2))&amp;lt;(24&amp;amp;t*((3&amp;amp;t&amp;gt;&amp;gt;14)+2))))%256))for t in xrange(2**19)]&#039;|aplay&lt;br /&gt;
 python -c&#039;import sys;[sys.stdout.write(chr((((t*5&amp;amp;t&amp;gt;&amp;gt;7|t*9&amp;amp;t&amp;gt;&amp;gt;4|t*18&amp;amp;t/1024)|((t|7)&amp;gt;&amp;gt;5|(t|4)&amp;gt;&amp;gt;9))) %256))for t in xrange(2**18)]&#039;|aplay&lt;br /&gt;
 python -c&#039;import sys;[sys.stdout.write(chr((((t*(t&amp;gt;&amp;gt;13|t&amp;gt;&amp;gt;8))|(t&amp;gt;&amp;gt;16)^t)-64)%256)) for t in xrange(2**18)]&#039;|aplay&lt;br /&gt;
&lt;br /&gt;
for OSX&lt;br /&gt;
&lt;br /&gt;
  brew install sox&lt;br /&gt;
  python -c&#039;import sys; [sys.stdout.write(chr(((t*5&amp;amp;t&amp;gt;&amp;gt;7|t*9&amp;amp;t&amp;gt;&amp;gt;4|t*18&amp;amp;t/1024)|((t|7)&amp;gt;&amp;gt;5|(t|4)&amp;gt;&amp;gt;9))%256))for t in xrange(2**18)]&#039; &amp;gt; out.raw; &lt;br /&gt;
  sox -r 8000 -c 1 -t u8 out.raw out.wav;&lt;br /&gt;
  open out.wav&lt;br /&gt;
&lt;br /&gt;
=== an attempt with luajit ===&lt;br /&gt;
&lt;br /&gt;
  local bit = require&#039;bit&#039;&lt;br /&gt;
  local ffi = require&#039;ffi&#039;&lt;br /&gt;
  &lt;br /&gt;
  ffi.cdef[[&lt;br /&gt;
    int putchar(int c);&lt;br /&gt;
  ]]&lt;br /&gt;
  &lt;br /&gt;
  local putc = ffi.C.putchar&lt;br /&gt;
  local rsh  = bit.rshift&lt;br /&gt;
  local lsh  = bit.lshift&lt;br /&gt;
  local band = bit.band&lt;br /&gt;
  local bor  = bit.bor&lt;br /&gt;
  local bxor = bit.bxor&lt;br /&gt;
  &lt;br /&gt;
  for t=0, math.huge do&lt;br /&gt;
    putc( band(t, rsh(t, 8)) )&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
run it on osx:&lt;br /&gt;
&lt;br /&gt;
  luajit 8bit.lua | sox -r 8000 -c 1 -t u8 - -d&lt;br /&gt;
&lt;br /&gt;
=== busybox awk ===&lt;br /&gt;
might work with gawk, dunno.  &lt;br /&gt;
&lt;br /&gt;
throw it to /dev/dsp &lt;br /&gt;
&lt;br /&gt;
    #!/usr/bin/awk -f &lt;br /&gt;
    BEGIN{&lt;br /&gt;
       for (t=0;;t++){&lt;br /&gt;
          printf(&amp;quot;%c&amp;quot;,and(t, rshift(t, 8)));&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
of course awk will eat your processor alive.&lt;br /&gt;
&lt;br /&gt;
alternately from your shell &lt;br /&gt;
&lt;br /&gt;
    seq 11111111 | awk &#039;{printf(&amp;quot;%c&amp;quot;,and($1,rshift($1,8)))}&#039; &amp;gt; /dev/dsp&lt;br /&gt;
&lt;br /&gt;
should also summon cthulhu&lt;br /&gt;
&lt;br /&gt;
http://sebsauvage.net/paste/?75bee7fafb41fe22#QhBl0RBbPKZyp8OGyrozxdDFEjK7B1+5NCTWc7c0vXE=&lt;br /&gt;
&lt;br /&gt;
=== With Haskell! === &lt;br /&gt;
http://yaxu.org/haskell-hack/&lt;br /&gt;
&lt;br /&gt;
=== links ===&lt;br /&gt;
* [http://www.metafilter.com/111959/Todays-formulaic-music Today&#039;s formulaic music.] - Metafilter post about bytebeat with many links&lt;br /&gt;
* Recordings made at Noisebridge: [http://www.youtube.com/watch?v=89Dm7yiYoXM] [http://www.youtube.com/watch?v=1tqgzMqk0jM] [http://www.youtube.com/watch?v=S14UknY8qtc] [http://www.youtube.com/watch?v=C87qr2sDu4s]&lt;br /&gt;
* https://github.com/kragen/pytebeat - Python Bytebeat livecoding software in SDL&lt;br /&gt;
* http://music.columbia.edu/~douglas/strange_things/?p=78 - Algorithmic beat rotation with the EchoNest API&lt;br /&gt;
&lt;br /&gt;
[[Category:Python]]&lt;br /&gt;
[[Category:Lua]]&lt;br /&gt;
[[Category:Assembler]]&lt;/div&gt;</summary>
		<author><name>1.162.96.214</name></author>
	</entry>
</feed>