Today's formulaic music.
January 23, 2012 5:14 PM   Subscribe

Discover bytebeat. A new genre of algorithmic music has been developed by demoscene coder viznut, a.k.a. PwP. Sharing genes with chiptunes and facilitated by bitwise operators, bytebeats are decidedly non-traditional music created by short, programmatic formulas. Read about computationally minimal art, the aesthetic that spawned bytebeat. Try your hand at composing (some helpful examples). Read an explanation of how the formulas work. A few more pieces.
posted by I've wasted my life (48 comments total) 88 users marked this as a favorite

 
Very interesting, reminds me of Mozart's dice game.
posted by lubujackson at 5:26 PM on January 23, 2012 [3 favorites]


I wasn't going to like this, until I started playing with the "your hand" link.

While I don't see this in its pure form taking off as a genre, as a way of generating stuff to incorporate into other music it's awesome.
posted by Foosnark at 5:29 PM on January 23, 2012 [2 favorites]


Alex McLean (yaxu) DJs by live coding Haskell
posted by jeffburdges at 5:33 PM on January 23, 2012 [2 favorites]


I'd imagine that one day all the kids will encode the music itself in their favorite Turing complete dance language, but this project hasn't gotten off to such auspicious beginnings.
posted by jeffburdges at 5:36 PM on January 23, 2012 [2 favorites]


Great title for the (great) post, btw.
posted by not_that_epiphanius at 6:06 PM on January 23, 2012


http://wurstcaptures.untergrund.net/music/?oneliner=((t*(t%3E%3E8%7Ct%3E%3E9)%2646%26t%3E%3E12))%5E(t%26t%3E%3E13%7Ct%3E%3E6)&oneliner2=((t*(t%3E%3E9%7Ct%3E%3E8)%26144%26t%3E%3E12))%5E(t%26t%3E%3E13%7Ct%3E%3E6)&t0=0&tmod=0&duration=60&separation=100&rate=22050

This was modified from one of the examples. It just keeps evolving... 60 seconds isn't enough really.

I may have to amend my previous statement.
posted by Foosnark at 6:08 PM on January 23, 2012 [1 favorite]


Ditto foosnark.
posted by outlandishmarxist at 6:19 PM on January 23, 2012


Wow, awesome post. I'm particularly impressed by the Javascript compose-yourself page, neat use of modern web tech. Allow me to pretty-print his generator code:
#define FORMULA ((t<>>7)&t>>12)) | t>>(4-(1^7&(t>>19))) | t>>7

main(t) {
  for(;;t++)
    putchar(FORMULA);
}
Basically for any given FORMULA, the song generated is a bunch of 8 bit samples played at 8000 samples / second. Sample N is the result of applying the formula to the number N and writing it out as an unsigned 8 bit number. Really is simple. The visualization in the compose tool is confusing because it looks 2 dimensional, but really it's one dimensional going top to bottom, then left to right. Each pixel is a single sample, with the value of the sample being plotted from black to red.

My old colleague Nick Montfort does similar minimalist generative art, only for written poems.
posted by Nelson at 6:21 PM on January 23, 2012 [3 favorites]


Cool.
posted by aconcagua at 6:27 PM on January 23, 2012


Livecoding in haskell in emacs, no less. Because musical keyboards are chorded, not modal.
posted by DU at 6:33 PM on January 23, 2012 [3 favorites]


(t>>6)&(2*t)&(t>>1)

I like this one. It's probably already been found in one of the links, but it makes a pretty pattern and a neat loop.
posted by Grimgrin at 6:35 PM on January 23, 2012 [1 favorite]


I like this one (a variation on Grimgrin's):
(t>>6)&t|t>>5|t>>11
posted by BungaDunga at 7:02 PM on January 23, 2012 [1 favorite]


Fascinating... I've always thought that one way people who don't like the RIAA, etc, could get back at them would be to promote algorithmic music. How can you claim copyright on something that sounds different every time you hear it? A lot of electronica could probably done this way.
posted by delmoi at 7:03 PM on January 23, 2012


can't resist sharing one of mine (stereo version)
posted by jepler at 7:05 PM on January 23, 2012


Very related: Ibniz (Homepage) - a virtual machine, geared towards live programming, that lets you make...interesting demos...based on a sequence of characters. There's even a Javascript implementation, although that doesn't support the sound channel yet.
posted by Jimbob at 7:07 PM on January 23, 2012 [1 favorite]


This could be implemented in Pipe Logic reasonably easily, actually...
posted by BungaDunga at 7:09 PM on January 23, 2012


Here's Grimgrin's in the right channel, BungaDunga's in the left channel
posted by delmoi at 7:11 PM on January 23, 2012 [1 favorite]


Ibniz seems like it would be a beast for livecoding if you are drawn to its specific aesthetic. I know I'm hoping it takes off as a platform, I love flashy blinky stuff that sounds like a fax machine being digested.
posted by I've wasted my life at 7:17 PM on January 23, 2012 [1 favorite]


a.k.a. PwP.

That link was to an unexpanded Vic 20 demo. A Vic 20 demo.
posted by Ad hominem at 7:35 PM on January 23, 2012 [1 favorite]


Is it really algorithmic music when it doesn't sound any different than the explicitly composed stuff?
posted by rhizome at 7:38 PM on January 23, 2012


We send fuckings to all who suggested we should start using RAM expansions.
posted by ignignokt at 7:39 PM on January 23, 2012 [1 favorite]


Here's my Also sprach Zarathustra homage.
posted by ignignokt at 8:03 PM on January 23, 2012 [2 favorites]


That is rather funky, BungaDunga.
posted by ignignokt at 8:04 PM on January 23, 2012


This made my night, thank you.
posted by oceanjesse at 9:23 PM on January 23, 2012


I love it!
posted by scose at 9:24 PM on January 23, 2012


(t>>6)&t*2|t*1.5>>5|t*3>>11

BungaDunga's with some syncopation.
posted by Foosnark at 10:46 PM on January 23, 2012


"Is it really algorithmic music when it doesn't sound any different than the explicitly composed stuff?"

algorithmic is not a sound, it is a method (just as hyperreal acrylic painting is not photography).
posted by idiopath at 11:03 PM on January 23, 2012


Something I want to sample for a synth chord:

http://wurstcaptures.untergrund.net/music/?oneliner=((4%2Bt)*(128-t)*(1%2B(t%3E%3E15)))%26(t%3E%3E12)%2661&oneliner2=((4%2Bt)*(128-t)*(1%2B(t%3E%3E15)))%26(t%3E%3E8)%2661&t0=0&tmod=0&duration=30&separation=100&rate=8000
posted by Foosnark at 11:24 PM on January 23, 2012


Nevermind, that wasn't the correct link, Chrome has crashed, and I can't delete/edit my own comment. Bluehg.
posted by Foosnark at 11:27 PM on January 23, 2012


For anyone who wants to sample or use the wav files that wurstcaptures.untergrund.net/music/ produces, in firefox you can right click the player and have the option to download the wav. I know it took a moment for me to figure it out.
posted by I've wasted my life at 11:31 PM on January 23, 2012 [1 favorite]


I reposted this over at CodeGolf.SE, who've several past music contests, including Markov Chain Beatbox Generator.
posted by jeffburdges at 2:22 AM on January 24, 2012


..one way people who don't like the RIAA, etc, could get back at them would be to promote algorithmic music. How can you claim copyright on something that sounds different every time you hear it?

With software patents.
posted by DU at 4:29 AM on January 24, 2012 [1 favorite]


a beat
posted by GenericUser at 6:26 AM on January 24, 2012 [1 favorite]


8-bit doom.
posted by Jairus at 6:31 AM on January 24, 2012 [1 favorite]


Ooh. Classy use of the ternary operator there, Jairus.

Evolving drone. Best I've come up with so far. This is fun but tricky.
posted by nebulawindphone at 7:50 AM on January 24, 2012


Sounds like Philip Glass dubstep. 
posted by Johnny Wallflower at 8:34 AM on January 24, 2012 [1 favorite]


Not that that's a bad thing.
posted by Johnny Wallflower at 8:54 AM on January 24, 2012


This is a horrifyingly little addictive toy.
posted by Grimgrin at 5:25 PM on January 24, 2012 [6 favorites]


Regarding the link describing how it works - the biggest thing it misses is that a non-bandlimited sawtooth wave is an infinite series of harmonics (first harmonic at x amp, second at 1/2x, third at 1/3x etc.). If an audible harmonic is over 1/2 of the sampling rate, it folds over modulo that frequency back into the representable range.

If your sawtooth frequency is 900 at 4k sr you have harmonics as follows:
raw: 900 1800 2700 3600 4500...
actual: 900 1800 700 1600 500

this nyquist foldover is important because it introduces frequency components that often will be harmonically unrelated to the original signal (aka out of tune or metallic).
posted by idiopath at 5:31 PM on January 24, 2012 [2 favorites]


Dammit I fail at linking. This one.
posted by nebulawindphone at 7:03 PM on January 24, 2012


OK I need to qualify that.

I just realized that the t%n method cannot make a frequency of 900 hz when the sr is 4000.

In fact, since frequency of a cycle of N is sr/N, this method basically imposes a rudimentary key signiture based on the sr, insuring that all folded over harmonics remain harmonically related to the cycle length.
posted by idiopath at 7:14 PM on January 24, 2012


a beat

Combined with (t&t>>8) to make a NIN backing.
posted by weston at 2:53 PM on January 28, 2012 [1 favorite]


170 seconds 8-bit noisy ambient beat, wait for the hook :)
http://entropedia.co.uk/generative_music_1.2_beta/#b640yixMTUyAAJNe40SOzuzOCBhaKRbUgOkjWo0SrQ0QMKWIK6hsaaakakaiGWiqalrqGmlgVWLnV2JZhx%2BnfommlqmAA%3D%3D

