The SmartBow Final Report

The SmartBow

smartbow.jpg

Elevator Pitch:

The SmartBow is an electromagnetic bowing device for guitar that creates unlimited sustain and rich harmonics across each string specified by the user.

Deeper Explanation:

The SmartBow uses a series of six pairs of individually wound miniature pickups to create an electromagnetic feedback loop around each string of a guitar. These loops are turned on by buttons controlled by the user and are all independent of one another, offering total control over each individual string. The first pickup in each pair is wired normally and converts the magnetic flux impressed on it by the vibration of a guitar string into analog voltage. This voltage is then heavily amplified and sent to the second pickup in the pair, the output pickup, which is wired in reverse so that it emits a magnetic flux onto the guitar string, causing it to vibrate more. This vibration is then detected again by the first pickup in the pair, and feedback begins. This process is the same across each pair of pickups, corresponding to each of the six guitar strings.

Here is a video of the SmartBow in action:

Here is the manual for the SmartBow:

SmartBowManual.png

User Testing Feedback:

The user testing for the SmartBow was done by Wes and Tia. They both played the SmartBow mounted on an acoustic guitar of mine and gave me their comments, which were very similar. To summarize their reviews, they liked the overall tone of the SmartBow as well as the “envelope” of its attack and decay. They both thought the concept of unlimited sustain across all strings with independent control of each was really cool. However, their critiques were also similar: they both said they wished the overall output was louder, and that it was more evenly balanced from string to string. Also, while they appreciated that you could still play the guitar normally with the SmartBow mounted, they said it is a little bulky and can interfere with some playing styles. Overall, they said they liked it and would definitely use it themselves.

I though Wes and Tia’s critiques were totally valid. In its current configuration, the SmartBow definitely effects each string slightly differently in terms of output level. This is probably because each guitar string is very different in size, and some sizes are easier to vibrate than others. To resolve this in future versions, I could tailor each pair of pickups more specifically to each string by changing the inductance of them to raise or lower output level. This would even out the output levels across all of the strings. As for the actual interface interfering with some playing styles, I could probably make it smaller by switching to surface mount components on the PCB. This would mean the height of the device could be less and it would then be less in the way. I could also switch to 3D printed buttons to save space, because they would not protrude down into the enclosure nearly as much as the current buttons do. I could also probably raise the overall output level by increasing the voltage of the power supply and further optimizing the inductance of each pickup.

All in all, I am very with how the SmartBow turned out. It isn’t perfect, but it’s a great first prototype that I definitely plan to improve on in the future. Here are some photos of the SmartBow throughout its creation:

Divided Pickup v1:

IMG_1969.jpeg

Divided Pickup v2:

IMG_2079.jpeg

PCB all soldered up:

IMG_2149.jpeg

PCB and pickups mounted in enclosure:

IMG_2161.jpeg

Manual

Here is the manual for the SmartBow! I opted for a “less is more” style, given that the device is already fairly self explanatory. The manual includes the basics about mounting and using the SmartBow, as well as a description of each control on the device.

SmartBowManual.png

Week 8 Progress Report

This week I secured my guinea pigs for testing! Wesley and Tia from Music tech said they would be willing to help. I plan to have them each play with the SmartBow and document what they like and what they think could be done better.

Also this week, I also began some more advanced modeling of my enclosure, and made a few prints (I had to fix a problem with my printer too, which took a good chunk of time and effort). In parallel with this, I also decided on the exact parts to buy. I picked some really nice buttons, a basic sliding switch, and the smallest DC power jack I could find. Finding buttons that were shallow enough to fit in my enclosure without interfering with any op-amps or capacitors was challenging. All of these parts are now ordered!

Since I was ahead this week, I decided to design my PCB early. I used kicad, and it went fairly smoothly. The most challenging part was getting everything to fit on the skinny board. Also, I had to plan ahead for what hardware would be mounted where in the final enclosure so that I didn’t accidentally place a tall component such as a capacitor where it would interfere with a button or switch or something. Here is the final design I settled on:

Screen Shot 2019-04-20 at 5.24.05 PM.png

I ordered 3 of these boards from OSHPark and am awaiting their arrival!

Progress Report Weeks 6 and 7

Here is the design of my interface:

SmartBow_v2.jpg

