Category Archives: DSP

Fast and Efficient Pitch Detection: Bliss!

      DSP, Electronics, Pitch Detection, Software

In my previous post, I introduced my invention, Bitstream Autocorrelation: an accurate, extremely fast and efficient, time-domain pitch detection scheme. I argued that it can be as accurate as standard Autocorrelation based pitch detection schemes, especially, or at least, for very specific source inputs, such as the guitar.

As far as I can tell, this is a new invention and has not been done like this before. And so, the past few weeks, I investigated deeper and studied its performance and characteristics on real world guitar samples. For analysis, I recorded single-note samples for all strings (6 strings for now) at various fret positions. Additionally, I also recorded various guitar audio samples incorporating techniques such as hammer-ons and pull-offs and fast right hand arpeggios. I am impressed!

Here are my findings and some direction changes and updates along the way…

Continue reading

Fast and Efficient Pitch Detection: Bitstream Autocorrelation

      DSP, Electronics, Pitch Detection, Software

So, since last year, I’ve been mulling over a unique, and extremely fast(!) Autocorrelation scheme for monophonic pitch detection. Last weekend, I finally got myself to write the proof of concept. It’s not like any autocorrelation scheme I’ve seen before. I am still wondering why no one has thought about doing it this way. As far as I can tell, this is my invention, but please tell me if there’s something I am missing and if I’m not the first to actually do it this way. I dubbed the technique Bitstream Autocorrelation.

Unlike standard Autocorrelation, my scheme works on single bit binary data streams instead of floating point (or fixed point) real numbers. Compared to standard Autocorrelation, Bitstream Autocorrelation is wicked fast. As I’ve been working on multiple channels of audio on small Microcontrollers, I’ve consistently shied away from Autocorrelation schemes for pitch detection (see my original article: Fast and Efficient Pitch Detection). Popular time-domain Autocorrelation (ACF)  based pitch detection, including variants such as AMDF (Average Magnitude Difference Function), ASDF (Average Squared Difference Function),  YIN, and MPM,  are quite expensive in terms of CPU cycles required (ACF is basically an N² operation for N samples).

Continue reading

Fast and Efficient Pitch Detection: Double Trouble

      DSP, Electronics, Infinity, Pitch Detection, Software

This D string was driving my pitch detector nuts. It’s jumping from fundamental to octave and back all over the place. Can’t make up its mind! The effect is like a wacko version of Satch with a whammy pedal gone haywire.

What the hell am I talking about? Last month, I wrote about a fast and efficient software multichannel pitch detection scheme using dual peak-detectors. I needed it to be as efficient as possible, so I can run multiple detectors simultaneously using a small 32 bit microcontroller (MCU). Most of the time, it works really well, except in some cases, like that troublesome D string.

Continue reading

Fast and Efficient Pitch Detection

      DSP, Electronics, Infinity, Pitch Detection, Software

Phase Accurate Synthesizer (blue) Tracking Guitar (yellow)

I needed to implement real-time, multichannel pitch detection in software using a small ARM Cortex-M4 microcontroller (MCU). My all-time favorite is the STM32F4 family from STMicroelectronics. It has DSP and single precision FPU instructions and can reach up to 225 DMIPS/608 CoreMark at up to 180 MHz operating frequency. Not too bad, actually, especially for this class of MCUs, but it can easily get overwhelmed with complex DSP code we normally take for granted in a desktop or laptop machine with multi-cores running in the GHz range.

I’ve been working on this for quite some time now and I am quite pleased with the results. I now have a fast, accurate, low-latency, phase-correct and efficient multichannel pitch detection. I thought I’d like to share. In case you are wondering, no, it is not for note to MIDI conversion, although that is obviously one application.

Continue reading

Infinity Reloaded

      DSP, Infinity

Inf-Logo-2016Infinity… It’s all about sustain. Our goal is and will always be polyphonic sustain. Polyphonic sustain, plus extensive processing for each string, will give us musicians full control over the dynamics of the guitar. Sustain is one of the reasons why we drive amplifiers using excessive gain. We want to make the guitar sing, gently weep, or even scream like invading aliens about to decimate an entire population.

