music concrete at it's finest not only does this push the boundaries of the form and asthetic of music, but this also pushing the boundaries of what it means to be a "musician"
I found this in 4-ish years ago and never found it again. Thanks to the God of Thunder for blessed me to come across it again. This is so far away from their time. It is splendid!
@jormangundi Same here! I have a long experience with tiny softsynths and still the thought never occurred to me that binary arithmetic with subdivided time values would result in sensible rhythmic and musical structures. It wasn't until I saw the 23-byte C-64 demo "Wallflower" by 4mat that I realized this possibility and started to play around with it.
+Francis Baptiste I think the program just asks the chip to "dial" certain "numbers" (sounds) on the old basic sound processor multiplied by a certain number of times . Hence the numbers and the x multiplier sign. Dont know how they emulate old soundcards / sound chips though.
+Francis Baptiste The scripts output raw 8-bit 8k PCM. A PCM is basically just a list of positions of the speaker membrane. 8-bit means there are 256 positions, and 8k means there are 8000 samples in a second. On how the actual scripts sound good... There isn't any research on that and I would love to read some!
My favorite is the one from 2:56. Cool to see that 64b to 256b will have at least somewhat interesting music now, this is important stuff you've stumbled upon. :)
@swmicro1 It's called source code length optimization, so it definitely is intentional. Every C compiler that cares about backward compatibility allows omitting the type in these cases, despite what today's standards require.
Can anyone please clarify for me what the >> does to the t value. As far as I can see, the t manifests itself as a frequency when translated to a keyboard (I'm using the 8bit synth in Caustic 3 for Android), and multiplying it give intervals wrt the base note. e.g. t*3/2 gives a 5th above, etc., but I don't know what the & or >> do do it.
@reconstructiv Some of the formulas in these videos have been succesfully implemented on Atari VCS (search "generative music on the atari 2600"). For something more tied to the register set of the soundchip, you can e.g. take the VIC-20 code from my article "16-byte frontier" as the basis and substitute a SID address there. (I've tried it, it works fine). 4mat has also some standalone C-64 bit-twiddler music besides Wallflower.
These are really intersting experiments... Just a little bit of mathematical chaos leads to nice variety while still keeping musical patterns that a human brain can identify and appreciate.
Have any of you ever thought of perhaps using these in a signal transmitted through SETI, or by a similar organization? The Algorithmic patterns seen in each of the tunes, if received by an extraterrestrial Intelligence, may in fact be recognized as such. Where all three iterations would have to be sent. Only curious.
weird but cool, where can i get software to do that, i want to create "digital gospel hymns" using not a keyboard, but a computer, now that would sound pretty dispite it being eight bit eight KHZ audio lol. i think how great thou art would be a cool sounding hymn at 8 bit nintendo level lol
@Sphereal I think many of Aphex Twin's songs could have been composed using samples of the output of these simple programs, re-arranged in more "harmonic" ways.
@irrlichtproject Plain platform-neutral C code with >=32-bit integers. Most of them simple enough for 8-bit platforms to synthesize, however. If you want something similar for the VIC-20, google "Soundflower VIC-20".
You need to know the C binary and arithmetic operators and their precedence. This info can be found on the web e.g. en.cppreference.com/w/c/language/operator_precedence. You also need to know that t is an integer and "for (t=0;;t++) putchar(...)" is an infinite loop, incrementing t by 1 each iteration. putchar() sends the result of the formula to standard output (i.e. console), in each iteration of the loop.
@P55CxE9 Yeah. Exactly it takes a signed 32-bit integer about 74 hours to reach maximum (and throw an overflow exception on higher-level languages) and 149 hours to return to zero at 8 kHz sample rate. 16-bit integers loop just for 8.192 seconds. ;)
Not a .bin - Linux binary executables don't have any extension. a.out is the default output file name of the compiler. You need ./ in front of the file name to run it. I've found out how to hear the sound on Lubuntu after compiling. On my laptop, piping to a device under /dev doesn't work, but piping to the aplay app does: ./a.out | aplay That should work if you have ALSA installed (I think).
+guilherm502 all of what Robert said is helpful, but to explain more "piping" refers to the Unix shell's killer feature whereby the output of one program can be used as the input for another program. By putting a | between your program and aplay, you're telling aplay to handle the output of the program as fast as it can, which is 8 bits 8000 times a second by default.
This didn't work with my version of SoX for some reason, I don't know why. I took a look at the manual and came up with this command: gcc [PROGRAM] -o beat; ./beat | play -c 1 -b 8 -r 8k -e unsigned-integer -t raw -
so cool especially today. just create a c text file like: #include void main(int t){for(t=0;;t++)putchar(t*((t>>9|t>>13)&25&t>>6));} compile with gcc as follows: gcc -o music music.c run and pipe the output to aplay as follows: gcc -o music music.c works like a charm :)
Тимур Губаев Also try a (t10)&(t>>2)... Change digit in a last bit shifting operator(in this case it's 2) and you will get more gapes between notes... something really interesting
music concrete at it's finest
not only does this push the boundaries of the form and asthetic of music, but this also pushing the boundaries of what it means to be a "musician"
0:46 is absolutely sick
hi
Reminds me of Jerobeam Fenderson videos. Now I want to see an oscilloscope visualization lol
80s video game music.
Another google music
Dude. Sick tunes.
With just a bit of bit shifting.
Awesome.
I found this in 4-ish years ago and never found it again. Thanks to the God of Thunder for blessed me to come across it again.
This is so far away from their time. It is splendid!
Music of the future. Mark my words.
I am from 1 year ahead and no.
I am from 10 years ahead and yes.
You're from taking being full of shit to the next level.
cyberconsumer I am the shit, and I am taking things to the next level.
thefleyeingmonk Sure.
0:46 …HOLY shit, this sounded pretty cool
@jormangundi Same here! I have a long experience with tiny softsynths and still the thought never occurred to me that binary arithmetic with subdivided time values would result in sensible rhythmic and musical structures. It wasn't until I saw the 23-byte C-64 demo "Wallflower" by 4mat that I realized this possibility and started to play around with it.
Absolutely love to experiment with sound and code. Any windows programs for this?
it changes pretty naturally and sounds composed, brilliant
Now I won't be able to stop humming it all day long.
ya humming still?
This is super cool but I don't understand how it works. Is there any reading I can check out about this?
+Francis Baptiste I think the program just asks the chip to "dial" certain "numbers" (sounds) on the old basic sound processor multiplied by a certain number of times . Hence the numbers and the x multiplier sign. Dont know how they emulate old soundcards / sound chips though.
+Francis Baptiste The scripts output raw 8-bit 8k PCM. A PCM is basically just a list of positions of the speaker membrane. 8-bit means there are 256 positions, and 8k means there are 8000 samples in a second.
On how the actual scripts sound good... There isn't any research on that and I would love to read some!
+animowany111 You did check the links at canonical.org/~kragen/bytebeat/ , didn't you?
My favorite is the one from 2:56. Cool to see that 64b to 256b will have at least somewhat interesting music now, this is important stuff you've stumbled upon. :)
I've just used this to convince my neighbour to turn down the volume of his stereo. Just ten seconds were enough. Thanks : )
Is there any reference where I can learn the principles for writing the one-liners?
@swmicro1 It's called source code length optimization, so it definitely is intentional. Every C compiler that cares about backward compatibility allows omitting the type in these cases, despite what today's standards require.
Can anyone please clarify for me what the >> does to the t value. As far as I can see, the t manifests itself as a frequency when translated to a keyboard (I'm using the 8bit synth in Caustic 3 for Android), and multiplying it give intervals wrt the base note. e.g. t*3/2 gives a 5th above, etc., but I don't know what the & or >> do do it.
& and >> are bitwise operators. & is bitwise AND. x>>y shifts all bits of x to the right by y places.
Many of the formulas also work on Arduino.
2:57
@reconstructiv Some of the formulas in these videos have been succesfully implemented on Atari VCS (search "generative music on the atari 2600"). For something more tied to the register set of the soundchip, you can e.g. take the VIC-20 code from my article "16-byte frontier" as the basis and substitute a SID address there. (I've tried it, it works fine). 4mat has also some standalone C-64 bit-twiddler music besides Wallflower.
This is t*((t>>12|t>>8)&63&t>>4)
Just discovered this magical stuff😮
These are really intersting experiments... Just a little bit of mathematical chaos leads to nice variety while still keeping musical patterns that a human brain can identify and appreciate.
0:09 UFO
Completely blown my mind.
Have any of you ever thought of perhaps using these in a signal transmitted through SETI, or by a similar organization? The Algorithmic patterns seen in each of the tunes, if received by an extraterrestrial Intelligence, may in fact be recognized as such. Where all three iterations would have to be sent. Only curious.
As someone who is both a programmer and a musician, this is absolutely fascinating!
weird but cool, where can i get software to do that, i want to create "digital gospel hymns" using not a keyboard, but a computer, now that would sound pretty dispite it being eight bit eight KHZ audio lol. i think how great thou art would be a cool sounding hymn at 8 bit nintendo level lol
You write the software yourself, compile it with gcc.
@Sphereal I think many of Aphex Twin's songs could have been composed using samples of the output of these simple programs, re-arranged in more "harmonic" ways.
And that is how dubstep began!
EDIT: I know this comment is stupid
So wrong.
OMG awesome. I want to make a game that uses this music! I love Proc Gen!
@irrlichtproject Plain platform-neutral C code with >=32-bit integers. Most of them simple enough for 8-bit platforms to synthesize, however. If you want something similar for the VIC-20, google "Soundflower VIC-20".
@swmicro1 it's using argc as a counter instead of making a new variable...
I trying to do this in pure data, can anyone help me out ? i understand the logical operations, but i am not quite familiar to C Language. Thanks
You need to know the C binary and arithmetic operators and their precedence. This info can be found on the web e.g. en.cppreference.com/w/c/language/operator_precedence. You also need to know that t is an integer and "for (t=0;;t++) putchar(...)" is an infinite loop, incrementing t by 1 each iteration. putchar() sends the result of the formula to standard output (i.e. console), in each iteration of the loop.
@P55CxE9 Yeah. Exactly it takes a signed 32-bit integer about 74 hours to reach maximum (and throw an overflow exception on higher-level languages) and 149 hours to return to zero at 8 kHz sample rate. 16-bit integers loop just for 8.192 seconds. ;)
(
Happened to read you paper. Very cool! :D
I showed this to a friend of mine, who immediately implemented it in his custom sensor platform. See my videos for details ..
Very fascinating!
Rally hard stuff, thanks!
awesome awesomeness is awesome. btw what platform is this, vic-20?
@Sphereal I wonder whether he was inspired by this. I'm an Aphex Twin fan and I also like computer-generated music.
This shit is incredible. I'm so curious about how this works.
Sounds like the music a lot of those kids put at the start of their Minecraft videos.
True
how does it work? i dont understand
This is a sample of Aphex Twin´s newest album.
[Yes, I'm a noob]
But.... How do I 'pipe' an program in Linux?? :S
It's like: I compile it to .c, in gcc to a .bin; right?
So... what I do after?
Not a .bin - Linux binary executables don't have any extension. a.out is the default output file name of the compiler. You need ./ in front of the file name to run it.
I've found out how to hear the sound on Lubuntu after compiling. On my laptop, piping to a device under /dev doesn't work, but piping to the aplay app does:
./a.out | aplay
That should work if you have ALSA installed (I think).
+guilherm502 all of what Robert said is helpful, but to explain more "piping" refers to the Unix shell's killer feature whereby the output of one program can be used as the input for another program. By putting a | between your program and aplay, you're telling aplay to handle the output of the program as fast as it can, which is 8 bits 8000 times a second by default.
Robert Steed Fopenplop Thanks ^^
The first one sounds like dubstep
Hell yeah, this is awesome.
Fantastic!
What's so "old school" about it that sets it aside from any other part of C? He probably learned it from just about any C tutorial or book out there.
Brilliant.
Imagine an oscilloscope visualization of these
BRUTAL
.Ens Available? Really sounds great :)
2:55 sounds like some kind of portal 2 song
Reminds me of ZX Spectrum tapes
in c, int is the default type
2:57 the best
bytebeat music be like
Aphex 8-Bitwin
that would make a great mathcore album if played on guitar
Here's one that sounds exactly like music.
Hasn't repeated once at all during 66 seconds.
t * ((t>>14|t>>9)&92&t>>5)
even has an ending! :D SWEET!
Let's dance!
In the video...
Nice!
nice vid i love dubstep
Old school C.
When did you learn it?
is this skrillex?
Is that music?
They call it Dub-steps :(
Pipe to "play -r 44100 -b 8 -c 1 -s -t raw -" on modern Linuxes.
sudo apt-get install gcc sox && echo 'int main(){ for(int t;;++t)putchar(((t*("36364689"[t>>13&7]&15))/12&128)+(((((t>>12)^(t>>12)-2)%11*t)/4|t>>13)&127)); return 0;}' | gcc -xc - && ./a.out | play -r 44100 -b 8 -c 1 -e signed-integer -t raw -
Thanks!
@@nataliemreow game on!
This didn't work with my version of SoX for some reason, I don't know why. I took a look at the manual and came up with this command:
gcc [PROGRAM] -o beat; ./beat | play -c 1 -b 8 -r 8k -e unsigned-integer -t raw -
BTW, where's the source code?
beautifull stuff its like a fucking breakcore shit!!!
Here's one I came up with t*4/64|t&t/128
+gatorman22 Cool!
+gatorman22 The question is can you copyright it? haha
Numbers can't be copyrighted. :)
Before the dubstep was created
Crystal Castles [IV]
malware makers are shaking rn
this is amaze
8 bit dubstep.
wub wub wub wub wub wub wawawawawawawawa wub wub wub wub wub wub
th...this is... good
siren: (t>>6)+(t)*(t>>8)
pop like morse code : cos(t>>8)*t>>4+sin(t)
Nice
I felt like i was in a video game.that's not what i expected.
"layersandframes" has thousand times better experimental music
This caled Rave today 😂
so cool especially today.
just create a c text file like:
#include
void main(int t){for(t=0;;t++)putchar(t*((t>>9|t>>13)&25&t>>6));}
compile with gcc as follows:
gcc -o music music.c
run and pipe the output to aplay as follows:
gcc -o music music.c
works like a charm :)
to run and pipe to audio in ubuntu use:
./music | aplay
Good stuff. Blang-blang-blang-blang-blipi-didi...
if you like this kind of stuff, check out Chicago music artist Protman
Like it
@VisceralEcho It sounds better than Skrillex.
And that's Skrillex secret!
hehe - real cool!
???
Algorithmic Chip Tune
(t2)+t>>6 in a sample rate of 8kHz ))
Тимур Губаев Also try a (t10)&(t>>2)... Change digit in a last bit shifting operator(in this case it's 2) and you will get more gapes between notes... something really interesting
+Тимур Губаев I have no idea what I'm doing, send help
(t8)&(t
Put a amen break on it.
Why am I here?
why?
Put them in a BitWiz app ;)
Meshuggah.
2 bit forever
@viznut i would be very curious about doing this on C64, you know anything about that or have a link to anything?
+1
t>>3
Sounds like Skrillex.
t * ((t>>12|t>>8)) here is one i "discovered" i think