My project will be housed in one single enclosure, making it easy to mount and also more robust than if it were in several pieces. The 6 black buttons correspond to each string, and pressing one of these buttons activates the corresponding string. The power switch will be on the bottom so that is easily accessible but could not accidentally get switched off during play. The power indicator, however, will be located on the top so that the user can easily verify that the device is turned on. The beauty of this interface is its simplicity. Given the small amount of buttons/switches and the natural correspondence between the buttons and the strings, it would be very hard to misuse of misunderstand this interface.

3 similar devices:

While there is no current product that is exactly the same as mine which electromagnetically vibrates guitar strings and gives independent control over each string, there are other products that use similar technology.

The first and most obvious is the eBow, which is a device developed in the 70’s. It is a handheld string exciter that uses the same electromagnetic technology to vibrate one string when the device is held over said string. This is an interesting product but it has several disadvantages. The most significant of these is that you have to actually hold the eBow and therefore you can’t really play the guitar normally while using the eBow, or even transition easily between the two. Another major drawback is that you can only bow one string at a time, a problem my project seeks to answer.

The second similar product is made by TC Electronics and is called the Aeon. The Aeon is pretty much exactly the same as the eBow, except it was just recently released. The Aeon is more optimized than the eBow, allowing the user to hold it farther from the strings by maximizing the electromagnetic power of the inductors. The Aeon also has a much sleeker and generally better design – it looks better and is easier to hold and use. However, the same drawbacks that apply to the eBow apply to the Aeon as well – you have to hold this device and it can only play one string at a time.

The third similar product is called the Sustainer, made by Fernandes. The Sustainer is sort of the inverse of the eBow: you don’t have to hold it, but you have no control over how the sustain is used. This is because the Sustainer mounts in the guitar in place of the pickups, then creates a feedback loop from the output jack back to a master driver pickup that vibrates the strings. Therefore, all strings get vibrated when the device is activated, so while you can sustain more than one string at a time, you have no real control over which string is resonating unless you mute the unwanted strings manually. The biggest disadvantage of the Sustainer is that you have to uninstall your pickups and replace them with the Sustainer pickups which is highly inconvenient. My design mounts directly onto the guitar and does not require any internal modifications.

Manual: 

Given the simplistic nature of my product, my manual will be a single, small card describing the basic function and uses of my product. It will also include information such as battery life and mounting procedure and general care. I could potentially include some tips for use, but I have not decided yet.

Enclosure:

My enclosure will be 3D printed and I have already begun test printing and verifying my design. Here is a screenshot of the 3D model from Fusion. I haven’t decided on buttons yet, so there are no button holes.

Screen Shot 2019-04-17 at 8.39.48 PM.png

Work done in Weeks 6 – 7:

As stated in the previous calendar, these weeks were all about power optimization: maximizing the output from the driver pickup to achieve the loudest string vibration possible. At first I thought this was a matter of circuit optimization, but it proved to be much more complicated. Luckily I had sufficient output from my original proof of concept against which I could compare my the output of my developed version. What I observed in testing my pickups (version 1) was that their output was significantly lower than the output of the single-string pickups I made for the proof of concept. This perplexed me, as the resistance of both sets of pickups were exactly the same. The main difference between the two was that the proof of concept pickups consisted of coils wrapped around an iron core with a magnet placed on the bottom. After researching the topic of inductance, I found that stronger magnets lead to a stronger magnetic field. So, for my pickups, I decided I would get cylindrical magnets and wrap those with coil, so that I could fit the largest magnets possible in my pickups. This did work, however as previously mentioned the output was too low. So, I decided to do some more research. While I confirmed my previous findings that a bigger magnet means more inductance, I found a new piece of information that I had missed before: by wrapping the coil around an iron core and then magnetizing the bottom of the core, the magnetic field becomes highly directional. Therefore, when the pickup is pointed at the string, the signal is greater than when just the magnet is wound.

So, after learning this, I decided to make a new set of pickups with coil-wrapped iron cores which I could apply a magnet to. To do this, I first had to find some iron cores that were the right size for my design (5mm diameter, 5mm height). I was unable to find any from a manufacturer, but luckily I had some old guitar pickups laying around. These pickups use iron pins for the same purpose I need them, and they happened to be the right diameter. However, they were way too long. To fix this, I cut each pin down with a hacksaw so that they were roughly 5mm tall each. I did this for 12 pins. With my 12 pins, I created two new pickups, 6 pins each, coiled so that they had the same resistance as my proof of concept pickups. This whole process took a very long time, and after I finally got everything fabricated again – surprise! The new pickups had the same low output as the first set.

This was infuriating, but I kept pushing ahead and went back to the drawing board. At this point I felt really stuck. The resistance and general construction of my pickups were now the same as the proof of concept pickups and yet their performance was still worse. I thought hard for several days and read everything I could find on induction. After a significant amount of critical thought, the elusive but simple thought occurred to me: I used a different (heavier) gauge wire to wrap my proof of concept pickups because space was not an issue at the time. Heavier gauge wire means less resistance per length, so when the two “versions” of pickups were the same resistance, the proof of concept pickups had more wire turns on them, and more turns means more inductance. Now I had a real problem: the wire gauge on my PC (proof of concept) pickups (32 gauge) allowed for the right amount of resistance and enough turns for sufficient inductance but it was too thick to fit inside my enclosure. Conversely, the wire on my mk2 pickups (42 gauge) was small enough to fit in the enclosure but too resistive to get enough turns and maintain the correct resistance. The solution: a new wire gauge in the middle!

To figure out the right wire gauge, I first determined how resistive the gauges I already had were in terms of turns. I calculated the following: each turn with the 32 gauge wire has .01 ohms of resistance, and each turn with the 42 gauge wire has .12 ohms of resistance. This is a huge difference. So settling in the middle, I ordered 34 gauge and 36 gauge wire to be tested.

Once the new wire arrived, I made a few more single test pickups, and ultimately decided on the 36 gauge wire. Each turn of the 36 gauge wire has roughly .03 ohms of resistance, so I can get roughly 250 turns while maintaining the needed 8 ohms of resistance. I made yet another test pickups to verify this, and it worked great.

Finally, I made another set of pickups with the new wire, and after all of this they are now working great. The output is strong and consistent. Problems all solved, on to further interface design!

 

Calendar:

Week 8: Determine proper power conditioning, optimal battery, best hardware (buttons, charger, etc).

Week 9: Design PCB and order!

Week 10: Finish enclosure design, assemble final product!

Week 11: Extra week in case for unpredicted problems

Week 12: Finish manual, give to friends for testing

 

Midterm Report

The hardest parts of my project are all done! Specifically my two divided pickups are fully completed and turned out beautifully. Each one has 6 individual pickups within it that are capable of producing high level and high quality output from each string while still being small and discreet. I also finished my pickup enclosure design so they look quite sleek and attractive. Each pickup mounts nicely under the strings requiring no modifications to the guitar to be mounted and does not interfere with normal playability when mounted, which was a big criterion I wanted to maintain when I first started. Here is a photo of the pickups in their 3D printed enclosures:

IMG_2035.jpeg

As you can see, they are clean and discreet and even have built-in height adjustments for each string to maximize output consistency. Finishing these was the biggest part of my project and I am very happy with how they turned out, especially considering something like this has never been made before (Roland manufactures a divided pickup but its output is very low – too low for my use or any use without an outboard preamp, which is how they use it).

Another important step I recently made was the decision to revert back to making my project entirely analog, thus eliminating the Teensy. I did this because I was having to make too many compromises with performance in order to achieve the benefits I originally chose the digital approach for. Despite optimizing my code to its highest potential, at the end of the day I was unable to overcome the memory and DAC limitations of the Teensy. The biggest problem I encountered was that the Teensy only has three onboard timers for PWM output, so only three strings would be able to be played at once – a huge compromise, and one I am unwilling to make. So, I went back to exploring the analog implementation of my idea. The main reason I chose digital in the first place was to have instantaneous string excitation instead of needing to wait for the analog feedback to become great enough to vibrate the string. However, after more testing with higher power applied to my analog circuit, this delay has been minimized to be within a tolerable range. Also, because of the true analog feedback, the sound is much more rich and generally more pleasing than the synthesized digital version. Overall, I believe the analog implementation is the best way to go.

I have also decided to change my user interface design a bit to make it more robust. I am no longer using capacitive touch sensors to turn the pickups on but have instead reverted back to buttons – more reliable and significantly easer for the user to mount on their instrument. Here is an updated design of my final product:

SmartBow_v2.jpg

This design will ultimately be better than the original for a few reasons: First, it reduces potential for user error, since it is now only one piece than can only be mounted in one orientation, the user can’t mess it up somehow during installation. Second, it is more compact and looks more discreet since it is only one piece and obscures the body of the guitar less. It will also be easier to make, since I can just 3D print one enclosure and put all of my electronics inside of it.

Here is a video of my divided pickups in action. As you can see, only the selected string is audible through the speaker. The sound is pretty clear (please ignore speaker distortion, it was the only one I had lying around), and there is no bleed between strings.

 

Calendar of stuff to do!

Week 7: Maximize circuit/pickup power output, make prototype fully operational

Week 8: Determine proper power conditioning, optimal battery, best hardware (buttons, charger, etc).

Week 9: Design PCB and order!

Week 10: Finish enclosure design, assemble final product!

Week 11: Extra week in case for unpredicted problems

Week 12: Finish manual, give to friends for testing

 

 

Progress Report Weeks 3-4

The last three weeks have been incredibly busy and highly productive. I have advanced my project by leaps and bounds and am well on track to having everything done. That being said, every milestone came with a new set of unforeseen challenges, all of which have been overcome so far.

Much of my time over the last few weeks has been dedicated to my new 3D printer! After realizing the vast need for a 3D printer this project requires (and some other personal motivation, i.e. fun) I decided to just get my own and make the whole process much easier. I won’t go into all of the details about my 3D printing experience, but in a nutshell I have started to really fine-tune my prior skills and have been printing enclosures and parts for the past several weeks. Most of my enclosure design has been for the pickup bodies themselves, as these must be elegant and precise for maximum performance. These enclosures house the individual pickups (6 per enclosure, two enclosures) as well as the perfboard they are wired to. Each pickup needs to be at a specific height, as each guitar string vibrates with a different intensity. After much trial and error, I found the correct heights for each pickup, and modeled them into one enclosure. Here is a screenshot of the 3D model of the pickup enclosure:

Screen Shot 2019-03-04 at 10.08.01 PM.png

And here is a photo of the printed enclosure with mounted and wired pickups:

IMG_1971.jpegAs you can see, each pickup is one individually wound magnet! I did these myself and it took an eternity. To save space while still having the amount of wraps needed for my target resistance (10 ohms per pickup) I used 42awg wire. This is about as thin as hair and is even more fragile. In other words, it is a huge pain to work with. However, it does make it possible to create really small pickups! This wire is wrapped around 5mm tall and 5mm wide cylindrical rare-earth magnets which are incredibly strong for their size. To make winding each pickup as easy as possible, I repurposed an old project containing a stepper motor to make my own pickup winder. I combined this with a few quickly 3D printed parts and it made my life significantly easier. Here is a photo of that contraption:

IMG_1966.jpeg

Over the past couple of weeks I have also optimized my software and circuitry. I greatly improved my sampling process so that it now only takes 11 microseconds to read the value of one string, so ~60us in total. My pitch detection algorithm is also much faster now, taking about 10ms for 90% accuracy. 10ms might seem like a lot, but this only needs to happens for a couple strings at a time, so it should be fine. I also developed a highly functional and greatly beneficial preamp for the detection side of my project. It is just a simple inverting op-amp gain circuit, but dialing in all of the correct values took a good deal of time. The problem here is that if any clipping occurs on the input, harmonics are added and thus the detection algorithm becomes less accurate. Here is the preamp circuit that will be on each string’s pickup:Screen Shot 2019-03-04 at 10.40.21 PM.png

The task I am currently facing is on the output side. While I have successfully used additive synthesis to accurately recreate the timbre of a guitar string with the Teensy audio library, the overall output is still less than ideal. It is loud enough to be heard, but I want more! The problem here is that my audio is coming from PWM output, which is limited to an amplitude of ~1.6V (3.3V/2). My first (and stupid) attempt to improve output signal was to use an op-amp gain circuit to boost my signal. However, I powered the op-amp with the Teensy, so its range was still capped at 3.3V. It took me a while to figure out why my signal was not being amplified like I thought it would… So after realized my dumb oversight, I tried the same circuit with a 9V battery powering the op-amp. This helped quite a bit! However I still want more power. My next experiment will be to use a step-up converter to turn my 5V USB/Battery power to 12V to power the gain circuit, and hopefully that will be enough.

