Spatial Audio” and “Dynamic Head Tracking” are two separate things

Ever since Apple brought “Spatial Audio with Dynamic Head Tracking” (emphasis mine) to the AirPods Pro, there has been a lot of conflation between these two distinct features. Recently two Apple experts talked about this with regard to Apple TV. It’s often assumed that Spatial Audio is not possible on Apple TV, because the Apple TV doesn’t have a U1 chip, but this is due to a misunderstanding of what Spatial Audio is.

Spatial Audio mimics having the multiple speakers of a surround sound system by running a 5.1, 7.1, or Atmos audio source through some algorithms to create a binaural audio effect. This is similar to using ear-shaped microphones to capture sound so that when played back on standard headphones, the audio sounds like it’s coming from different directions. Also known as “holophonic sound,” Disney did this at Epcot with an attraction called “Soundsations”:

This is separate from Dynamic Head Tracking, which is what most people seem to think Spatial Audio is. Dynamic Head Tracking is what makes it sound like the audio is coming from the device that is playing the video, even as you turn your head.

Just as it would be possible to have Dynamic Head Tracking without Spatial Audio — basically a flat stereo sound that remained “stationary” while you moved your head — it would be possible to have Spatial Audio without Dynamic Head Tracking.

In fact, for accessibility reasons, you can turn off Dynamic Head Tracking while leaving Spatial Audio on:

By default, spatial audio makes it sound like the audio is coming from your iPhone, even when your head moves. You can change this behavior so that the audio sounds like it’s following your head movement.

What this means is that there seems to be no technological reason that existing Apple TVs couldn’t do Spatial Audio, or that if there is, it’s because they’re not powerful enough to process the surround sound data through the necessary algorithms, which seems unlikely.

Honestly, I don’t know why Apple TV doesn’t support Spatial Audio, but it’s not the lack of a U1 chip.

And as long as I’m talking about Spatial Audio with Dynamic Head Tracking, I’m a bit surprised that things like Apple Fitness+ and Apple Arcade don’t feature them.

Leave a Comment

Apple’s celebrity worship mangles their “Time to Walk” Fitness+ feature

The Apple Watch can be a great motivator for fitness. Closing rings and the hourly stand reminders can be just enough to nudge you into getting off of your ass once in a while, and that’s great. Since watchOS 4, there’s even been an end-of-day reminder to close your rings if you haven’t already:

If needed, toward the end of the day, they’ll be told exactly how long they should walk to close their Activity Rings before the day is over.

This notification will say something like, “You’re so close to closing your Move ring. A brisk, 11-minute walk should do it.” (Often, to many people’s chagrin, this will happen at 10:45 PM while it’s raining outside.)

What’s nice about this is that walking doesn’t seem as miserable as maintaining a 160 BPM heart rate while a Peloton trainer screams at you. It’s inviting! Why not take a walk around the block? The habit of daily walking is probably easier and more beneficial for most people than doing 20 minutes on a treadmill once a month.

I was excited when the reports of Apple Watch’s upcoming “Time to Walk” Fitness+ feature started circulating, and that they’d feature audio content. Cool! I need an excuse to listen to more podcasts anyway.

Continue reading “Apple’s celebrity worship mangles their “Time to Walk” Fitness+ feature”

Leave a Comment

Using conditionals in .gitconfig

Recently I was creating a Git alias for logs that used --date=human for date formatting, before realizing this option had only been added in Git 2.21. After pulling the alias to some of my other machines and seeing that it failed, I decided I wanted a conditional line in my Git config that tested my current version of Git, used --date=human if possible, and --date=short if not.

Git’s config syntax doesn’t allow for conditionals, but it does allow for the running of arbitrary bits of shell script. For instance, something like this will work:

[alias]
  lg = "!if (( "1 > 2" )); then git log --oneline; else git log; fi"

Because 1 is not greater than 2, git lg will perform a standard git log.

How do we compare our version of Git to a specific value, then? Let’s figure out how to get just our version number of Git first:

$ git --version | sed -E 's/git version ([0-9]+.[0-9]+).*/\1/g'

For me this returns 2.29. We need to check that this is greater than 2.20. Let’s try this:

$ if (( "2.29 > 2.20" )); then echo "Compatible"; else echo "Not compatible"; fi

Why doesn’t this work? I’m getting an invalid arithmetic operator error.

Turns out Bash only handles integer math, so we need to pipe our comparison expression to a basic calculator program:

$ if (( $(echo "2.29 > 2.20" | bc) )); then echo "Compatible"; else echo "Not compatible"; fi

Great! Works for me. Now we just need to get our actual Git version in there instead of the literal 2.29.

After some struggle — the \1 reference in sed needs to be double-escaped here, for some reason — this is the result:

[alias]
  lg = "!if (( \
      $(echo \"$(git --version | sed -E 's/git version ([0-9]+.[0-9]+).*/\\1/') > 2.20\" | bc) \
    )); then \
      DATE="--date=human"; \
    else \
      DATE="--date=short"; \
    fi; \
    git log --pretty=format:\"%h %ad %s\" $DATE"

Now git lg will show a single-line log with “human”-formatted date if possible, or a “short”-formatted date if not.

I’ve created a Gist that puts this all together.

Leave a Comment

How we could get FaceTime on our TVs

I’m envious of the technology in Facebook’s Portal; I walked past a demo unit at a Best Buy last year and was so delighted to see the camera follow me wherever I walked. It may have zoomed as well? I don’t remember, but it’s a far cry from the experience on the Amazon Echo Show I was gifted earlier this year, which is angled upward by default and therefore perpetually propped up on a coaster and whose use usually involves crouching and contorting my whole body uncomfortably for 15 minutes while video chatting.

I don’t want to invite Facebook into my life any more than it already is, or require my friends and family to invite it into theirs (for hundreds of dollars) so we can video chat more comfortably. On the other hand, most people I know already own some Apple product that is capable of FaceTime, making it our go-to video chat software during the pandemic.

I’m lucky enough to have a gooseneck phone mount, which, when clipped to the coffee table, makes these FaceTime sessions at least somewhat more comfortable, but the size of the screen and speakers leaves a lot to be desired.

Continue reading “How we could get FaceTime on our TVs”

Leave a Comment