Hacker News new | past | comments | ask | show | jobs | submit login
Analog Terminal Bell (analogterminalbell.com)
265 points by tenderlove on Sept 10, 2020 | hide | past | favorite | 62 comments



Older Teletype machines, Model 15 and earlier, have two or three bells. The big bell is triggered by the BELL character. The bell is almost 3 inches across and produces a really nice "bong" sound that lasts more than a second. That bell was intended to get the attention of people in the room for important incoming messages. News services would send messages with one to ten bells. UPI used 3, 4, 5 and 10 bells.

What it sounded like: The Teletype March: [1] Good pictures of the big bell.

The small bell is triggered at column 73 or so. Just a quiet "ding".

On a Model 14 printer, which prints on a narrow tape, the third bell rings continuously when the blank tape supply has run out.

All that is what's being emulated by the "bell" sound on computers.

[1] https://youtu.be/b2QPy-igBLA?t=218


Sounds like a missed opportunity. ASCII maybe could have had BLL, BLM, BLH (low, medium, high) with different frequencies and you could have encoded something in those bells instead of having to count a sequence.


If you actually look at the ascii chart broken out by bitfield you’ll see that the codes and key tops reflect a tight mapping (remember old teletypes were electromechanical: an electric motor drove the platen but all the keystroke decoding was mechanical. The usual ascii chart (e.g. man ascii) obscures this by using hex or decimal codes.)

So they had a block of 31 control character (forget null, and delete obviously wasn’t in there because of paper tape).

Many of those control characters were and are useful (^s for stop, ^r for resume) much of the space was empty and so randomly assigned. There would have been room for more bell characters, but that wasn’t really the mentality of the day.


I put together a nice diagram of this in my “history of Unicode” talk. The specific slide is at:

https://speakerdeck.com/alblue/a-brief-history-of-unicode?sl...

There’s link to the video recording in the comments if you’re interested.


Instead of bells we got FS, GS, RS, and US.

But come to think of it, ASCII was (ca. 1960) firmly based in the cards + operator days.


Here is a link to the product video: https://www.youtube.com/watch?v=uG8VpN6Z_YA

I sent a patch to iTerm2 for support: https://github.com/gnachman/iTerm2/pull/428


The gag about not being to plug the USB cable in correctly was a nice touch


it's unrealistic. in real life there would have been 3+ flips


I don't know why physicists are looking for higher dimensions, instead of investigating the 4-dimensional nature of USB-A cables.


They just have a spin of ½.


sure, that's the unrealistic part of this video.


And accidentally plugging into an adjacent ethernet port


I also liked the fast spoken disclaimer at the end.


"Requires a patched version of iTerm 2"

"Not actually for sale"


Love the project, ready for the KickStarter!

I don't think you need to patch iTerm2, by the way. You could use a Trigger [0] to do it, or a python script [1] if you need something fancier.

[0] https://www.iterm2.com/documentation-triggers.html

[1] https://www.iterm2.com/python-api/


Terminal bells trained me to be very cautious about what files I jam into stdout, or its equivalent.

There's nothing worse than accidentally cating a binary file and filling the computer room with a string of un-cancellable bells with all eyes on you. It was like a noob detector.


When I used to "lose" a shell I would just cat a bell character (^G) to the process's tty and see which screen window went "Wuff, Wuff!!".


My Dad used to take naps while building, and would do make followed by an echo of a dozen or so bell characters to wake up when it was done.


I ran across an old and very nice portable Smith Corona typewriter the other day and of course I opened it up and gave it the required typewriter inspection: holding down tab until the carriage rings the bell. What a delight.

This project is really great, but I cant help but want to remix it to hide the guts within the bell! I also kinda want to hook it up to a pinball knocker and put it under my coworkers' desks.

Anyone else have the unending list of cool projects to build that you can never seem to start?


I like your idea of putting everything inside the bell. I wonder if you could replace the solenoid with just an electric magnet that would pull down the button from inside.

Totally unrelated, I have one project that I keep thinking about starting every time I turn on my monitor in the morning...

I want to connect an RPi Zero to the serial port on my monitor, so that instead of pressing multiple buttons to change the input or color profiles (for day vs night), I could hit a dedicated set of buttons instead.

One physical button might issue multiple commands over serial to the monitor.

I'm thinking of doing this with a Raspberry Pi simply for convenience... I'm sure someone here will suggest doing it with something much smaller, and they'd probably be right.


Look into DDC; a lot of monitors can be controlled through that and it doesn't require any extra hardware: https://en.wikipedia.org/wiki/Display_Data_Channel


There is a tool called "Click Monitor DDC" that can control a lot of display settings via DDC. It warns that changing settings too often would wear out a display's flash memory used for storing the settings. This shouldn't be limited to changing settings via DDC but automated setting changes might occur lots of times more often than manual changes.


How is changing the setting from DDC different from changing it manually through the monitor's buttons? I think the warning is there for programmatic usage to warn people against changing the settings in a while loop or similar, but changing at a reasonable rate shouldn't be a problem.


Or replace it with a single spin of a motor (inside or outside the bell) that had a small ringer on a spring.

Simple motors are even more plentiful, at least in my random-electronics-stuff drawer.


The teletype/typewriter is one of mine. Ideally it'd be a Selectric (https://github.com/rbanffy/selectric-mode), but an electronic one would probably be an easier task.

Also much cheaper. Shipping to Ireland is horrendously expensive.


With the bell used in the video, can you (putEverythingInside) && (haveOriginalPlungerWork)?


One of the comments on the youtube video says "I need an analog carriage return".

Now that would be cool. Having a physical bell ding every time you hit enter, like an old typewriter!

Edit: I'm aware that typewriters ding before you get to the end, but that would be much harder to implement than just doing it when you hit enter, which would be a close representation. :P


On a typewriter the bell rings before you return the carriage. (By pushing it – if it's manual, there's no such thing as ‘hitting enter’.) It happens a few characters before the end of the line, as a warning that you should go to the next line after the current word, or if it's a long word, think about hyphenation.

Oh, and the typewriters used to perform that song made famous by Jerry Lewis are hacked so the bell can be triggered ad lib — but the sheet music still says to do it before pushing the lever :)


There's no free score of Anderson's "Typewriter" to be found--it's still under copyright--but there's a YouTube with a condensed score:

https://www.youtube.com/watch?v=sIdqJExuFMI

When we preformed this in college orchestra, a percussionist made the "ding" separately from the typewriter and I think it was noted in the score for triangle IIRC.


I know I was just trying to get close to the typewriter experience. :)


I assumed as much, just couldn't stop myself from writing a clarification anyway in case some younger readers would get confused.

Initially I found the idea to make it more authentic more fun, but now that you've mentioned ease of implementation — yeah, it wouldn't be that much fun that I could be arsed to, say, patch a terminal emulator.

A text editor plug-in would be easier, though. Get a subtle ding when a line of code is about to get too long, instead of dreading the approaching cliff of a strict ruler :)

Btw., this is quite neat, too: https://youtu.be/qb43-hn_-_c (The download link for the sound pack in the video description still works!)


There was a similar thread about typewriter emulators a while ago, and I found this one online:

https://uniqcode.com/typewriter/

It is an accurate simulator with all the sounds and quirks of using a real typewriter. All it's missing is the view of the ribbon moving up and down, and of course the letters hitting the paper.


I think your memory is confused. It was the other way around.

The bell was a signal that you were running out of space and it was time to return the carriage.


Wire up your editor to trigger the USB bell when the cursor reaches the floor(0.95N)th column?


Terminal bell is something that in my opinion was once great but now overused to the point I turn it off. I remember the time I could just sound a bell on an end of a long running process and that would be it. Today I use a visual/audio notification on the ends of my scripts.

    osascript -e 'display notification "Completed!"'
    osascript -e 'say "Done"'


I have two bells _exactly_ like that one. One of them has a distinctive tone (and a sizeable dent) because it used to sit on a colleague's desk and people "rang him up" as they came up to him until one day he just lost it and threw it across the room (almost into the garbage bin - it hit on edge and dented).

Good thing we're working remote, because I would not be able to be near one of those things during an intensive terminal session.


The terminal bell is completely abused, and as irritating as heck.

I turn it off as soon as I can upon installation of any distribution.


Emacs absolutely overuses it, every time you scroll to the end or beginning of a file it beeps.


True. One of the first things I disable.


Vim is/was like that too. I always enabled 'visual bell' in my vimrc.


I love the cheesy informercial [1]

[1] https://www.youtube.com/watch?v=uG8VpN6Z_YA


Manual typewriters were noisy little beasts. "Tack tack tack tackity tack" (keys). Thunk... thunk (shift). "Chunka chunka (backspace). Ding (bell). Ziiiiiiip (return). All of these and more are lovingly preserved in US-ASCII:

https://every.sdf.org/.webshare/us-ascii.txt


Sales are spiking for this product in Brooklyn zip codes 11231, 11201, 11217, 11215, along with typewriters and handlebar mustache wax.


On Debian the default is to use the pcspkr beeper for terminal bells... and first thing I do on a new system is remove the pcspkr module.


I love the idea of physically disconnecting the bell, when you want to `turn off` notifications.


> Here are the components needed: > Mini USB B Connector ($1.72) > 10k resistor ($0.10) > 1k resistor ($0.10) > 47nf capacitor ($0.22) > 1N4004 diode ($0.12) > TIP 122 or 102 ($0.70) > Solenoid ($4.95) > MCP2221a ($2.27) > JST connector ($0.17) > 14 Pin Socket ($0.18) > Bell ($7.99)

A much easier way to do this would be an tiny Arduino-compatible board and a servo. I actually made an analog lunch bell at a startup this way that we struck when the food delivery arrived. It might be a few bucks more in components but you wouldn't have to deal with making and populating a PCB so you'd save on that.


That video was amazing! I bet you could crowdfund it into a product :)


omg, I just had a horror vision of a university lab full of vim newbies using this.


That title brought back memories of some really old MUDs that would let you chat escape codes (mostly meant to make colorful chats in ANSI color), and you could chat the bell escape code to make everyone's PC beep. But it also kind of froze the computer for a second, so you could send a bunch of them and freeze everyone (including yourself).


Since it's a control character I don't think a 'custom build of iterm2' should be necessary?


It's necessary because normally, when iTerm encounters a BEL character it plays an audio file through the default audio output device. It needs to be patched to instead interact with the device over HID instead.


It is not transmitting every displayed character over USB. The terminal emulator needs to send a command (e.g. not just a character, though the distinction is besides the point) to the device.


This isn't a real thing, right? I mean, there's nothing to interpret the command even if a terminal did somehow know how to send it.

Edit: Okay, I looked at the MCP2221A and it has GPIOs as well as just being a USB bridge.


The IBM Displaywriter had a margin bell. It was an odd experience to be using a digital computer that acts like a mechanical typewriter.


Quite a lot still does: How terminals and their emulators set and process tabstops; conversion between CRLF and LF in Unix line disciplines; the idea of millisecond pauses in character sequences in terminfo/termcap; overstriking in the output of troff; scrolling the paper back to see what you typed earlier; …


xterm and compatible terminals have a margin bell; enable with ESC [ ? 4 4 h


Pro-tip:

  # echo install pcspkr /bin/true > /etc/modprobe.d/blacklist-pcspkr.conf


This should also ring every time a user edits a sent message on Slack... May be a slack app to interface with bell.


Would be cool to do an analog (ultrasonic) DTMF detection circuit and then build a WAV file that triggers it.


Aaron! Should have guessed it was him haha


    printf("\a");


This thing would be ringing every couple of seconds in my world.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: