ISD1700 Based Lo-Fi Sampler

Custom music instruments here at Hackaday range from wacky to poignant. OpnBeat by [Hiro Akihabara] focuses on something different: simplicity.

There are few buttons, the design and code are optimized to be straightforward and easy to modify, and the interface is slick. Eight musical keys complement three interface keys and a knob. An Arduino Nano powers the main brains of the system but the music generation comes from eight Nuvoton ISD1700s controlled over SPI by the Nano. The beautifully laid-out PCB is 110mm by 180mm (4.33″ by 7″), so cases can easily be printed on smaller FDM printers. All the switches are Cherry MX switches for the beautiful tactile feedback.

The code, PCB, and 3D case files are all available on GitHub. We love the thought that went into the design and the focus on making it easy to recreate. It might be quite as cute and simplified as this twelve-button musical macro pad, but the two together could make quite the band.

Continue reading “ISD1700 Based Lo-Fi Sampler”

A Soft Soldering Jig For Hard Projects

We’ve seen some absolutely gorgeous freeform circuit sculptures. There’s a mystic quality to taking what has normally been hidden away for safety and reliability reasons and putting it on display for everyone to see. Of course, creating these unique circuit sculptures takes considerable time and effort. [Inne] created several silicone soldering jigs to help with these tricky joints.

While a vice or helping hands is crucial for many joints, when dealing with tiny SMD components and exacting angles, you need something a little more specialized. Double-sided tape is often recommended, but heat ruins the adhesive and SMD components like to stick to soldering iron tips. Since silicone tends to be heat resistant, it makes a decent material for soldering on. [Inne] uses a city analogy with the cups for soldering called plazas, each with a hole (called a manhole) leading to a foot-switch vacuum pump to keep parts in place. The OpenSCAD code is available on GitHub under a GPLv3 license. It generates a two-part mold that you can cast in A-8/A-15 silicone.

It’s a clever project that makes it far easier to assemble gorgeous circuit sculptures. We love the design and thought that went into it, particularly the naming scheme as we often find appropriately naming variables in OpenSCAD quickly becomes difficult.

3D Printed Post Modern Grandfather Clock

Projects can often spiral, not down or up, but out. For [Derek] he started playing around with a 3D printed escapement mechanism and thought it was a wonderful bit of engineering. But with a simple drum and weight, it only had a runtime of a few minutes. What started as a simple “can I make it run longer” spiraled into a full-blown beautiful grandfather clock.

A gear drive, a ratcheted winding sprocket, and a ball chain gave the clock about one hundred minutes of runtime. Adding a recharging mechanism was fairly straightforward. The weight automatically rewinds with the help of an ESP32, a motor, and some limit switches. While an ESP32 is absolutely overkill for this simple project, it was cheap and on hand. A quick hall effect sensor to detect the pendulum passing made it into a proper clock. Considering it’s a printed plastic clock, losing only 2-3 seconds per day is incredibly good. The whole thing is wrapped in a gorgeous wood case with a distinct design.

Surprisingly, everything was designed in OpenSCAD and Blender. [Derek] includes some great tips such as cleaning out the ball bearings to make them run smoother and suggestions on how to make a plastic clock move without binding. Clock making is a complex and sometimes arcane art, which makes watching the process all the more interesting.

An Ultra Low Power Dash Cam

Dash cameras are handy as they provide a video recording of interactions on the road. However, their utility comes from the fact that they are always recording while driving. This always-on means power draw. [Kuzysk] took it upon himself to cut that power draw by a factor of almost 70x.

He found his existing dash cam from MiVue consumed 3.5mA in idle which works out to be a whole amp-hour every 12 days. The custom version takes just 50uA which means it will draw an amp-hour in two years. The brains of the chip are formed by an ATmega328 and an LM2596M, which is a simple step-down regulator. Interestingly, [Kuzysk] purchased clones and original chips and found that the cheaper clones had a lower switching frequency but a much lower power draw. Programming an Arduino bootloader onto the board is fairly straightforward and [Kuzysk] kindly provides his code. It can detect the ACC voltage that’s on when the engine is on and is powered by a permanent 12v connection to the battery.

Overall it’s a straightforward hack that goes through rolling your own Arduino, optimizing for low power, and putting it all together into a polished project. Perhaps for the next version, he can use the ATmega to control a cheaper camera and make it smart.

Thanks to [Microchip makes] and [Abe] for the tip!

Minecraft Finally Gets Multi-Threaded Servers

