6
\$\begingroup\$

I have set up two 555 chips in astable mode to produce a tone each through a speaker.

However, I am not sure how to mix them together to produce a musical chord.

If I directly combine the two outputs from the 555s into a single output, it creates a third tone, but it is just a single tone being some combination of the two frequencies.

Instead I would like to hear each one independently, but on top of each other, just like a keyboard (or a hammond organ if you prefer).

I have tried using an op-amp but with the same result.

Is an op-amp the solution here? Or is there some better strategy?

I just need a push in the general direction.

UPDATE

Both methods below seem to work, but it turns out the main problem was that the two 555s need to be "decoupled" by putting capacitors across pins 1 and 8. That is, when one 555 was sucking power from the battery, it was affecting the frequency of the other one. This (along with the large resistors from the 555s to the opamp) has more or less solved the problem, although the sound quality is not that responsive or stable. Thanks for the help!

\$\endgroup\$
  • 4
    \$\begingroup\$ A chord is 3 or more musical notes. \$\endgroup\$ – Andy aka Feb 17 '17 at 14:54
  • 3
    \$\begingroup\$ A chord is technically 2 or more musical tones, regardless of their harmony. \$\endgroup\$ – Marcelo Espinoza Vargas Feb 17 '17 at 18:49
  • 3
    \$\begingroup\$ Pedants in music theory call a "two-note chord" a dyad. Most of the rest of the world (including musicians!) doesn't bother to make the distinction, since its only purpose is an arbitrary limitation of the theoretical concept of "a chord", which has little to do with practical music-making. \$\endgroup\$ – alephzero Feb 17 '17 at 21:48
11
\$\begingroup\$

The reason you are getting something other than the sum of the two independent signals is because the two circuits are interfering with each other when you connect their outputs.

One solution is to put enough resistance in series with each output so that the signal generators can't interfere with each others' operation. 100 kΩ resistors in series with each signal generator output should be high enough that it doesn't matter what is going on at the other ends of the resistors.

The problem now is that the combined signal is high impedance due to all those series resistors. The solution is a unity-gain buffer. Any rail to rail opamp that is unity-gain stable can take the high impedance signal from where all the resistors are connected and make a low impedance signal that can drive a power amp or some other audio equipment.

Here is what I described above:

The resistors are large enough so that the circuits on their left ends are not effected by whatever is happening at their right ends. Together, these resistors create the average of all the input signals. If any of the inputs are unused, leave them floating and they won't be included in the average.

The standard knee-jerk answer for something like this is a inverting summing amplifier. I figured sooner or later someone would post that. I'm actually surprised it took as long as it did.

The reason I didn't go that route was for simplicity, especially in handling the DC levels.

Just connecting each signal generator to the inverting input via its own resistor does NOT get you what you want unless you are prepared to deal with the resulting negative voltage, and have a negative supply handy to provide to the opamp. The inverting summing circuit can be modified to not require negative power voltage and to create a 0-5 V output, but that adds a little complexity.

Another minor issue is that you really want the average, not a sum. The difference is only one of scale factor, so can be dealt with. The circuit above inherently averages. Any input left floating isn't included in the average. The inverting summing amp has a fixed gain from each input to the output. If the number of active inputs change, the overall gain needs to be manually adjusted so that the result is the average of the inputs.

\$\endgroup\$
  • \$\begingroup\$ So if I understand you correctly, the resistors will reduce each of the signals to a very small level so they don't interfere with each other, and can combine properly, and then you use an opamp to boost the combined signal to a reasonable volume level? (I'm not quite sure how they are "interfering" with each other by the way, surely they would still interfere with each other even when the output is reduced?) \$\endgroup\$ – thatsagoal Feb 18 '17 at 2:43
  • 4
    \$\begingroup\$ @thatsagoal The resistors won't reduce the voltage of each signal. What they will do is reduce the current you can get from the signal before it drops to zero and you don't have any signal. So you use an op-amp to take a tiny amount of current from your signal, and the op-amp can output a large current again, even though it keeps the voltage the same. (Hopefully that's an adequate level of explanation) \$\endgroup\$ – user253751 Feb 18 '17 at 4:34
5
\$\begingroup\$

AN op amp is what you're going to want, but you need to hook it up properly. What you are looking for is a summing amplifier like this:

Summing op amp

If you put your 555's on Va and Vb, the output will do what you want.

\$\endgroup\$
  • \$\begingroup\$ You are totally ignoring DC biasing issues. No, this won't do what you want unless you want a negative output voltage, and have a negative power voltage available to run the opamp from. \$\endgroup\$ – Olin Lathrop Feb 18 '17 at 15:11
1
\$\begingroup\$

What is interesting to the ear (the richness) of a musical chord is not the sum of the two fundamental frequencies added together it is all of the side band frequencies that are included as well.

You have two problems. First the output of a 555 is a square wave. This includes a number of frequencies from the fundamental to infinity (perfect square wave) which are going to interfere with the output. The second is how do you effectively add these together.

For the first problem you need to shape the waveforms coming from the 555 what you do here is application dependent. The chord from a violin is different from the chord from an acoustic guitar. This is because of the difference in wave shape from a single string from both instruments. Do some research here and decide on the sort of sound that you need.

The second problem has been addressed. You need to add these voltages together in a manner that one does not interfere with the other. I would suggest a capacitor to feed each signal to a high input impedance amplifier.

\$\endgroup\$
0
\$\begingroup\$

For two pitches to sound like a chord, the waveform that gets output to the speaker has to be the sum or difference of the individual raw waveforms. Passing the outputs of the 555s through a voltage divider (which would yield the average voltage from the two outputs) and then through an amplifier would be one way of achieving that. A simpler approach when using two 555s, though it wouldn't scale up to more than two 555s, would be to drive the two ends of a speaker with outputs from the 555s (likely adding a resistor and/or capacitor to protect the 555s, or maybe feeding each output through a high-powered inverter and then a resistor/capacitor).

\$\endgroup\$
0
\$\begingroup\$

I'm not sure if you are solely looking for a hardware fix (as my input is more software related) but I'll throw it in anyway! If your driver (sound source) is driven by software then as has been mentioned, you are probably looking at square wave tone synthesis so your hardware can play A# but cant make it sound like a violin as opposed to a cello. LEDs use square waves but can trick the brain into seeing the light at different brightness's through on/off speed control, have you tried this with your 555s e.g. play tone A for 5Ms and then tone B for 5Ms, that way you are truly playing top & bottom of the wave range (doubt if 5Ms is a long enough alternating time - too fast and you'll just hear something similar to your existing problem, too slow and it will just sound like 2 tones alternating)

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.