Sound parameters can now control visual elements. The LFO controlling the frequency of this siren is also mapped to the scale of the circle being drawn.
The hardest part here was actually tuning the FFMPEG parameters to generate an mp4 file from the input h264 video and wav audio file.
On OSX, FFMPEG seems to want to use AAC by default. And if it ain't AAC, quicktime will not play it. It also turns out that the bitrate is set to be really low by default, which caused audible sound glitches and artifacts to be heard.
It still looks/sounds like crap, but I'm just pleased I got it working.
Inspired by a recent HN post on the h264 video codec, I finally got around to playing around with the sample code that ships with the x264 library. I managed to figure out how to generate raw YUV frames from RGB buffers. The color test below is what I fed into the sample program that ships with x264.
For this 5 second 30fps test video, the raw YUV data was 21.9 mb, while the encoded h264 data was 4kb. The mp4 file below was converted from the h264 data via ffmpeg, and is 6kb.
The next step is to do away with the intermediate YUV file entirely and leverage the x264 API to generate the file directly. That way, I can generate longer videos without needing to worry about disk space.
I'm very excited to actually get things up and running. This approach is *so* much cleaner than trying to generate video files using FFMPEG on a bunch of PNG files. It might actually motivate me to do some serious audio-visual compositional work (which has been on my TODO list for years).
Dev Rant, Android, "Customers"
For the past 5 years, every few years, I get emails asking about my Android app Ethersurface. Some of them are nice, but most of them are short unhelpful emails like this one.
Firstly, this is a free app. No ads. I make no money or revenue at all from this. Where is my motivation to implement features?
Secondly, I can't build this app anymore. Couldn't update this even if I wanted to. Android Ecosystem is very fickle. I blinked and suddenly everything was different.
A curated selection of some of my stones. I definitely have a type that I enjoy.
From left to right:
- childhood stone, picked up in a beach in Nahant, MA
- stone picked up from a beach in Seattle WA
- stone picked up at Race Point Beach, Cape Code, MA
- palm stone, lapis lazuli, purchased on etsy
- palm stone, obsidian, purchased on amazon