Introduction
If you skip around this video, youโll catch some incredible image sequences of Saturn, its rings, and its moons shot by Cassini.
This video was stitched together by Jon Keegan, who left behind some helpful guidance on how to follow in his footsteps. Thank you Jon!
So Iโm clearly mesmerized by some of this โfootageโ. These are jittery, gritty sequences - each frame is ~1024x1024, the sequences twitch and flash between frames. My immediate take is that these feel like natural candidates for visual loops.
Note on VJ Loops
So (in many cases) if youโre controlling a visual performance (much like a musical performance) you want to be able to compose on the fly.
To stick with the musical analogy: a fully mastered audio recording of a 5 piece band is only going to have so much longevity in a performance, whereas a sample pad of melodies, beats, and instruments provides the opportunity to mix and match.
The same (for the most part) applies to the amateur VJ. If a show is dynamic, I want to be able to match that energy on the fly and that means maintaining a bank of โฆ loops.
Loops are typically video files ( often animations) that:
- loop nicely (yoink!)
- are animated to match a certain BPM
- have generous alpha channels for live blending
There are free loops distributed online, marketplaces for purchasing packs of loops, and artists who create or commission their own. Iโve bought some helpful ones in the past, and edited some together myself as well.
(Loops aside, whatever VJ software of choice is fully capable of incredibly robust synthesis even in the absence of a massive pallette of video files. A little goes a long way!)
Some production setups basically amass close to a feature filmโs worth of animation to back a well synchronized / rehearsed performance, while others deeply integrate into musical sampling and musical improvisation.
Anyway - hereโs where Iโm going with this: Iโm determined to homebrew my own pack of ultra-rare Cassini loops.
Goals
Clearly Jon Keegan has already walked the path for me here. It does not look pleasant, and even at the end of the road sits 1024x1024 images which are less than ideal for my purposes.
That said, we have time on our side. In the 7 years since Jonโs project, the datasets involved have been continually updated, cleaned, and aggregated as recently as April of 2021. Thatโs exciting!
Open Questions
- What are the odds of upscaling these images? Thereโs gotta be some magic GANN/ANN/SNN or Nvidia hockey puck that can do that right?
- Jon also mentioned the possibility of extracting some higher fidelity imagery from NASA provided TIFF files that he passed on due to difficulty in processing the media. Thatโs a possible avenue worth exploring?
- How difficult is it going to be to hunt down the money shots / sequences in this literal multimillion record dataset of snapshots?
Planetary Data
Jonโs GitHub repo points us in the right direction for downloading the entire corpus of Cassini image data, which is separated into ~120 volumes of images and their associated metadata.
Luckily, since his project, some benevolent folks have merged the metadata into its own volume, so rather than having to unpack all of these images to index them, we can just download the 1GB metadata index volume.
Feast your eyes on this unholy masterpiece of future-proof data packing:
...
PDS_VERSION_ID = PDS3
RECORD_TYPE = FIXED_LENGTH
RECORD_BYTES = 3069
FILE_RECORDS = 407299
^IMAGE_INDEX_TABLE = "COISS_2999_index.tab"
OBJECT = COLUMN
NAME = FILE_NAME
DATA_TYPE = CHARACTER
START_BYTE = 2
BYTES = 22
FORMAT = A22
DESCRIPTION = "The name of the image file as stored on the archive
media."
END_OBJECT = COLUMN
OBJECT = COLUMN
NAME = FILE_SPECIFICATION_NAME
DATA_TYPE = CHARACTER
START_BYTE = 27
BYTES = 48
FORMAT = A48
DESCRIPTION = "Path name locating images in DATA directory on data
set volumes."
END_OBJECT = COLUMN
...
What youโre looking at is an excerpt of a .lbl
file in a format known as PDS3, which describes a corresponding HUGE .tab
file (which quacks like a CSV but is not a CSV). Iโm positive that this data format was designed with intelligence and foresight that I lack the acumen to fully understand. I fully respect that, but it presents with the difficulty that there is no easy-peasy parser at my fingertips for this. (Thereโs a 100 page PDF on dealing with this file but we donโt have time for that.)
Things of note:
- itโs packed by # of bytes and provides us with indices of start/stop points for each field
- some of these fields are actually arrays that have their own byte offsets
- luckily it looks like there are only a handful of data types to account for
Snake Charming
Without parsing this into some kind of database, I have no chance of querying it or finding the sequences Iโm looking for.
So letโs break out the old snake charming kit, google a regex cheatsheet and parse this into something dumb and usable for my purposes.
Last Updated 10/11/2021