Toy Piano Gets Synth Overhaul

The Peanuts cartoon character Schroeder liked to bang out Beethoven a toy piano. Now, thanks to this hack from [Liam Lacey], Schroeder can switch to Skrillex. That’s because [Liam] built a polyphonic synth into a toy piano. It’s an impressive build that retains the look and feel of the piano, right down to a laser-etched top panel with knobs that match the glossy black styling.

The brains of the synthesizer is a Beaglebone Black using the Maximillian synthesis library. To capture the key presses, he used Velostat, a pressure-sensitive material that changes resistance under pressure. This is probably the only toy piano in the world with fully polyphonic velocity and aftertouch. The build also includes MIDI support, with two ports on the back. [Liam]’s build log is full of more details than we can even summarize here.

This beautiful build won [Liam] first place in the Element 14 Music Tech competition, and it is a well-deserved prize for a clean and elegant way to update a vintage piano.

Continue reading “Toy Piano Gets Synth Overhaul”

Save a Spaceship with Spacehack!

York Hackspace needed a demonstration piece to grace their stand at Maker Faires and similar events. Their solution was Spacehack, a multi-player control console based starship emergency simulator game. Each Spacehack player has console with a selection of displays, switches, dials, and levers. Players must operate their controls in response to a series of sometimes confusing commands the game supplies them from their fellow crew members. Each wrong move brings the disaster-prone ship closer to destruction, and the aim is to keep it spaceworthy for as long as possible. The result is an engaging and addictive draw for the hackspace.

Behind the brilliantly designed consoles, silver ducting and pyramidal hub box the game relies on a Raspberry Pi acting as a server and a Beaglebone Black for each player. All resources can be found on York Hackspace’s GitHub repository. The hackspace has a selection of videos on the Spacehack website, the one below the break shows the game as well as a montage of its construction. Continue reading “Save a Spaceship with Spacehack!”

Bela: Real-Time BeagleBone Audio/Analog Cape

Bela is a cape for the BeagleBone Black that’s aimed at artists and musicians. Actually, the cape is much less than half of the story — the rest is in some clever software and a real-time Linux distribution. But we’re getting ahead of ourselves. Let’s talk hardware first.

First off, the cape has stereo input and output as well as two amplified speaker outs. It can do all of your audio stuff. It also has two banks of analogue inputs and outputs, each capable of handling eight signals. In our opinion, this is where the Bela is cool. In particular, the analog outputs are not Arduino-style “analog outputs” where it’s actually a digital output on which you can do PWM to fake an analog signal. These are eight 16-bit outputs from an AD5668 DAC which means that you can use the voltages directly, without filtering.

Then there’s the real trick. All of these input and output peripherals are hooked up to the BeagleBone’s Programmable Realtime Units (PRUs) — a hardware subsystem that’s independent of the CPU but can work along with it. The PRU is interfaced with the real-time Linux core to give you sub-microsecond response in your application. This is a big deal because a lot of other audio-processing systems have latencies that get into the tens of milliseconds or worse, where it starts to be perceptible as a slight lag by humans.

The downside of this custom analog and audio I/O is that it’s not yet supported by kernel drivers, and you’ll need to use their “Heavy Audio Tools” which compiles Pd programs into C code, which can then drive the PRUs. Of course, you can write directly for the PRUs yourself as well. If you just want to play MP3s, get something you have a bunch of simpler, better options. If you need to do responsive real-time audio installations, Bela is a way to go.

The project is open-source, but we had to do a bunch of digging to find what we were looking for. The hardware is in zip files here, and you’ll find the software here. The demo projects look/sound pretty cool and their Kickstarter is long over-funded, so we’re interested to see what folks make with these.

BlinkenBone Meets The PiDP8

Years ago when the old mainframes made their way out of labs and into the waiting arms of storage closets and surplus stores, a lot got lost. The interesting bits – core memory boards and the like – were cool enough to be saved. Some iconic parts – blinkenlight panels – were stashed away by techs with a respect for our computing history.

For the last few years, [Jörg] has been making these blinkenlight panels work again with his BlinkenBone project. His work turns a BeagleBone into a control box for old console computers, simulating the old CPUs and circuits, allowing them to work like they did thirty years ago, just without the hundreds of pounds of steel and kilowatts of power. Now, [Jörg] has turned to a much smaller and newer blinkenlight panel, the PiDP-8.

The PiDP-8 is a modern, miniaturized reproduction of the classic PDP 8/I, crafted by [Oscar Vermeulen]. We’ve seen [Oscar]’s PiDP a few times over the last year, including a talk [Oscar] gave at last year’s Hackaday Supercon. Having a simulated interface to a replica computer may seem ridiculous, but it’s a great test case for the interface should any older and rarer blnkenlight panels come out of the woodwork.

Aquire Awesome Audio for BeagleBone

[Henrik Langer] put his powerful audio acquisition and output board up on, and we thought we’d point it out to you. It’s one of those projects that used to be pro audio just a few years back, but is doable (and affordable) DIY today: dual stereo inputs and four(!) stereo outputs, all sampled at 24 bits and up to 192 kHz. It’s configured as a BeagleBone cape, and comes with a customized Linux distribution for the ‘Bone.

What would you do with such a thing? It’s essentially a recording studio in your pocket, with a computer attached. The video (linked below the break) demonstrates using the device as a real-time stereo delay effect unit, but that’s only making use of one channel. Between effects, recording, and then all sorts of much-better-than-CD quality sound synthesis and playback possibilities, it’s an open-ended audio playground.

And all that from what is essentially a (very well-done) breakout board for a fancy DAC/ADC chip from Analog Devices: the AD1938. We’d love to have one of these on our desktop. Check out [Henrik]’s GitHub for the PCB and build instructions and BOM and everything else you’d need to get started. Very nice job!

Continue reading “Aquire Awesome Audio for BeagleBone”

Introducing the BeagleBone Blue

The BeagleBone is a board that doesn’t get a lot of attention in a world of $5 Raspberry Pis, $8 single board computers based on router chipsets, and a dizzying array of Kickstarter projects promising Android and Linux on tiny credit card-sized single board computers. That doesn’t mean the BeagleBone still isn’t evolving, as evidenced by the recent announcement of the BeagleBone Blue.

The BeagleBone Blue is the latest board in the BeagleBone family, introduced last week at CES. The Blue is the result of a collaboration between UCSD Engineering and TI, and with that comes a BeagleBone built for one specific purpose: robotics and autonomous vehicles. With a suite of sensors very useful for robotics and a supported software stack ideal for robots and drones, the BeagleBone Blue is the perfect board for all kinds of robots.

On board the BeagleBone Blue is a 2 cell LiPo charger with cell balancing and a 6-16 V charger input. The board also comes with eight 6V servo outputs, four DC motor outputs and inputs for four quadrature encoders. Sensors include a nine axis IMU and barometer. Unlike all previous BeagleBones, the BeagleBone Blue also comes with wireless networking: 802.11bgn, Bluetooth 4.0 and BLE. USB 2.0 client and host ports are also included.

Like all of the recent BeagleBoards, including the recently released BeagleBone Green, the Blue uses the same AM3358 1 GHz ARM Cortex 8 CPU, features 512 MB of DDR3 RAM, 4GB of on board Flash, and features the main selling point of the BeagleBoard, two 32-bit programmable real-time units (PRUs) running at 200 MHz. The PRUs are what give the BeagleBone the ability to blink pins and control peripherals faster than any other single board Linux computer, and are extremely useful in robotics, the Blue’s target use.

Right now, the BeagleBone Blue isn’t available, although we do know you’ll be able to buy one this summer. Information on pricing and availability – as well as a few demos – will come in February.

Programming with Rust

Do hardware hackers need a new programming language? Your first answer might be no, but hold off a bit until you hear about a new language called Rust before you decide for sure.

We all know real hackers use assembly language to program CPUs directly, right? Well, most of us don’t do as much assembly language as we used to do. Languages like C can generate tight, predictable code and are easier to manage.

Although some people use more abstract languages in some embedded systems, it is no secret that for real-time systems, device driver development, and other similar tasks, you want a language that doesn’t obscure underlying details or generate code that’s difficult to reason about (like, for example, garbage collection). It is possible to use special techniques (like the Real-Time Java Specification) to help languages, but in the general case a lean language is still what most programmers reach for when you have to program bare metal.

Even C++, which is very popular, obscures some details if you use things like virtual functions (a controversial subject) although it is workable. It is attractive to get the benefit of modern programming tools even if it does conceal some of the underlying code more than straight C.

About Rust

That’s where Rust comes in. I could describe what Rust attempts to achieve, but it is probably easier to just quote the first part of the Rust documentation:

Rust is a systems programming language focused on three goals: safety, speed, and concurrency. It maintains these goals without having a garbage collector, making it a useful language for a number of use cases other languages aren’t good at: embedding in other languages, programs with specific space and time requirements, and writing low-level code, like device drivers and operating systems. It improves on current languages targeting this space by having a number of compile-time safety checks that produce no runtime overhead, while eliminating all data races. Rust also aims to achieve ‘zero-cost abstractions’ even though some of these abstractions feel like those of a high-level language. Even then, Rust still allows precise control like a low-level language would.

Continue reading “Programming with Rust”