This produces a 480x576 avi (SVCD pal).
There's no reason you couldn't run it throught virtualdub and resize it.

Anyway you need to produce six 112x112 avi's for you clips, about 30 secs long.

Use tmpeg to take a bmp 480x576 and a soundtrack WAV to produce a mpeg2 file. Use flask to serve it to virtualdub and save as your background avi.

When you have all your avi's, load the script into virtual dub(don't forget you need the plug-in from avisynth homepage). Start the frame server and load it into tmpeg, which will produce a menu with six evenly spaced clips in a similar fashion to the animated clips in gladiators menus.

ATB
Dave

----cut ----


background = AVISource("d:\background.avi&quot
clip1 = AVISource("d:\clip1.avi&quot
clip2 = AVISource("d:\clip2.avi&quot
clip3 = AVISource("d:\clip3.avi&quot
clip4 = AVISource("d:\clip4.avi&quot
clip5 = AVISource("d:\clip5.avi&quot
clip6 = AVISource("d:\clip6.avi&quot

slice1 = Crop(0,0,480,40,background)
Slice2 = StackHorizontal(Crop(0,40,110,110,background),Crop (0,0,110,110,clip1),Crop(220,40,40,110,background) ,Crop(0,0,110,110,clip4),Crop(370,40,110,110,backg round))
slice3 = Crop(0,150,480,40,background)
slice4 = StackHorizontal(Crop(0,190,110,110,background),Cro p(0,0,110,110,clip2),Crop(220,190,40,110,backgroun d),Crop(0,0,110,110,clip5),Crop(370,190,110,110,ba ckground))
slice5 = Crop(0,300,480,40,background)
slice6 = StackHorizontal(Crop(0,340,110,110,background),Cro p(0,0,110,110,clip3),Crop(220,340,40,110,backgroun d),Crop(0,0,110,110,clip6),Crop(370,340,110,110,ba ckground))
slice7 = Crop(0,450,480,126,background)

output = StackVertical(slice1,slice2,slice3,slice4,slice5,s lice6,slice7)

return output