I have tried rendering this out as a wave file so I could mess with it some more, BUT it comes out way to noisy with a lot of high frequency effects which aren't in the web applet. Anyone know how I can filter this to make it work?
posted by darkfred at 6:26 PM on January 31, 2012 [1 favorite]


Song now in link form
posted by darkfred at 6:27 PM on January 31, 2012


That's pretty great, darkfred. It's like a whole song with development. I took a crack at pretty-printing your music:
(t < 520000) ? 
    (t>>6 ^ t>>12 - t | 
     t>>2 | 
     (t * ((t>>9 | t>>13) & 25 & t>>14))
     - 1)
:
   ((t>>6 ^ t>>12 - t | 
     t>>2 | 
     (t>>t) ^ 
     (t * ((t>>9 | t>>13) & 25 & t>>14))
     - 1)
    / 4) * 5
Has someone written up a coherent explanation of how to manage large structure in the music vs. timbre of specific sounds? Obviously that t < 520000 test is a simple A/B structure, but there's a lot more complexity in timescales that t is operating at.
posted by Nelson at 8:51 AM on February 1, 2012


Nelson: I too was astounded by the fact that it had structure. Mostly because that is what I was trying to do and it actually worked. It might not be great music, but it sounds like real music.

It could still be luck but, i started with a simple tune, The default one in the applet and played around with the numbers until I had what sounded like an 8 bit pop style melody line. It had a bunch of silent areas, i tried to accentuate this. I came up with 2 of these variations then a vibrato/beat line and combined them all together with various operators and shifts (to get the interesting parts back in range).

In an hour of tweaking or so I came up with something that sounded infinitely more complex then what I started with. But this part was mostly trial and error. I am still playing around and can control it and predict effects pretty well now. Its giving me a crash course in music theory)

I am sure that formula could be optimized quite a bit seeing it printed out like that. The A/B Structure is done by essentially leveling it to a different range This works because the applet apparently keeps the numbers full (integer) range until it actually outputs the 8 bit value. So you can hide wholly different tunes in the out of range values.

I have made a couple songs that use this to continually evolve, whereas this formula has a period of 65 seconds. I haven't found anything infinite and musical yet but the formula (t>>6+t>>12)&255*((t>>14))*t>>2 produces a near infinite series of annoying chords that appears to have a minimal period of at least 2.5 hours. Prime numbers can probably get you periods outside of integer range (1000 hrs) and infinite progression.
posted by darkfred at 1:46 PM on February 1, 2012


I'm not good enough at math to grasp how the formulae shape the tune, but I plugged in all 42s and got something quite exotic. Mirror the function in the right channel and tweak it a bit (t * ((t>>7|t>>8)&24&t>>42)) and it becomes positively anthemic. Very cool!
posted by Rhaomi at 7:01 PM on February 11, 2012 [1 favorite]


Livecoding in haskell in emacs, no less. Because musical keyboards are chorded, not modal.

Unless you're making 8-bit covers of Miles Davis, in which case you do probably want to use vim.
posted by en forme de poire at 12:41 PM on February 21, 2012


« Older A history of "pearl clutching."...  |  One Hour Per Second... Newer »


This thread has been archived and is closed to new comments