Bytebeat Web App (WIP)

A small web application to make 🔥 noise and music

Bytebeat is a genre of music where the sound is created by a formula that defines a waveform as a function of time. The genre arose from the realization that even small simple programs could produce complex and interesting music. The app is mostly complete, but still requires some proper documentation to make it more accessible. I wanted the design to reflect the simplicity and "fundamental" nature of bytebeat, hence the extremely sparse and simple UI. I tried to reflect this throughout all aspects, from interface to implementation.

Try it here.

Here is a brief overview:

             ____        __       __               __
            / __ )__  __/ /____  / /_  ___  ____ _/ /_
           / __  / / / / __/ _ \/ __ \/ _ \/ __ `/ __/
          / /_/ / /_/ / /_/  __/ /_/ /  __/ /_/ / /_
         /_____/\__, /\__/\___/_.___/\___/\__,_/\__/
               /____/ ~ WEB APP ~
        
        
        ╭──────────────────╮
        │ PROGRAM OVERVIEW │
        ╰──────────────────╯
        
        - Programs are written in reverse polish notation
        - All values are integers, eg 7 / 2 will return 3
        - The app is caSe iNsenSItive
        - Samplerate is 8,000 Hz and has a bitdepth of 8 bits, by default
        
        
        ╭───────────────────────╮
        │ OPERATORS AND METHODS │
        ╰───────────────────────╯
        
        T          Time                          T (0-2147483647)
        
        +          Addition                      1 2 + (3)
        -          Subtraction                   2 1 - (1)
        *          Multiplication                2 2 * (4)
        /          Division                      7 2 / (3)
        %          Modulo                        7 2 % (1)
        
        &          AND                           1 0 & (0)
        |          OR                            1 0 | (1)
        ^          XOR                           1 1 ^ (0)
        ~          NOT                           1 ~ (0)
        >>         Shift bits right              2 1 >> (1)
        <<         Shift bits left               1 1 << (2)
        
        ABS        Absolute value                0 5 - ABS (5)
        MIN        Smallest of two values        1 2 MIN (1)
        MAX        Largest of two values         1 2 MAX (2)
        SIGN       Return sign of value          999 SIGN (1)
        
        POW        Exponentiation                2 3 POW (8)
        MULT       Multiply a value by itself    8 MULT (64)
        SWAP       Swap order in stack           1 2 SWAP (2 1)
        SIZE       Current stack size            1 2 3 4 SIZE (4)
        GET        Get item at stack position    1 2 3 4 3 GET (1)
        
        BREAK      End execution here            1 BREAK 2 3 (1)
        
        MOUSEX     Mouse x position
        MOUSEY     Mouse y position
        
        GYRO       Rotational speed              T GYRO *
        GYROX         In X axis
        GYROY         In Y axis
        GYROZ         In Z axis
        
        ACCEL      Speed                         T ACCEL *
        ACCELX        In X axis
        ACCELY        In Y axis
        ACCELZ        In Z axis
        
        VOL        Set volume                    50 VOL
                   Value between 0-100
        
        HZ         Set sample rate               8000 HZ
                   Range 8,000-96,000 Hz
        
        BIT        Set bit depth                 8 BIT
                   Accepts between 1-16 bits
        

If you are interested in learning more about bytebeat, I recommend checking out these resources: