Bytebeat: Experimental music from very short C programs

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 ต.ค. 2024

ความคิดเห็น • 161

  • @lilchinesekidchen
    @lilchinesekidchen 11 ปีที่แล้ว +26

    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"

  • @yegorpetrov
    @yegorpetrov 9 ปีที่แล้ว +53

    0:46 is absolutely sick

    • @sophi4
      @sophi4 2 ปีที่แล้ว

      hi

    • @Rudxain
      @Rudxain 2 ปีที่แล้ว +1

      Reminds me of Jerobeam Fenderson videos. Now I want to see an oscilloscope visualization lol

    • @duszeksmsaczek6394
      @duszeksmsaczek6394 ปีที่แล้ว

      80s video game music.

    • @user-Cimel034
      @user-Cimel034 2 หลายเดือนก่อน

      Another google music

  • @edo9k
    @edo9k 9 ปีที่แล้ว +22

    Dude. Sick tunes.
    With just a bit of bit shifting.
    Awesome.

  • @thedawnofslayer
    @thedawnofslayer 5 ปีที่แล้ว +6

    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!

  • @WeezyBestRapperAliv1
    @WeezyBestRapperAliv1 10 ปีที่แล้ว +32

    Music of the future. Mark my words.

  • @leftintheoxafire
    @leftintheoxafire 3 หลายเดือนก่อน +2

    0:46 …HOLY shit, this sounded pretty cool

  • @viznut
    @viznut  13 ปีที่แล้ว +7

    @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.

    • @damianmandich8723
      @damianmandich8723 7 ปีที่แล้ว

      Absolutely love to experiment with sound and code. Any windows programs for this?

  • @ShitCrap
    @ShitCrap 13 ปีที่แล้ว +2

    it changes pretty naturally and sounds composed, brilliant

  • @khoobaz
    @khoobaz 13 ปีที่แล้ว +2

    Now I won't be able to stop humming it all day long.

  • @francisbaptistemusic
    @francisbaptistemusic 9 ปีที่แล้ว +9

    This is super cool but I don't understand how it works. Is there any reading I can check out about this?

    • @janhansen5618
      @janhansen5618 8 ปีที่แล้ว

      +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.

    • @animowany111
      @animowany111 8 ปีที่แล้ว +3

      +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!

    • @viznut
      @viznut  8 ปีที่แล้ว +1

      +animowany111 You did check the links at canonical.org/~kragen/bytebeat/ , didn't you?

  • @moozooh
    @moozooh 13 ปีที่แล้ว +2

    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. :)

  • @xyxy1024
    @xyxy1024 12 ปีที่แล้ว

    I've just used this to convince my neighbour to turn down the volume of his stereo. Just ten seconds were enough. Thanks : )

  • @rafaelpuyana
    @rafaelpuyana 6 ปีที่แล้ว +2

    Is there any reference where I can learn the principles for writing the one-liners?

  • @viznut
    @viznut  13 ปีที่แล้ว +1

    @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.

  • @johnvarney3750
    @johnvarney3750 10 ปีที่แล้ว +1

    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.

    • @BobsBand
      @BobsBand 9 ปีที่แล้ว

      & and >> are bitwise operators. & is bitwise AND. x>>y shifts all bits of x to the right by y places.

  • @JendaLinda
    @JendaLinda 8 ปีที่แล้ว +2

    Many of the formulas also work on Arduino.

  • @Fisterkoo
    @Fisterkoo 2 ปีที่แล้ว +3

    2:57

  • @viznut
    @viznut  12 ปีที่แล้ว +2

    @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.

  • @hellf.o
    @hellf.o 7 หลายเดือนก่อน

    Just discovered this magical stuff😮

  • @EricFontaineJazz
    @EricFontaineJazz 13 ปีที่แล้ว

    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.

  • @unknownunknownseries2098
    @unknownunknownseries2098 7 ปีที่แล้ว +3

    0:09 UFO

  • @trianglemangler
    @trianglemangler 13 ปีที่แล้ว

    Completely blown my mind.

  • @twitchalmighty
    @twitchalmighty 13 ปีที่แล้ว

    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.

  • @GreenCauldron08
    @GreenCauldron08 6 ปีที่แล้ว +2

    As someone who is both a programmer and a musician, this is absolutely fascinating!

  • @HurricaneSondra
    @HurricaneSondra 8 ปีที่แล้ว

    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

    • @BobsBand
      @BobsBand 8 ปีที่แล้ว +1

      You write the software yourself, compile it with gcc.

  • @jarblewarble
    @jarblewarble 13 ปีที่แล้ว

    @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.

  • @FairPlay137
    @FairPlay137 8 ปีที่แล้ว +16

    And that is how dubstep began!
    EDIT: I know this comment is stupid

  • @ibolrecords
    @ibolrecords 11 ปีที่แล้ว +1

    OMG awesome. I want to make a game that uses this music! I love Proc Gen!

  • @viznut
    @viznut  13 ปีที่แล้ว

    @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".

  • @sikthehedgehog
    @sikthehedgehog 13 ปีที่แล้ว

    @swmicro1 it's using argc as a counter instead of making a new variable...

  • @viniciusfernandes9820
    @viniciusfernandes9820 10 ปีที่แล้ว

    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

    • @BobsBand
      @BobsBand 9 ปีที่แล้ว

      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.

  • @D0Samp
    @D0Samp 13 ปีที่แล้ว

    @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. ;)

  • @xudongw
    @xudongw 8 ปีที่แล้ว

    Happened to read you paper. Very cool! :D

  • @torpor
    @torpor 13 ปีที่แล้ว +1

    I showed this to a friend of mine, who immediately implemented it in his custom sensor platform. See my videos for details ..

  • @OLIV3R_YT
    @OLIV3R_YT 9 หลายเดือนก่อน

    Very fascinating!

  • @SomFunk
    @SomFunk 13 ปีที่แล้ว +1

    Rally hard stuff, thanks!

  • @irrlichtproject
    @irrlichtproject 13 ปีที่แล้ว

    awesome awesomeness is awesome. btw what platform is this, vic-20?

  • @jarblewarble
    @jarblewarble 13 ปีที่แล้ว

    @Sphereal I wonder whether he was inspired by this. I'm an Aphex Twin fan and I also like computer-generated music.

  • @jimkeen7674
    @jimkeen7674 6 ปีที่แล้ว

    This shit is incredible. I'm so curious about how this works.

  • @Kevin2341
    @Kevin2341 9 ปีที่แล้ว +13

    Sounds like the music a lot of those kids put at the start of their Minecraft videos.

  • @haras.498
    @haras.498 7 ปีที่แล้ว

    how does it work? i dont understand

  • @Sphereal
    @Sphereal 13 ปีที่แล้ว

    This is a sample of Aphex Twin´s newest album.

  • @guilherm502
    @guilherm502 10 ปีที่แล้ว

    [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?

    • @BobsBand
      @BobsBand 9 ปีที่แล้ว +1

      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).

    • @Fopenplop
      @Fopenplop 8 ปีที่แล้ว +1

      +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.

    • @guilherm502
      @guilherm502 8 ปีที่แล้ว

      Robert Steed Fopenplop Thanks ^^

  • @UpDvn
    @UpDvn 9 ปีที่แล้ว +7

    The first one sounds like dubstep

  • @renderful
    @renderful 13 ปีที่แล้ว

    Hell yeah, this is awesome.

  • @zdzichuBG
    @zdzichuBG 13 ปีที่แล้ว

    Fantastic!

  • @GRAYgauss
    @GRAYgauss 11 ปีที่แล้ว

    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.

  • @-ion
    @-ion 13 ปีที่แล้ว

    Brilliant.

  • @Rudxain
    @Rudxain 2 ปีที่แล้ว

    Imagine an oscilloscope visualization of these

  • @abortifacient1
    @abortifacient1 13 ปีที่แล้ว

    BRUTAL

  • @AbstractCatsMedia
    @AbstractCatsMedia 11 ปีที่แล้ว

    .Ens Available? Really sounds great :)

  • @originalname9789
    @originalname9789 7 หลายเดือนก่อน

    2:55 sounds like some kind of portal 2 song

  • @SokolasYT
    @SokolasYT 13 ปีที่แล้ว

    Reminds me of ZX Spectrum tapes

  • @xhelloselm
    @xhelloselm 12 ปีที่แล้ว

    in c, int is the default type

  • @Nixhekoo
    @Nixhekoo 7 หลายเดือนก่อน

    2:57 the best

  • @RainStorm2
    @RainStorm2 2 ปีที่แล้ว +1

    bytebeat music be like

  • @themanthemanafter5432
    @themanthemanafter5432 12 ปีที่แล้ว +2

    Aphex 8-Bitwin

  • @apolotary
    @apolotary 12 ปีที่แล้ว

    that would make a great mathcore album if played on guitar

  • @mushu5t
    @mushu5t 13 ปีที่แล้ว

    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!

  • @LordCritish
    @LordCritish 13 ปีที่แล้ว

    Let's dance!

  • @GRAYgauss
    @GRAYgauss 11 ปีที่แล้ว +1

    In the video...

  • @odaxelagnia
    @odaxelagnia 12 ปีที่แล้ว

    Nice!

  • @NightlifeSux
    @NightlifeSux 13 ปีที่แล้ว

    nice vid i love dubstep

  • @lethalsub
    @lethalsub 11 ปีที่แล้ว

    Old school C.
    When did you learn it?

  • @fffmmm22
    @fffmmm22 12 ปีที่แล้ว

    is this skrillex?

  • @sosugarplumfairy
    @sosugarplumfairy 10 ปีที่แล้ว +1

    Is that music?

    • @TheMRTIMBUK2
      @TheMRTIMBUK2 9 ปีที่แล้ว +1

      They call it Dub-steps :(

  • @briancannard7335
    @briancannard7335 6 ปีที่แล้ว +1

    Pipe to "play -r 44100 -b 8 -c 1 -s -t raw -" on modern Linuxes.

    • @briancannard7335
      @briancannard7335 6 ปีที่แล้ว

      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 -

    • @nataliemreow
      @nataliemreow ปีที่แล้ว +1

      Thanks!

    • @briancannard7335
      @briancannard7335 ปีที่แล้ว

      @@nataliemreow game on!

    • @nataliemreow
      @nataliemreow ปีที่แล้ว

      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 -

  • @jarblewarble
    @jarblewarble 12 ปีที่แล้ว

    BTW, where's the source code?

  • @kumodexxx
    @kumodexxx 12 ปีที่แล้ว

    beautifull stuff its like a fucking breakcore shit!!!

  • @gatorman22
    @gatorman22 9 ปีที่แล้ว +2

    Here's one I came up with t*4/64|t&t/128

    • @FairPlay137
      @FairPlay137 8 ปีที่แล้ว

      +gatorman22 Cool!

    • @Char10tti3
      @Char10tti3 8 ปีที่แล้ว +1

      +gatorman22 The question is can you copyright it? haha

    • @JS_SN_UQAU
      @JS_SN_UQAU 7 ปีที่แล้ว

      Numbers can't be copyrighted. :)

  • @tesdancem
    @tesdancem 12 ปีที่แล้ว

    Before the dubstep was created

  • @MegaPuffycat
    @MegaPuffycat 11 ปีที่แล้ว +1

    Crystal Castles [IV]

  • @Miz_Miz_
    @Miz_Miz_ 2 ปีที่แล้ว

    malware makers are shaking rn

  • @felicechan5794
    @felicechan5794 11 ปีที่แล้ว

    this is amaze

  • @samisyosam
    @samisyosam 13 ปีที่แล้ว +1

    8 bit dubstep.
    wub wub wub wub wub wub wawawawawawawawa wub wub wub wub wub wub

  • @chywawii64
    @chywawii64 12 ปีที่แล้ว

    th...this is... good

  • @Clancydaenlightened
    @Clancydaenlightened 10 ปีที่แล้ว +1

    siren: (t>>6)+(t)*(t>>8)

  • @qilingzhou4403
    @qilingzhou4403 11 ปีที่แล้ว

    I felt like i was in a video game.that's not what i expected.
    "layersandframes" has thousand times better experimental music

  • @igorhenrique738
    @igorhenrique738 6 ปีที่แล้ว

    This caled Rave today 😂

  • @kobityrkel5078
    @kobityrkel5078 4 ปีที่แล้ว

    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 :)

    • @kobityrkel5078
      @kobityrkel5078 4 ปีที่แล้ว

      to run and pipe to audio in ubuntu use:
      ./music | aplay

  • @TomiTapio
    @TomiTapio 13 ปีที่แล้ว

    Good stuff. Blang-blang-blang-blang-blipi-didi...

  • @JackalJayzer
    @JackalJayzer 13 ปีที่แล้ว

    if you like this kind of stuff, check out Chicago music artist Protman

  • @leeiljin63
    @leeiljin63 6 ปีที่แล้ว

    Like it

  • @MrValBar1
    @MrValBar1 13 ปีที่แล้ว

    @VisceralEcho It sounds better than Skrillex.

  • @diegototti
    @diegototti 11 ปีที่แล้ว

    And that's Skrillex secret!

  • @MagicalSunrise1984
    @MagicalSunrise1984 13 ปีที่แล้ว

    hehe - real cool!

  • @saltyman7888
    @saltyman7888 11 ปีที่แล้ว

    ???

  • @a2aaron
    @a2aaron 11 ปีที่แล้ว

    Algorithmic Chip Tune

  • @ТимурГубаев-ж8ы
    @ТимурГубаев-ж8ы 9 ปีที่แล้ว +1

    (t2)+t>>6 in a sample rate of 8kHz ))

    • @ТимурГубаев-ж8ы
      @ТимурГубаев-ж8ы 9 ปีที่แล้ว +1

      Тимур Губаев 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

    • @1234HonkyTonk1234
      @1234HonkyTonk1234 9 ปีที่แล้ว +1

      +Тимур Губаев I have no idea what I'm doing, send help
      (t8)&(t

  • @mr-dbs
    @mr-dbs 13 ปีที่แล้ว

    Put a amen break on it.

  • @hulfe2514
    @hulfe2514 4 ปีที่แล้ว

    Why am I here?

  • @zu5hii
    @zu5hii 7 ปีที่แล้ว

    Put them in a BitWiz app ;)

  • @Djentard
    @Djentard 11 ปีที่แล้ว

    Meshuggah.

  • @figarodongiovanni81
    @figarodongiovanni81 11 ปีที่แล้ว

    2 bit forever

  • @MidiFister
    @MidiFister 12 ปีที่แล้ว

    @viznut i would be very curious about doing this on C64, you know anything about that or have a link to anything?

  • @mstuomel
    @mstuomel 13 ปีที่แล้ว

    +1

  • @THE.ULTIMATE.BAMBI.FANTRACK
    @THE.ULTIMATE.BAMBI.FANTRACK 26 วันที่ผ่านมา

    t>>3

  • @VisceralEcho
    @VisceralEcho 13 ปีที่แล้ว

    Sounds like Skrillex.

  • @7Я7б
    @7Я7б 2 ปีที่แล้ว

    t * ((t>>12|t>>8)) here is one i "discovered" i think