AI-realistic Photos

One of my MUS2640 students asked which AI tool I had used to create the illustration on top of the textbook I have been developing for the course. The fact is, it isn’t AI-generated; it is a photo! I took the photo holding a 360-degree camera on my head while visiting the San Francisco Museum of Modern Art (SFMOMA) a couple of years ago. I was standing inside Olafur Eliasson’s One-way colour tunnel, located on a bridge inside the gallery. It is a fascinating three-dimensional light sculpture that no photo could capture. However, the 360-degree photo gives an impression of what it looks like: ...

December 19, 2025 · 2 min · 289 words · ARJ

Convert Insta360 .insp files to equirectangular projection on Ubuntu with FFmpeg

While writing the blog post on AI-realistic photos, I wanted to include one of my 360-degree photos. In the past, I have done this by embedding code snippets from commercial services. However, those tend to disappear or move, so I wanted to check (again) if I can do it natively on my own server instead. And, lo and behold, now, in 2025, it is finally possible to do this easily with regular web tools! ...

December 19, 2025 · 4 min · 837 words · ARJ
Comparing four 360-degree cameras (left to right: GoPro MAX, Insta360 X3, Garmin VIRB 360 and Ricoh Theta S). A Samsung Galaxy S23 Ultra mobile phone captured sound and light levels.

Spatial audio from 360-degree cameras

I have been interested in 360-degree cameras for a long time. Earlier this year, we published a paper at SMC comparing the image formats of four different 360-degree cameras (GoPro MAX, Insta360 X3, Garmin VIRB 360, and Ricoh Theta S). Now, we have just presented a follow-up study comparing the spatial audio of the same devices. While three of them claim to have spatial audio support (GoPro, Insta360, Garmin), this is only partially true. Only the GoPro camera exports Ambisonics files. As the anglegram below shows, this actually enables detection of horizontal (sonic) motion. ...

November 15, 2024 · 2 min · 290 words · ARJ
Setup for the SonicRhythm project

Recording background and foreground audio

I am on vacation in Chile and exploring various techniques for recording sounds around me. I do some outdoor recordings but try to focus on indoor environments because of my ongoing AMBIENT project. In this blog post, I reflect on how challenging it has been. Annual projects The recordings are part of my annual sonic rhythm project, which is my third annual project. In 2022, I recorded one sound action per day. That was with a very simple setup: my mobile phone and a Røde VideoMic Me-C, a directional microphone that can be plugged into a mobile phone through a USB-C connection. The simple setup was probably the reason, I succeeded in carrying out that project. ...

July 26, 2024 · 4 min · 790 words · ARJ
Comparing four 360-degree cameras (left to right: GoPro MAX, Insta360 X3, Garmin VIRB 360 and Ricoh Theta S). A Samsung Galaxy S23 Ultra mobile phone captured sound and light levels.

Comparing 360-degree cameras

Over the years, I have used several different 360-degree video cameras. They all behave differently, which makes it difficult to work with files from different systems. For this year’s SMC conference, we decided to compare four cameras: GoPro MAX, Insta360 X3, Garmin VIRB 360 and Ricoh Theta S. As the table below shows, the features of the cameras vary quite a bit: Camera File type Projection Codec Colorspace Resolution FPS Bitrate (kb/s) GoPro MAX .360 Equi-Angular Cubemap H.265 yuvj420p 4096 x 2688 25 30,002 (x2) .LRV Dual-fisheye H.264 yuvj420p 1408 x 704 25 2,499 Insta360 X3 .INSV Fisheye (x2) H.264 yuvj420p 5760 x 2880 29.97 60,495 (x2) .LRV Dual-fisheye H.264 yuvj420p 1024 x 512 29.97 3,999 Garmin VIRB 360 .MP4 Equirectangular H.264 yuv420p 3840 x 2160 25 80,008 .LRV Equirectangular H.264 yuv420p 1280 x 720 25 5,026 Ricoh Theta S .MP4 Dual-fisheye H.264 yuvj420p 1920 x 1080 29.97 15,938 The biggest practical challenge, however, is that they all use different projections: ...

June 15, 2024 · 2 min · 346 words · ARJ

365 Days of Still Standing

Today is New Year’s Eve, and I have done my 365th standstill of the year. I began my year-long #StillStanding project on 1 January this year, and I am happy to report that I managed to conclude the project as planned! A few days were more challenging than others, but I am pleased I made recordings every day. I wrote a blog post after the first 100 days and a video of the first half year. My reflections today are the same as in those summaries. Now, I am looking forward to writing everything up in my upcoming book, so I will be brief in this blog post. ...

December 31, 2023 · 3 min · 634 words · ARJ

Making image parts transparent in Python

As part of my year-long StillStanding project, I post an average image of the spherical video recordings on Mastodon daily. Average images The average image is similar to an “open shutter” technique in photography; it overlays all the frames in a video. The result is an image that shows the most prominent parts of the video recording. This is ideal for my StillStanding recordings, because the technique effectively “removes” objects that appear in the recording for a short period of time. That means that people, cars, and animals do not appear. Since I stand still, the average image may look like a photography, but you can see that my face is blurred. ...

August 7, 2023 · 2 min · 377 words · ARJ

Half a year of standing still

Today, I am halfway through my year-long #StillStanding project. Not so much has changed since I summed up the first 100 days. I still enjoy the experience, and there are new things to learn every day. Here is a 10-minute video I have recorded that presents the project, explains its rationale, and reflects upon some experiences so far: The biggest challenge moving forward is finding new spaces every day. I have already stood in the most accessible spaces, so I need to spend more time looking for unexplored rooms both at the university and close to my home. Follow the project on Mastodon to see how it goes.

July 1, 2023 · 1 min · 108 words · ARJ

Understanding Keyframes in GoPro Max Recordings

I use a GoPro Max 360-degree camera in my annual #StillStanding project. This has given me plenty of opportunities to work with GoPro files and explore their structure. Previously, I wrote about the various files generated when recording. In this post, I’ll focus on how keyframes work in GoPro Max recordings and how to extract keyframe information. What is a Keyframe? A keyframe (also known as an I-frame) is a frame in a video that contains a complete image, unlike other frames (P-frames and B-frames) that only store changes from previous or future frames. Keyframes are essential for video editing, seeking, and compression. ...

May 28, 2023 · 2 min · 234 words · ARJ

Understanding the GoPro Max' File Formats

I use a GoPro Max 360-degree camera in my annual #StillStanding project. That means that I also have had an excellent chance to work with GoPro files and try to understand their inner logic. In this blog post, I will summarize some of my findings. What is recorded? Recording “a video” with a GoPro Max results in recording multiple files. For example, each of my daily 10-minute recordings ends up with something like this: ...

May 25, 2023 · 9 min · 1901 words · ARJ