Software, especially DOS-based software meant for CNC control lasts forever, but hardware most certainly does not. When faced with aged and decrepit hardware meant for controlling a CNC machine that was slowly dying, [Oliver] needed something that would emulate 3M Microtouch touchscreen. Not wanting to go the hardware route, he decided to emulate a touch screen in Python.
The Python code is fairly simple, taking mouse input and translating it to the serial protocol the 3M Microtouch, and thus the old DOS CNC app, uses. Writing the Python to capture mouse clicks was only half of the problem, though. [Oliver] also needed a way to send these mouse clicks to an old DOS application. Virtualizing an old machine running DOS created a few timing problems, but a solution was eventually found with DOSBox and the Virtual Serial Port Emulator that can connect two applications with serial ports.
[Oliver] was finally able to get everything working, bringing this equipment back to life for at least another 30 years. Let’s just hope all the code is well documented and archived for the next guy.
Perforated rolls of paper, called piano rolls, are used to input songs into player pianos. The image above was taken from a YouTube video showing a player piano playing a Gershwin tune called Limehouse Nights. There’s no published sheet music for the song, so [Zulko] decided to use Python to transcribe it.
First off the video was downloaded from YouTube. This video was processed with MoviePy library to create a single image plotting the notes. Using a Fourier Transform, the horizontal spacing between notes was found. This allowed the image to be reduced so that one pixel corresponded with one key.
With that done, each column could be assigned to a specific note on the piano. That takes care of the pitches, but the note duration requires more processing. The Fourier Transform is applied again to determine the length of a quarter note. With this known, the notes can be quantized, and a note duration can be applied to each.
Once the duration and notes are known, it’s time to export sheet music. LilyPond, an open source language for music notation, was used. This converts ASCII text into a sheet music PDF. The final result is a playable score of the piece, which you can watch after the break.
Continue reading “Transcribing Piano Rolls with Python”
The Internet of Things is here in full force. The first step when adding to the Internet of Things is obvious, adding a web interface to your project. [Jaspreet] wrote in to tell us about his project that adds a web interface to his MSP430 based project, making it easy to add any project to the internet of things.
Creating a web interface can be a bit overwhelming if you have never done it before. This project makes it easy by using a dedicated computer running Linux to handle all of the web related tasks. The LaunchPad simply interfaces with the computer using USB and Python, and the computer hosts the webpage and updates it in real time using Node.js. The result is a very professional looking interface with an impressively responsive display that can control the on-board LEDs, read analog values from the integrated ADC, and stream accelerometer data. Be sure to see it in action after the break!
We could see this project being expanded to run on the Raspberry Pi with a multitude of sensors. What will you add a web interface to next? Home automation? A weather station? Let us know!
Continue reading “Web Interface for the FRAM LaunchPad”
Gameplay is simple – users type their command (Up, Down, A, B) into their IRC or web client. In the original configuration, commands were processed in the order they arrived at the game. The system worked until the whole thing went viral. With thousands of people entering commands at any given time, poor “RED” would often be found spinning in place, or doing other odd things. The effect is so compelling that even [Randal Munroe] has written an XKCD entry about it. To help the players get through some of the tricky parts of the game, [TPP’s creator] added a game mode selection. Users can play in “Democracy” where the system takes votes for several seconds, then issues the highest voted command. The original anything goes game mode was renamed “Anarchy”. Switching from one mode to the other is determined by the users themselves in real-time.
[Devon], one of our readers, has been busy as well. He’s written up a tutorial on turning a Raspberry Pi into a dedicated TPP viewer. We’d love to see a TPP battlestation – a Game Boy modified to display TPP, as well as send commands to the IRC servers when buttons are pressed. Who will be the first reader to knock that hack out?
[Saulius] couldn’t find a cost-effective wireless scale that did what he wanted, so he reverse engineered the communication protocol for an off the shelf model to get weight data himself.
[Saulius] bought a cheap Maxim 29-66SH scale that uses infra-red to communicate to a detachable digital readout. Using the USB IR toy, [Saulius] intercepted the messages that were broadcast. After a little reverse engineering and with the help of some Python scripts, he soon discovered the protocol his scale was using to encode weight messages.
Since all the communication is through IR, there is no need to do any invasion of the scale as the receiver can be placed anywhere in line of sight from the transmitter on the scale itself.
Check out the demo video for the whole thing in action. If patching into the scale isn’t hard enough, you should just build one from scratch.
Continue reading “Listening to a Smart Scale”
If there’s one thing about Python that’s slightly disconcerting, it’s the complete lack of braces, or as they’re called in American English, suspenders. A feature of every variety of C, Java, PHP, Perl, and a whole bunch of other very powerful languages, braces make things more legible and don’t rely on precise indentation. [Ruby] and [Eran] have come up with a way to use these punctuation marks with Python in a project they call Python with Braces.
As its name implies, Python with Braces doesn’t care about indentation: you’re free to make you code extremely ugly, or write your code properly in K&R style. Each line is terminated in a semicolon, and blocks of code with only one statement don’t require curly braces, just like C and Java.
Right now [Ruby] and [Eran] have a Windows installer with an OS X package on its way. Executing a Python with Braces script only requires executing it with a ‘pythonb’ executable instead of the normal ‘python’ executable.
[ch00f] managed to capture some holiday spirit this year by translating all of A Christmas Carol to scrolling text. Dickens’s work has long since entered public domain, which led [ch00f] to wire up a GeekCatch programmable display from Amazon. It has a low refresh rate, which means videos look a bit goofy, but it’s perfectly acceptable for text. [ch00f] ditched the remote control and instead used the display’s serial connection to program in the novella. Unfortunately, he could not find any documentation for the serial protocol, but he was able to reverse engineer it with some freeware applications found online.
It takes over six hours for the sign to spit out the entirety of A Christmas Carol, which easily surpassed the display’s limited text buffer. [ch00f] instead had to send text to the display one paragraph at a time via a custom Python script. This solution takes advantage of the sign’s fixed-width font to estimate the time it takes for each character to scroll by, then immediately feeds the sign a new line.
Check out the blog post for a quick teardown of the display itself and for a detailed description of the protocol in case you decide to use this display for a project. Stick around for a video below!
Continue reading “Serializing Dickens to LEDs”