1 Like

After a period of burnout and taking things a part/putting them back together again several times, I’ve finally got it working. Need to dial in the response a bit, but it’s working pretty good. Thanks for all the help!! Side note, really need to figure out a more organized method of breadboarding than the mess of wires I’ve got going on, makes it very difficult to debug.

I currently have bias buffered to all destinations and the sound is still pretty gerassic organ-y. One interesting thing I noticed is that fast sequences can cause some build up in the amplitude which results in “clipping”. Raising C3 to 100uF helps mitigate this problem, but the response is too slow for normal playing…will probably put that on a switch. It seems like C5 doesn’t seem to really do anything any more. maybe that is due to the bias voltage being buffered.

As I get into PCB designing mode, is there any good resources out there for figuring out the best SMD equivalents to the through-hole stuff I’ve been using on my breadboard (particularly op-amp ICs, transistors and diodes…I feel like resistors and caps should be more straightforward.).

1 Like

Got things figured out for v/oct kind of. The response is not perfect, it seems to overshoot and then undershoot as cv goes up, so that it sort of horseshoes around accurate tuning. this is 2 octaves. I did buffer that bias voltage so that’s constant now.

I tested the ripples 2020 with the same signal and it seems to be much more consistent (it actually overshoots a little right now, but in a very consistent way so prob just needs to tweak the calibration trimmer slightly).

I started reading a bit more about this stuff and it seems accurate v/oct exponential conversion can get pretty complicated. I think I’m going to try grounding the other input/output pins of the 2164 like the datasheet recommends and then calling it a day.

kind of answered my own question here. I’m gonna just go with the SMD package of the same parts I’m using, which are:

  • LM358/TL07X opamps
  • various 4000 series ICs
  • 4148 for all the diodes in the circuit…something 4001/7 for power
  • 547/557 transistors

I’ve learned the 358 is a pretty old design, but I couldn’t really find definitive answers on what is better and don’t understand enough about this yet to figure out for myself from datasheets.

There are several things to take into account here:

  • The op-amp comparator and the switch have a non-zero switching time. The higher the frequency, the more important this switching time is relatively to the period of the waveform. Ie, there’s an annoying constant term in the relationship between the period of the oscillator and its control current. This can be compensated by adding a small amount of current to the input of the integrator.
  • The 2164 response is temperature dependant. Check the Anushri’s schematics (page 3, cells A/B, 3/4) for a scheme that eliminates some of that dependence. (rough idea: we scale the CV by a small temperature-dependent amount).
  • The response of the 2164 is not perfectly exponential. At this stage, this gets tricky to compensate but we’re in the diminishing returns zone :smiley:
1 Like

So I’ve been working on this decay (x resistor) voltage idea, and you were right, it does do some really cool stuff with the circuit. But I’m having a problem, with the op-amp voltage follower…I believe to properly work, XBiasVoltage needs to be the full voltage of the positive rail to work properly and decay to silence. (It does cool stuff, like infinite droning and weird phantom note appearing when under-biased). That seems to work great simply passing the voltage to it (bottom), but with an op-amp follower, I seem to be losing about a volt (top…measuring +8.4v on the power rail, +7.4 output of the op-amp).

So my questions are:

Does that voltage drop nearr the rail sound like a normal thing, or is there something weird going on? Is there some way I could make the buffer version work?

Would it be okay to just do the simple circuit…or am I setting myself up for potential damage of the circuit or equipment being plugged in?

One answer: the LM358 does not have rail-to-rail outputs (but the input and output voltages can go as low as Vee). This means that the output voltage will clip below Vcc. So it’s normal that your buffer output can’t reach 9V.

Questions:

  • I don’t understand the role of the second op-amp with the diodes in the buffered circuit.
  • I don’t understand why there are three adjustable resistors involved (RV26, RV6, RV5).

