The Maths Behind A Chord Recognition Engine

A key part of any tertiary musical education is learning about all the wonderful (and less wonderful) types of chords out there. Typically this involves a great deal of exercises involving the identification of a given chord from its component notes. But how would you do this programmatically? Well, thankfully, the developers behind the WhatChord tool are happy to explain just how it’s done.

The problem with classifying chords is that the way musicians use them and construct them can be quite varied. Names can also be applied somewhat differently depending on the musical context of a given set of notes. To suit the musical reality of real players and composers, WhatChord uses a specially-developed scoring algorithm to try and nut out what a chord is actually supposed to be.

As an example, a major chord must require a root note and a major third interval. It can optionally include a perfect fifth. However, if there is a minor third, minor seventh, or major seventh present, then you’re almost certainly not looking at a simple major chord. WhatChord takes these things into account by weighting the different tones present and seeing which chord gets the highest score. The required notes add weight, while notes that shouldn’t be there add a penalty to the score. Then there are extra penalties for ambiguous “unexplained” tones, extensions, and a few other parameters to disambiguate edge cases.

If you’d like to see how it works in practice, you can check out the WhatChord app and see how good it is for yourself. Alternatively, explore some of the other chord-focused projects we’ve featured over the years, or send your best musical projects into the tipsline.

[Thanks to baschwar for the tip!]

NFC Record Player Promotes Intentional Listening

Streaming services have enabled many of us to have easy access to the world’s media library at the touch of a screen, but [Coconauts] thinks we’ve lost something along the way. To bring some intentionality back to the listening experience, they built an NFC record player called Minilos.

Like a normal record player, Minilos requires the user to select an album to play on the machine. These were originally decorative coasters with records printed on them, so they are much smaller than even a 45. Each one features an NFC tag that instructs ESP32 microcontroller hidden in the device to play the requested song. Once placed on the record player, it will then play through that album and come to a stop.

In [Coconauts]’s current setup, the ESP32 is connected to a Home Assistant server which then instructs a Google Speaker to play the requested song via Spotify, although we could easily imagine this being used to play music directly from an SD card or other digital storage device instead.

If you want complete control over your music listening while still keeping that authentic vinyl experience, you could always look into cutting your own records with a laser.

Mixapps: The Mixtape Of The Internet Age

Mixtapes used to be a way that we cultivated a personal selection of music for our own enjoyment, or to give as gifts to those we wanted to impress with a personal touch. These days, we’d typically try that with a playlist, but it’s less romantic despite also being more ephemeral. Songs fall off streaming services all the time, and few of us have the exact same subscriptions as those we’re trying to flirt with. Thus, [Hunter Irving] whipped up a more lasting solution for this modern age.

The concept is simple—it’s a collection of songs that are packaged together in a easily portable format that won’t disappear because of corporate bureaucratic nonsense. [Hunter] has termed their project Mixapps—because it’s a method of sharing music based around Progressive Web Apps (PWA). To create a custom mix, you start by running a Python script, which will then let you add tracks and reorder them as you desire. From there, you run a second script that builds the web app for you.

You can then upload the prepared app directory to a web host to share it with anyone you like. They can then save the PWA to the home screen of their mobile device, where it will live happily ever after. There’s no need to keep hosting the app online or for the user to remain connected to the Internet; everything is self contained on their device. If you’re curious, there’s a demo you can check out online.

It’s worth noting that there are intellectual property concerns to be had as with any form of music sharing, but what else is new? We’ve explored the magic of mixtapes in the past, anyway, to be sure. If you’re finding new ways to trade music and playlists, romantically or platonically, don’t hesitate to let us know.

Win95-Tracker-CYD Is A Cheap Yellow Mod Tracker With I2S

The Cheap Yellow Display is a great little module to start a project with, but it wouldn’t necessarily be our first choice for an audio device. That’s because the PWM on the ESP32 isn’t exactly going to put out hi-fi, and the I2C pins needed for the I2S audio protocol aren’t broken out on the CYD board. That didn’t stop [ivans805] AKA [Ill-Town-5623]– he wanted a mod tracker, he had a CYD board, and necessity is the mother of invention.

It isn’t exactly a ground-breaking hack: he’s just tossed a bodge wire to the pin he needs on the ESP32, and run it to the I2S sound module. Still, in this era of endless modules it’s nice to see someone hacking what they have rather than running to AliExpress or somewhere else for a part that has everything the project needs built in.

The bodge wire is how you know it’s a hack.

What really caught our eye when we saw this project on the ESP32 subreddit was the aesthetics. It might be called “Win95-Tracker-CYD” but that interface just screams “Amiga” to us– look at that Boing Ball! Given where MOD files come from, that’s perfect. The UI was made with Lopaka.app, which we haven’t seen before but appears to be a sort of WYSIWYG editor for embedded device interfaces.

While you don’t need an ESP32 to play mod files– the diminutive CH32 can manage the task— there’s no arguing the CYD could make a nice little player. If you actually wanted to push its limits, you might try a 3D engine instead,

3D Printed Train Whistles Sound Out At Full Scale

The age of steam is long gone, but there are few railfans who don’t have a soft spot for the old rolling kettles. So you’d best believe when [AeroKoi] talks about 3D printed train whistles, that’s steam whistles. Generally speaking, Diesels have horns.

You would not expect printed plastic to hold up to live steam– but that’s why [AeroKoi] uses compressed air. Besides, it’s a lot easier to both justify and maintain an air compressor than a boiler in the shop. At least some hobbyists say it doesn’t make a huge difference with brass whistles, so it should be good enough for plastic. What’s interesting is that even with 120 PSI blasting through them, these multi-part prints held together and sounded amazing.

[AeroKoi] does demonstrate there was a learning curve to climb before he had a good whistle design, and shows you what features worked best. He shared two successes on Thingiverse: A 6-Chime whistle from the Sante Fe Railroad, and a Northern Pacific 5-chime whistle, both 4″ in diameter and printed in vertically sectioned parts. The Northern Pacific is not to be confused with the totally different Union Pacific Railroad, whose famous “Big Boy” also had a whistle feature in the video — though evidently he’s not as happy with it, since he did not share the design.

Those are all North American designs, but there’s no reason this technique wouldn’t work to replicate a more European sound; one of his early experiments was kind of going in that direction already. Of course if you want a perfect replica, the old ways are the best ways: cast brass and live steam. We’ve had a few articles about train whistles in the past, one of which was a doorbell. 

Continue reading “3D Printed Train Whistles Sound Out At Full Scale”

Taking Polyphony To A New Level

There are all manner of musical synthesis techniques, from the early electromechanical instruments through analogue tape systhesis, the all-electronic waveform synthesisers of the 1960s onwards, and Yamaha’s FM systhesis of the 1980s, to name but a few. One of the attributes of such a machine lies in how many voices it has, or in simple terms, how many notes it can play simultaneously. Electronic complexity limited those early synths, but what happens on an FPGA where vast numbers of circuits can be made with little extra cost? [Tsuneo.Ohnaka] is pushing the envelope a little, by cramming 10240 individually controllable oscillators onto a Terasic DE10-nano FPGA board.

While this thing can in theory generate 10240 different notes at once, in practice that doesn’t mean it has 10240 voices. Instead he calls it a spectrum engine, in that with such a large number of oscillators all with individually controllable frequency, phase, and amplitude, he’s made the part of all those Fourier transform maths where all the different frequencies are combined, in hardware. It’s as though you had a sound card which wasn’t based around a DAC fed with samples, instead all those spectrum points you’d derive from a Fourier transform. Because it’s a massive parallel array of real oscillators it all happens concurrently, instantaneously in real time, and is not held back by the processing constraints of a microprocessor. Think of it as something akin to a software defined radio transmitter, but for the world of audio synthesis.

In that light, it can emulate all those other forms of audio synthesis driven by software, but without the software overhead of generating the waveforms. It’s certainly a different approach to generating audio from a computer, and he’s posted a cacophonic demo video below of it as an 80-voice polyphonic synthesiser. We like it.

Continue reading “Taking Polyphony To A New Level”

This Handy Synth Packs An ESP32

Since the first electronic hobbyist wired up a multivibrator to a keyboard many decades ago, electonic synthesisers have been a staple of home-made projects. Now with the proliferation of significantly powerful microcontrollers it’s possible to make a synth that surpasses many of the high-end models from days gone by.

Among those we’ve seen of late perhaps none does this better than [Povle] with their Spark portable keyboard. It’s a tiny thing that reminds us of those little Casio synths of the 1980s, but in its 3D printed case it packs a load of features.

Hardware wise it’s an ESP32 with a 3D printed keyboard using keyswitches. There are a load of pots for sound adjustment, and buttons for functions. A small OLED display shows what’s going on. Software wise it relies upon the AMY synth library, and there are repositories for both its hardware and software.

There’s a demo video we’ve placed below, and in it you hear the keyboard at work. And here maybe we’ve saved the best until last, because alongside being a fully featured synth, it’s also a sampler and a Bluetooth MIDI keyboard. Is there nothing this thing can’t do!

Continue reading “This Handy Synth Packs An ESP32”