Adding MIDI To An Old Casio Keyboard

Not content to rule the world of digital watches, Casio also dominated the home musical keyboard market in decades past. If you wanted an instrument to make noises that sounded approximately nothing like what they were supposed to be, you couldn’t go past a Casio. [Marwan] had just such a keyboard, and wanted to use it with their PC, but the low-end instrumented lacked MIDI. Of course, such functionality is but a simple hack away.

The hack involved opening up the instrument and wiring the original keyboard matrix to the digital inputs of an Arduino Uno. The keys are read as a simple multiplexed array, and with a little work, [Marwan] had the scheme figured out. With the Arduino now capable of detecting keypresses, [Marwan] whipped up some code to turn this into relevant MIDI data. Then, it was simply a case of reprogramming the Arduino Uno’s ATMega 16U2 USB interface chip to act as a USB-MIDI device, and the hack was complete.

Now, featuring a USB-MIDI interface, it’s easy to use the keyboard to play virtual instruments on any modern PC DAW. As it’s a popular standard, it should work with most tablets and smartphones too, if you’re that way inclined. Of course, if you’re more into modular synthesizers, you might want to think about working with CV instead!

Start Your Engines!

Here we go again: The 2020 Hackaday Prize has just been announced! And as usual, we want to see you all using your powers for good, to help make the world a better place. The twist this year is that four nonprofits have been selected, and your job is to help them with their goals: developing solutions to aid ocean conservation, creating or redesigning open-source assistive tools for people with cerebral palsy, designing modular housing for communities in need, and engineering open-source medical and technical tools that can be easily built in the field.

How often have you wanted to help, but been held back by lacking the background knowledge of which problems to tackle, or where to start? That’s the point of teaming up with non-profits that already have a very tangible need right now.

Oh, and did we mention the prize money? Not only can you do good, but you’ll also do well! The Best All Around Solution gets $50,000, there are four $10,000 prizes, one for each non-profit, $3,000 honorable mentions, a $5,000 wildcard, twenty $500community-chosen prizes, and then the twelve two-month Dream Team grants.

Pshwew! There’s something for everyone, and that’s made possible by our sponsors:Supplyframe, Digi-Key, Microchip, and ARM.

We’ve got four good ways for you to do good. Get out there and get hacking!

This article is part of the Hackaday.com newsletter, delivered every seven days for each of the last 200+ weeks. It also includes our favorite articles from the last seven days that you can see on the web version of the newsletter.

Want this type of article to hit your inbox every Friday morning? You should sign up!

A 4-bit Random Number Generator

Randomness is a pursuit in a similar vein to metrology or time and frequency, in that inordinate quantities of effort can be expended in pursuit of its purest form. The Holy Grail is a source of completely unpredictable randomness, and the search for entropy so pure has taken experimenters into the sampling of lava lamps, noise sources, unpredictable timings of user actions in computer systems, and even into sampling radioactive decay. It’s a field that need not be expensive or difficult to work in, as [Henk Mulder] shows us with his 4-bit analogue random number generator.

One of the simplest circuits for generating random analogue noise involves a reverse biased diode in either Zener or avalanche breakdown, and it is a variation on this that he’s using. A reverse biased emitter junction of a transistor produces noise which is amplified by another transistor and then converted to a digital on-off stream of ones and zeroes by a third. Instead of a shift register to create his four bits he’s using four identical circuits, with no clock their outputs randomly change state at will.

A large part of his post is an examination of randomness and what makes a random source. He finds this source to be flawed because it has a bias towards logic one in its output, but we wonder whether the culprit might be the two-transistor circuit and its biasing rather than the noise itself. It also produces a sampling frequency of about 100 kbps, which is a little slow when sampling with he Teensy he’s using.

An understanding of random number generation is both a fascinating and important skill to have. We’ve featured so many RNGs over the years, here’s one powered by memes, and another by a fish tank.

More Terrible Keyboards That Nonetheless Work

For most of computing history, keyboards have featured at least one key per letter one may wish to type – as far as the Latin alphabet goes, anyway. Mobile phones of the 90s and 2000s showed us that basic typing could be accomplished with less. [foone], however, likes to go way out into left field when designing text entry methods, and post them up on Twitter.

The most elegant, in our opinion, is this binary-based design. 7 flip switches are used to set the binary value of the key you wish to press, at which point hitting the button will send the keypress. It’s painfully slow for just about anything except backspace – set all the switches on for keycode 127, and mash away.

This breadboard design is an excercise in frustration. A keycode is randomly generated approximately once every second. Press the button if this keycode is the one you wish to send. Reportedly, it took ten minutes to type “Hello!”. An analog dial design speeds things up a little, but not by much.

While these may not be useful, they’re fun experiments which we could imagine making an excellent contest at a future hacker con. If you’re a big fan of the esoteric and insane when it comes to input devices, consider this typewriter simulation design.

 

Hiding Malware, With Windows XP

In the nearly four decades since the first PC viruses spread in the wild, malware writers have evolved some exceptionally clever ways to hide their creations from system administrators and from anti-virus writers. The researchers at Sophos have found one that conceals itself as probably the ultimate Trojan horse: it hides its tiny payload in a Windows XP installation.

The crusty Windows version is packaged up with a copy of an older version of the VirtualBox hypervisor on which to run it. A WIndows exploit allows Microsoft Installer to download the whole thing as a 122 MB installer package that hides the hypervisor and a 282 MB disk image containing Windows XP. The Ragnar Locker ransomware payload is a tiny 49 kB component of the XP image, which the infected host will run on the hypervisor unchallenged.

The Sophos analysis has a fascinating delve into some of the Windows batch file tricks it uses to probe its environment and set up the connections between host and XP, leaving us amazed at the unorthodox use of a complete Microsoft OS and that seemingly we have reached a point of system bloat at which such a large unauthorised download and the running of a complete Microsoft operating system albeit one from twenty years ago in a hypervisor can go unnoticed. Still, unlike some malware stories we’ve seen, at least this one is real.

Come On Baby Light My Fire Button

While the Nintendo GameCube stood deep in the shadows of the PS2 in its day, its controller remains a popular target for all sorts of modifications today — many of them involving LEDs, thanks to a translucent bottom and button option. As an avid player of the Super Smash Bros. series, [goomysmash] is of course an owner of the very same controller, which motivated him to write GoomWave, a “versatile and hackable LED library”. In an impressively detailed Instructable, he shows how to modify your own controller in two different ways to make use of the library for yourself.

Initially inspired by the Shinewave mod that lights up RGB LEDs in colors associated to pre-defined moves in Smash Bros, [goomysmash] aimed to improve on it and add more versatility from the very beginning. Its latest iteration comes in a simplified ABXY-buttons-only variety using an ATtiny85, and a full-blown all-button variety using an Arduino Nano. Both of them are powered straight from the controller board, and have different modes where they either react to controller interactions, or are just custom lights. A brief showcasing of all the different modes can be seen in the video after the break, and there a few more details also in an older version’s video, also embedded below.

Mesmerizing LED-blinking aside, we just have to admire the diligence and cleanliness [goomysmash] put into the wiring and fitting everything inside the controller. But in case light mods aren’t your thing or you’re looking for other GameCube controller modifications, how about adding Bluetooth?

Continue reading “Come On Baby Light My Fire Button”

Microsoft Releases The Source Code You Wanted Almost 30 Years Ago

In the late 1970s and early 1980s, if you had a personal computer there was a fair chance it either booted into some version of Microsoft Basic or you could load and run Basic. There were other versions, of course, especially for very small computers, but the gold standard for home computer Basic was Microsoft’s version, known then as GW-Basic. Now you can get the once-coveted Microsoft Basic source code for the 8086/8088 directly from Microsoft in the state you would have found it in 1983. They put up a read only GW-BASIC repository, presumably to stop a flood of feature requests for GPU acceleration.

You might wonder why they would do this? It is certainly educational, especially if you are interested in assembly language. For historical reasons, you might want to get a copy you could modify, too, for your latest retrocomputer project.

There are a few tidbits of interest. Some of the source is marked that it was translated. Apparently, Microsoft had a master implementation for some processor — real or imagined — and could translate from that code to 8088, Z-80, 6502, or any other processor they wanted to target.

From what we understand, GW-Basic was identical to IBM’s BASICA, but didn’t require certain IBM PC ROMs to operate. Of course, BASICA, itself, came from MBASIC, Microsoft’s CP/M language that originated with Altair Basic. A long lineage that influenced personal computers for many years. On a side note, there’s debate on what the GW stands for. Gee-Whiz is a popular vote, but it could stand for ‘Gates, William’, Greg Whitten (an early Microsoft employee), or Gates-Whitten. The source code doesn’t appear to answer that question.

We did enjoy the 1975 copyright message, though:

ORIGINALLY WRITTEN ON THE PDP-10 FROM
FEBRUARY 9 TO APRIL 9 1975

BILL GATES WROTE A LOT OF STUFF.
PAUL ALLEN WROTE A LOT OF OTHER STUFF AND FAST CODE.
MONTE DAVIDOFF WROTE THE MATH PACKAGE (F4I.MAC).

It wasn’t long ago that Microsoft released some old versions of MSDOS. If you have the urge to write some Basic, you might pass on GW-Basic and try QB64, instead.

GW-Basic Disk and Manual photo by [Palatinatian] CC-SA-4.0.