HackerTrans
TopNewTrendsCommentsPastAskShowJobs

ssgh

no profile record

Submissions

Birdsong Visualizer

webfft.net
68 points·by ssgh·3 lata temu·19 comments

Show HN: I've built a spectrogram analyzer web app

webfft.net
244 points·by ssgh·3 lata temu·69 comments

Visual Morphology of Vowels

github.com
29 points·by ssgh·4 lata temu·9 comments

comments

ssgh
·3 lata temu·discuss
"fsck - check and repair a Linux file system" (https://linux.die.net/man/8/fsck) The -b -o -y must be undocumented flags.
ssgh
·3 lata temu·discuss
It's a scientific art.
ssgh
·3 lata temu·discuss
> in which the schizoid individual can express a great deal of feeling and make what appear to be impressive social contacts yet, in reality, gives nothing and loses nothing ... secret schizoids ... enjoy public speaking engagements but experience great difficulty during the breaks when audience members would attempt to engage them emotionally.

It makes me think psychiatrists have no clue what that schizoid type really is. Rather, they carefully document various semi-related mental qualities, put them in a box, label it DSM-42, and pretend they are doing science.
ssgh
·3 lata temu·discuss
FYI, it supports decoding ultrasound wav files. I use a Dodotronic UM250K mic to capture ultrasound up to 125 kHz. LCD monitor and other electronics emits some interesting sounds. For some reason, getUserMedia doesn't allow high sample rates, but ffmpeg works:

ffmpeg -f alsa -channels 1 -sample_rate 250000 -i hw:CARD=r4,DEV=0 -t 5 mic.wav
ssgh
·3 lata temu·discuss
I've been looking for something like this to review books. Two suggestions: 1. allow to load a book from a url, so notes could be added to arbitrary books; 2. allow to select text and add notes to that selection.
ssgh
·3 lata temu·discuss
I do have a WebGL-based implementation of FFT, but here I used good old JS. When properly written, it gets translated into really fast machine code, which is even faster than WebAssembly (I tried!). WebGL's problem is the high toll on the CPU--GPU bridge. When you need to transfer a block of audio data from CPU to GPU to perform calculations, you wait. When you need to transfer the FFT data back, you wait. These waits quickly outweight everything else. However on wavelet transforms GPU comes first because you can store some pre-computed FFTs on GPU and reuse them in multiple runs.
ssgh
·3 lata temu·discuss
You can reach me at: ssgh at mm dot st.
ssgh
·3 lata temu·discuss
Very reasonable ask, sir. In fact, I had added sample.mp3, but forgot to add a button in the UI. Now that's fixed.
ssgh
·3 lata temu·discuss
Yeah, that's a bandpass filter, essentially. But I did it the lazy way: audio signal -> FFT -> zero out unwanted frequencies -> inverse FFT.
ssgh
·3 lata temu·discuss
Your spectrogram looks elongated horizontally because the FFT window size is too large. I use window size 1024 with sample rate 48000 Hz, so one window covers 1024/48000=0.02 sec. This window size looks optimal in most cases: if you change it in my web app, you'll see that all other window sizes get the spectrogram blurry in different ways, but at 1024 it gets into focus.

Of course, don't forget the window function (Hann, or raised cosine), but it looks like you've got that covered because your spectrogram looks smooth.

The color palette looks good in your case. FWIW, my color function is like this: pow(fft_amp, 1.5) * rgb(9, 3, 1). The pow() part brightens the low/quiet amplitudes, and the (9,3,1) multiplier displays 10x wider amp range by mapping it to a visually long black->orange->yellow->white range of colors. Note, that I don't do log10 mapping of the amplitudes.
ssgh
·3 lata temu·discuss
You can select an area and zoom into it. Another option is to change sample rate in the config in the top right.
ssgh
·3 lata temu·discuss
It uses "audio/webm;codecs=opus" to record mic. Now it's possible to change it in the config menu in the top right. Safari probably needs audio/mp3. Edit: also consider "audio/foo;codecs=pcm" where "foo" is something compatible with Safari.
ssgh
·3 lata temu·discuss
Author here. This is a basic spectrogram visualizer that's mobile friendly. It allows to select regions on the spectrogram and play them separately. There is no grand plan behind this web app: it's just a handy basic tool to capture sounds on your phone and see what they look like.
ssgh
·3 lata temu·discuss
Tested on toy examples: fibonacci numbers, quick sort and so on. Give it a pile of some C++ mess from any well known project.
ssgh
·3 lata temu·discuss
https://arxiv.org/abs/2206.04362 [Submitted on 9 Jun 2022 (v1), last revised 16 Jun 2022 (this version, v2)]
ssgh
·3 lata temu·discuss
Why is the warrior against anonymity uses an anonymous account?
ssgh
·3 lata temu·discuss
"Am I interested to see what HN thinks about this?" If the answer is yes, I upvote the post. The article itself might be junk, but that's irrelevant.
ssgh
·3 lata temu·discuss
Do we even have a definition of intelligence? A definition that is not a word salad made of vague terms?
ssgh
·4 lata temu·discuss
The pantsers can also fit the model I've described. In this case GPT would keep in memory a sliding window of past N=1024 words, like it does today, but in addition to that it would remember the past N paragraph-tokens (symbols that are blurry versions of all the words in that paragraph), the past N chapter-tokens and so on. When generating words, GPT would first generate the next chapter-token, then the next paragraph-token and finally the next word-token.
ssgh
·4 lata temu·discuss
So if we asked GPT to write a book, it would be hallucinating a chain of words without sticking to any coherent plot. However, we could use a "multi-resolution" approach even with today's version of GPT: at the top level we ask it to write a brief plot for the entire novel, at the next level we'll use this plot as the context and ask to outlines sub-plots of the 3 books in our novel, at the third level we'll use the overall plot and a book's summary as context to generate brief descriptions of chapters in the book, and so on.