Log in

View Full Version : A non-static test video generator


v0lt
12th April 2026, 05:54
AviSynth has BlankClip, which creates video with a uniform color fill.
AviSynth has ColorBars, which creates video with SMPTE color bars.
These filters generate static video. Filters do not require additional video or graphic files.

Are there filters that generate continuously changing video while still creating a small, constant load on the CPU?

DTL
12th April 2026, 06:44
I use AddNoise plugin if test mvtools based scripts. Noise-distorted motion also cause distortion of zero MVs. Also you can try to use Animate+Crop+Resize (or even Rotate plugin) on ColorBars output with some shift left-right or more complex.

hello_hello
12th April 2026, 10:15
You could unstatic a static image with the ManyPlus plugin, or maybe it's Pattern function will do what you need. From the help file:

Pattern
This function creates some patterns on input which may be useful to test software.
Type of patterns available are dirac, circular, step, zcos and sine

dirac makes a single pixel at specified x,y location and color. Default is center of frame and white color.
circular creates a filled circle of specified radius and color with center at specified x and y. Part of circle must be at least visible. If spk then x, y should be within frame.
step creates binary zones (step like pattern) in opted color and orientation. The zone color alternates between input frame and specified color. If opted, it overlays this pattern on input image..
zcos creates a cosine squared pattern in specified color and orientation. If opted, it overlays this pattern on input image.
sine creates sinusoidal function of specified color and orientation. If opted, it overlays this pattern on input image.
The patterns slowly move in a video if stat is set to false (default), otherwise it remains constant.

v0lt
12th April 2026, 11:26
Please show an example of a working script. :helpful:

wonkey_monkey
12th April 2026, 11:45
ColorBars.ShowSMPTE

or even just

ColorBars.Info

qyot27
12th April 2026, 19:16
https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/expr.html#examples
(see 'Mandelbrot zoomer' example)

Point being, as far as relying solely on built-in filters is concerned, you'd likely want to do something with Expr. Not necessarily as intensive as that example, of course.

StainlessS
12th April 2026, 23:58
Random,

RandomSource(), Simple source filter prodcing RGB32 640x480@24 FPS clip by default, random colored for test purposes.

dll's for avs v2.58, Avs/+ v2.60 x86 & x64.
Requires VS2008 CPP Runtimes,
Here:- https://forum.doom9.org/showthread.php?p=1862844#post1862844

https://i.postimg.cc/Cz1fvq45/Random.jpg (https://postimg.cc/Cz1fvq45)

v0lt
13th April 2026, 04:50
https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/expr.html#examples
(see 'Mandelbrot zoomer' example)
Thanks.
That's not quite it. I'd like something like a plasma effect or geometric transformations.

The "Christmas" scripts had something like falling snowflakes. Can anyone make something like this without text and sounds?


@StainlessS
Thanks. I'll take note.
LoadPlugin("RandomSource_x64.dll")

RandomSource()


I experimented a bit with AddGrainC.
LoadPlugin("AddGrainC.dll")

ColorBarsHD()
AddGrain(500)
This is not exactly what is needed, but I think the script will put a load on the encoders.

And a more pleasing to the eye option.
LoadPlugin("AddGrainC.dll")

ColorBarsHD()
AddGrain(800,0,.9)

hello_hello
13th April 2026, 11:01
Please show an example of a working script. :helpful:

From the help file, for the Pattern function.

#avisource("c:\.............rl.avi")
#blankClip ( color = 0)
#blankClip ( color = $5500)
#Pattern()
#p = Pattern(type="step",orient = "circ",x = -2000, y = 250,wl = 24,color = $ff77ff, overlay = 95)
#p = Pattern(type="step",orient = "vert",x = 0, y = 250,wl = 64,color = $ff77ff)
#p = Pattern(type="step",orient = "hor", x = 200, y = 0,wl = 64,color = $ff77ff)
#p = Pattern(type="zcos",orient = "vert",x = -50, y = 250,wl = 64,color = $ff77ff, stat = true)
#p = Pattern(type="zcos",orient = "hor", x = 200, y = 50,wl = 64,color = $ff77ff)
#p = Pattern(type="zcos",orient = "circ",x = 2800, y = 50,wl = 124,color = $ff77ff, overlay = 50)
#p = Pattern(type="sine",orient = "vert",x = 200, y = 250,wl = 64,color = $ff77ff)
#p = Pattern(type="sine",orient = "hor", x = 200, y = 250,wl = 164,color = $ff77, stat = true)
#p = Pattern(type="sine",orient = "circ",x = -200, y = 250,wl = 24,color = $ffffff, overlay = 90)

