Enter a value between
0 [Note 1] and 255 for
each colour component...
Red Green Blue
...and/or use sliders [Note 2] :

Click to hide the above panels

Click to pulse colour [Note 3]
Upper limit
Lower limit
Increment size [Note 4]
Increments/second [Note 5]
Simultaneous start/stop [Note 6]        

Option: Enter an array for a pre-defined pulse pattern below, then...

Some sample arrays (copy and paste into above input box, modifying if desired):

Greyscale (grey...white...black...grey...; R,G,B in phase, same frequency etc.). These are just the default settings with the starting colour changed to mid-grey. The same pulse pattern, but starting at black, can be initiated by simply clicking the "Start pulse pattern..." button (or using "sim start" (Note 6)) with default settings (nothing needed in input box.

Blues...green...oranges...reds...violets repeating each cycle (R,G,B out of phase)

Green...dark yellow...green (setting blue increment size of zero to prevent it running; alternative = both limits on blue at zero, but this is not a good program state)

Slow red, medium green, fast blue



Red--green half-range increments, off-phase

Green and blue 1/3 cycle ahead of red (if use the "Start pulse pattern..." button, which starts all 3 'going forward'). To start the blue in reverse, so that it is 1/3 ahead of green and 2/3 ahead of red (equivalent to 1/3 behind), i.e. having the 3 colours equally spaced on the cycle: instead, click the "Sim Start Setup" button, then red >, green > and blue <, followed by "Start Chosen Colours".

Note 1: (Or leave box blank.) This panel can be used to preview the appearance of a given combination of red/green/blue values or set/reset values during an ongoing 'pulse' run.

Note 2: As for first panel (Note 1), but click to select and(a) drag, or (b1) release and use right/left device keyboard scrolling keys to move one increment at a time by (repeated) key presses, or (b2) move rapidly by holding the key down. 'Range' sliders not supported in versions of Internet Explorer below 9 (where they are rendered as another set of text input fields).

Note 3: Click to pulse colour back and forth through an intensity range defined by the 'limit' values in the two rows below. Left buttons (right-facing arrow) of each pair start colour intensity increasing (until reversal at upper limit) and vice-verse.

Note 4: You can increase the size of the colour intensity increments from the default value of 1 (which goes through all 255 levels of colour intensity; values less than 1 can also be chosen; although fractional intensity levels will presumably not be displayed, the animation will be slowed.)
Caution: If you have photosensitive epilepsy there might be a hazard from setting large increment values that cause the display to flash rapidly at high contrast, especially for red; e.g. the maximum value (250) would alternate between full intensity red and black approx. 25 times/second at the default increments/second setting of 50 (row below) and lower/upper limits at default 0/250.

Note 5: You can adjust the speed of incrementing (though higher values may not run as fast as expected (due to system limitations(?); also, a value of 0 runs at maximum speed instead of not at all, for technical reasons).

Note 6: To start animations for two or all three colours simultaneously: (1) click on the "Sim Start Setup" button; (2) click a "pulse" (coloured triangle) button for two or all three of the colours (chosen buttons will now appear 'recessed'); then re-click the sim start button, now labelled as "Start Chosen Buttons". To stop all animations simultaneously, click on the "Stop All" button.

Note 7: Limitation - pulses are started in the 'forward' (increasing colour intensity) direction only.

Notes on pulses as 'waves' -- Click here to show

~~ Each pulser transitions a colour's intensity between the lower (min) and upper (max) colour intensity limits and back again linearly with respect to time. Let increment size ('inc' in the associated JavaScript) mean the number of intensity levels per animation step. (*If inc <1 , so that fractional colour level values are generated during the animation, I presume these are not actually rendered on the screen until at least 1 level on the scale of 0 to 255 has been passed after multiple passes through the 'more'/'less' script loop.) If inc is small*, e.g. the default 1, the oscillations could be thought of as approaching a '(symmetrical) triangle wave' with... Amplitude = intensity level range from min to max, = 0-255 for full (default) range Each cycle = [min to max to min] (or equivalent at a different phase) Period: i.e. seconds/cycle e.g. at 'speed' (as defined in script as increments/second) of default 50, and increment size (levels/increment; 'inc' in the script) of default 1, 1 cycle should take 2x255/50 = ~10 seconds i.e. Period = (2x range)/(speed x inc) Frequency, i.e. cycles/second, = (speed x inc)/(2x range) ~~ If 2 or 3 colours are pulsing (cycling) simultaneously, their relative phase will obviously affect the resulting animation. E.g. if all 3 colours are in phase and cycling at the same increment size and speed, the output will oscillate from black through grey to white and back. ~ In the extreme case of inc = 255, the system is simply a square wave, => simple flashing between max for half period and min for half period, e.g. black for X seconds, red for X seconds ~~ (Could code 'more'/'less' colour loops equivalently as a mathematical function E.g. moreRed() would use r = r_min + i*r_inc where 'i' is an iterator incremented by r_inc each cycle of loop) ~~ Might try to add option for ~ sawtooth and reverse-sawtooth waveform ~ sine waveform ~~ Could make colour-time-distance version...i.e. adding distance by having each pixel column on the horizontal axis of the display box be pulsed at a phase delay relative to its neighbours