Lofi rain-on-window loop with sound: Gemini Omni 10 seconds
Make a 10-second lofi rainy window clip with Gemini Omni on Sume. Ambient audio wording, one image as first and last frame for a loop, and the cost to draft.

For a lofi rain loop, generate one 10-second Gemini Omni clip with rain, a warm desk lamp and soft music written into the prompt, and use the same image as first and last frame so the end returns to the start. On Sume that is $1.25 at 720p. Loops are about the join, so look at the last second against the first before you repeat it.
Google's Omni page says to describe music and ambience explicitly, for example calm background music (read 2026-10-07); do that.
Why the same frame twice
Sume supports frame_images with both a first_frame and a last_frame on this model. If both entries point at the same image URL, the clip is asked to start and end on that picture. Nothing in the docs promises a pixel-perfect loop, so the join may show a small jump in rain or light. If the seam shows, a short fade in and fade out on the output of a Sume timeline (the docs allow 0 to 5 seconds of each) softens it.
- Use a calm still: a window, a lamp, a mug, a plant.
- Keep motion gentle (rain drops, a curtain, steam) so the first and last frames can match.
- Avoid people; faces drift more than raindrops over ten seconds.
Request
The audio line carries the mood. Say the music style, the rain level, and what to leave out.
import os, requests
IMG = 'https://example.com/rain-window.jpg'
frame = lambda t: {'type': 'image_url', 'image_url': {'url': IMG}, 'frame_type': t}
body = {
'model': 'gemini-omni-flash-1.1',
'prompt': ('Rain runs down a window beside a warm desk lamp, steam curls from a mug, '
'a curtain barely moves. Locked-off, single continuous shot. '
'Audio: steady soft rain, gentle lofi piano and vinyl crackle at low volume. '
'No dialogue.'),
'duration': 10, 'resolution': '720p', 'aspect_ratio': '9:16',
'frame_images': [frame('first_frame'), frame('last_frame')],
}
r = requests.post('https://api.sume.com/v1/videos', json=body, timeout=60,
headers={'Authorization': 'Bearer ' + os.environ['SUME_API_KEY'],
'Idempotency-Key': 'lofi-rain-1'})
print(r.status_code, r.json())Budget for a week of loops
Sume bills list times 1.25 per second, rounded up to the cent per job; the doc's list rates are $0.03, $0.10, $0.15 and $0.30 per second.
| Resolution | One loop | Seven loops |
|---|---|---|
| 360p | $0.38 | $2.66 |
| 720p | $1.25 | $8.75 |
| 1080p | $1.88 | $13.16 |
Tips for the repeat
Because the model has its own audio, the music will not loop cleanly; the end of the track and the start will not match. If you plan to run the video for an hour, consider keeping the picture and replacing the sound with a track you own, using the audio and timeline tools in the Sume docs. Draft at 360p first so you only pay for the best composition at 720p.
Using the loop
For a stream or a background, set the video to loop in the player, not in the file. If the seam bothers you, shorten the clip by a fraction of a second at each end with Sume's video trim endpoint, which cuts a range from a hosted clip. Keep the audio low in the mix: Omni's rain and piano are generated for this clip only and will repeat audibly if the clip runs for an hour. A long-running stream usually wants a separate, longer track with a licence you control.
Sources
Related posts
More in Use cases
- Cut a long talk into short vertical clips with the Sume API
Turn one long recording into short clips on Sume: video-inspect for a sentence transcript, video-trim per range, video-captions to burn the words. Rates inside.
- Macro liquid pour video prompt for Gemini Omni and its price
A prompt recipe for a macro pour shot (oil, serum, honey) with Gemini Omni Flash on Sume: camera words, sound line, 5-second cost at 360p, 720p and 1080p.
- A 2.5% word error rate is 25 wrong words per 1,000: plan the proofread
If a 2.5% WER held on your audio, a 1,000-word transcript would still carry about 25 wrong words. How to proofread and burn captions on Sume with script_text.
- MAI-Voice-2.1 pt-BR: six voices, four male, for ad casting
MAI-Voice-2.1 lists six pt-BR voices: four male, two female. Four list excited, two have whispering and shouting. The cast table, and Sume's pt language tag.
Written by Sume