So what is left?

  • Increase output energy
  • Perfect synthesis
  • Make another pickup (meaning 6 independent pickups in one enclosure)
  • Make an enclosure to house all circuitry (PCB and Teensy)
  • Design PCB (circuits are done, just need to redo them in KiCad)
  • Figure out keyboard/key pads… (saving this for last as it can be compromised if needed)

Week 2 Progress Report

This week I tackled what I expected to be the most difficult of the development stage of my project. I have decided to take my project entirely digital (meaning no analog feedback). This approach has many advantages, such as faster response time, regulated level control, advanced harmonic control, etc. However, this approach is also significantly more complicated than the analog version for two reasons: First, it requires real time pitch detection for each string. Not only does this involve fairly complicated and processor-intensive DSP but it also means that inputs from all 6 strings must be sampled independently. Second, this approach requires the synthesis and playback of a guitar string-like waveform. In order to achieve maximum resonance, the timbre of the digitally synthesized wave must be as close as possible to the natural timbre of a guitar string. These are two very large obstacles to overcome, and I solved them both this week.

Sampling and Pitch Detection:

The reason that sampling 6 audio inputs at once is difficult is that the Teensy 3.2 only has one ADC. This means that only one channel of continuous audio can be read in at one time. I overcame this complication by multiplexing 6 analogRead() functions through the single ADC using very precise timing sequences, thus creating my own audio sampling algorithm. This was fairly difficult to figure out, especially because the analogRead() function itself is fairly slow, but once I tested and calculated the precise timing factors (down to 7us), it all came together, allowing me to sample all 6 strings at once and store the samples in a buffer to be processed for pitch detection.

Once the samples buffer fills up, it gets sent to my pitch detection algorithm. The technique I decided on for pitch detection is called Autocorrelation. In a nutshell, autocorrelation works by cutting the buffer in half, overlaying the second half on top of the first, and then comparing (correlating) the two while iterating through increasing delay periods. When the two halves reach a point where they are highly correlated, the algorithm uses the delay period at that point along with the sampling rate to calculate the fundamental period (or frequency). This is of efficiency O(n^2), which is not great but better and more accurate than performing a full FFT or DFT on the buffer because it allows the buffer itself to be smaller (256 samples for roughly 7ms of latency).

Synthesis and Playback

I solved the problem of needing to synthesize the waveform of a guitar string by using the Teensy audio library and a series of 8 sine waves representing the fundamental frequency and harmonic series of a guitar string. I then wrote a simple function that calculates the pitch each sine wave should be based on the fundamental frequency as detected in the sampling phase. These waves are then all summed via the library outputted as PWM signal. PWM requires some analog processing before it is useful. This is because the ultra-high carrier wave needs to be filtered out and then the remaining signal must be amplified. In order to drive my home-made inductor enough to vibrate the string, the gain has to be pretty significant. I am currently using an LM386 with a gain of 200 and some filtering and it is working quite well. The only snag with that is that to apply that much gain the op-amp needs 9v instead of 5v or 3.3v. I will figure out how to deal with that this week.

Here is a video of the sampling and pitch detection:

Week 1 Progress Report

The SmartBow

My project for this semester is the SmartBow. It is an electromagnetic bowing device for the guitar which vibrates the strings via electromagnetic pulses. This device will consist of six pairs of magnetic inductors; one pair per string, mounted discreetly under the strings. Each pair will be independently controlled by a corresponding button (likely capacitive touch) that may be mounted anywhere on the guitar according to the user’s preference. This will ultimately allows the user to “bow” each string by pressing the associated button, creating a unique sound and potentially infinite sustain.

Here is a diagram of what the SmartBow will look like when mounted on a guitar:SmartBow Diagram.png

I have a good grasp on most of the concepts involved in this project. I have experience with creating inductors or pickups, capacitive touch sensors, as well as general digital/analog circuit design. I am also experienced with 3D printing, laser cutting, and general fabrication. The piece of this project that will require the most learning is the PCB design. I’d like to create a nice, small PCB to host the microcontroller as well as some small surface-mount electronics (to save space and also because I’d like to learn about surface-mount).

Here is a video of a very crude prototype with one pair of inductors working on one string. This circuit is entirely analog, whereas the final version will involve more digital electronics.