Category Archives: Infinity

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

Dead Bug! Prototyping SMDs

      Construction, Electronics, Hardware, How To, Infinity, Prototype

Gone are the days of DIP (Dual in-line) ICs. Most modern ICs are no longer offered in easy to use 2.54 mm (0.1 inch) pitch packages. The descendants of DIPs, the SOIC (Small Outline IC) and its friends (e.g. the TSOP (Thin Small Outline Package)) are shrunk down to 1.27 mm (0.05″) and even as low as 0.5mm (0.019″).

So how do we prototype using such tiny critters? We do it using the Dead Bug approach: A free-form construction, point-to-point soldering, often with the ICs flipped upside-down with their pins sticking up into the air like dead insects. The components are constructed, ad-hoc, using a bare copper-clad board serving as common ground. This construction technique drastically reduces electrostatic noise compared to other prototyping techniques using perf-boards or bread-boards.

Soldering a tiny TDFN-14 0.5mm package!

Dead-bug constructions are typically ugly beasts! We use a variation of the technique called the Manhattan Dead-bug Style, using small pads punched out of copper-clad board and glued into the main copper base. The pads serve as islands for soldering circuit nodes.

High efficiency Class-D amplifier

I like modular, reusable building blocks. And so we build small modules and connect them together, all on top of another bigger copper clad board. This construction is very favorable to noise sensitive electronics. The module you see here is a high efficiency Class-D amplifier.

 

 

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

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!

 

Infinity Control Panel

      Infinity, Nu Series, Open Source, Pickups, Software

Infinity_GUI

After a few iterations using my favourite graphics tools (Photoshop, Illustrator, iDraw, and Solidworks (for anything 3D)), I think this is the minimal interface I really like. I prefer using 3D CAD software for designing GUI controls even if in the end, you won’t really see the finer details once the images are rendered to a 72dpi screen (see slider at the right). slider-whiteI love solid modeling and Solidworks is simply irresistible, once you get to know the software. There’s also this nice Java app for designing knobs called KnobMan. It’s so nifty! And it’s free. it’s so useful I didn’t hesitate to donate, never mind if it’s written in Java (argh!). I used KnobMan to design and render the sprites needed to animate the knobs.

Controls

  1. Mixer: The usual suspects: level, pan and enable switch for each channel, mix to stereo.
  2. Envelope: The sliders control attack/decay ratio (horizontal axis) and the sustain level (vertical axis). The first two knobs control the attack, decay and sustain rates. The third knob controls frequency scaling. Typically, plucked string instruments have less sustain, the higher the frequency (e.g. for guitars, the low E string sustains longer than the high E string). Frequency scaling controls sustain reduction as you go up in pitch.
  3. Virtual Pickups: Here’s where you control timbre using virtual pickup simulation (see Virtual Pickups Series: Part 1, Part 2, Part 3). The upper sliders control pickup placement and skew. You can have up to three virtual pickups with controls for level, cutoff: low-pass cutoff frequency and resonance (Q). You can choose single or double coil, in-phase or out of phase and pitch tracking. What is pitch tracking? Imagine the pickup moving closer to the bridge as you fret upwards. With pitch tracking on, the same harmonic shape tracks the pitch —the nodes and antinodes follow the pitch. With pitch tracking off, the harmonic shape is fixed.

Future Features

We’ll improve this interface incrementally over time. Additional features I am excited about are:

  • Waveshaping: Distortion/overdrive in steroids. I want this to be envelope controlled. And, since we have independent control of sustain, we do not need to push this too hard to get that silky sustain heavy metal folks love. It’s purpose will be solely for timbre control. It’s all about tone!
  • Waveguide and Karplus-Strong synthesis. I’m a fan of sympathetic resonance. I love innovative (and sometimes weird!) instruments that make use of sympathetically resonating strings such as the Hardanger fiddleHarp guitars, and instruments with a third-bridge. Now, imagine the actual guitar signal driving some synthesised virtual strings. Waveguide and Karplus-Strong synthesis should not be limited to sympathetic resonance. The piano, for example, has two or three strings per note, which gives it its distinct harmonic quality from the complex interaction of the strings.
  • Pitch shifting: Global and independent pitch control for alternate tunings, pitch changes, and even whammy bar effects (e.g. using a ribbon controller). Vance Galloway elaborates: I actually rather like what the VG-99 does whereby the user has control of the “tuning” of the guitar, then can decide to double any string (like a 12 string guitar) with the doubling string at any pitch and volume relative to the original, then also have control of “bend” for each string (enabling a pedal steel type effect by using a controller to ‘bend’ any set of strings by any amount, and then also have a “whammy bar” type bend for all strings. The VG-99 does a good job at this. That said – your system could go far beyond this by allowing much more real time control of tunings, more than one doubled string (4 chorused strings anyone?!).
    And again from Vance: what about a “self tuning” mechanism. That is: a pitch shifter which is intended to correct tuning of the instrument. The old Roland VG-8 had this feature. You out the system into “listen” mode, then play all of the open strings, the system detects how much each string is out of tune and applies a pitch shifter to that string to compensate. I’m not thinking of anything as elaborate as Antares’ board which does real-time intonation correction, but rather just a quick way to correct for a guitar that has gone out of tune.
    Here’s one from David Myka: A virtual TransTrem concept where each string can be pitch bent individually to harmonize through a scale, or descend atonally, or anything. A modified rotary controller with a tensioned bar could be installed in the guitar to control it. Xaled Xaled adds: virtual capo would be a nice feature as well. Obviously per string in advanced mode. Controlling advanced settings can be done using fret control:http://www.autotuneforguitar.com/technology/fret-control.php.
  • Convolution and Impulse Response. You want accurate modeling? Nothing else compares. I’m thinking about the ability to morph between two impulse responses. Imagine smoothly morphing from a classical guitar timbre to a solid body electric.
  • Chris Varnon suggested individual envelope, pickup location or other controls for each pickup. It would add a lot of clutter to the current interface so maybe that would be better for an “advanced mode” tab. Vance Galloway adds: One interesting feature of the Roland VG-88 was its ability to place the virtual pickup on a per-string basis. I found that this really produced some interesting effects – I could “tune” the pickup placement for each song I played, so that each pickup for each string produced just the right timber. Being able to switch or even morph between pickup locations on a per string basis is going to be quite powerful.
  • Mark Galang reminded me of control over partials/harmonics especially when using the sustainer driver. Úlfur Hansson did quite some amazing things with partials/harmonics control using our much loved comb-filters in his electro-magnetic harp. I know how it’s done. It’s just a matter of presenting an intuitive user interface.
  • Yet another idea for “someday” from Vance Galloway: Even though we have a sustainer in this system, I would love to see a polyphonic “hold” effect implemented. Perhaps this is one best suited for the laptop to do, bit it would be neat to have it inside the guitar. Electroharmonix has a monophonic pedal version of this effect and the VG-99 has a polyphonic version, and it’s really quite powerful and useful. Basically it’s a small looping delay with a very smooth crossfade designed to “hold” whatever note is currently playing. It’s an intimate sustain.
    The Roland VG-99 version is near because it’s polyphonic (separate delay/sustain/loop) for each string.What they fall short on is that the user has no control of which strings are intimately sustained and which are not – all strings sustain, or none sustain.Imagine a multichannel/polyphonic version of this where the user could turn on/off the sustain on a per string basis.One could imagine being able to hold some strings and not others. Or, what if Sustain was turned on by the attack of a new note – you could create sustained chords which would be possible to play in real time by doing something like playing an open E on the low E string, then a E at the 7th fret of the A string, then a B at the 9th fret of the D string, then a G# on the 13th fret of the G string, another E at the 17th fret of the B string and a super high E on the 24th fret of the high E string.Each string would automatically enter its “hold” mode when a new note was played on it.
  • David Myka on sustain control: The sustain per sting is an awesome idea and one of the most exciting things about this design. Perhaps the level of sustain could be controlled with small ribbon controllers (one for each string) and they could be induced into sustain when strumming a chord and then sliding up the gain. I wonder if a reset button could also be employed. Something that either tops the sustain immediately or gradually. Just thinking out loud.
  • From Xaled Xaled: Polyphonic MIDI-out would be a great side project.

What else? If you have something in mind, tell me what you think!

 

Infinity Driver v0.93 Prototype

      Electronics, Infinity

From 3D model to actual prototype, here’s the Infinity Driver v0.93, front and back views. The coils are 16Ω gauge 35 magnet wire, with Neodymium N42 core. The 5mm high coils are shielded by 2.5mm thick permalloy rings. The rings focus the magnetic field and minimise electro-magnetic fields leaking out from the coil. The amplifiers are 3 pairs of high-efficiency 2.4W Class D amplifiers: MAX98302. The entire assembly fits inside a standard humbucker.

3D Model

inf-driver-front-3d

3D Model Infinity Drivers Front

inf-driver-back-3d

3D Model Infinity Drivers Back

Actual Prototype

Infinity Drivers Front

Infinity Drivers Front

inf-driver-back

Infinity Drivers Back

 

The Infinity Project

      Design, DSP, Electronics, Hardware, Infinity, Nu Series, Open Source, Pickups, Software

We want to push the limits of what we can do with the electric guitar. The Neo project (starting from the Six pack project) is a stepping stone towards our goal. And from the very start, our goal has always been polyphonic sustain. Polyphonic sustain, plus extensive processing for each string, will give us musicians full control over the dynamics of the guitar. This is my holy grail and as you can see in our previous proof of concept demonstration, we’ve come closer to that goal than ever before.

Presenting the Infinity Polyphonic Sustain system:

Infinitynew

Digital Control

driver

Driver coils with integrated amplifiers.

It takes a lot more than just slapping together six EBows. A very early prototype employed a 6x analog feedback system just like the Ebow. It worked but was rather unwieldy and impractical. The phase at the driver (neck position) lags behind the phase at the pickup (bridge position) and you need some form of phase shifting (using analog filters) to align the phase properly for sustained oscillation. Without phase shifting, you have to use more force than necessary to get the string to oscillate, and that wastes too much power.

All it should take is a little nudge. That’s what I always say. I think current breed of analog sustainers inefficiently use too much power. If you pull at the right moment with just the right amount of force, you can get something to oscillate indefinitely. That’s the essence behind sympathetic resonance. With just a little amount of force, at the right frequency (and phase!), you can make a very sturdy bridge collapse, for example.

We favor a digital approach with a microcontroller (MCU) doing the phase and frequency locking and synthesising a waveform that’s fed back to the driver (more on this later). A digital system vastly simplifies the required electronics. The MCU can do the phase corrections, analyse the envelope of the input and control just the right amount of signal to drive each string to oscillation.

MCU

Acoustic synthesis

A digital system buys us a lot of flexibility. For instance, with a digital system, we can feed any kind of waveform back as long as it is coherent with the input. Recently, we’ve tried square, pulse, triangle and sawtooth. Wave tables would be cool, for example! How about samples of bow noises or wind blow noises? How about the human voice? Guitar or Piano samples? That might be cool. And, needless to say, there are no nasty squeals that plague analog feedback systems. It’s just pure sympathetic resonance!

Synthesized-Feedback

Acoustic synthesis is a powerful concept. It involves the creation of new sounds by controlling the vibrations of actual physical objects, in this case, the strings.

I’m sure most of you are aware that hexaphonic sustain has been done in the past with the Moog guitar (or the more recent Vo96 Acoustic Synthesizer). So what makes this project different? Unlike the Vo96 —a pure acoustic synthesiser, we opt to combine both traditional synthesis and acoustic synthesis.

EnvelopesThe Moog guitar, and the newer Vo-96 system use pure acoustic synthesis and advertises zero post processing. In my opinion, that is not necessary. You do not need an elaborate system for controlling everything, including timbre and dynamics. Just because you can do something, doesn’t mean you should.

Instead of pure acoustic synthesis, we prefer to post-process the polyphonic signal. You can do a lot with post processing on individual strings including control of attack and decay. An advantage of our approach is that it is simpler, requires less power, and does not require special strings! You only need to get the string sustaining, plus introduce some harmonics along the way. There’s so much potential in polyphonic processing that the Vo system shuns. A simpler system should cut the cost down considerably.

For example, we will not perform sustain dampening acoustically like the Moog did (the banjo effect). Instead, we intend to do DSP processing for each string. With post-processing, it’s easy to sculpt an envelope to achieve the muted banjo like effect. DSP processing will give us full control over the dynamics of the guitar (e.g attack, decay, sustain in addition to harmonic control). With these controls, you can have anything from banjo like short-sustain to long piano-like sustain and of course, infinite sustain.

Software

But it should not be limited to dynamics control. We’re also looking at timbre control and the injection of harmonics using various forms of synthesis techniques such as Waveshaping for timbre control (polyphonic fuzz in steroids!) and Kurplus Strong synthesis (e.g. having a number of virtual strings in memory excited by the inputs from the Neo pickup potentially modifying the parameters in real time). You can have drone strings, doubles, triples, etc. There will also be pickup placement simulation (using comb filters and short convolution for applying captured impulse response of other instruments (e.g. acoustic guitars).

The software is hosted in your laptop (or desktop). A software plugin (AU, VST, RTAS, AAX) does the multi-channel post processing and control; sending downstream MIDI data to the MCU inside the guitar for controlling feedback. The in-guitar MCU can also send upstream MIDI to control performance parameters (e.g. volume, pan, pitch-bend, cutoff-frequency, resonance, etc.) using potentiometers and other forms of user-control hardware directly from the guitar.

Further Reading

To Infinity and Beyond!

      Infinity, Nu Series, Pickups, Sustain

The Infinity Project

Hey, we have a New Project! Here’s a very early prototype of the Cycfi Infinity Polyphonic Sustain System. The proof of concept video above demonstrates dual sustainer drivers at the neck position with the Neo6 polyphonic pickup at the bridge. In this demo, the sustain drivers drive the two upper strings (B and E). The high, thinner strings are the most difficult to drive due to low mass and weak magnetic pull. The thicker strings are a lot easier to drive into infinite sustain.

infinity_v0_1

Infinity v0.1

We use plain D’Addario Strings (0.009 – 0.042 super light gauge). The output of the Neo6 is summed to mono and goes to a Marshall combo with the treble set to zero, a bit of bass and mid. The amp is mic’d (Shure SM57) and recorded using Logic Pro, no guitar effect plugins, flat E.Q., a bit of reverb and a touch of delay.

The strings are driven into sympathetic resonance using both hardware and software phase and frequency locking mechanisms. The drive waveform is synthesised from the polyphonic signal coming from the Neo6 pickup. The polyphonic drivers are driven at the fundamental frequency of the vibrating string with additional controlled odd and even harmonics.

More info to come. Stay tuned!

 

Iron Man

      Infinity, Nu Series, Pickups, Sustain
Iron Man Test Guitar

Iron Man Test Guitar

Meet Iron Man, one of our test guitars. You’ll immediately notice a Neo6 in the bridge position. But what is that thing in the neck position? Can anyone venture to guess? Hint: click to zoom and you’ll probably notice 6 more staggered, rectangular coils in there. If you can guess what it is, you are looking a very early prototype. Friends, this is our future! 

“Sustain” Myth and Science

      Alpha, Construction, Infinity, Myths, Sustain

Question: Which solid body guitar has better sustain, the Fender Stratocaster or the Gibson Les Paul? If you were like me, you’d probably pick the Les Paul. I’ve taken it as plain truth that there’s no competition: Gibson Les Paul = incredible sustain. Boy, was I so wrong!

Nigel’s Guitar Room

Nigel’s Guitar Room

An article by Mottola, R.M. “Sustain and Electric Guitar Neck Joint Type”, piqued my interest. Mottola, in his experiments performed power analysis, spectral analysis, and listening evaluation on three types of solid body electric guitars with 1) Bolt-on neck construction 2) Neck-thru construction and 3) Set-neck (glued-in) construction.

Continue reading