this is a free to use BPM pulsing you can use in your rhythm games! its like that effect on orbs of how they pulse, how the osu! logo pulses, etc. it can also be used to time animations to the BPM. you can adjust the BPM multiplier to see how it will stay in synch with different BPM types (1x, 2x, 3x, and 4x) VALUES: _OFFSET: this is the distance between when the audio file starts, and when the music ACTUALLY starts. this value is in MS. _BPM: this is the BPM of the song. BPM stands for "beats per minute" _BPMS: this is a bit of an odd thing to describe so it stands for... "distance between 1/4 snap of a whole note for the given BPM in MS" this is used to time the pulses to the music. _BEAT_DIV: this is the beatdivider of the map. this can be found by multiplying the key beatsnap. IE, 1/4 is 4. 2/3 is 6, etc. [how does it work?] so we start with getting our values. BPM can be gotten off of the internet, but offset needs to be found manually through trial and error (although it only takes 30 seconds to find) offset can be found by setting the value to a number, and seeing if the first pulse is in time with the music. for this song, it was 0 since i got it sourced from Camellia. next, we get BPMS. BPMS is really simple to get despite it's long full name. the value is as: (((1/(BPM))*60)*1000) next, we need to fence the pulse based on the timers position relative to the closest time within the given value for the BPMS, the time, the beatsnap, and the offset. the beatsnap can be found by dividing 4 by the beatsnap. we will also need to invert this for the other side's fencing. so now we need to check the two time positions for the BPMS based on the time. first we need to adjust it to being JUST the section, so we will set the value to be a decimal by getting the difference of such: (floor[TIME - OFFSET)/BPMS]) - ((TIME - OFFSET)/BPMS) so now we will just mirror it for the otherside to get the inverse fencing so we will have an ease-in / ease-out effect, and add an or statement to check for both values. next, we run an iterator for 14 potential values, and check to see where the size is by setting the size to: ([MIN SIZE] + [(I) * (SIZE CHANGE)]) here is a project that uses this: https://scratch.mit.edu/projects/1067424534 hashtags so people wont be in pain when trying to make this themselves: