Teeny Guitar Audio Board

Can anyone suggest a standard enclosure? I have some 125B size (1590N1?) which are 4.77" x 2.6" x 1.39" but they seem to be a bit shallow. My teensy 3.6 has a stacked header which makes it even worse.
Steve

Take a look at Hammond's 1590 series listing. I've not fitted the board yet in an enclosure but it looks like you need about 1.5" of internal depth, so look for boxes with at least that.
http://hammondmfg.com/dwg.htm

Maybe see if a 1590S will work? (1.57" internal usable depth)
https://www.digikey.com/product-detail/en/hammond-manufacturing/1590S/HM158-ND/131032

Should give you the depth you need as well as "face space" to wire in some switches or pots to the GPIO headers on the TGA Pro.
 
I just found some time to test the Board. One thing is, the Teensy looses its memory/program after disconnecting from the USB. After reconnecting, the program doesn't run. Tested with 2 different Teensys. This applies to both test programs.Programs, which don't use the GTA work fine. Any idea?
And Mem0 isn't working (I added it, looks OK to me). Mem1 is fine.
 
Last edited:
I just found some time to test the Board. One thing is, the Teensy looses its memory/program after disconnecting from the USB. After reconnecting, the program doesn't run. Tested with 2 different Teensys. This applies to both test programs.Programs, which don't use the GTA work fine. Any idea?
And Mem0 isn't working (I added it, looks OK to me). Mem1 is fine.

I've got a couple things for you to try regarding the program not running. I assume you've already grabbed the latest version of the BAGuitar library from the repo.

1) Are you running the example BA3_TGA_Pro_2MEM.ino?
Try removing the following code from the setup() function.
Code:
while (!Serial) {}

This causes a wait loop until an serial window is connected. It shouldn't be there anymore (it was already removed from the other examples). If you unplug the USB and plug it back in, the sketch will wait infinitely until you bring up a serial monitor again. I've just updated this fix into the github repo.

2) If not the issue above, are you running BA0_TGA_Pro_TRY_FIRST.ino?
This sketch uses the WM8731 codec driver built into the Audio library which has some issues where sometimes it can't seem to program the codec. The BAAudioControlWM8731 in the BAGuitar Library alters the disable/enable sequence to improve reliability and also adds retry support so if an I2C transaction is garbled, it resends it. So if you haven't tried the latest BAGuitar library from github (master branch) make sure you try that.

As for the MEM0 problems:
- how are you testing them? Are you running the BA3_TGA_Pro_2MEM example? If so, is it occasional errors or every transaction fails? It sounds like a solder connectivity issue if every transaction fails. Make sure the capacitor next to MEM0 doesn't have a cold solder joint on either side. You can use the schematic to figure out which pins on the MEM0 part connect to which pins on the Teensy. Use a multimeter to check for connectivity while the teensy is in the socket (powered off of course) to ensure all solder joints (including your teensy pins on your teensy board) are good.
 
Thanks for the advice, it&s working now. I found a bad soldering spot ob piun1 of MEM0. After re flowing, the chips are tested fine.
I tried to run BA3_TGA_Pro_2MEM.ino, which works fine, unless I add an output cable to DRY OUT. Then the wet signal becomes inaudible.
In exmaple BA4_TGA_Pro_delay_reverb.ino only the wet signal is audible (no mix). Looking at the schematics, the dry signal should be always there and not interfere with the wet signal. Issue or feature? Please advise again.
 
Thanks for the advice, it&s working now. I found a bad soldering spot ob piun1 of MEM0. After re flowing, the chips are tested fine.
I tried to run BA3_TGA_Pro_2MEM.ino, which works fine, unless I add an output cable to DRY OUT. Then the wet signal becomes inaudible.
In exmaple BA4_TGA_Pro_delay_reverb.ino only the wet signal is audible (no mix). Looking at the schematics, the dry signal should be always there and not interfere with the wet signal. Issue or feature? Please advise again.

First up, I took a close look at the BA4_TGA_Pro_delay_reverb.ino and found a typo. I didn't noticed before because I was doing stereo testing. The connection to mixer 0 should have been i2sIn 0, not i2sIn 1. I've corrected the example on github, but you can easily fix it locally. Also, I copied the final output onto both channels so when you're mono in (typical for guitar) you hear the output on both output channels.

Here's the new connections:

Code:
// Audio Connections
// ... other connections ...
AudioConnection      patch1(i2sIn,0, mixer,0); // mixer input 0 is our original dry signal - THIS WAS ERRONEOUSLY SET TO (i2sIn,1,mixer,0)
/// ... other connections
AudioConnection      patch5(cabFilter, 0, i2sOut, 0); // connect the cab filter to the output.
AudioConnection      patch5b(cabFilter, 0, i2sOut, 1); // connect the cab filter to the output.

As for the DRY OUTPUT jack, if you look at the schematic, they are tapped directly off the signal just before it enters the codec, however they are not buffered again (that would require more even op-amp circuits). Basically, it's just a passive splitter. The caveat is whatever you connect here appears as a load in a parallel with the codec input (once again, just like a Y-splitter cable).

If you connect the DRY_OUTPUT to something with much higher impedance than the codec input, the loading effect will be negligible. If you plug in something with line-level inpedance, you'll hear a small volume drop (3db due to the split load). Most amps and pedals fall in the high impedance category. It's also worth noting that if you plug a mono cable into the DRYOUT, you are grounding the right channel input to the codec since it's missing the ring, but it shouldn't matter because the mono cable plugged into the INPUT is also grounding the right input channel. Grounding audio channels is electrically safe because they are ac coupled, it just mutes them.

Now it should be clearer why plugging something into the the DRY OUTPUT was causing an issue (assuming you plugged in a mono cable). It grounds the right channel input to the codec (which shouldn't matter) but it did matter in this case because of the typo in the example which was using i2sIn,1 (the right channel) when it should have been using left channel input.

Sorry for the typo, thank you for bringing the issue to my attention.

In general, it's good practice if you are using stereo input, to only use a stereo plug on the DRY OUTPUT. If you are using a mono input, then a mono plug on the dry output is fine.

Let me know if this doesn't resolve your issues.
 
Last edited:
Yes, that makes sense (Dry out stealing all the soon to be wet signal). And I can confirm, delay+reverb demo works as it should.
I tried to use you new components in the GUI, but this doesn't work, because the definitions are not there. Are you planning to extend the GUI or shall I do that? (I've done that before and it's quite easy). I'll share the results with you for spreading.Compliments on the low noise level.
 
Yes, that makes sense (Dry out stealing all the soon to be wet signal). And I can confirm, delay+reverb demo works as it should.
I tried to use you new components in the GUI, but this doesn't work, because the definitions are not there. Are you planning to extend the GUI or shall I do that? (I've done that before and it's quite easy). I'll share the results with you for spreading.Compliments on the low noise level.

Thank you for your compliments! Once again, sorry about the typo in the demo, I appreciate your patience. I should probably add the DRY OUTPUT explanation to the documentation.

I thought about extending the GUI but it is not high on up the priority list yet. Right now I'm coding up a collection of general purpose library routines (rather than stand alone audio objects) common to many effects. This includes generic delay functions, LFO function generators (sine, square, random, etc.), filters, as well as a common memory interface (internal or external).

This will allow me make single audio object like delay that supports both internal and external memory in the same class. As well it should make it easier to develop more complex effects out of those building blocks, like phasers, tremolo, double tracking, etc.

The first objects build with these library routines will be an AudioEffectAnalogDelay and AudioEffectSoundOnSound.
 
how can i connect an true bypass switch?

You'll need to build yourself a true bypass box, something like described here in this article: https://www.premierguitar.com/articles/the-diy-true-bypass-lesson-1

The reason why you usually need true bypass is most pedals have tone-suck caused by too low an input impedance. High impedance (500K to 1M) is very noisy unless high quality resistors are used, usually referred to as audio grade. Most guitar pedals believe it or not DO NOT use audio grade components. That's why the "Boutique" pedal industry exists.

The TGA Pro has 1 Meg input impedance using high quality audio grade resistors and caps in it's input stage to prevent tone suck from the start. You'll probably find that using the analog bypass built into the CODEC will give you a high fidelity bypass you're looking for.

The analog bypass is access using the function on the codec control class here.
 
I love the analog bypass feature you linked to. I saw that feature in the sgtl5000 chip's documentation, but didn't think it was used in the Teensy Audio adaptor. I'd like to know how you were able to do that, but first I should probably figure out how to use the code you have already done!:)

So, do I just take the code on the github page you linked to and paste that into the Teensyduino IDE editor? Or would I install it like a library?
 
thx,

imo, an true bypass circuit is important for an guitar audio board which comes with already soldered 6,3mm jacks. your teensy guitar board suggest and ready to use pedalboard design. if i have to build my own true bypass circuit inside the "xyz...?? teensy guitar effect pedal" based on your guitar board i do not want desoldering 6,3mm jacks and so on. maybe only two jumpers on your circuit board can implement this feature.

i think that most e-guitar player which play on tube amps do not want effect pedals without true bypass. on my pedal board i combine 8 pedals. i do not use extra routings or loop/bypass switches because the setup will grow to much and need a lot of extra space and to many cables.

/g
wolke

ps:
i do not trust the codec build in bypass feature :). and this is not a true bypass. see codec audio flow diagram.
https://www.cirrus.com/images/product_diagrams/wm8731blkdiag-01d7f56f0a.svg
 
