A great article. I could probably give it some more depth with a bit of industry anecdote.

VFX pipelines have dealt with actual film grain for a very long time (for about as long as there has been telecine/scanning) - and dealing with moving image grain-wise gives more perspective than doing that on stills. A few interesting items to consider if you ever want to dive into that domain:

* There is a difference whether you want to "add film look" or you need to integrate digital images into an existing scanned film image. The latter is harder because "your" grain has to match "their" grain!

* Grain in film is different to digital noise not because the digital noise is pixel based, but because the digital noise is a property of the sensor. Therefore digital noise will produce clusters of pixels or single pixels which run "hotter" or "colder" on every image shot. Some cameras are much worse with this (noise patterns are extremely regular between frames), some are better. Film grain are physical particles spread on a medium, which gives them a great property of incredibly high entropy

* Consequently, when you want to increase detail you often can do "temporal averaging" - take multiple frames of the same subject under same conditions and average the signal across them. This removes virtually 100% of the film grain and allows you to produce a good "grain plate" which can then be re-added to your source material or digital material. Doing the same with digital noise of the sensor won't work so well, because (see above) a sensor inherently has some noisier elements than the rest, and they stay in the same position. Some digital cameras tried to innovate in this space by moving the sensor laterally during shooting, exactly so that you can later do temporal averaging to de-noise (unlike blurring temporal denoising is theoretically losless). And yes - temporal denoisingby averaging is also way better than the modern ML-based denoising (and cheaper computationally).

* Grain - as well as digital noise - have varying response per color channel, as well as varying sizes. For grain this is because of the different dyes used to capture different parts of the spectrum, as well as due to "demasking" of the negative. The channel split depends on the film stock / type of sensor, how far the exposure is pushed - but also on the color management pipeline applied throughout the process. Sometimes your response per channel is actually "roughly" YUV instead of roughly RGB

* Noise and grain will be affected by chroma subsampling - your "color" channels having less resolution than luminance channels. If you are working on material which has already been heavily compressed (like smartphone photos, lol) you need to take that into account

* This might seem unimportant, but the _size_ of the grain is a great hint to the brain that "this was shot on mid-format" vs. "this was shot on 8mm" vs. "this was shot on 35mm". For proper artistic effect it is always a good idea to take this into account.

There has been a lot of work done in the VFX world to provide for at least some "recorded" or analyzed grain sampling at least for widely used moving picture film stocks.

Oh, and last but not least - you can throw rotten eggs at me, but "film look" is overrated, just as "no photoshop used" is overrated. I'll see myself out :-D