Minecraft servers are famously single-threaded and those who host servers for large player bases often pay handsomely for a server that has gobs of memory and ripping fast single-core performance. Previous attempts to break Minecraft into separate threads haven’t ended successfully, but it seems like the folks over at [PaperMC] have finally cracked it with Folia.

Minecraft is one of (if not the most) hacked and modded games in history. Mods have been around since the early days, made possible by a dedicated group who painstakingly decompiled the Java bytecode and reverse-engineered it. Bukkit was a server mod back in the Alpha days that tried to support plugins and extend the default Minecraft. From Bukkit, Spitgot was forked. From Spitgot, Paper was forked, which focused on performance and gameplay mechanics. And now from Paper, Folia is a new fork focused on multi-threading.

A Minecraft world is split up into worlds (such as the nether or the overworld) and chunks. Chunks are 16x16xZ vertical columns of blocks. Folia breaks up sections of chunks into regions that can be ticked independently. Of course, moving to a multi-threaded model will cause existing plugins to fail. Very little was made thread-safe and the idea is that data cannot move easily across ticking regions. Regions tick in parallel, not synchronously.

Naturally, the people benefiting from Folia the most are those running servers that support hundreds of players. On a server with a vanilla-like configuration only around a hundred or so players can be online. Increasing single-core performance isn’t usually an option past this point. By moving to other cores, suddenly you can scale out significantly without restoring to complex proxying. Previous attempts have had multiple Minecraft servers and then synced players and entities between them. Of course, this can cause its own share of issues.

It’s simply incredible to us what the modding community continues to develop and create. It takes deep patience to reverse-engineer the system and rearchitect it from the outside. The Folia codebase is available on GitHub under a GNU GPL 3.0 license if you’d like to look through it.

Move Aside Yoda, It’s Furby’s Turn On Luke’s Back

When you want a backpack that turns heads and gets people talking, you can get ahead of the conversation with a talking backpack. [Nina] created a rucksack with the legendary babbler itself, the infamous Furby.

Believe it or not, no actual Furbies were sacrificed in the making of this backpack. The build uses an Arduino Nano, two servos, and a DFPlayer Mini for audio. A 3D printed faceplate is used for the iconic eyes and face. The code is fairly simple, waiting for a random delay and then triggering one of four effects. It can play a sound or blink and does its best to move the mouth while the sound is playing thanks to the handy busy line coming off the sound module. A unicorn children’s backpack offered a furry shell to stuff the electronics inside. A custom PCB makes the whole thing just a little neater internally.

Perhaps next [Nina] can integrate voice recognition so that the backpack can answer simple questions like an Alexa-powered Furby we’ve seen before.

Continue reading “Move Aside Yoda, It’s Furby’s Turn On Luke’s Back”

Generating Instead Of Storing Meshes

The 64kB is a category in the demoscene where the total executable size must be less than 65,536 bytes, and at that size, storing vertexes, edges, and normal maps is a waste of space. [Ctrl-Alt-Test] is a French Demoscene group that has been doing incredible animations for the last 13 years. They’ve written an excellent guide on how they’ve been procedurally generating the meshes in their demos.

It all starts with cubes. By stacking them, overlaying them, reusing them, and tiling them you can get better compression than raw vertexes. Revolution was the next trick, as it uses just a few points, plotting it via Catmul-Rom splines, and revolving around an axis. The numbers are pairs of 32-bit floats and before compression, a detailed pawn on a chess board can weigh in at just 40 bytes. Just these few techniques can take you surprisingly far (as seen in the picture above).

They later worked on deforming cubes and placing them into a semi-randomized column, which happened to look a lot like plants. This isn’t the first generated vegetation we’ve seen, and the demoscene technique focused more on getting the shape and setting the mood rather than being accurate.

Signed distance fields are another useful trick that allows you to generate a mesh by implementing a signed distance function and then running a marching cubes algorithm on it. In a nutshell, a signed distance function just returns the distance to the closest point on a surface from a given point. This means you can describe shapes with just a single mathematical equation. As you can imagine, this is a popular technique in the demoscene world because it is so space efficient in terms of code and data. [Ctrl-Alt-Test] even has a deep dive into one of their projects, Immersion, with a breakdown of where the space is allocated.

There are plenty of other tips and tricks here, such as generating textures and developing a C++ hot reload system for faster iteration. It’s just incredible that the executable that plays the whole video is smaller than just a JPEG screenshot of the video. It’s a reminder that the demoscene is still fascinating with new tricks and experiences even as the hardware stays the same. Continue reading “Generating Instead Of Storing Meshes”