I don’t know about you, but I’m a little sick of hearing about the same people on TV over and over again. I came up with this Arduino-based solution to mute my TV so that I don’t have to hear about Donald Trump’s feud with whomever or Charlie Sheen’s most recent rant. Using the Video Experimenter Shield, the Arduino is able to decode the closed captioning transcription track, which is transmitted along with the NTSC picture signal. The incoming text is processed for a set of keywords such as “KARDASHIAN” or “SNOOKI” and sends my television’s IR remote control mute command, muting the TV for 30 seconds and then unmuting it (as long as a keyword isn’t mentioned again).

The code for The Enough Already is a mashup of the closed captioning example code for the Video Experimenter Shield and Ladyada’s infrared tutorial. I added a few lines of my own code to search for the keywords and mute and unmute the TV at the right times. Now I’m curious to know: what keywords would you use in your own version of this project? And how might you use closed captioning data or IR in your project? How about a TV drinking game light? Or perhaps a flashing beacon light that’s activated when a keyword you do want to hear about is mentioned on TV?
Subscribe to the MAKE Podcast in iTunes, download the m4v video directly, or watch it on YouTube and Vimeo.
In the Maker Shed:


Yeah I want one. This is by far the best project ive seen you do yet.
Yeah I want one. This is by far the best project ive seen you do yet.
Does the CC stream contain any kind of marker for indicating commercials? Because I’d tweak this in a heartbeat to mute the deliberately-louder commercials that seem all the rage these days.
I was thinking the same, so i can leave the TV on at night, and mute those animal abuse commercials with sound clips of animals getting beat , it really scares my cat. Also the ones with old ladies falling and screaming help.
Yeah, I have nightmares whenever I hear Sarah McLaughlin because of those animal abuse commercials…
Yeah, I have nightmares whenever I hear Sarah McLaughlin because of those animal abuse commercials…
Dude, that’s pretty dope. Great project and video!
This is awesome.
This is awesome.
This is awesome.
This is exactly like the ‘Adnix’ and ‘Preachnix’ products in Carl Sagan’s novel “Contact.” In the book they topple the advertising industry and fund the vast fortune of an eccentric engineer- good luck with that!
Crap, I forgot about those things. Since you brought up the book (and not the damned movie), a question. He shows off the alien technology as being challenged as a hoax: that its some conspiracy of scientists. At the end, the US faction (because there was a team of pilots in the book) locks up their gal for life at an observatory; meanwhile, parts from the “fake alien machine” are accepted into everyday industrial use. Given this was the 1980s, I think he was being prescient: you could replace “fake alien machine” with “climate change”, and “alien parts” with windmills, hybrid cars, and LED lighting. I know people that think climate change is a “liberal myth”, but also use whatever they can that saves them money.
This is exactly like the ‘Adnix’ and ‘Preachnix’ products in Carl Sagan’s novel “Contact.” In the book they topple the advertising industry and fund the vast fortune of an eccentric engineer- good luck with that!
This is exactly like the ‘Adnix’ and ‘Preachnix’ products in Carl Sagan’s novel “Contact.” In the book they topple the advertising industry and fund the vast fortune of an eccentric engineer- good luck with that!
Agreed – this is an amazing project, an amazing idea, and @twitter-17106488:disqus is right that the video is nicely done as well (great lighting and use of depth of field!). Thanks for posting.
PS> I second the request to see if this can in any way be used to automatically be used to mute commercials. (I generally use my dvr to skip commercials but occasionally when watching the news this would be a terrific feature!)
Unfortunately (as shown in the video) the CC stream is usually ~3 seconds behind the actual audio so you still have to hear the name at least once.
It might work better for pre-captioned shows, but in that case it should be much easier to avoid the celebs.
I would like to see it do the opposite. Give the device a list of keywords to pay attention to and then to unmute the TV when those keywords are discovered. Could be good for a “News Wall” of TV’s… All silent until one of them says a keyword like “bombing” or the company name of a stock you’re interested in.
Then you could monitor 10 news channels at once without all the difficulty of listening to all 10 at the same time.
It sounds like the code can be easily modified to do this. It’s just Inverting the logic so a black list becomes a white list, and switching the IR commands.
Try muting your TV then turning this thing on. This thing looks like it is just a toggle so it should work in reverse if you watch TV on mute.
You could use the remote’s power button code instead of mute, so your TV will get switched on only if your keyword is said.
Edit: Accidentally commented twice.
And now thrice!
I had a VCR that would do this for profanity. The problem is the filter wasn’t adjustable so it would mute important lines of dialog over fairly minor words. If you were serious about filtering profanity you’d want a device that would also display the subtitles during the muted dialog with the profanity substituted with something like dashes or hash marks. That might be too technically difficult though.
I had a VCR that would do this for profanity. The problem is the filter wasn’t adjustable so it would mute important lines of dialog over fairly minor words. If you were serious about filtering profanity you’d want a device that would also display the subtitles during the muted dialog with the profanity substituted with something like dashes or hash marks. That might be too technically difficult though.
Everytime the adverts come on the TV mutes until the programme comes back on!
Everytime the adverts come on the TV mutes until the programme comes back on!
Everytime the adverts come on the TV mutes until the programme comes back on!
Great project Matt!
You could generate the list of keywords dynamically. E.g. By monitoring Twitter’s trending topics or by parsing Google’s zeitgeist lists.
I love that idea! Maybe in v2.0? (I’ll give you credit for the idea!)
Cool project and cool idea
But… do you really talk like that to real people? I would prolly punch you after about 10 seconds of that.
This is an amazing invention you would become a multi billionaire very very quickly if u market it! http://wp.me/pUSBH-25
This is an amazing invention you would become a multi billionaire very very quickly if u market it! http://wp.me/pUSBH-25
Great project. Very useful and golds a lot of potential.
few ideas:
1. inserting music or text-to-speech of interesting subjects in periods of silence.
there are arduino shields for MP3 , text-to-speech.
2. measure and show/tweet/put-on-website how much crap you or other people avoided.
3. it could tie nicely to self-tracking – tracking feelings , thoughts , behavior – in relation to the words you hear from the tv.
4. avoiding negative stuff using sentiment analysis.
5. avoiding advertisements using email spam filtering of captions, or other machine learning stuff.
To do all this stuff, and maybe get some help from others doing it , i think you should connect this device to a simple python script running on a pc , and make it very simple to make a working device and change the pc script.
this would be nice in “android smart tv” when it comes out
Sweet baby jesus, YES~!
Interesting idea, and admirable execution, but wouldn’t it be easier to just not waste your time staring at a television screen in the first place? I mean, think of all the awesome stuff you could accomplish if you put your efforts into something more meaningful than filtering celebrity drivel out of the overwhelming ocean of drivel that is TV itself…
Dear Matt,
I read with great interest the article in ‘Make ‘about your efforts to are making to protect TV viewers against unpleasant moments on screen.
In the same line of thought, I would like to ask your attention for a very annoying aspect of TV viewing in Europe and my suggestion is that you might be interested to apply our concept to resolve this.
Every time a TV program is interrupted for advertisements or the like, the sound level of the tv set goes up considerably to catch attention. My understanding is that the increase in soundlevels obtained by a temporarily compression of the incoming signal. Here is the suggestion: to put a kind of magic box in the areal leading to the set where compression of the signal is detected. As soon as this happens, the signal should be weakened by say 10 dB, and return to normal when the signal is not compressed any more.
I am quite sure that there would be a market in Europe, and perhaps also in the USA, for this kind of add-on.
Let me know if you go ahead with this suggestion and I will follow developments with interest.
Sincerely
Robert W Mantovan
The Netherlands
Actually, I thought there was a recent law passed here in the States that prohibited the practice of pushing commercials at a higher decibel rate than the regular programming. What this would be cool for is pushing out, say a text notification to my cell phone via text (Yeah, I know, the complexity of the device goes way up for that) when a keyword is found. Would be a nice way to know that something I may want to watch is on TV at the moment. Problem is, unless I miss my guess, is that this device can only keep an eye on the currently-tuned channel. Would be nice, if you’re actually *looking* for a keyword in the CC text if the device could monitor all of the channels.
That law is largely ignored.
Mr. Kendall: The C.A.L.M. Act gives the FCC until December 15, 2011 to create and adopt rules by which the C.A.L.M. Act will be enforced. One year following the date on which the FCC’s C.A.L.M. Act regulations are adopted, TV broadcasters,
including all standard, cable and satellite broadcasters, will be required to comply with the regulations. So, you can expect the law to go into effect somewhere around the end of 2012. Until then, you are correct … the law is largely being ignored … except by those who are still working on finalizing it.
…he law is largely being ignored… No it isn’t – Most TV broadcasters already have the stuff in place to limit the noise level. Bigger deal is that the networks don’t like it and are keeping the stations from using the hardware on network feeds.
Wonderful project i like this very much..
how to video
Wonderful project i like this very much..
how to video
very cool Idea and great execution.Just a friendly warning about using this line: if ((muted) && (millis() > muteUntil))millis() wraps back to 0 on overflow after about 49.7 days (because it has a type of “long”). So IF Kim Kardashian is Interviewed by Charlie Sheen on the Apprentice after your device has been on on for about 49.6999 days there could potentially be a bug that could leave your tv muted. I ran into a similar problem with my Baby Interface Device (http://matthewroy.com/bid/ ) which a user named “jeff jacobs” gratiously corrected for me.
You’re right. The actual code has a comment that lists handling the rollover as a ”to-do.” I redacted it in the video for sake of simplicity.
You’re right. The actual code has a comment that lists handling the rollover as a ”to-do.” I redacted it in the video for sake of simplicity.
You’re right. The actual code has a comment that lists handling the rollover as a ”to-do.” I redacted it in the video for sake of simplicity.
You’re right. The actual code has a comment that lists handling the rollover as a ”to-do.” I redacted it in the video for sake of simplicity.
You’re right. The actual code has a comment that lists handling the rollover as a ”to-do.” I redacted it in the video for sake of simplicity.
Here is a crazy idea that I think is even easier and cheaper than ‘Enough Already’…. watch less TV. There’s this new thing called reality. It is where you can play sports, walk, and interact with other “humans”. Try it.
Here is a crazy idea that I think is even easier and cheaper than ‘Enough Already’…. watch less TV. There’s this new thing called reality. It is where you can play sports, walk, and interact with other “humans”. Try it.
This is a great idea. I would really like to see something using the Arduino that could mute commercials. Since most commercials don’t have closed captioning, I’m sure that the loss of a stream could possibly be used to do this.
Where do I purchase and how long to get it to my house? I have DREAMED of one of these for a VERY LONG time! HAHAHAHAHA
Where do I purchase and how long to get it to my house? I have DREAMED of this for a VERY LONG TIME! HAHAHAHAHA
Where do I purchase and how long to get it to my house? I have DREAMED of this for a VERY LONG TIME! HAHAHAHAHA
Where do I purchase and how long to get it to my house? I have DREAMED of this for a VERY LONG TIME! HAHAHAHAHA
And it got mentioned in an online article of Germany’s main TV news show: http://www.tagesschau.de/schlusslicht/kisteaus100.html
Nice! Thanks for sharing, Simon!
Nice! Thanks for sharing, Simon!
I remember a friend of mine about 15 years ago telling me of a fellow who built a device that did the exact same thing as the Enough Already, he built it using one of the first PIC controller chips that came out on the market. He programmed it to mute the TV whenever the words “OJ Simpson” were in the CC data (giving you an idea of how long ago he built it
).
This is interesting. But I’m looking for something that eliminates the graphics that all stations use to advertise upcoming shows and the like. I just want to watch a clean screen so to speak. There must be something like that, No?
The “crawl” of which you speak is integrated into the broadcast stream. The only place it can be removed is at the workstation where the source video is overlayed with the “crawl” container and various broadcast graphics …. by not performing the overlay, at all. The reason this article’s device can work is because the CC feed is not embedded into the main video feed … they are two separate feeds. The text of the CC feed can easily be discerned because it’s not being obscured by all of the binary video data.
I was afraid of that. Thanks for the explanation though.
jcris
The “crawl” of which you speak is integrated into the broadcast stream. The only place it can be removed is at the workstation where the source video is overlayed with the “crawl” container and various broadcast graphics …. by not performing the overlay, at all. The reason this article’s device can work is because the CC feed is not embedded into the main video feed … they are two separate feeds. The text of the CC feed can easily be discerned because it’s not being obscured by all of the binary video data.
would love to see this shield put to use to make a ambilight system!!! maybe combined with the dioder kit from ikea
Back in my college days we had a drinking game based on the Bob Newhart Show. Every time someone said his name (Bob) everyone had to take a shot and if they said Robert (usu. only his Dad) it was a 2 shots deal. You’d get rather toasted before first commercial so it tended to end there.
So monitor the feed for ‘Bob” and then sound off a buzzer or bell circuit instead of IR LED. Have simple box with bell/light or ????.
Back in my college days we had a drinking game based on the Bob Newhart Show. Every time someone said his name (Bob) everyone had to take a shot and if they said Robert (usu. only his Dad) it was a 2 shots deal. You’d get rather toasted before first commercial so it tended to end there.
So monitor the feed for ‘Bob” and then sound off a buzzer or bell circuit instead of IR LED. Have simple box with bell/light or ????.
Matt,
Next time a news agency asks when it is available for purchase, tell them it is “Available Now*” (*some assembly required) and send them to the MakerShed.
You can also tell them that it was invented with an open architecture to leverage the wisdom of crowds through a cloud based community of the best minds in the world. They eat up that sort of buzzword speak.Also it is fully customizeable and easily expanded requiring a minimum of training and full 24/7 support.
Even if CNN doesn’t pick up the story, I’m telling all my friends about it. Great project. I love the podcast. Keep up the great work.
I cannot compile the code. every time I do I get this
enoughalready:58: error: expected initializer before numeric constantenoughalready.cpp: In function ‘void loop()’:enoughalready:197: error: ‘muteTime’ was not declared in this scope
Thanks for pointing this out! I made a last minute change before uploading the code and neglected to check it over. I’ve updated the code. The declaration of muteTime on line 59 should be “long muteTime = 30000;”
I cannot compile the code you referenced. I get errors see below. What version of arduino did you use to compile it?
enoughalready:58: error: expected initializer before numeric constantenoughalready.cpp: In function ‘void loop()’:enoughalready:197: error: ‘muteTime’ was not declared in this scopeException in thread “Thread-6″ java.lang.NullPointerException at processing.app.syntax.TokenMarker.addToken(TokenMarker.java:295) at processing.app.syntax.CTokenMarker.markTokensImpl(CTokenMarker.java:121) at processing.app.syntax.TokenMarker.markTokens(TokenMarker.java:52) at processing.app.syntax.JEditTextArea._offsetToX(JEditTextArea.java:549) at processing.app.syntax.JEditTextArea.scrollTo(JEditTextArea.java:463) at processing.app.syntax.JEditTextArea.scrollToCaret(JEditTextArea.java:428) at processing.app.syntax.JEditTextArea.select(JEditTextArea.java:1193) at processing.app.Editor.statusError(Editor.java:2517) at processing.app.Editor$DefaultRunHandler.run(Editor.java:1836) at java.lang.Thread.run(Thread.java:619)
The error is telling you that there’s something wrong with the muteTime declaration on line 59. The line should be “long muteTime = 30000;” In the original code, I left out the equals sign but it has since been updated in Google Code. Mine compiles in Arduino 022.
Thanks for the reply. That got me past compiling. OK so you figured me out, I am a noob to arduino so I need a little help. I have designed and built many circuits but I am a little confused about a few things with this. Does the USB have enough power to power this circuit or do I need external power? I see no overlay and I suspect I ma falling on the shy side with power. What about the jumper and switch? I am on VSync and overlay. Is that correct? This is really cool and I really want to get it working and not have it collect dust.
Thanks for the reply. That got me past compiling. OK so you figured me out, I am a noob to arduino so I need a little help. I have designed and built many circuits but I am a little confused about a few things with this. Does the USB have enough power to power this circuit or do I need external power? I see no overlay and I suspect I ma falling on the shy side with power. What about the jumper and switch? I am on VSync and overlay. Is that correct? This is really cool and I really want to get it working and not have it collect dust.