I love the analog bypass feature you linked to. I saw that feature in the sgtl5000 chip's documentation, but didn't think it was used in the Teensy Audio adaptor. I'd like to know how you were able to do that, but first I should probably figure out how to use the code you have already done!:)

So, do I just take the code on the github page you linked to and paste that into the Teensyduino IDE editor? Or would I install it like a library?

If you are using the TGA-Pro board and already have the BAGuitar Library installed and working, you are probably already using the BAAudioControlWM8731 class to control the codec. This class provides the ADC bypass.

If you are using a Teensy Audio Board with a SGTL5000 codec, my BAAudioControlWM8731 class won't help you because the codecs are not compatible with each other.

As described in the header file documentation, the CODEC ADC bypass takes the analog signal output from after the CODEC's built in preamp and sends it directly to the analog output, bypassing the entire digital portion of the codec.

There is definitely a lot of momentum behind true-bypass. IMO, as a engineer, I disagree with most of the hype. The purpose of true bypass is to prevent the poorly designed guitar pedal's input stage (not high enough impedance) from loading the guitar pickups when bypassed, as well as circuitry that is low fidelity, usally sub-par op-amps. Stick a proper high impedance buffer at the start of the signal chain and the problem is solved. This is why you don't really get tone suck with active pickups, they have this buffer.

One of the few exceptions is where the pedal is designed to load and react to the pickups impedance loading. Probably one of the only examples of this is the germanium based Fuzzes. They only sound good when it's lower impedance is allowed to directly load passive pickups, and then only if the germanium transistors are "good ones". All other scenarios sound best with a proper buffer as close to the guitar pickups as possible.

A guitar amp (even a tube amp) has a very high input impedance which is why the guitar dynamics work very well in plugged directly into it. Tube amps sound even better when a buffer with gain is driving them, like a Tube Screamer pedal.

In summary, true bypass solves two problems that are best solved in other ways:
- guitar pedals that do not have a high enough input impedance suck tone when bypassed. FIX: put a high impedance buffer at the start of the chain.
- guitar pedals that have noisy, non transparent (they apply unwanted EQ) circuits that are in the path when bypassed: FIX: build a bypass box like the link in my previous post, buy properly designed high quality pedals, or boutique versions of classic pedals with these problems corrected.

Don't take my word for it though. Do some research and come to your own conclusions.

Here's what Pete Cornish thinks about true bypass:
http://www.petecornish.co.uk/case_against_true_bypass.html

That out of the way, here's some psuedo code of how you might use the ADC bypass on the TGA Pro with the BAGuitar Library:

Code:
#include "BAGuitar.h"
BAAudioControlWM8731 codec;
bool bypassed = true;

setup() {
    // ... other setup code
    codec.enable();
}

loop() {
    // ... assume  you've written some function bypassButtonPushed() that returns true if button is pushed since last check
    if (bypassButtonPushed()) {
        bypassed = !bypassed;
        codec.setAdcBypassed(bypassed);
    }
}
 
Last edited:
@Blackaddr -- Thanks so much for your reply! Sorry for the beginner question, I still have a real tough time seeing the big picture. Thanks for the help. Sorry to say, I don't have your pedal, but I checked it out on Tindie and was very impressed! What a value (you must be losing money selling these:D)!! I have recently started playing guitar again (after I screwed an old Ibanez neck onto a 2x4 piece of lumber), and made a single transistor preamp and a "fuzz" with I think 2 transistors to plug into a boom-box. (My gear freak days are long gone) I had been toying with the idea of getting an MXR DynaComp, but for the same money I could get yours. Or I might let the "guitar" gather dust! Well thanks again!
 
whether "true bypass" is important for a guitar player, of course, depends on the particular style of play. There are so many different ones. That's why there are no standards for whether things are better or not.
simply to offer the possibility to adapt the pedal to all personal preferences would be good. I would, for example, order a board if it offered jumpers for a true bypass switch.

/g
wolke
 
@wolke I do hear what you're saying, and I appreciate your feedback. Adding more jumpers and routing it would be difficult, the PCB routing is very challenging as is to layout, while keep maximum isolation of the digital and analog signals. However, I may offer a version of the board without the connectors installed in the future which would let you implement your on true bypass. The reason I can't offer that right now is I have to test every board before shipping and I can't do that unless there are connectors installed.
 
@Blackaddr,
thank you very much for this nice board!
I am thinking about building a variant of this.
Are you still using the TL072?
And, what kind of protection diode is on R/Linein? BAT54S?
As usual I don't really "need" it.. but it very tempting to build something Teensy-based for my new hobby e-guitar (lol i'm miles away of needing stuff like that, but hey I can play parts of "smoke on the water" and "7 nation army" *g*)...
 
Hi Frank,

I still use the TL072. This is a very common op-amp used in guitar pedals and is very low-noise and allows for every high impedance input (very important for guitar). It's a great op-amp that's very easy you use (no complex biasing, etc.)

The protection diodes are indeed BAT54S.

Congratulations on your new guitar adventure! The best advice I ever learned when starting out on guitar is for the first little while it's not the guitar you're learning, it's new body positions/movements you're learning so a little perseverance is called for. It's kinda like when learning to type properly on a keyboard. And if you learned to type with good muscle memory, you can play guitar, it's just a matter of time/practice.

Getting those open chords down cleanly is hard at first. But even just being able to look up the chords for a song you like and strum along in key is a fantastic feeling.
 
Hi!

this was just a purely informative question, I did not want to rate the TL072.

I chosed a cheap Stratocaster HSS like guitar.
I still find it very, very difficult to play the chords without touching other strings. My fingers seem to be very immobile - and way too short :)
I think I will certainly learn in time - but that time goes very slowly.
Nevertheless, it is indeed great fun!

..and I wish I had started this 45 years earlier.
 
Last edited:
I wish I had started this 45 years earlier.

For those of use with hopelessly too short fingers (really, I'm way left on the bell curve here!,) there are other options these days ...

keytar-slim.jpg


(I've actually been considering something like a microKEY and a Teensy as a small portable instrument. Maybe in a hundred years when I retire?)
 
Blackaddr, what value did you choose for RA9?

RA9 is not populated, I added the footprint in case I needed some frequency tweaking options, but didn't end up using it.

The circuit structure between the op-amp and the ADC input on the TGA Pro is a passive bandpass filter. With RA9 not installed, the highpass part is removed. The AC coupling capacitor CA5 already forms a highpass filter with the input impedance of the ADC (about 12.5K). Also, the WM8731 already has tuned anti-aliasing filters inside, so a strong low-pass filter targeting 20KHz is also not required externally. So, adding in RA9 wouldn't really add much in terms of DC rejection, but would form a resistor divider with RA7 applying a constant attenuation factor (which I didn't want).
 
Last edited:
Wow..

i built a board! The sound-quality is amazing.
I had modified some things because I have a stock of parts and wanted to use them (mic5205 low noise voltage regulators, a large collection of 0805 resistors, capacitors etc). I had only the smaller caps (<=100nF) available as NP0, and no thick film resistors.
But it's really good. And the board was 0€ from allpcb :)

Now a question: When i connect my guitar, i have a (silent) 50HZ (or maybe 100Hz) noise. But not as expected. I can hear this noise only if I switch to the humbucker. ?? That's the opposite effect as expected.. isn't the humbucker to reduce such kind of noise? Ok, it not really a problem, as it is very silent.. but I don't understand this. The single coils are ok.
 
Last edited:
Hi Frank,

Congrats on building your board! When you switch to HB, and you get the interference, if you turn down the volume knob does it go away? Cheaper guitars aren't known for the best wiring or shield.

So a couple thoughts to try:
- when you switch to the HB, are you SURE it's only the HB pickup on? You can check with with a metal tip screwdriver and tap the magnets (pole pieces) on the pickup. You will get a strong tap sound through the amp on any active pickups. This will let you check what's really on and what's not. It's possible they didn't wire the switch correctly.
- If it's definitely only the HB pickup getting the interference, it's possible the pickup itself wasn't wound properly such that he poles were opposite, hence no hum bucking.
- If the noise doesn't go away when you roll the volume down, perhaps the volume pot self is not grounding properly.
 
Back
Top