# 6 tones to binary

I'm referring to this post from some time ago: https://forum.snap.berkeley.edu/t/detect-individual-dtmf-tones/10199 A post on how to decode the Arecibo 1974 message to zero's and one's. From this post I understand the general idea on zero crossing. What I'm having trouble with, how to compress the zero crossing spikes to zero en one's. I hope someone can shine a light on this issue, I created a testing script. Tones to binary

That thread has several incompatible ideas about the encoding. DTMF is all audio frequencies, not MHz, but two of them added together at any time. (Each row and column of the TouchTone pad gets a frequency; the frequencies were chosen not to have any simple harmonic relationships.) Another message in the thread says they used some huge frequency in MHz, i.e., the TV/FM radio region, modulated with a 10 Hz shift up or down. So I'm not sure exactly what to tell you. My inclination would be do a Fourier transform (find a JS FFT library and paste it into a JS Function block) and try to make sense of what frequencies you get. That'll tell you how to interpret the signals.

That or recruit a 12-year-old.

Edit: Wait, DTMF is for sending decimal digits, not binary ones. So the problem as posed here seems to me to contradict itself. (There are eight frequencies, four for rows and four for columns. The fourth column isn't used in civilian phones. See Autovon for military use of the fourth column.)

@bh, thank you for the reply. Isn't it so... no matter what kind of signal (with or without overtones) you use when you record it and create an audio file of the signal they become frequencies you can filter. In the second example I used two tones four times C'' and at the end 2 times G'. They are clearly visible in the graph. My question was: is it possible to create a binary representation of these tones? 4 x C'' and 2 x G' to 111100

It's still the same problem as described in the aforementioned thread?

The Goertzel algorithm seems to be an exact solution to simultaneous tone detection
, but zero-crossing can be useful for the simple case.

There is a block
from old project, based on AnalyserNode.getByteFrequencyData() - Web APIs | MDN

Current project
There is a quite obvious problem. Sound "tone" has some recurring dropouts

e.g. starting @ ~103180

Low value samples are distorted even with $$10^{-5}$$ noise ( with 0.3 max sample values)

So a high frequency noise is visible in the output.

There is also voltage/DC level drift, e.g. @77480 responsible for extreme zero-cross times.

@dardoro thanks for your explanation. As a Snap! Fan Still trying to decode the Arecibo audio message from within Snap! I will keep trying. Thanks again

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.