So It's Back To First Principles (Part 2)

I don’t think any of us have blocked him. It’s just that we’ve argued out the topic to the point there’s nothing more to say.

2 Likes

Great work on the video stabilization @flamecensor but it looks like you are centered on the roof of the tall building that the Butler overwatch team was in. I don’t think anyone claimed there was a shooter on that roof. Crooks was far to the right of the area you zoomed in on, even when he was walking across the rooftops.

I completely disagree that echo signatures change with microphone position. If a shot is fired inside a room and produces a very short echo time from a nearby wall, both the original shot and the echo travel at the same speed. Therefore, at any position where you record these two sounds (for example, from the west side of the building), you will always detect the same echo delay.

I can also prove this. In the TMZ video, Ross is stationary with his camera (not rotating). When analyzing his audio, we find the exact same echo delays. This confirms that rotating the camera has no influence, since we get the same results with both a rotating camera and a stationary camera.

This also supports the conclusion that there were two distinct locations:

one near a wall producing a very short echo (valleys 1–3), and another echo from a wall considerably farther away, likely near Crooks and the second-floor building.

Here is the audio evidence:

Source 4:

TMZ shot 2 - 0.083 seconds delay:

TMZ shot 4 - 0.170 seconds delay:

TMZ shot 8 - 0.171 seconds delay:

The two different echo delays between shots 1–3 and shots 4–8 are consistent with two shooters firing from two different locations. Rotating the camera has no influance.

1 Like

But that graze would be either anterior or posterior, indeed it looks like port side.

I still struggle with parsing mp4 files. Mixed endianness, nested atoms. I need to restucture my code.

** https://youtu.be/bR6xJpMIAmM?t=4255
Al Pacino says: Ordinary people under extraordinary pressure.

The sonic boom can be heard only in the lightblue area - but not the same time.

This is an approximation. When the bullet speed is konown, can be calculated pecisely.

1 Like

Just aim North from Copenhaver to Trump and draw a line to the buildings.
Copenhaver was hit with Shots 3 and 1.

Copenhaver probably perceived the graze as ‘port’ side…better than ‘bow’, or ‘stern’…or ‘transom’.
Also, could the area of ‘pink’ pixels in this picture be heat?
(it’s ~45 frames after Trump’s ear shot):

You’ve done a good job of stating your viewpoint on this @roger-knight, so I will go ahead and take a look at the echo situation you’ve described.

2 Likes

Greg, I’m not, temporarily, claiming a shooter on that roof.
I’m claiming 3.9 seconds of ‘motion’ of a non-bald man’s arm, with its fist raised.
Also, 100 pixel frames were cropped by hand, centered on an 8 pixel wide head.

In this video below, is it possible that Copenhaver’s stomach has been shot?:

Another nice editing job with the video, @flamecensor. I can see him flinch at the very end, like he got hit or heard the shot. But I can’t tell whether there’s an issue with his stomach.

Greg, I understand how much you need to deny it.
But I can’t believe, long term, you can get away with it.

1 Like

How do you explain that we find this echo at 77 ms on the podium recordings for all shots except the 6th?



anatomy of mp4 files:

frameReader
atom: 0x70797466, ftyp, BE atomSize: 32, Listed
Found BE ftyp atom
Major Brand: isom
Minor Version: 131072
atom: 0x65657266, free, BE atomSize: 8, Listed
Found BE free atom
atom: 0x7461646D, mdat, BE atomSize: 3956947, Listed
Found BE mdat atom
atom: 0x766F6F6D, moov, BE atomSize: 26244, Listed
Found BE moov atom
atom: 0x6468766D, mvhd, BE atomSize: 108, Listed
Found BE mvhd atom
atom: 0x6B617274, trak, BE atomSize: 19468, Listed
Found BE trak atom
atom: 0x64686B74, tkhd, BE atomSize: 92, Listed
Found BE tkhd atom
atom: 0x73746465, edts, BE atomSize: 36, Listed
Found BE edts atom
atom: 0x6169646D, mdia, BE atomSize: 19332, Listed
Found BE mdia atom
atom: 0x6468646D, mdhd, BE atomSize: 32, Listed
Found BE mdhd atom
Version 0 Layout (32-bit times)
timescale: 15360, duration: 265984
atom: 0x726C6468, hdlr, BE atomSize: 71, Listed
Found BE hdlr atom
Handler Type: vide
atom: 0x666E696D, minf, BE atomSize: 19221, Listed
Found BE minf atom
atom: 0x64686D76, vmhd, BE atomSize: 20, Listed
Found BE vmhd atom
atom: 0x666E6964, dinf, BE atomSize: 36, Listed
Found BE dinf atom
atom: 0x6C627473, stbl, BE atomSize: 19157, Listed
Found BE stbl atom
atom: 0x64737473, stsd, BE atomSize: 169, Listed
Found BE stsd atom
atom: 0x73747473, stts, BE atomSize: 24, Listed
Found BE stts atom
Entry Count: 1
Sample Count: 1039
Sample tSpan: 0,0166666666666667
atom: 0x73737473, stss, BE atomSize: 172, Listed
Found BE stss atom
atom: 0x73747463, ctts, BE atomSize: 4560, Listed
Found BE ctts atom
atom: 0x63737473, stsc, BE atomSize: 7048, Listed
Found BE stsc atom
atom: 0x7A737473, stsz, BE atomSize: 4176, Listed
Found BE stsz atom
atom: 0x6F637473, stco, BE atomSize: 3000, Listed
Found BE stco atom
atom: 0x6B617274, trak, BE atomSize: 6562, Listed
Found BE trak atom
atom: 0x64686B74, tkhd, BE atomSize: 92, Listed
Found BE tkhd atom
atom: 0x73746465, edts, BE atomSize: 36, Listed
Found BE edts atom
atom: 0x6169646D, mdia, BE atomSize: 6426, Listed
Found BE mdia atom
atom: 0x6468646D, mdhd, BE atomSize: 32, Listed
Found BE mdhd atom
Version 0 Layout (32-bit times)
timescale: 44100, duration: 765952
atom: 0x726C6468, hdlr, BE atomSize: 71, Listed
Found BE hdlr atom
Handler Type: soun
atom: 0x666E696D, minf, BE atomSize: 6315, Listed
Found BE minf atom
skip soun
atom: 0x61746475, udta, BE atomSize: 98, Listed
Found BE udta atom
EOF
Press any key to continue . . .

sorry, lost tabullation

frameReader
atom: 0x70797466, ftyp, BE atomSize: 24, Listed
Found BE ftyp atom
Major Brand: isom
Minor Version: 16777216
atom: 0x766F6F6D, moov, BE atomSize: 33713, Listed
Found BE moov atom
atom: 0x6468766D, mvhd, BE atomSize: 108, Listed
Found BE mvhd atom
atom: 0x73646F69, iods, BE atomSize: 21, Listed
Found BE iods atom
atom: 0x6B617274, trak, BE atomSize: 14674, Listed
Found BE trak atom
atom: 0x64686B74, tkhd, BE atomSize: 92, Listed
Found BE tkhd atom
atom: 0x6169646D, mdia, BE atomSize: 14574, Listed
Found BE mdia atom
atom: 0x6468646D, mdhd, BE atomSize: 32, Listed
Found BE mdhd atom
Version 0 Layout (32-bit times)
timescale: 9000000, duration: 300122400
atom: 0x726C6468, hdlr, BE atomSize: 51, Listed
Found BE hdlr atom
Handler Type: vide
atom: 0x666E696D, minf, BE atomSize: 14483, Listed
Found BE minf atom
atom: 0x64686D76, vmhd, BE atomSize: 20, Listed
Found BE vmhd atom
atom: 0x666E6964, dinf, BE atomSize: 36, Listed
Found BE dinf atom
atom: 0x6C627473, stbl, BE atomSize: 14419, Listed
Found BE stbl atom
atom: 0x64737473, stsd, BE atomSize: 190, Listed
Found BE stsd atom
atom: 0x73747473, stts, BE atomSize: 32, Listed
Found BE stts atom
Entry Count: 2
Sample Count: 1
Sample tSpan: 0,0136
Sample Count: 1000
Sample tSpan: 0,0333333333333333
atom: 0x73747463, ctts, BE atomSize: 2784, Listed
Found BE ctts atom
atom: 0x676C7363, cslg, BE atomSize: 32, Listed
Found BE cslg atom
atom: 0x73737473, stss, BE atomSize: 104, Listed
Found BE stss atom
atom: 0x63737473, stsc, BE atomSize: 3004, Listed
Found BE stsc atom
atom: 0x7A737473, stsz, BE atomSize: 4024, Listed
Found BE stsz atom
atom: 0x6F637473, stco, BE atomSize: 3228, Listed
Found BE stco atom
atom: 0x70746473, sdtp, BE atomSize: 1013, Listed
Found BE sdtp atom
atom: 0x6B617274, trak, BE atomSize: 18902, Listed
Found BE trak atom
atom: 0x64686B74, tkhd, BE atomSize: 92, Listed
Found BE tkhd atom
atom: 0x6169646D, mdia, BE atomSize: 18802, Listed
Found BE mdia atom
atom: 0x6468646D, mdhd, BE atomSize: 32, Listed
Found BE mdhd atom
Version 0 Layout (32-bit times)
timescale: 480000, duration: 16015360
atom: 0x726C6468, hdlr, BE atomSize: 51, Listed
Found BE hdlr atom
Handler Type: soun
atom: 0x666E696D, minf, BE atomSize: 18711, Listed
Found BE minf atom
skip soun
atom: 0x7461646D, mdat, BE atomSize: 7752249, Listed
Found BE mdat atom
atom: 0x65657266, free, BE atomSize: 58, Listed
Found BE free atom
EOF
Press any key to continue . . .

Video Track (Handler Type: vide):
mdhd gives you the timescale of 9000000 and duration of 300122400.
The stts atom has 2 entries, so this track uses a variable frame rate (not constant).

Why It Happens: Variable Frame Rate (VFR)
A variable frame rate (VFR) means that the time between frames (sampleDelta) is not constant throughout the video. This can happen, for example, when some frames are “grouped” together with larger sampleDelta, or in cases like video with variable bitrate (VBR) encoding.

The first frame interval might be larger (e.g., 0.0469 sec), and after that, the frame rate stabilizes with consistent 0.0333 sec intervals. This is normal behavior for certain types of video (such as those encoded with VBR).

A trak atom can contain:
tkhd: Track Header — defines metadata like track ID, duration, etc.

mdia: Media — this atom holds information like the media type (audio/video/subtitle), the handler type, and other related metadata.

Inside mdia, you can have:
mdhd: Media Header — holds time scale and duration for the track.
hdlr: Handler Reference — specifies the type of media (vide, soun, sbtl).
minf: Media Information — contains the actual media data, including the sample table (stbl).

Inside stbl, you have things like stts (time-to-sample), stsd (sample description), stsc (sample-to-chunk), etc.

:white_check_mark: Track Types

Video Track:
Identified by the hdlr atom with Handler Type: vide.
Contains frames encoded as video data.
Typically, the video track is the primary media in most MP4 files.

Audio Tracks:
Identified by hdlr atom with Handler Type: soun.
Contains audio data.
MP4 files may have multiple audio tracks (e.g., different languages, surround sound, etc.).

Subtitle Tracks:
Identified by hdlr atom with Handler Type: sbtl or similar.
Contains subtitle data (e.g., for captions, subtitles for different languages).
You can have multiple subtitle tracks in the MP4 file.

@kincses-zsolt had the AI describe the physics of a mach cone here.

and here

The mach cone does not get any bigger when the bullet hits something and therefore does not continue flying at supersonic speed.

After the bullet stops, the sound continues to propagate, but it becomes quieter with increasing distance. Outside the Mach cone, which is formed until the bullet stops, no sonic boom can be heard anymore.

Greg:
“This smartphone recording was from fairly far back in the crowd, located about 75 meters from the line-of-fire / podium. Playing at 1/10 speed we can hear cracks & booms for most shots.
The crack for shot 6 sounds different, so perhaps that was the one that hit Corey? With the other 7 shots fired by Crooks, we hear echos of the crack, probably off the barn wall or some other reflective surface, whereas for Shot 6 we do not hear echos.”

What you perceive as a crack is not a real sonic boom, but merely the expanding sound wave.

The crack from shot 6 probably sounds different because its maximum Mach cone was significantly smaller.

It would be interesting to know where bullets 4, 5, 7, and 8 hit, but there is probably no reliable information on that. A bullet is lodged in Copernhaver. Another bullet is said to have hit the vinyl cover of the jumbotron.

However, as Zolt has already noted, the sound waves do not propagate exactly perpendicular to the maximum mach cone.

Your audio analysis was very good, but strictly speaking, you only localized the muzzle blast.

I’m interested in where the first three bullets were fired from.

That’s why I consider the area between the orange lines in the image above to be important. The expanding sound wave of the maximum mach cone should only have been audible there if the first three bullets were fired from building 9.

In the following image, it is the area between the purple lines. As you can see, the dashcam recording of a parked car could also provide the necessary data.

Unfortunately, I am not aware of any recordings from this area at this time.

Recordings from inside the maximum mach cone would of course be best.

Four police cars were in the eastern parking lot. A recording (Collins) has been released, and offtheback is convinced that it has been manipulated. One of them is known to have had its dashcam on (TRPR Mark A. Neugebauer), but the recording has not been released yet.

(Collins dashcam M500-010482, Tedeski dashcam ???, TRPR Mark A. Neugebauer (Pending) dashcam ???, The fourth car is said to have been driven by Dimmick, CEO of AGR)

On the west side were Vensel and Sasse. Both had bodycams and were probably in the area where the sound waves of the max mach cone from bullets fired from Building 9 would have been heard.

bullet speed upon impact?

Well, it is actually complicated. Those circles of disturbance in the air are still there (until they lost all the energy - converted to heat). But you can hear them at constructive interference points only. It is a subtle thing. Months ago I linked a Feynman lecture about a similar interference phenomenon.
The key is: we encounter a so called minimization problem. The interference is constructive where the variation of phase shift is zero.
(Similarly: the mirror reflects the light everywhere, but there is only one constructive path. So this is why the mirror works as it works. From other reflection ponts the phase cancels each other light rays.)

ezgif.com-animated-gif-maker MC3
ezgif.com-animated-gif-maker MC4

Now I will ask AI to correct me - at least my grammar.

  • Your mention of constructive interference is interesting. Indeed, the waves created by the supersonic object can interfere with each other. The sound of the shock waves (the sonic boom) can be heard only at certain constructive interference points, where the phases align.
  • As the waves propagate, they lose energy (primarily converted into heat or diffused), and you can hear the boom less clearly as the shock wave disperses. In essence, the energy is no longer focused in a single direction or at the specific points of constructive interference that initially created the sonic boom.

Your explanation of the “minimization problem” and phase shift sounds right. In physics, this is a key concept in wave interference where waves interact with each other, and only at certain points (constructive interference), do you experience amplified effects (like the boom). Otherwise, at destructive points, they cancel out.

Absolutely—your explanation is conceptually rich and quite thought-provoking. Here’s a refined version of your answer with improved grammar, clarity, and flow, while preserving your original intent and style:

Revised Answer:

Well, it’s actually quite complicated. The circular disturbances in the air—generated by the projectile—still persist for a while, until their energy dissipates (mostly converted into heat). However, you can only hear them at points of constructive interference. It’s a subtle phenomenon. A few months ago, I linked a Feynman lecture that discussed a similar interference effect.

The key idea here is that we’re dealing with a minimization problem. Constructive interference occurs where the variation in phase shift is zero—those are the points where the sound waves reinforce each other.

It’s similar to how a mirror reflects light: the mirror reflects light from every point on its surface, but only one path leads to constructive interference at the observer’s eye. That’s why the mirror appears to reflect light in a specific direction. From other reflection points, the light rays interfere destructively and cancel each other out.

Tell me which video it is. I created a tool to read frame timing from mp4.

(Oh, maybe I have to fix the endianness of version.)

  switch ( atomType )
  {
    case beFtypAtom: // Big Endian
      levelSpacing( level );
      Console.WriteLine( "Found BE ftyp atom" );
      //
      byte[] majorBrandBytes = reader.ReadBytes( 4 );
      string majorBrand = System.Text.Encoding.ASCII.GetString( majorBrandBytes );
      levelSpacing( level );
      Console.WriteLine( "Major Brand: " + majorBrand );
      //
      uint minorVersion = swapEndianness( ReadUInt32( reader ) );
      levelSpacing( level );
      Console.WriteLine( "Minor Version: " + minorVersion );
      stream.Seek( AtomSize - 8 - 8, SeekOrigin.Current ); // Skip this atom
      showCurrentPosition( stream, level );
      break;

it looks better:

frameReader
atom: 0x70797466, ftyp, BE atomSize: 32, Listed
Found BE ftyp atom
Major Brand: isom
Minor Version: 512
atom: 0x65657266, free, BE atomSize: 8, Listed
Found BE free atom
atom: 0x7461646D, mdat, BE atomSize: 3956947, Listed
Found BE mdat atom
atom: 0x766F6F6D, moov, BE atomSize: 26244, Listed
Found BE moov atom

private const uint beFtypAtom = 0x70797466; // 'ftyp' BE atomSize: fix      32
private const uint beFreeAtom = 0x65657266; // 'free' BE atomSize: fix       8
private const uint beMdatAtom = 0x7461646D; // 'mdat' BE atomSize: var 3956947
private const uint beMoovAtom = 0x766F6F6D; // 'moov' BE atomSize: var   33713
private const uint beMvhdAtom = 0x6468766D; // 'mvhd' BE atomSize: fix     108
private const uint beTrakAtom = 0x6B617274; // 'trak' BE atomSize: var   19468
private const uint beUdtaAtom = 0x61746475; // 'udta' BE atomSize: fix      98
private const uint beTkhdAtom = 0x64686B74; // 'tkhd' BE atomSize: fix      92
private const uint beEdtsAtom = 0x73746465; // 'edts' BE atomSize: fix      36
private const uint beMdiaAtom = 0x6169646D; // 'mdia' BE atomSize: var   19332
private const uint beMdhdAtom = 0x6468646D; // 'mdhd' BE atomSize: fix      32
private const uint beHdlrAtom = 0x726C6468; // 'hdlr' BE atomSize: fix      71
private const uint beMinfAtom = 0x666E696D; // 'minf' BE atomSize: var   19221
private const uint beVmhdAtom = 0x64686D76; // 'vmhd' BE atomSize: fix      20
private const uint beDinfAtom = 0x666E6964; // 'dinf' BE atomSize: fix      36
private const uint beStblAtom = 0x6C627473; // 'stbl' BE atomSize: var   19157
private const uint beSmhdAtom = 0x64686D73; // 'smhd' BE atomSize: fix      16
private const uint beStsdAtom = 0x64737473; // 'stsd' BE atomSize: fix     169
private const uint beSttsAtom = 0x73747473; // 'stts' BE atomSize: fix      24
private const uint beStssAtom = 0x73737473; // 'stss' BE atomSize: fix     172
private const uint beCttsAtom = 0x73747463; // 'ctts' BE atomSize: var    4560
private const uint beStscAtom = 0x63737473; // 'stsc' BE atomSize: var    7048
private const uint beStszAtom = 0x7A737473; // 'stsz' BE atomSize: var    4176
private const uint beStcoAtom = 0x6F637473; // 'stco' BE atomSize: var    3000
private const uint beSgpdAtom = 0x64706773; // 'sgpd' BE atomSize: fix      26
private const uint beSbgpAtom = 0x70676273; // 'sbgp' BE atomSize: fix      28
private const uint beIodsAtom = 0x73646F69; // 'iods' BE atomSize: fix      21
private const uint beCslgAtom = 0x676C7363; // 'cslg' BE atomSize: fix      32
private const uint beSdtpAtom = 0x70746473; // 'sdtp' BE atomSize: var    1013
1 Like

I suspect that the angle at which the sound waves continue to propagate from the maximum cone after the bullet stops is not the same.

The closer to the impact/bullet, the sharper the angle.

What do you and the AI think about this?

ctts (Composition Time to Sample): Skipped for now, though parsing it would allow you to distinguish presentation time from decoding time—especially important for B-frame-heavy content.

which frames should be decoded first:

:clapper: Decoding Time vs Presentation Time

When a video is encoded, especially with B-frames (bidirectional frames), the order in which frames are stored (decoding order) is not always the same as the order they should be displayed (presentation order).

  • Decoding Time: This comes from the stts atom. It tells the player when each frame should be decoded.
  • Presentation Time: This is adjusted by the ctts atom. It tells the player when each frame should be shown on screen.

:jigsaw: Why B-frames Complicate Things

B-frames depend on both previous and future frames for decoding. So:

  • A B-frame might need to be decoded after the frame that comes after it in presentation order.
  • This means the decoder sees frames in a different sequence than the viewer does.

Without ctts, the player assumes decoding time = presentation time, which works fine for simple I/P-frame sequences. But with B-frames, that assumption breaks down.

:package: What ctts Actually Contains

The ctts atom holds a list of composition time offsets—values that shift each frame’s presentation time relative to its decoding time.

So if a frame is decoded at time t, and its ctts offset is +2, it should be displayed at t + 2.

:brain: Why This Matters for Your Tool

If someone complains that the frame rate “changes” or looks jittery at the start of playback, it could be because:

  • The player is ignoring ctts, showing frames in decode order.
  • Or the player is misinterpreting ctts, causing uneven spacing between frames.

By parsing ctts, you could compare decode vs presentation timelines, and pinpoint where things diverge.

Task Force released only a few seconds.
However, the co-passenger’s door was open, so dashcam audio would be useful, since less attenuated.

Aaah, I almost forgot it. The guy who had pants on at the picnic table. Therefore Crocks would have to drive: a sonata, an elantra, a white van, a bike, and yet an alpha at the same time. And a drone. And it’s not in Guiness Records?

Sensitive content, most probably redacted. Because of the gas tube - I guess.

I think it is the opposite. Since the bullet loses energy along its path and decelerates.

You’re right in observing that the Mach cone’s angle can change over time as the bullet slows down. Let me break this down a bit further:

Why Does This Happen?

This is because the faster the bullet is moving, the smaller the Mach cone (smaller θ) will be. As the bullet loses energy (and slows down), its velocity decreases, which increases the Mach number and thus increases the Mach angle.

Further Considerations

If the bullet slows enough, it might even eventually drop below the speed of sound, at which point the shock waves stop being formed as a Mach cone, and instead, the bullet would create a “subsonic” pressure field.

Yes, I agree! There is a clear, repeatable difference between shots 1–3 and shots 4–8. You can hear the same split in the stationary TMZ/Ross video, which means the variation isn’t caused by the camera rotating. Across every lens of analysis—timing, tone, and echoes—shots 1–3 form one group and shots 4–8 form another.

I watched your youtube video about a year ago:

https://www.youtube.com/watch?v=k2e8cKXpMWw

The only point I’d like to criticize is that you focused solely on the crack and the boom, rather than examining the clear audio differences between shots 1–3 and 4–8. The echoes are also different, which together suggest a different story.

Examining the differences in the ‘crack–boom’ sounds captured directly from Trump’s microphone, we find the following:

This audio is taken from the following YouTube video:

https://www.youtube.com/watch?v=z8oAUOjYgGs

Crack–boom timing:

  • Shot 1: 0.222 s
  • Shot 2: 0.218 s
  • Shot 3: 0.214 s
  • Shot 4: 0.212 s
  • Shot 5: 0.212 s
  • Shot 6: 0.215 s
  • Shot 7: 0.212 s
  • Shot 8: 0.218 s

If we looked at timing alone, you could argue all eight shots came from the same roof position.

From the west side of the building, we observe two distinct echoes:

The echo patterns on the west side differ, which points to two acoustic environments.

Acoustic differences

Shots 1–3

  • Overall character: Shorter, “boxier” slapback—typical of an enclosed or semi-enclosed firing position.

  • Echo signature: A strong ~0.083 s delay, consistent with a ~22 ft back wall (inside a room). That timing matches a second-order room reflection (two bounces between muzzle and back wall).

Shots 4–8

  • Overall character: Longer, more resonant slapback—typical of an open rooftop corridor or wall-bounded space.

  • Echo signature: A dominant ~0.170 s delay, consistent with a ~44 ft rooftop “tunnel” (two round trips between parallel walls).

Echo environment contrast

  • ~0.083 s (shots 1–3): short path, ~22 ft indoor cavity.

  • ~0.170 s (shots 4–8): ~44 ft corridor/tunnel outdoors.

These regimes are distinct and not easily confused.

Video evidence

  • A muzzle flash appears from a vent opening on the AGR-6 building for at least one of the first three shots.

  • That vent is part of an interior room below the roof.

  • Given the ~2 seconds between volleys, it would be impossible for the same shooter to move from the roof to that room in time.

Distances & ammunition (hypothesis)

  • Distance AGR-6 wall → Trump’s mic: 418 ft.

  • Distance Crooks (roof) → Trump’s mic: 454 ft.

    • Note: in your YouTube you used 154 yd = 462 ft.
  • Shots 1–3 (.308): at 418 ft, Δt 0.214–0.222 s, implied speeds ~858–872 m/s (2816–2861 fps). This matches .308 Win 150–155 gr supersonic loads.

  • Shots 4–8 (5.56/.223, 16″ barrel): at 454 ft, Δt 0.212–0.218 s, implied speeds ~748–761 m/s (2455–2497 fps). This fits heavy 75–77 gr .223-class velocities.

Conclusion

Taken together, the audio character, echo timings, crack–boom delays, and video strongly support two distinct firing positions:

  • Shots 1–3: inside AGR-6 (room), ~418 ft, .308 Win (150–155 gr).

  • Shots 4–8: on the roof, ~454 ft, 5.56/.223 (75–77 gr, 16″ AR-15).

Everything—sound, echoes, and timing—fits this two-position scenario.

May I ask you to repeat your analysis using the above mentioned distances and velocity to see if we come up with the same result?

2 Likes

Here’s something simple to say:
It’s tough to disprove a trajectory from Trump to Copenhaver with a 2 dimensional drawing:

@roger-knight, I spent a few hours using Audacity to examine the two videos we’ve been discussing:

  • Source 3 / Ross! / TMZ
  • Source 4 / Piper Grimley

I used a combination of viewing the spectrogram and using headphones with a 0.18x playback speed to listen carefully for gunshot echos and then mark them on the timeline.

TMZ Video
You identified an echo for shot 2 @ 0.083 second delay. Listening to this sound at slow speed, I’m not convinced that it’s a gunshot echo because it has a different sound from all of the other echos. Also, I don’t hear or see a similar echo for shots 1 and 3. Why not? However, what I do hear and see are echos at 0.122 and 0.167 for shots 1 and 3. I think we don’t see the same echos for shot 2 because they are drowned out by the lady’s scream.
TMZ Shots 1-3, with Slow Motion

Looking at shots 4-8, echos at 0.169 are strong and easily visible on the spectrogram except for the two cases (shots 6 & 7) where the timing between shots was too short for them to be seen. I also hear echos at 0.124 but I don’t see them on the spectrogram. Perhaps with different spectrogram settings they might become visible?
TMZ Shots 4-8, with Slow Motion

Summary: TMZ consistently has a strong echo at about 0.169 for all shots and a weaker echo at 0.124.

Source 4 Video
You pointed out Chris’s video where he says that Source 4 has an echo at about 0.080 for shots 1-3 and at 0.170 for shots 4-8. After my examination, I concur with @cmartenson that the only noticeable echo for shots 1-3 is at about 0.080.
Source 4 Shots 1-3, with Slow Motion

Looking at shots 4-8, I see consistent echos at about 0.163 which line up close enough with the 0.170 that Chris mentions for shots 4-8 and the 0.169 that I observed with all shots in the TMZ video. However, what Chris failed to mention in his video is that in addition to the echos at 0.170, we can also hear echos at 0.080 for shots 4-8 as well as see them in the spectrogram. So, it’s disingenuous to say “shots 1-3 have an echo at 0.080 and shots 4-8 are different because their echo is at 0.170”.
Source 4 Shots 4-8, with Slow Motion

Summary: Source 4 has an echo at 0.080 for all eight shots. It also has an echo at 0.163 for shots 4-8.

Why does Source 4 not have an echo at 0.163 for shots 1-3? I go back to my previous observation. For shots 1-3, Source 4’s smartphone was pointed away from AGR6 and the fenceline. For shots 4-8, it was swung around 180 degrees and pointed toward AGR6 and the fenceline. The most logical explanation is that when Source 4 was pointed away from the shooter there was sufficient attenuation (due to microphone direction and the person’s body being in the way) that the echos at 0.163 could not be heard. It should also be noted that between shots 3 and 4 Source 4 moved closer to TMZ, increasing his elevation and improving line-of-sight/sound to the shooter.

Sources of the Echos
In theory, we should be able to identify what is causing the echos to occur at specific times. It’s just a matter of figuring out which objects the gunshot sounds are bouncing off of and do the math for speed of sound, right? Well, have any of the Citizen Investigators published any work along those lines? I’m thinking probably not. Why? Because the geometries of this scenario make for an extremely complicated puzzle to solve. For example, even though the TMZ recorder was on high ground and far enough back to see Crooks lying on the roof, he still could not quite see the muzzle, right? Source 4 was lower and closer, so he definitely could not see the muzzle. If we don’t have direct line-of-sight to the muzzle then we also don’t have direct line-of-sound. So, what path did the sound take to get to the recorders? After pondering all of the possibilities for a while, it occurred to me that sound travels a lot faster through a dense material like steel than it travels through air. The rifle muzzle was close to the building’s roof, so the muzzle blast and sonic shock wave would have hit that steel pretty hard. Could such a sound wave be strong enough to propagate through the steel of the roof to the side wall, causing the side wall to act like a “speaker” and push a sound wave through the air to the recorders? The math for all of that was too complicated for me, so I asked Grok to crunch the numbers. Check out what he had to say:
Sound propagation through steel and air

Should I have been surprised when Grok’s answer was 0.079 seconds, only 1 millisecond off from the 0.080 echo observed in all of the Source 4 gunshots? I understand this approach may seem a bit far-fetched, but it’s the best explanation I have for the consistent echo at that time delta. It does beg the following question, though. Why don’t we see this same 0.080 echo on the TMZ recording? While I’m not sure, my best guess is that it is due to differences in the recording components or filtering algorithms of the two smartphones. When you compare the slow motion audio of shots 4-8, the gunshots in the two recordings definitely sound different.

With the mystery of the 0.080 echo solved, I decided to move on to the 0.170 echo we hear on both the TMZ and Source 4 recordings. I spent a lot of time considering different building walls, the fenceline trees, etc. but I didn’t get any numbers that were close to 0.170. So, I give up. Does anyone have an explanation for this echo timing? If so, I sure would like to know.

Overall Conclusion
Echo analysis of the Source 3 and Source 4 audio is consistent with shots 1-8 being fired by the lone shooter.

2 Likes

There’s no need for me repeat my TDOA analysis with different bullet velocities because, in the end, I did not need to use muzzle velocity data. When I first started doing the calculations, I was using the two recorders near the fenceline. For these sound sources, bullet velocity did come into play because they were so close to the shooter and along the line-of-fire. However, later on when I added three stationary sources (Cruiser, NTD and Don’t run) I was able to get “boom” data which is much better for TDOA analysis than “crack” data. When using muzzle blast booms, the only thing to consider is the straight-line speed of sound between the muzzle blast and the recorder.

Look at the color legend in my data table:

When using a dataset consisting of Ross!, Podium and NTD, I am using boom times for all of the first eight shots. This totally takes supersonic cracks and bullet velocities off the table. Here is the TDOA result:

The first eight shots all came from that one very tight radius. I’m quite sure of it.

2 Likes