Yet, there’s still so much to be desired. We can only push the gain so much before noise dominates the trailing end of a sustained note. So we make it louder such that we induce feedback through the speakers. Or, we use sustain drivers such as the Ebow, the Sustainiac, or the Fernandez Sustainer. All of which can indefinitely sustain one note at a time (some say you can sustain more than one note, but I do not want to digress). What I want is controlled polyphonic sustain. It’s been done before, e.g. the Moog Guitar, or Keith McMillen’s StrongArm, but I’d like to offer an alternative solution with a modular architecture and an accessible open design.

Continue reading

Virtual Pickups Revisited

      Design, DSP, Effects, Evolution, Filters, Modeling, Nu Series, Open Source, Pickups, Software

A little background: I’ve written a series of articles before about Virtual Pickups and how they are implemented in software (DSP). It’s a three part series: Part 1, Part 2 and Part 3. I wrote about Standing Waves, Nodes, Antinodes and Pickup Position, Comb Filters, some underlying Math and Simulation in DSP code. I also presented what I thought was a minimal interface I really like.

Infinity_GUIIt has taken a while (I can’t believe it has been almost 2 years now!), and now I’m back to writing the software. What has transpired since then? Production of the XR and the Nu took the most of our time and I’m left with very little time to do what we I best: R&D. Now that the Nu is out, it makes sense to go back, pick up and continue where we left off, starting with the GUI.

Continue reading

Infinity goes FM

      DSP, Electronics, Evolution, Hardware, Infinity, Processing
fm

Testing the FM synthesizer

What do I do on Christmas eve? What else, but hack some C++ code. I got a new highly optimized sustain driver design that also acts as pickup! The power consumption is now at 20mA, each. With the new drivers, I upgraded to FM synthesis from simple additive synthesis. Now I will be driving the strings with FM waves, the same tech behind the 80s Yamaha DX7 synthesizer. FM synthesis was developed by John Chowning at Stanford University in the 70s. In the 80s up ’till the mid 90s, Yamaha virtually monopolized the market with their hardware implementation. The patent expired in 1995.

FM is cool! I think FM synthesis is the best fit for the Infinity project.

Merry Christmas Everyone!

 

Computational Hexaphonic Guitar

      Design, DSP, Electronics, Innovation, Nu Series, Pickups

It’s nice to see our pickups in the academe. Chengxiang Ren and Jeffrey Huang, Cornell University, Electrical and Computer Engineering, used the Cycfi Neo (now Nu) polyphonic pickups in their Master’s project. I’ll try to learn more about this project and these cool people. Their ideas are perfectly aligned with mine.

RenHuang-2In this project, we designed a computational guitar that consists of a hexaphonic pickup and a digital signal processor (DSP). As an example application, we implemented a pitch correction algorithm that corrects the pitch of each string in real-time, which enables us to play the guitar “in-tune” when it is not. Our pitch correction algorithm operates in real time on a Texas Instrument DSP board (TI DSK6713) and combines frequency-domain pitch detection and time-domain pitch shifting.

Continue reading

Easy Peasy Lemon Squeezy

      Electronics, Filters, Nu Series, Pickups, Side Winder

neo-hd-set

 

“Make things as simple as possible, but not simpler.” Ah my favourite Einstein quote. Apart from the Infinity project, here’s what we’ve been working on for the past couple of months: Coming very soon, an easy to use Neo setup. This solderless system includes everything you will need to get an extended response pickup system up and running as quickly as possible. This setup shown is for a Fender Stratocaster S-S-S configuration, but various customisations are possible. For example, the bridge pickup can be paired with a Neo6 multichannel pickup (my favourite setup!). Dual humbuckers? Sure, that’s two pairs (four pickups). The tonal combinations would be awesome if you combine four pickups in various ways. Or how about 6 pickups!

In addition to 6 string pickups, available on request, we will also offer pickups for 7, 8 and 9 strings (we are committed to the ERG crowd!). We use premium components only (Bourns potentiometers, Switchcraft jacks, gold-plated headers and connectors etc).

If you wish for a highly customised setup, don’t hesitate to send us a message. Basic customisation options include:

  1. Volume control
  2. 5-way switch
  3. Passive low-pass filter
  4. Passive high-pass filter
  5. Active resonant filter with variable Q and sweepable frequency
  6. Lithium-Ion battery pack and charger (not shown)
  7. Single-coil or Sidewinder

Here’s the system on a Fender Stratocaster. I love it so much I decided to keep it permanent! I’ll post some sound clips soon.

neo-hd-set-strat

Cycfi Extended Response pickup set

 

neo-strat

Extended Response pickups on a Strat!