The Turn function:

Turn function rotates a frame or selected part of it about the specified fulcrum. The function accepts all avisynth+ supported RGB, YUY2 and Planar YUV in all bit depths. This is thread safe. MT_NICE_FILTER . It displays the the rotated disc visible in specified rectangule. Thus a thin strip can be rotated about an axis situated outside of it (appears as cartwheeling). Either the original clip or a different clip can be used as background.

Usage examples

im1 = imagereader(................).converttoRGB24()
r1=Turn(im1,q = 0, angle = 240, eangle = 4800, lx = 100, rx = 400, ty = 200, by = 250)
r2=Turn(im1,q = 2, angle = 240, x = 210.4, y = 188.6, r=140)

I haven't used either of them myself, but they seemed like they could be the sort of thing you're after.

Sharc
14th April 2026, 15:42
ffmpeg comes with a number of testpatterns, like zoneplates for example:

ffplay -f lavfi zoneplate=ku=512:kv=0:kt2=0:kx2=256:s=wvga:xo=-426:kt=11
ffplay -f lavfi zoneplate=ku=512:kv=0:kt2=0:ky2=156:s=wvga:yo=-240:kt=11
ffplay -f lavfi zoneplate=ku=512:kv=100:kt2=0:ky2=256:kx2=556:s=wvga:yo=0:kt=11

More see here:
https://ffmpeg.org/ffmpeg-filters.html#allrgb_002c-allyuv_002c-color_002c-colorchart_002c-colorspectrum_002c-haldclutsrc_002c-nullsrc_002c-pal75bars_002c-pal100bars_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc_002c-testsrc2_002c-yuvtestsrc

v0lt
14th April 2026, 18:19
@hello_hello
Your message doesn't contain a ready-made script. I tried the commands you described, but I didn't like the results.

ffmpeg comes with a number of testpatterns, like zoneplates for example:
Thanks. That's quite interesting (I'll try using it for my other tests), but that thread was about AviSynth scripts.

wonkey_monkey
14th April 2026, 20:54
geometric transformations

RemapVK (https://forum.doom9.org/showthread.php?t=186301) (e.g. vortex example).

If you have some kind of remapping in mind, let me know and I'll see if I can code it.

StainlessS
19th April 2026, 15:10
I did try to extract the video only part of Hanfrunz xmas 2019 (I think) script (the one with blazing fire),
and to remove [EDIT: lots of] un-necessary StackHorizontal / Stackvertical calls
[they (StackH.../StackV...), both take unlimited clip args, but implemented with multiple nested stack calls, eg 15 stack calls for 16 clip args, instead of 1 stack call with 16 clip args].
Unfortunately I could not find what was causing an error abort, I got lost and gave up. :( {took longer than the time I had available}

[EDIT: Could also maybe use Blankclip single pixel template clip arg, instead of lots of blankclip calls with length=1, width=1, height=1, colorspace="RGB32", FPS=18, arguments).]

EDIT: Fire created by 2D stacking of individual RGB pixels.

EDIT: Yes, xmas 2019.
https://i.postimg.cc/L55yr0LQ/2019-00.jpg (https://postimages.org/)

EDIT: Here, Hanfrunz_XMas_Extravaganza_Emulgator_PortalScope_2025, with all episodes in separate scripts. [2019.avs is the fire one]
https://www.mediafire.com/file/npzz9500lj7zgtc/Hanfrunz_XMas_Extravaganza_Emulgator_PortalScope_2025.7z/file

StainlessS
23rd April 2026, 16:24
Hanfrunz XMas fire script, flattened out a bit so as to understand what it does.
(music and xmas wishes removed)


# FireClip, by Hanfrunz, expanded from XMas clip 2019

SECONDS = 3600 # length of FireClip @18FPS


function h(int c01,int c02,int c03,int c04,int c05,int c06,int c07,int c08) {
c=blankclip(1,1,1,"RGB32",18)
StackHorizontal(blankclip(c,color=c01),blankclip(c,color=c02),blankclip(c,color=c03),blankclip(c,color=c04),blankclip(c,color=c05),blankclip(c,color=c06),blankclip(c,color=c07),blankclip(c,color=c08))
}

function f( \
int c01,int c02,int c03,int c04,int c05,int c06,int c07,int c08, \
int c09,int c10,int c11,int c12,int c13,int c14,int c15,int c16, \
int c17,int c18,int c19,int c20,int c21,int c22,int c23,int c24, \
int c25,int c26,int c27,int c28,int c29,int c30,int c31,int c32, \
int c33,int c34,int c35,int c36,int c37,int c38,int c39,int c40, \
int c41,int c42,int c43,int c44,int c45,int c46,int c47,int c48) {

StackVertical( \
h(c01,c02,c03,c04,c05,c06,c07,c08), \
h(c09,c10,c11,c12,c13,c14,c15,c16), \
h(c17,c18,c19,c20,c21,c22,c23,c24), \
h(c25,c26,c27,c28,c29,c30,c31,c32), \
h(c33,c34,c35,c36,c37,c38,c39,c40), \
h(c41,c42,c43,c44,c45,c46,c47,c48) \
)
}

f01=f( \
$280100,$380000,$721800,$5f0a00,$4d0200,$570601,$540700,$490600, \
$2f0100,$4c0000,$ac3c02,$881f03,$690801,$6f0a00,$7d1a01,$6e1601, \
$460300,$690300,$b13c05,$961a00,$ac3200,$cd6913,$a83802,$912500, \
$660100,$790800,$bc4b05,$e8a036,$f79927,$f19828,$b94401,$b94e05, \
$901f03,$9e2100,$de7b18,$fdfbb1,$f0b957,$fe9c33,$e87d23,$f5b573, \
$ca6715,$cf5607,$f1881e,$e7b164,$943f14,$b76329,$f7a13d,$fdc888)

f02=f( \
$280100,$380000,$721800,$5f0a00,$4d0200,$570601,$540700,$490600, \
$2f0100,$4c0000,$ac3c02,$881f03,$690801,$6f0a00,$7d1a01,$6e1601, \
$460300,$690300,$b13c05,$961a00,$ac3200,$cd6913,$a83802,$912500, \
$660100,$790800,$bc4b05,$e8a036,$f79927,$f19828,$b94401,$b94e05, \
$901f03,$9e2100,$de7b18,$fdfbb1,$f0b957,$fe9c33,$e87d23,$f5b573, \
$ca6715,$cf5607,$f1881e,$e7b164,$943f14,$b76329,$f7a13d,$fdc888)

f03=f( \
$000026,$360100,$350100,$3e0200,$480000,$5f0d00,$530800,$3a0000, \
$2c0000,$440100,$4d0300,$590201,$710d00,$cd600b,$821a02,$640c00, \
$410200,$560100,$710900,$860f00,$b13c01,$de7513,$aa3d03,$cc5906, \
$610301,$6d0200,$932201,$e27c1c,$f18316,$db670b,$dd6f16,$e59a35, \
$851200,$981d00,$c45b15,$f4ae3c,$e18623,$ff9d36,$eb8830,$f7dc8f, \
$c75d19,$d25a08,$f49b29,$dfa665,$853010,$b45b20,$f6a545,$87dcfc)

f04=f( \
$260000,$360100,$360100,$3a0000,$490000,$992f00,$580900,$450200, \
$2b0000,$450100,$4c0200,$690b00,$a03100,$992e00,$6b0900,$7c1701, \
$410300,$570201,$6d0500,$dc791b,$f18211,$c55305,$9f3000,$952800, \
$620201,$700501,$8b1a00,$f7aa35,$e87913,$d96f15,$bb5c1a,$d97217, \
$901d00,$991f00,$d5711a,$ed9c31,$db7414,$ef8820,$d28239,$ffea83, \
$d57730,$cb5107,$f6a633,$e09552,$893512,$b7601f,$fed564,$fdd775)

f05=f( \
$260000,$3a0200,$360000,$681600,$a23c05,$6a0c00,$490000,$3f0200, \
$2c0000,$4a0301,$540200,$d07620,$d46b12,$952600,$741201,$540100, \
$450501,$5a0100,$780900,$f49b2d,$d36409,$cc610d,$9a2b01,$8b1f02, \
$650402,$6f0100,$a43909,$fea22d,$d45d06,$da7f26,$b94808,$dc7113, \
$982200,$981d00,$d76916,$e58421,$d87a1f,$ffb646,$ec9124,$f7b347, \
$d1661a,$d86610,$eb8721,$d78644,$863616,$b96325,$fab146,$fddd72)

f06=f( \
$260000,$3c0300,$340000,$993807,$c45309,$7e1800,$5c0b00,$440000, \
$2f0201,$4b0201,$570300,$c06118,$ab3e07,$a63701,$720f01,$791801, \
$450501,$5b0100,$7d1305,$d77e26,$a83600,$ce630f,$982800,$ae4200, \
$620201,$6d0000,$99300a,$f2a537,$d66407,$f79c28,$be4c09,$df8624, \
$8d1a00,$9b2000,$d0661a,$dc8022,$cd721b,$ffb242,$ee841b,$fed269, \
$ce651d,$e37e1d,$e98520,$d07b3a,$7d3218,$c26726,$fab547,$fed366)

f07=f( \
$2a0201,$3f0301,$3b0000,$a3460b,$a03404,$791600,$5f0a00,$460200, \
$310201,$4e0200,$5e0200,$d37f24,$922602,$b84906,$871e01,$5d0401, \
$450501,$5d0000,$b7591b,$eb992f,$9a2400,$d3721b,$ac3d03,$8a1900, \
$640402,$710000,$d08c39,$d98029,$b73900,$f1982d,$d87319,$ef942b, \
$8d1c01,$a62400,$d78533,$e08c31,$c85b08,$ffc44c,$e9992d,$ffdf78, \
$c66824,$de6c13,$f28a25,$d89d5a,$843214,$bc7129,$fccf5e,$fcdc7d)

f08=f( \
$290201,$390000,$570e00,$a03502,$560100,$711500,$5a0600,$4e0300, \
$300200,$450000,$913007,$ae4106,$620100,$9d3301,$8d2200,$7e1600, \
$460400,$640000,$a63505,$bf4b03,$942300,$d26411,$d06511,$bc5004, \
$650403,$7b0600,$cb7639,$ffbc41,$c65303,$ea9d39,$e87c15,$ea9d3c, \
$891701,$9a1900,$e4a251,$f2ca60,$da7215,$ffe05e,$eb8e1f,$f8bc4e, \
$c45b18,$d05609,$f49428,$dba156,$843111,$c78430,$fdd369,$feedaa)

f09=f( \
$270000,$3d0100,$3f0301,$450100,$4f0000,$701300,$590700,$4b0200, \
$300100,$510200,$590000,$750f00,$730b01,$972d00,$8d2401,$5b0001, \
$470100,$801300,$cb5c0c,$ad3800,$a53000,$ea8118,$b04008,$942400, \
$6c0502,$861000,$ecb146,$e57d1c,$dd7619,$ffbc3d,$af3000,$d47f30, \
$9e2a00,$b03100,$e69a35,$fbbe4e,$f2be5c,$ffbe44,$ec8e26,$f4b468, \
$e48d38,$e87813,$fa9c2c,$e7a247,$933e13,$c37229,$fed367,$ffdd7a)

f10=f( \
$280000,$3d0100,$3d0000,$400000,$670f00,$a53700,$7a1c00,$3f0000, \
$310100,$530100,$943408,$6f0a01,$841900,$dd6805,$8c1f00,$6a0900, \
$490501,$670000,$c06a27,$ad420d,$d35802,$e97f16,$891801,$c0570d, \
$650302,$800a00,$c67026,$de7819,$f29928,$f39020,$a22600,$d28f47, \
$931a00,$b34207,$ea8f2d,$e27415,$e79431,$fe962f,$f38e1f,$efa35c, \
$d26d1c,$d97216,$f5a334,$e09a47,$8c340f,$bd6226,$fec156,$ffd378)

f11=f( \
$270000,$540801,$913104,$510000,$670500,$791500,$540600,$430000, \
$340200,$5c0201,$c06f23,$8f2405,$8a1800,$c15209,$680701,$721503, \
$4b0702,$6a0000,$c88741,$ae5017,$9e2900,$dc7c1d,$7b0a00,$b15a18, \
$690602,$8e1b02,$cf8036,$d16919,$e0700c,$e08d2f,$9d2b00,$d67a1b, \
$850f00,$be5916,$ec952e,$ef8a20,$ec9d32,$ffab43,$cf600d,$cc6f25, \
$c25311,$d86810,$f5a338,$e8ab5a,$8b3611,$be652a,$f09a39,$f0ab4b)

f12=f( \
$260000,$490600,$812100,$4b0100,$851f00,$832200,$490600,$370000, \
$330200,$4c0000,$ae480a,$811501,$ac3c04,$8e2801,$530100,$510401, \
$490401,$6a0000,$c06821,$b44708,$bd4a04,$b0480d,$6d0100,$680200, \
$670501,$7e0700,$bb631f,$e89228,$e9841c,$e58d29,$851100,$a73f08, \
$831200,$a52a00,$dd8225,$f7b742,$eca84a,$ffbe48,$c95707,$f4bb70, \
$b74305,$db690e,$f49e38,$edc486,$8b300d,$b86228,$f49a36,$fedc7b)

f13=f( \
$290000,$3d0100,$3e0300,$4b0100,$8a2201,$510700,$3f0100,$3a0200, \
$310000,$500200,$560000,$6a0500,$952600,$6d0f00,$560100,$4e0001, \
$490400,$650100,$a1350a,$ad3c05,$cc5906,$ba4e09,$7e0d01,$8f2000, \
$690602,$770200,$cf832d,$f39926,$ffb834,$ef9d2c,$941a00,$e49f47, \
$881700,$a52600,$d9802b,$f8b747,$eab544,$ffb548,$cb5b16,$f6c769, \
$c4550f,$e3730f,$ee8e32,$e5c18c,$862d0e,$c06526,$fec75b,$fdcd64)

f14=f( \
$2a0000,$400100,$410000,$4c0100,$5e0600,$600700,$4d0100,$4f0500, \
$350100,$550100,$892000,$861800,$992a02,$a43806,$6d0500,$b04204, \
$4d0300,$730300,$df7a1b,$c3540b,$d86304,$bd560f,$881300,$f28917, \
$6e0602,$810e01,$ba520e,$fdbe43,$f59522,$dd7f1f,$be550f,$feaa36, \
$901c00,$a52700,$de7519,$f8f3b1,$eb9f3e,$ffcc4b,$f59a2d,$f7a434, \
$d46f22,$e77f1d,$f18f2b,$e7bf8f,$8b3410,$bd6422,$f7b756,$fad87e)

f15=f( \
$270100,$370000,$4f0900,$5f0d00,$6b0e00,$5d0c00,$500400,$781900, \
$2f0200,$420000,$842805,$b94707,$851900,$7c1c00,$721200,$9f3500, \
$440501,$570100,$973510,$da7619,$9e2800,$b34103,$9c2d02,$bd5003, \
$5f0402,$690000,$a74716,$ea861d,$cf5c08,$ec8e24,$c0590e,$b44807, \
$7c0e00,$a02802,$cf6a18,$ef992c,$e69934,$ffb543,$db6d0f,$d26719, \
$bd4f0e,$e16e0f,$f2811d,$dc954d,$832f12,$ba6623,$f7cc68,$fcb857)

f16=f( \
$250000,$340100,$350000,$400000,$420200,$430301,$3d0100,$390100, \
$2b0100,$410000,$610e00,$741600,$5f0400,$5e0600,$540200,$4c0300, \
$400401,$500000,$a43f0e,$bc5612,$9a2800,$c75f11,$770c02,$640402, \
$5a0401,$680100,$b45c21,$d8751d,$df6905,$f8a533,$942201,$891c00, \
$750a00,$8f1600,$d27120,$e88526,$d47519,$ffb440,$d5781f,$de9657, \
$b4460b,$bc4102,$f6902a,$daa265,$741f0d,$c0712f,$f9b347,$fccf81)

f17=f( \
$270100,$3b0100,$4f0300,$a33a06,$761301,$831f00,$460400,$350000, \
$300200,$480000,$8b2804,$c76315,$8a1b01,$c4560a,$5e0601,$4c0301, \
$470601,$5f0000,$b1531d,$b55418,$962000,$df7111,$831801,$610000, \
$680502,$750200,$c26920,$cd5907,$d1650f,$f18514,$a93a06,$8f2505, \
$8a1700,$a52800,$e28f38,$eb9a3a,$e1a03e,$ffb44c,$bf4e10,$e69a43, \
$cc6319,$e16d0a,$fcb145,$dec294,$76260f,$c37137,$f49d3b,$f6d57e)

f18=f( \
$270000,$3b0100,$390201,$3d0100,$570500,$560600,$400100,$390101, \
$300100,$4d0100,$5d0400,$630700,$791301,$5c0701,$570400,$4c0400, \
$490501,$670000,$cb6f1f,$ab420d,$ac3500,$7e1100,$962e08,$832104, \
$6c0703,$800900,$e3af4f,$d46e18,$e6730b,$c85f10,$b64c0a,$dd8f29, \
$962200,$c04703,$eaa63f,$e8932d,$e19e3e,$ffc364,$d56516,$f7c451, \
$db7727,$ef8114,$fda431,$e0ab61,$782c15,$ba7034,$f9ab44,$fdea90)

f19=f( \
$290100,$450100,$4e0100,$450000,$550300,$4a0300,$440100,$3c0100, \
$310000,$6c0c01,$c35108,$922302,$791101,$630b00,$640900,$570400, \
$4c0200,$7f0b00,$fea72c,$e49129,$9b2500,$8f2502,$750900,$992e04, \
$6c0602,$800a00,$ce7729,$f0af4d,$df7319,$cf5905,$a83707,$be4d02, \
$8f1d00,$b63d00,$da7016,$fad371,$f3bb57,$ffaf3e,$e77823,$db8737, \
$d06b1b,$df6508,$fea32e,$ebc574,$8c3714,$be7736,$ed9333,$fedc94)

f20=f( \
$290000,$400100,$440200,$450000,$4f0000,$4a0300,$440100,$3e0100, \
$310100,$510200,$600600,$8b1a00,$7e1200,$5d0501,$600400,$5a0401, \
$480400,$640000,$8b1c06,$e99d2d,$d57112,$921e00,$8b1d00,$740500, \
$650401,$780900,$a9410b,$fdc445,$f8a632,$de6f10,$b64707,$a53a02, \
$801300,$a12a00,$d9751b,$f6ba46,$edac3e,$ffba4c,$d25e10,$f0c178, \
$b34207,$d05403,$fa9428,$e8b363,$8a3512,$b5531a,$f9bb57,$fffecd)

f21=f( \
$2a0100,$3c0100,$520300,$5d0200,$550200,$4e0400,$460100,$3c0000, \
$330200,$4b0000,$95360a,$de6e0f,$982400,$7a1700,$5e0200,$5e0800, \
$490601,$600000,$ba6625,$dc801c,$c04801,$ca6210,$730301,$a9410f, \
$640503,$7c0e00,$b5622a,$d57525,$e3811a,$efa031,$911000,$d17e2d, \
$801200,$a32c00,$de852d,$f5a842,$eb9f39,$ffa636,$e28e2a,$e8a33f, \
$bf5611,$d55a07,$ffa02e,$e6b064,$812a0f,$b45e1c,$fffa92,$ffe98d)

c = f01+f02+f03+f04+f05+f06+f07+f08+f09+f10+f11+f12+f13+f14+f15+f16+f17+f18+f19+f20+f21
Fireclip = c.loop().lanczosresize(800,600).Trim(0,-(18*SECONDS))

FireClip

h() returns 8 pixel wide line.
f() returns 8x6 pixels frame.
f01->f21, individual frames.
c clip = individual frames all spliced together, later looped for length and upsized.

EDIT: Oops, forgot f21 on end of pre-looped clip.

StainlessS
23rd April 2026, 18:16
The "Christmas" scripts had something like falling snowflakes. Can anyone make something like this without text and sounds?

And from another Hanfrunz xmas thingy, Snowy night.


# From Hanfrunz xmas 2017
FRAMES = 1000 # The higher the frame count, the slower the snow. [EDIT: Originally 576 frames]
BLIZZARD = False # Snow moves a bit faster (Maybe True if higher FRAMES)
OWID = 854
OHIT = 480

BlankClip(length=FRAMES,width=400,height=400,pixel_type="rgb32",fps=24,color=0)
subtitle(" . * . * ",y=50,size=46,align=5,font="Courier New")
subtitle(" . * . ",y=50+30*1,size=46,align=5,font="Courier New")
subtitle("* . . * ",y=50+30*2,size=46,align=5,font="Courier New")
subtitle(" . . .",y=50+30*3,size=46,align=5,font="Courier New")
subtitle(" . . * . ",y=50+30*4,size=46,align=5,font="Courier New")
subtitle(" * . * ",y=50+30*5,size=46,align=5,font="Courier New")
subtitle(" . * . ",y=50+30*6,size=46,align=5,font="Courier New")
subtitle("* . . * ",y=50+30*7,size=46,align=5,font="Courier New")
subtitle(" . . .",y=50+30*8,size=46,align=5,font="Courier New")
subtitle(" . . * . ",y=50+30*9,size=46,align=5,font="Courier New")
greyscale()
GeneralConvolution(0,"5 10 10 10 5 10 10 5 10 10 5 10 10 10 5 10 10 10 10 10 5 10 10 10 5 ",200,false)
crop(0,10,0,-076) # 400x 314
stackvertical(last,last,last,last) # 400x1256
stackhorizontal(last,last,last) # 1200x1256
(BLIZZARD)?StackVertical(Last,Last,Last,Last) : Last
(BLIZZARD)?StackHorizontal(Last,last,Last,Last) : Last
Animate(0,FRAMES,"Bicubicresize", Last,OWID,OHIT, 1./3.,1./3., Last.Width-400,Last.Height-400.,400,400, Last,OWID,OHIT, 1./3.,1./3., 0.,0.,400,400)

EDITED: Added BLIZZARD.

StainlessS
23rd April 2026, 20:43
Mod of previous post.

Function StringRepeater(String BaseS, String RepS, int n) { # https://forum.doom9.org/showthread.php?p=1878193#post1878193
# Add n instances of repeat string RepS, to base string BaseS.
return (n>=1) ? StringRepeater(BaseS+RepS,RepS,n-1):BaseS
}

# From Hanfrunz xmas 2017
OWID = 854
OHIT = 480
FRAMES = 1000
BLIZZARD = 1 # 1 <= BLIZZARD <= 10 # Higher, Snow moves a bit faster (Maybe higher if higher FRAMES)
# Snow frame is BLIZZARD times wider and BLIZZARD times taller than standard
# Standard 'snowframe' is 1200x1256, we move a 'viewport' over this snow frame.
# If BLIZZARD=10, then snow frame is 10x10 times bigger than normal

Assert(1 <= BLIZZARD <= 10,"1 <= BLIZZARD <= 10, too big!")

BlankClip(length=FRAMES,width=400,height=400,pixel_type="rgb32",fps=24,color=0)
subtitle(" . * . * ",y=50,size=46,align=5,font="Courier New")
subtitle(" . * . ",y=50+30*1,size=46,align=5,font="Courier New")
subtitle("* . . * ",y=50+30*2,size=46,align=5,font="Courier New")
subtitle(" . . .",y=50+30*3,size=46,align=5,font="Courier New")
subtitle(" . . * . ",y=50+30*4,size=46,align=5,font="Courier New")
subtitle(" * . * ",y=50+30*5,size=46,align=5,font="Courier New")
subtitle(" . * . ",y=50+30*6,size=46,align=5,font="Courier New")
subtitle("* . . * ",y=50+30*7,size=46,align=5,font="Courier New")
subtitle(" . . .",y=50+30*8,size=46,align=5,font="Courier New")
subtitle(" . . * . ",y=50+30*9,size=46,align=5,font="Courier New")
greyscale()
GeneralConvolution(0,"5 10 10 10 5 10 10 5 10 10 5 10 10 10 5 10 10 10 10 10 5 10 10 10 5 ",200,false)
crop(0,10,0,-076) # 400x 314
stackvertical(last,last,last,last) # 400x1256
stackhorizontal(last,last,last) # 1200x1256
(BLIZZARD>1)?Eval(StringRepeater("StackHorizontal(Last",",Last",BLIZZARD-1)+")") : Last
(BLIZZARD>1)?Eval(StringRepeater("StackVertical(Last",",Last",BLIZZARD-1)+")") : Last

#RT_DebugF("SNOWFRAME = %dx%d pixels",Last.Width,Last.Height)

Animate(0,FRAMES,"Bicubicresize", Last,OWID,OHIT, 1./3.,1./3., Last.Width-400,Last.Height-400.,400,400, Last,OWID,OHIT, 1./3.,1./3., 0.,0.,400,400)
Return last

BLIZZARD is now int range 1 to 10.
Is a multiplier on size of the "snow frame", we scan over this snowframe with a sort of 'viewport', the bigger the snow frame. The faster the snow appears to move.
With BLIZZARD=10, Snowframe is 10x wider and 10x taller.

v0lt
24th April 2026, 03:02
StainlessS
Thank you. Your scripts work well!