We set LC_ALL=C when sorting in a bin tool. This was done to make the result of using `sort(1)` consistent. Improved how the Primary files and Secondary files are sorted by `bin/output-index-inventory.sh` to sort with "-u -k 1n -k 3.2d". The above will change `index.html` files for all entries. Changed `bin/chk-entry.sh` VERSION from "1.1.2 2024-03-17" to "1.1.3 2024-03-18". Changed `bin/gen-authors.sh` VERSION from "1.3 2024-03-04" to "1.3.1 2024-03-18". Changed `bin/gen-location.sh` VERSION from "1.1 2024-03-04" to "1.1.1 2024-03-18". Changed `bin/gen-sitemap.sh` VERSION from "1.3 2024-03-16" to "1.3.1 2024-03-18". Changed `bin/output-index-inventory.sh` VERSION from "1.2 2024-02-27" to "1.2.1 2024-03-18". Changed `bin/pandoc-wrapper.sh` VERSION from "1.5 2024-03-18" to "1.5.1 2024-03-18". Changed `bin/sort.gitignore.sh` VERSION from "1.1.1 2024-02-23" to "1.1.2 2024-03-18". Changed `bin/tar-all.sh` VERSION from "1.1 2024-02-27" to "1.1.1 2024-03-18". Changed `bin/tar-year.sh` VERSION from "1.1 2024-02-27" to "1.1.1 2024-03-18". Performed `make www` to update all entry `index.html` files.
To build:
make
To use:
./grothe carrier_freq pixelclock horizontal_total < some_input.txt
Try:
Put on your "electronic ears" and then try:
./try.sh
You may find using a tunable scanning electronic ear helps.
Judges' remarks:
Most of the time, interference is annoying. This entry is the exception that proves the rule. What is a bug to some is a feature to this entry. :-)
Author's remarks:
The program draws patterns on the screen that can be picked up by a
shortwave radio. It emulates
the frequencies for an old fashion touch tone phone, so old songs can be played
by hitting 0-9,#, and *.
To be able to run the program you need to determine the following parameters:
carrier_freq - base frequency used to host music
pixelclock - refresh rate of the monitor
horizontal_total - total scan along the horizontal axis
If you have xvidtune installed you can get the pixelclock and
horizontal_total with the following command
xvidtune -show | head -n 1 | awk '{ print "pixelclock " $2 * 1000000 " horizontal_total = " $6 }'
Example from my laptops:
./grothe 65000000 10000000 1344 < twinkle.txt
Even if the user gets a setting off, the sound will usually be able to be heard on AM at a multiple of the original frequency.
The core idea of using a machine to play music on AM radio goes all the way back to the Altair computers and Timex Sinclair ZX-81s.
Several example songs
Olympics Fanfare - from antang@phakt.usc.edu - Tony:
4-9-91231,2222-321123123-9-91231,2222-32112321
Twinkle Twinkle Little Star - from fsufunkyb@aol.com - Ben Schmidt:
1199##9-6633221-9966332-9966332-1199#9-6633221-
Generic Arabian Tune - from rdippold@qualcomm.com - Ron "Asbestos" Dippold:
453,54,4569564459,9#95458,8987453 54
Others can be found by doing a search for "touch tone phone songs".
Obfuscations
-
Some numbers expressed in Octal, some in hex and some in decimal: "A foolish consistency is the hobgoblin of little minds" - Ralph Waldo Emerson.
-
Funky scoping, looking at the nanosleep section and
XsetWindowAttributesdeclares local variables. -
Algorithm is very weird, uses
ydimension to draw carrier frequency andxdimension to draw audio frequency, based on Erik Thiele's Tempest for Eliza. -
lack of
#defines confuses many people :-) -
figuring out your
pixelclockandhorizontal_totaland whichcarrier_freqto use can be an exercise in obfuscation for the user. -
use of commas in various places, confuses most C code beautifiers sometimes making the beautified code harder to read
-
use of
staticto ensure initialization is EVIL and done in several places -
uses
staticdeclarations &voidfunction returns we don't care about making the code harder to read. -
does sound using only X11 libs, no other libs required.
-
demonstrates tempest emissions in a fun/easy way.
-
follows good programming practices of actually setting exit codes and giving usage when run with incorrect parameters.
References
Tempest for Eliza - Basis for Algorithms.
Tempest
AM
- Another early program in this field. See
here
for a bit more information on the program (search for Tempest-AM Radio Signal Transmitter).
The paper Soft Tempest: Hidden Data Transmission Using Electromagnetic Emanations by Markus G. Kuhn's and Ross J. Anderson's.
Copyright and CC BY-SA 4.0 License:
This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved. You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see: https://creativecommons.org/licenses/by-sa/4.0/