SetMemoryMax(256) clip = avisource("junk.avi") horizontal_screens = 3 Vertical_screens = 3 Final_clip_length = 6 * 60 Sub_clip_min_length = 1 Sub_clip_max_length = 10 function create_clip(clip src, int frames, int min, int max, int in_frames) { start = rand(framecount(src)) len = rand(max - min) + min vid = (in_frames == 0 ? BlankClip(src, len) : trim(src, start, start + len)) return (in_frames + len > frames ? \ trim(vid, 1, frames - in_frames) : \ (in_frames == 0 ? Dissolve(vid, create_clip(src, frames, min, max, in_frames + len), 30) \ : vid + create_clip(src, frames, min, max, in_frames + len) ) ) } function create_pos(clip src, int x, int y, int frames, int min, int max, int in_x, int in_y) { vid = create_clip(src, frames, min, max, 0) vid = PointResize(vid, 720/x, 480/y) vid = AddBorders(vid, in_x*(720/x), in_y*(480/y), (x-in_x-1)*(720/x), (y-in_y-1)*(480/y), \ color=HexValue("000000")) return vid } function create_grid(clip src, int x, int y, int frames, int min, int max, int in_x, int in_y) { next_x = (in_x + 1 == x ? 0 : in_x+1) next_y = (next_x == 0 ? in_y + 1 : in_y) vid = create_pos(src, x, y, frames, min, max, in_x, in_y) return (next_y != y ? create_grid_elem(vid, src, x, y, frames, min, max, next_x, next_y) : vid) } function create_grid_elem(clip vid1, clip src, int x, int y, int frames, \ int min, int max, int next_x, int next_y) { vid2 = create_grid(src, x, y, frames, min, max, next_x, next_y) vid = Overlay(KillAudio(vid1), KillAudio(vid2), mode="Lighten") num_clip = x*next_y+next_x total_clips = float(x*y-num_clip+1) return AudioDub(vid, MixAudio(vid1, vid2, 1/total_clips, 1-1/total_clips)) } return create_grid(clip, horizontal_screens, Vertical_screens, Final_clip_length*30, \ Sub_clip_min_length*30, Sub_clip_max_length*30, 0, 0)