Ah got it! So I need to figure out an opamp that can go rail-to-rail and doesn’t have the TL072 thing where it flips high at < than a certain voltage (I think that’s what “but the input and output voltages can go as low as Vee” means

Yeah I don’t think I need it actually…I thought I needed it to invert the inversion. But I think with single supply, you might not need to do that. I need to read more about these buffer circuits and actually understand them.

  • I don’t understand why there are three adjustable resistors involved (RV26, RV6, RV5).

So RV6 was my mistake…I made XBiasVoltage CVable after setting it up (it was just 9v) and I forgot to get rid of that pot…

RV26 = variable voltage going in and RV5 = variable resistance…in practice they are very interactive. Like if both are low you get some weird droning. If the voltage is high, the variable resistance acts as an envelope decay control. If the voltage is middling variable resistance acts sort of like a volume control. There are also what sounds like vaguely LPF cutoff effects.

The buffer circuit made with U7A is non-inverting, you don’t need anything else.

Ha I see, it’s one of these situations where you need to CV-control a current flowing to a node that needs to be held at a certain voltage. There’s a solution for that, it involves an op-amp and a transistor! I’ll post about it later!

1 Like

The whole need for this rail-to-rail opamp might be not useful depending on what the idea you share is. But if I replace U7a’s lm358 with this, I think this might would work (getting rid of the second opamp) ? https://datasheet.octopart.com/OPA2743UA-Texas-Instruments-datasheet-101600621.pdf

EDIT: mmm…that’s like 5 USD a chip. would probably just do the single version at about 2.50 USD a chip and keep the LM358 around for the Bias voltage buffering…

Rail-to-rail or not, the second op-amp is useless. OPA2743 will work, but I’m sure there’s a less posh solution.

1 Like

Ah yea, TIs find-your-part web ui was actually not too daunting and much easier than me trying to parse random forum posts. I think the TLV9102 might be the one (about 1 USD for dual). So things become:

Screen Shot 2020-10-19 at 2.51.28 PM

(Last one is using the other opamp for the virtual ground)


I (think) I realized another I could try is replace the RV5 X resistor with a circuit very similar to what I was doing the 2164 and the pitch input. So then I would have CVs for both the voltage and the current. Something like:

  1. You’re getting the CV scaling circuit wrong! Compare the position of the diodes here:

Screenshot 2020-10-19 at 21.29.41

and here:

Screenshot 2020-10-19 at 21.30.00

  1. Your circuit with the 2164 won’t work:
  • You’re exposing the input of the 2164 directly to a voltage, not to a current.
  • You’re exposing the output of the 2164 to a circuit node that is not at virtual ground.

Also, unless you want an exponential response, it’s a bit overkill to use a VCA just to generate a variable current!

Ah got it. I just moved the diodes around so that they matched your schematic on my breadboard. I’m not sure there was really a difference I could “tell” before and after I made the swap (seems like the v/oct response is still about the same).

I did look back on the 2164 stuff based on what you said. And starting trying to make sure I’m doing that all right. I don’t need to add that ac-coupling to Z (which is being input into the 2164) do I?

Interesting! So reading back at:

I guess I could use this LM13700 chip for linear control of the resistance…the 2164 wouldn’t work there because I’m not outputting to virtual ground.

I think what I’d probably want is this “floating VCR” circuit from the LM13700 datasheet (which I don’t understand right now, but reading the description it sounds like what I’m trying to do).

Just found this in-depth explanation…yep I think that’s the one I’d want https://electronics.stackexchange.com/questions/389347/floating-voltage-controlled-resistor-with-lm13700-how-does-it-work

The diodes are there to prevent the output of the circuit from falling below 0V (half-wave rectifier). Maybe you did not try your circuit with CVs that would have required this protection.

The AC-coupling is needed here because this circuit processes audio signals referenced to ground. It is not needed in your application.

But you need the stabilization network, though (220 ohm R and 1200pF C).

Stop! You’re back playing the “voltage controlled resistor” game, where you want to replace all resistors by complex circuits without considering what they are used for.

I’ll take this simple example: you have a pot with one end hooked to ground, the other to 5V, and a voltage at the wiper sent somewhere. So the whole circuit is just a divider, used to generate a voltage varying between 0V and 5V. How to make this voltage-controllable? Do you replace the pot by a “Voltage-controlled resistor”? No, you just send your CV (optionally scaled/clipped to 0…5V) where the wiper of the pot goes.

Same story here, except that the function played by the pot you want to replace is to generate a varying current.

1 Like

Okay, I understand better how the decay circuit works… I was wrong, the resistor is not involved in a current source, so you’ll need a voltage-controlled gain element (2164 cell or OTA), but there’s hope for a solution that is not too overkill. I will post more later, but this is very low priority for me…

1 Like

O 100%, please don’t feel obligated to post. And I apologize I’ve asked so much stuff (a lot of which is dumb) You have been extremely helpful and I’m starting to understand this stuff a lot more than I otherwise would. At this point it feels like a pretty usable instrument on the breadboard, at least enough to v1 a design.

A lazy solution, which might be just what you need, is to use a JFET in parallel with your 100k resistor. The JFET “shorts” the resistor and shortens the decay time as the voltage applied to its gate increases.

  • R4 controls the longest decay time. You can put it back to 100k.
  • R8 controls the shortest decay time.
  • See the R12 resistor? It’s connected to ground, but you can connect it to the wiper of a pot whose ends are connected to 0V and 9V to get a manual control that will be added to the CV.

CAVEATs:

  • Only tested in LTspice.
  • You might need to low-pass filter the gate signal triggering the envelope (see the “attack deglitch” network).
  • The circuit is such a hack that it responds to the pot and CV in a funny way, it’s controlling both the decay time and envelope shape. Up to a certain point we just reach the longest decay, but past that point the sound continues being “fuller” and “longer” because the envelope shape becomes less exponential and more linear.
  • This circuit relies on parameters of the transistor for which there’s a lot of variability from one part to the other. You can truly brag about analog voodoo!

Not the kind of “engineering” you’d see in a Mutable Instruments product :rofl:

1 Like

Lazy and hacky sounds great…one day I’ll understand all the details (maybe) but I think perfect is the enemy of me getting this thing finished.

Thanks so much for sharing this…makes sense I think! I’ll have to put in an order for some jfets, but I’m excited to try this out (I’m guessing I could probably do this with the bjt I have on hand but the curve is probably all messed up)

I promise to stop asking stupid questions now and will share once I have something in a more done state! really appreciate all the help.

For anyone following along that’s curious, I have started the github repo for it…definitely not 100% yet, I’ll update as I go and update the readme indicating when things are “finished”

I don’t think a BJT will work at all there…

1 Like

This circuit works great! I got a few J201s which seemed to drop in fine. The only N-channel JFET JLPCB will PNP for you is MMBFJ111, so hopefully that will work too. Right now I’ve kept R4 as B100K. I’m going to see if UX-wise, R12 is a better fit for the variable resistance (and make R4 static)

I experimented with a few values of R10. I think I liked 47K the best. I think I will socket R10 on my proto which should help me dial in the CV gain if the response for that one is different. Did the same for R8…I went with my lowest resistor value I’ve got on hand (470R), it seems to allow for a slightly more aggressive character. No resistance did not work.

various messing around last night as I was testing this stuff out: