FWIW, I've been exploring ideas of what bird songs really are. One idea I came up with is "birdglyph" - a distinctive hieroglyph-like picture produced by a birdsong. A few examples:
If his solution doesn't work with arbitrary number-like objects (matrices at the very least), doesn't support voice input, can't send results via email and can't seamlessy resume the calculations after a hardware failure, it's far from overengineered.
Great map. I suggest to paint active subreddits as bright circles and stale ones as dim circles, so the map would look like Europe viewed from satellite at night.
It writes very convincing pop-sci articles about high energy photons and the like. I see no way how even a proper AI can distinguish it from similar articles written by journalists.
It sounds this is what I'm doing: taking ACF at equally spaced offsets. Not sure what the sum of ACFs would achieve, but this might turn out a good idea.
Well, I don't know. My personal reason is that 432 has at least some connection to reality, e.g. half day = 43,200 sec, or speed of light = 432 x 432 miles/sec, or Sun's radius = 432,000 miles. This means that if we take distance that light covers in 1/432 sec, then Sun's radius is exactly 1000 such distances, which is pretty cool.
On the other hand, 440 Hz seems just a random number to me picked by someone with little imagination.
432 vs 440 Hz in music is the equivalent of the C++ vs Java battle. Vivaldi was a proponent of 432 Hz, so it's only when he died, newthinkers had recalibrated pianos to 440 Hz. I believe the newthinkers are simply lacking taste, and rounding 432 to 440 is same as chopping off a chunk of Parthenon to "fix" its proportions from the golden phi ratio to 3/2.
Not really. ACF is defined as a convolution of signal X with itself: XX. But FFT turns a convolution into a dot product: FFT[XX] = FFT[X]·FFT[X], or just |FFT[X]|². But what is this really? If X is a sum of A·cos(2πwt+φ) waves, then FFT[X] is a set of A·exp(iφ) complex numbers. What does |FFT[X]|² do? It turns those complex numbers into A². Inversing this FFT gives a sum of A²·cos(2πwt) waves, so in effect ACF has dropped the phases and squared amplitudes. This is also why ACF have this bright vertical line - this is cos(x) functions piling up together.
1. Time progresses from the center to the edge of the circle.
2. Color means note, e.g. A4=432Hz is red, but so is A1, A2 and all other A notes. B is orange, C is yellow, D is green and so on.
3. The amount of fine details is frequency: the higher the frequency, the more fine details you see. If notes of different colors and different frequencies sound simultaneously, e.g. a A2 with a G5, you’ll see a red belt with a few repetitions mixed with a blue belt with 8x more repetitions, so the result will be a purple belt with a fine structure.
For example, on one image below there is a green belt with 10 repetitions. One repetition correponds to 13.5 Hz here (55296 Hz sample rate, 4096 FFT bins), so 10 repetitions is 135 Hz, which corresponds to C3. On another image there is a curious red cross in the center, it’s a red belt with 2 repetitons. That’s 27 Hz, or A0, almost infrasound.
Wikipedia is great at obfuscating simple ideas in complex math. The "Efficient computation" explains the idea well, but it could be made even simpler. The amplitude squaring step drops the phase there.
I used the meow sounds from https://soundspunos.com/animals/10-cat-meow-sounds.html. I expected to see very little variability in the meows, maybe just 4-5 different types for basic emotions. To my surprise, each “cat meow” has astonishingly colorful, complex and unique structure, unlike human vowels that follow a more or less predictable pattern: https://soundshader.github.io/vowels.
The algorithm behind these images is fairly simple. It computes FFT to decompose the sound into a set of A·cos(2πwt+φ) waves and drops the phase φ to align all cos waves together. This is known as the auto-correlation function (ACF). Before merging them back, it colorizes each wave using its frequency w: the A notes (432·2ⁿ Hz) become red, C notes - green, E notes - blue, and so on. Finally, it merges the colored and aligned cos waves back, using the amplitude A for color opacity, and renders them in polar coordinates, where the radial coordinate is time.
Amplitudes are normalized locally, using something like a moving average. Global normalization rarely works because most sounds have high dynamic loudness range.
Hi HN! In my previous post, https://news.ycombinator.com/item?id=25037784, I presented so-called ACF images, where the auto-correlation function of a sound waveform is drawn in polar coordinates. It turned out that ACF images capture a good deal of sound symmetry.
This post is a natural extension of that idea. I've been thinking how to introduce colors into ACF images. ACF splits a waveform into a set of pure cosine waves and aligns them together by removing the phase. The idea is to color each cosine wave with the note it corresponds to, so when these waves are aligned, not only the amplitudes of the waves add up, but also their colors.