Saturday, September 26, 2020

Fake op amps?

I'm currently breadboarding the reconstruction/anti aliasing filter for the bitcrusher. Last night I noticed heavy distortion when the frequency approached 15kHz. Nothing helped, I even tried buffering the signal. 

Today I switched the TL072 op amps for 4558 opamps. And it worked straight away! I then swapped for some other TL072 with other numbers and it still worked.

I then tried using the original TL072s as simple buffers. When approaching 10kHz the sine input turned more and more to a saw wave. 

I popped in some other op amps I had laying around. LM1458 worked fine. Two versions of TL074 worked fine. But another batch of TL072 and one TL082, all with numbers fairly similar to the original TL072, failed in the same way.


Failing:

81SHC8M


At 20v p-p distortion is seen as early as 10kHz



Heavy distortion at 15kHz

Even worse at 20kHz

Reducing the amplitude to 14v p-p doesn't help



Working:

TL072 - 58CVY8M


Working fine at 20v p-p, 35kHz



I can only conclude that my stash of op amps has been infested by fake or faulty op amps. I tried googling the issue and found this:

https://sound-au.com/fake/counterfeit-p4.htm

https://forum.allaboutcircuits.com/threads/fake-tl082-are-actually-a-cheaper-model.141005/

https://www.muffwiggler.com/forum/viewtopic.php?t=179427

That site compares two TL072s - one with the number 18MDSHY which is assumed fake, and one 85AK87M, which is assumed original.

Funny thing, my *TL082* is numbered 18MDSHY... and the TL072s are 81SHC8M and 61SHC8M (My print is not bad in any way btw). My working TL072 is 58CVY8M and TL074s are 

LM1458 is WHY28M. It works fine at 20-30kHz but exhibits the same behaviour at 35kHz. That may be ok for an LM1458 though, I don't know.

Guess I'll have to dump my stash then :-(

Friday, September 25, 2020

Switches and caps again

 I've been trying hard to figure out a working combination of switches and key caps. I really don't want to use the normal tactile switches that so many old synths use. They wear out over time and the travel is very short.

Where I come from - IT - (and in the rest of the world I guess), mechanical keyboards are all the rage. Incidently, I used Cherry ML switched (and concidered Cherry MX) when I did the Machinebeats drum machine more than 10 years ago, long before Cherry MX became THE keyboard key. I even had a Cherry keyboard in the 90s. But I digress. What I'm saying is I want to use a proper switch, rated for millions of clicks.

The problem is keycaps. While Cherry do/did sell some non-keyboard keycaps, they are still square and keyboard-looking. That's why I want to create my own keycap. But 3D-printing the tiny mounts used for the various switches is not a very good option, especially with a filament based 3D-printer.

My idea is to use a commonly available keycap and mount MY part on top of that. That gives a much bigger surface to glue things to. However, getting a completely flat keycap seems almost impossible.

I'm considering four different switches: Cherry ML, Cherry MX low profile, Kailh Choc and Kailh Choc V2. The MX low profile seems really hard to find, but I've ordered the Kailh variants for testing.

After a few failed attempts, some nice, almost flat Kailh Choc caps arrived from Ali Express today. I immediately tried filing them down using some 180 grit sand paper. And voila! It looks great! The cap height went from 0.13" to 0.12", and now it's completely flat. Great Success! Only issue is the cap is ABS, so I can't laser cut the outline.






I'm still waiting for the switch. I've also ordered some round, flat-looking caps for the Choc V2, but it seems like I have a good option for the Choc so I might as well go with that.

On a separate note - using black keys was a really good idea, it is very easy to see when I have filed it down enough to be flat :-D

Sunday, August 30, 2020

DIY keycaps

 I'm trying to make some keycaps for the Cherry ML that are smaller than the standard square ones. My first try was mildly successful:




These were made using 0.8mm matte black acrylic. The text is engraved while the outline is cut. On the one with text, the hole has been cut as well, and we can see that it got too hot - the thin part below the hole is bent. 

On the second one, the hole has been made by engraving 6-7 times. This generates a lot less heat. Unfortunately, I chose to cut the outline afterwards, which made the thin part bend again. I think that cutting first, then engraving, would solve the problem.

I intend to mount the 0.8mm on top of a 3-4mm clear acrylic piece. It would also be worth trying to glue the pieces first to see if the cut gets better. I could then engrave the hole and stop once I reach the clear acrylic.

The text will be filled with white Lacquer-Stik.



I will glue the keycap on top of a fastening mechanism from other keycaps. The only issue is to get a good bond between the acrylic and the ABS which the keycap is probably made of. I've found a glue that promises ok results - Acri Bond 120.

Finally, I did the cutting with less powerful settings than our laser manual states.

3mm clear/black: speed 40, power 100

0.8mm black: speed 100, power 100

Saturday, August 22, 2020

VCO retesting and more detailed sync tests

 I retested the PW on my VCO and discovered that I had forgotten to ground two points. After fixing this, my own PWM works fine without pitch dropping.

I also did a more thorough test of various sync modes:


CEM Hard sync

- Datasheet says to sync against pulses, 1volt minimum, 3v maximum

In practice in my circuit

- Needs 1nF input cap

- Square wave with 50/50 duty cycle, +/-5v works fine.

- Saw wave, rising +/-5v works but only gives half sync

- Saw wave, falling +/-5v works but only gives the other half sync, and weird (but cool) behaviour when synced oscillator frequency is higher than master.

- Amplitude and offset of sync signal does not affect it.

- Strongly affected by PW, not in a good way


Conventional HS

- Datasheet says to use -negative pulses only, 8-10V

In practice in my circuit

- Saw wave, rising, +/-5v works. Falling does not work

- Square wave with 50/50 duty cycle, +/-5v works just like saw wave (but saw wave has a slight clip on top)

- Square wave with other duty cycle than 50% does not work well.    

- Not affected by offset

- Affected by amplitude, +/-5v works best

- Strongly affected by PW, not in a good way


CEM Soft sync

- Datasheet says to use negative pulses, max 5V

In practice in my circuit

- Needs 1nF input cap

- Square wave with 50/50 duty cycle, +/-5v works fine

- Saw wave, +/-5v, rising and falling works fine and sound the same, has a darker tone than square wave???

- Strongly affected by PW, not in a good way


Sync circuit conclusion

- I think I should build at least the prototype voice card with selectable saw, inverse saw or square wave input. 

- All waves should be +/-5v

- Waves should be tapped pre-VCA/mixer. Square should have its own square wave generator that is unaffected by PW and pulse VCA.

- I should give the option to switch between all three modes - to see how it sounds in practice

- I seem to remember that there was talk about constant frequency offset vs constant pitch offset in syncs, maybe worth investigating (but is a software issue, not hw).

Tuesday, August 18, 2020

LED ring update

 I got some work done on testing the LED ring with the MAX7221 7 segment encoder today, and the results are great. Both single led and multi led indicators are feasible and each has its own use. 

I tried with various lenses but my current conclusion is that no diffuser, red lense and a black panel definitely looks the best. Using a diffuser only made it look muddy.

The MAX7221 greatly simplifies the design/code. Multiple ICs can be chained, and I also think multiple parallel devices on the SPI bus are possible. One IC covers two pots with 32 leds.


I also got some amazingly good looking knobs today, matt aluminum, no indicator. Unfortunately, they have knurled, not D shaft, so it may be hard to find an endless potentiometer to fit it.

Tuesday, August 11, 2020

Great looking encoder knobs!

I've ordered a bunch of various knobs lately. I'm trying to find some that work with endless potentiometers/encoders, preferably D-shaft. It's harder than you'd think - most cheap knobs are for knurled/flower shafts, and almost all have some kind of groove or print to indicate position, which I guess almost everyone want.

It's really hard to tell from the photos on ebay and aliexpress etc if the knobs have an indicator, and sometimes they even try to hide it. Today I got the first delivery, and lo and behold - they look amazing! Just what I was looking for. Black spun  aluminum, D-shaft with no indicator! 



Here is the original description:


https://www.aliexpress.com/item/32924107059.html?spm=a2g0s.9042311.0.0.56d34c4dRi6Wum



Saturday, August 8, 2020

Breadboards - distance between power busses

 I am making some utility boards for breadboard power supplies and i/o. 

This means I have to know the exact dimensions of the breadboards. 

The senter piece is easy - holes are about 0.1" apart (though measuring the exact dims it seems that they are often a little off, just not enough to be a problem). In addition there are two holes missing in the middle. Distance between the two outer holes is then 1.1" or 27.94mm.

By looking at the cards I expected the same to be true for the distance between the columns and the horizontal "busses", after all, this would seem the reasonable thing to do. But this turned out to be a mistake! 

I did some googling, and found a site that showed a board that had the distance between the outer busses as 1.85" (the expected would be 1.9 if all holes were 2.54" apart).

I then made my cards to this standard, but when doing a test print, this turned out to be too little... The busses on MY breadboards at least are further apart. To make things worse, there are differences between cards that look similar but are from different vendors/orders ("luckily" there is also differences in the spacing of the tabs that connects the cards so cards from different batches cannot be connected properly - making it easy for me to know what cards are from what batch).

So, I have to take some accurate measurements to figure out what is going on.


Here are the dimensions of my two batches of boards:

A: Power busses: 9.40mm, main part: 35.45mm, total w/gaps: 54.58mm

- gaps are 0.17mm

- padding around busses is 3.43mm per side

- padding on main part is 3.76mm per side

- calculated distance between outer bus lanes is 47.74mm = 1.879 inches


B: Power busses: 9.45mm, main part: 35.5mm, total w/gaps:54.64mm

- gaps are 0.12mm

- padding around busses is 3.46mm per side

- padding on main part is 3.78mm per side

- calculated distance between outer bus lanes is 47.74mm = 1.879 inches


Wow, that was a bit surprising. Even though things looked very different, the inaccuracies evened out to make the end result equal for both batches. With the pretty lose tolerances in the making of these cards, I'd say that 1.88 inches is probably the distance to aim for. Measuring using digital callipers give a very similar result for both cards. 


As for the bus distances between cards with two and tree busses between them, they should be:

2 busses (four lanes) - distance between outermost lanes of each card: 

A: 2 * 3.43mm + 0.17mm = 7.03mm

B: 2 * 3.46mm + 0.12mm = 7.04mm

0.275 inches is 6.99mm, which is a good approximation

3 busses (six lanes) - distance between outermost lanes of each card:

A: 2*3.43mm + 0.17mm + 9.40mm = 16.43mm

A: 2*3.46mm + 0.12mm + 9.45mm = 16.49mm

0.65 inches is 16.51mm, which is a good approximation



Monday, July 27, 2020

FV-1 Multi-FX programmable reverb/chorus chip

I've been wondering for a long time what to do with the FX section of the XM8. I want something that isn't considered "cheap" or "tacky". I've scrolled passed the FV-1 at Banzai Music multiple times, but I thought that it seemed a bit limiting with its 8 built in programs, and it is also SMD which I try to avoid now that I'm unable to solder.

Today it popped up again when searching for "multi effects IC". I had a closer look and realised it is actually considered very good. There are open source effects available for it and it is programmable. The only limitation is that the programs have to reside on an EEPROM and that you can have only 8 of them.

BUT - the FV-1 accesses the EEPROM through I2C, which means that one can emulate the EEPROM using a MCU, and thus have full control over what it loads. That means we can do "in-circuit programming", or rather, have full flexibility and load as many progs as you want.

Here are a few links:

An article about the FV-1: https://reverb.com/news/fv-1-chip-history-5-pedals

Open source programs: https://github.com/mstratman/fv1-programs

Free programs from Spin Semiconductor: http://www.spinsemi.com/programs.php

A fully populated board, making testing easier for me: https://www.electro-smith.com/electro-boards/fv-1-dsp

Thursday, July 23, 2020

Quick thought on bitcrusher

The bitcrusher works in two ways - it reduces sample rate and it reduces the bit resolution.

A good quality audio DAC circuit needs a reconstruction filter after the DAC to remove unwanted high frequencies ( >20kHz). When sample rate is reduced, this filter's cutoff must also be reduced to approx twice the sampling rate to keep the quality.

BUT - in a bitcrusher, don't we actually WANT the coarseness caused by not filtering the signal perfectly? I assume so. This has to be tested.

I will try building a bitcrusher with a simple ADC->MCU->DAC->static LPF and see. 

https://en.wikipedia.org/wiki/Bitcrusher

PCM player, DAC, PIC32MX and I2S

I have multiple options for a wave player/sampled attack/wavetable oscillator.

- I can add a DAC to the Voice controller and control it directly there - using a I2S Audio DAC will probably give a very high audio quality

- I can make a separate board with the same DAC, an extra MCU and external memory

- I can try to use the DCOs - they already have a 16bit DAC and I think I have exposed enough SPI pins to make it possible to access external SPI memory. This is the cheapest option but the sound quality must be tested.

In any case, when making the Voice board I should leave room for an optional wave card. It doesn't need its own VCA as the DAC should be good enough for volume control as well.


PIC32 and I2S Dac

It seems most Audio DACs these days use I2S for communicating with the host. The PIC32MX (and other low-end PIC MCUs) don't have I2S support built in, but here is something that seems to make it work:

https://www.aidanmocke.com/blog/2018/11/22/i2s/

https://hackaday.io/project/28965-pic32mx-music-box-with-fm-synthesis-and-i2s-dac

https://tutorial.cytron.io/2017/08/13/i2s-pic32mxmz-introduction/


DAC in general

DACs need a reconstruction filter to remove unwanted frequencies. Here is an example that claims to be good:

https://www.analogfilters.com/high-quality-reconstruction-lowpass-filter-for-digital-audio/

Circuit

Components

https://www.softwaredidaktik.de/active-filters/download/

Sunday, July 19, 2020

Oscillator UI

Just an initial sketch, let user morph between waveforms, and select what waveforms should be included in the morph:

By selecting only certain waveforms for morphing means one can start a morph by a modulation source at a different point than sine.

How to select various stuff for modulation by various sources needs to be investigated.

Friday, July 17, 2020

Distortion circuit mostly ready for production

I've finished v1 of the distortion circuit PCB:



I still have to double check the schematics, I've done so many silly errors lately...

The board has switchable soft/hard clipping, and CV adjustable distortion and output gain.


Little/slim phatty distortion/overload

Before I send this one to production, I will breadboard and try out the distortion circuit from the little phatty:


It looks fairly similar, but the output, labeled audio_sum, is actually connected to a point BEFORE the input, labeled mixer_out here. This means it actually feeds the result back to the start, not only distorting it (there is only buffer and voltage divider between though). Also, the overload_cv controls an additional output VCA located after the filter. I can't tell from the circuit diagram what the gain / level is at various points of the circuit so I will simulate this.



Wednesday, July 8, 2020

VCO testing

I've tested my CEM3340 VCO with waveshaper. It works fairly well. It has one major flaw:

Triangle frequency drops when changing pw from 50/50 to 90/10. This was expected for the Cem PWM, but it happens, and is even more pronounced, with my own pwm! I have tried buffering the supply lines (+/-15v) but it doesn't help

In general it is extremely sensitive to voltage changes, so my breadboard isn't exactly the ideal test platform. But it is annoying none the less.

Other than that:

  • All waveforms work fine
  • Linear FM works fine
  • Hard sync works fine
  • Cem Hard Sync works fine, but only with a 1nF cap in series with the input signal. Normal hard sync works without this (prob. because it already has a 220pF series cap) but also works WITH.


Saw wave, CEM Hard sync

Saw wave, normal hard sync

Saw wave, CEM Soft sync? Doesn't seem to work very well, not sure how it is supposed to work really (noone seems to know :-D)

Triangle wave, CEM Hard sync


Triangle wave, normal hard sync


Triangle wave, CEM Soft sync. Again, it looks like CEM hard sync. Not sure what to expect.



Friday, July 3, 2020

Ring modulator tested, seems to be working

I tested my version of the yusynth.net ring modulator today.

I tried connecting VCAs on the inputs but it doesn't seem very necessary, they affect the signal almost exactly like the output VCA does, so a single output vca will do fine.

1uF input caps seem like a good idea, perhaps an output cap too

I used a 500R pot in place of a 200, looks like I got away with it.

Trimming is done as described in the picture (same as on yusynth.net):



Thursday, July 2, 2020

JP6 Filter - error on PCB

I have managed to mess things up with the JP6 filter as well. I've drawn one single trace using layer 97 - info instead of the trace, so the left base of the cutoff CV expo converter is not connected to GND.

This is possibly the single worst place on the whole board to err, as the transistor IC is soooo tiny:





Update 7th of July: I found a second error, R22 should be connected to the negative mixing point of the resonance OTA (IC4A), not the junction between R19 and R19 (pin 1 of IC2A).

After fixing this, and realising I had used a 100k instead of a 10k resistor between the VCA CV and the mixing point (resulting in a +/-0.5V swing instead of +/-5V), everything works beautifully.

However, the output of the first cell has a swing of +/-5V when +/-6V is expected. This can be fixed by increasing the output gain, but it means that the 100k pot on the output op amp is maxed out. One needs to increase the value to have room for adjustment (adding a 22k series resistor probably fixes it). Not sure why the cell output is too low, this must be investicaged further

Update 8th of July: I found a third error... The output is fed back into the wrong pin on the overdrive OTA, meaning it attenuates instead of overdriving the signal. I also forgot about a resistor on pin 15.

In a new revision I should also consider again if the overdrive should happen pre-output VCA, now it is not possible to keep volume the same when overdriving, output is almost doubled when max overdrive is turned on.

Monday, June 29, 2020

A tiny bit of future proofing

I am trying to create a small buffer of parts for my synths, in particular the JP-8. This beast has around 50 BA662 chips in it, each of which costs 50-60 USD to replace.

I stumled upon someone selling pulled 80017A chips from serviced Juno 106's, and bought 18 of them. Status is unknown but they weren't specifically replaced because they failed, more because they WILL fail.

In each 80017A there are two BA662 and one IR3109, both of which go for around 50 USD. I had to pay quite a lot, but if I am able to rescue at the chips from at least TWO of the 18 I will turn a profit (or rather, save money if I ever need the chips).


Saturday, June 20, 2020

Waveshaper current consumption and possible changes

The waveshaper op amps run fairly warm. Thus, I wanted to check the current consumption in case it was off the charts.

On the breadboard, the waveshaper current consumption is:

+15v: 26.5mA
-15v: 27mA
5v: 3.1mA (inc pulse VCA CV)

Of this, the waveshaper part (8 op amps) uses
+15v: 17.7mA
-15v: 18.1mA

Meaning the sub oscillator (10 op amps) uses
+15v: 8.8mA
-15v: 8.9mA

The JLCPCB circuit uses

+15v: 24.7mA
-15v: 24.2mA
5v: 0.5mA

In comparison, the Yusynth VCO (10 op amps + 1 comparator) uses

+15v: 27mA
-15v: 28mA

so I guess the current consumption is not that bad after all.

I am unsure what actually draws the power. I tried swapping 10k and 20k resistors for 100k and 200k around IC1B (pulse output) and the 27k DCO input resistors for 100k ones but that didn't change anything (or actually made it worse).

The sine wave amplitude is too low. Sine amplitude gain is done with a 15k negative feedback resistor and a 1.5k resistor from negative pole to gnd. Gain is 1+15k/1.5k = 11. By replacing the 1.5k resistor we can increase gain.


The VS-1 compared to old and new analogs. Technical details

I just watched an amazing video from Abstract Instruments, the makers of the VS-1: https://www.youtube.com/watch?v=4WwXlRYw_S0&feature=youtu.be.

It compares implementation details of the OB-X, JP8, Prophet 5, Rhodes Chroma and OB-6 and gives tons of useful information. I've tried to summarise it here:

Autotune

Autotune can only do so much for high frequencies, so a good initial trim is essential (for all synths)

JP-4:
Has no autotune, relies solely on the trimmers

OB-X:

  • Measures C5 (around 1kHz), does not adjust scaling, only initial tune offset.
  • Measures each oscillator twice: Once to measure frequency, second to
  • confirm the adjustment. Measures up to six times, if that fails it disables the voice.
  • Autotune takes < 2 sec


DAC:
  • 0 to 5.333V
  • 5.333V / 64 notes = 83.3mV step over 5 octaves, 1V/octave
  • 10 bit but only needs 6 bits to represent 5 octaves
  • In addition: Common VCO frequency CV, 4 octave and 1 octave from left hand control panel for a total of 10 octaves
  • Oscillator bias CV runs through 10M resistor (on a 100k for 1V/oct style summer)


P5 DAC:

  • 7bits, 10.666V reference = 10 octaves, 83.3mV, 1V/octave
  • 7bits fine tune for a total resolution of 14 bits


Rhodes Chroma

  • 12 bit main DAC for CVs, 3 cents resolution (reasonable for the time)
  • 8 bit that sets reference voltage for main DAC, skews tracking, corrects scaling errors in 0.1% intervals
  • Measures the periods at 6 octave intervals for each oscillator [error, should be 6 something else??]
  • Calculates scaling bias (done in 8 bit dac). Also calculates initial tune offset added to main DAC


Prophet 5

  • Rev 1 & 2:
  • Four checks: C3, C4, C5, C6
  • Bias CV resolution is about 1 cent with 128 possible values, about 1 semitone range
  • 7 bit bias CV dac mixed through a 10M resistor (on a 100k for 1V/oct style summer)
  • 40 autotune measurements (4 points x 10 CVs). Takes a long time. ( > 10 secs)
    • Bias CV 1 is used for bottom up to 1/2 oct above C3
    • Bias CV 2 C4 +/- 0.5 octave
    • Bias CV 3 C5 +/- 0.5 octave
    • Bias CV 4 C6 - 0.5 octave and up


Rev 3:

  • 7 checks per osc: C3-C9
  • 14 bits bias CV added as parts of Key CV, resolution is 650uV or 0.8 cents
  • Bias for C0 to C2 is calculated from the others as it takes too long to measure ( > 60 secs)


Jupiter 8

  • 10V output, 3cents/step for 12 bit, < 0.8 cents for 14 bit
  • Measures C3 and C8, uses a formula to calculate a bias CV for each key


Sequential OB-6

  • samples several points and deriving a high resolution correction curve
  • temp sensor, saves temp profiles
  • can recall profiles, does not do any real time calibration per se
  • has "slop" settings to introduce variation



Analog voices

OB-6:

  • No trimmers, everything is done through CV
  • Sub osc on VCO1
  • Can mix waveforms using 2164 VCA
  • Taps all poles of HP/BP/LP filter, mixable using 2164
  • 2164 for resonance control
  • 2164 for panning
  • Splits after voice mix to dry and fx which is mixed afterwards

VS-1:

  • 2164 panners
  • Bi-timbral
  • 4 input analog chorus
  • Analog polyphonic glide

Digital control


  • OB-X: 2.5MHz MCU
  • OB-6: 32bit PIC at 200MHz
  • VS-1: 32bit ARM at 600MHz


Reading/updating CV:

Loop times:

  • OB-X: 14-19ms
  • P5: 9-11ms
  • JP8: 3-6ms


OB-X

  • Pots are scanned using a DAC and a comparator (successive approximation)
  • 10bit CVs, 10 iterations per pot
  • 1-6ms to scan pots (19 on OB-X)
  • Scans pots then updates CVs, thus updating CVs less frequently when loop time is long
  • More complex sample and hold circuit for pitch CV (check, possibly just shifting voltages?). Low leakage polystyrene caps for pitch CV assures stability between updates.


OB-6

  • 12bit ADC over SPI to scan pots and external CV input, pitch and mod wheels. Scanned 256 times per second.
  • Updates CVs at 24kHz - must be fast to update software LFOs and envelopes fast enough
  • 24kHz gives sub 1-ms attack times for 0 to 5v envelopes (looks like 2.5v to me in oscilloscope pics)
  • Smooth LFO rates up to 500Hz
  • Looking at the oscilloscope screenshots, a full attack takes around 0.4ms-0.5ms (each grid line is 0.2ms), at approx 5 samples per 0.2ms (= 24kHz), giving 10-13 samples for attack.
  • Uses pair of 8ch 16 bit dacs for 120 CVs
  • Uses independent CVs per voice instead of common CVs, to be able to add offset biases on a per voices basis, it has NO trimmers!
  • 4051 multiplexers for sample & hold
  • S&H caps on mainboard, S&H opamps on voice cards
  • Separate microcontroller for CV updating, tables in memory for calibration
  • Core logic runs at 1.2V
  • Samples VCO and filter waveforms using 24bit ADCs, AKM 24bit stereo codecs


VS-1

  • CVs updated at 48kHz
  • Single 8 ch DAC
  • 85 CVs
  • Single ADC to scan the endless pots, scan rate is 1kHz

Tuesday, June 16, 2020

Waveshaper bug

I finally got around to testing the waveshaper boards last week. Most of it work flawlessly though I get some clicking when doing large frequency jumps for some of the waveforms. Also, saw and sine waves are not as loud as the others at the same amplitude (which is to be expected I guess, I just need to consider if its ok).

For some reason though, two of the TL074 op amps got really hot and the sub oscillator didn't work. After some probing I found that the -2.5v source output 13.5v instead. I had my wife solder a second board but the same happened there.

I couldn't figure out what was going on, but it suddenly dawned on me when I tried to fall asleep yesterday - I have mixed up the op amp inputs when trying to make a voltage buffer :(

The fix is very easy in CAD, but on the boards I have to cut two lines and solder a new wire:

Cutting the input, it goes to the negative terminal of the op amp instead of the positive. I've also scraped away the solder mask to be able to add a new wire to the positive terminal instead. I will see if I can find a wire tiny enough to fit in the via (which is 0.3mm...). I also have to add a solder blob between the negative terminal and the output.

Cutting the feedback loop between the positive terminal and output. It should of course have been between the negative input and the output.


The board is smaller than it appears btw, here is my finger for reference.
UPDATE:
My wife managed to solder this just fine, after that the filter works flawlessly! The tiny diagonal wire is a single copper strand from a networking cable!


Tuesday, June 9, 2020

DCO v1.3 tested, v1.4 ordered

I'm done testing the DCO that I got from JLCPCB. It worked flawlessly - after fixing a few firmware bugs that is.

I had to change the function of Data Ready to SPI Chip Select, that fixed some startup problems when the DCO had started before the main MCU powered up. Amplitude tuning works incredibly well and sync hard-syncs like it should.

I did however realise a few things:

The current setup with a 56k charge-voltage-to-current converter resistor and a 1nF integrator cap means we cannot reach 20kHz with an amplitude 0-10V. Also, the MCU draws a lot of current, around 150mA it seems. The current firmware allows 8Hz to 8kHz approx.

In addition, the circuit has both an MCU and a DAC, so if we could tap the DAC directly we could make a wavetable oscillator of sorts.

For version 1.4 I did a lot of improvements:

- Exposing the DAC output and changing the buffer resistors from 47k to 22k. The DAC can only drive 60k load, so by reducing the load for the internal buffer we can hopefully connect a second, external buffer that can be used as a digital audio output.

- I've also exposed the buffered dac output. The cap is already exposed in both ends. This makes it possible to connect a resistor in parallell with the charge resistor, to increase the current to the cap.

- All DAC SPI pins have been exposed

- Three utility pins on the MCU has been exposed, to make debugging easier (connecting leds etc)

- To reduce current consumption, it should also be possible to run the device at 3.3v, and reducing the crystal frequency from 32MHz to 16MHz. This requires a rewrite of the DCO firmware, but nothing too complicated.




I've ordered 40 of these from JLCPCB, fingers crossed :-D

Monday, May 25, 2020

Little Phatty overload is just soft clipping

From the time I studied the Little Phatty to build my moog filter, I have wondered if the LP does pre-filter distortion of the signal or if it uses feedback for its overload.

From the Little Phatty schematics it is clear that overload is just soft clipping, and the circuit is extremely similar to what I did for my distortion with in-feedback-loop OTA :-D


The LP:

There are a couple of differences: The moog circuit uses both inputs of the OTAs, and also the same CV (though inverted) for both increasing the amount of distortion and reducing (?) the output gain. A nice trick to keep output at the same level I assume.

The overload CV also controls gain/attenuation of the filter output it seems.

UPDATE: I missed something - in addition to the soft clipping, the output from the distortion is fed back to the audio mixer, thus the distortion also has feedback.

TIL: The little phatty has an analog signal path from pots to synth circuts

I read a reddit thread this morning about a guy that is doing a synth controller front panel. He had the novel idea of switching between using the pots directly to feed an analog voltage to the synth circuit (filter cutoff cv etc) and using voltages from a DAC to do the same. By simultaneously reading the voltage from the pot for patch storage, it would then be possible to load a patch and have a dac generate the required voltage to control the synth, but switch to direct-from-pot cv when the user turns the pot to prevent stepping.

The original poster was immediately beaten down by the knowitalls of Reddit, saying that this was overly complicated and that noone would do it like this.

He countered by claiming that he had looked at the circuit board of a Moog synth and seen analog multiplexers close to each pot, and rationalised that these did what he was thinking about. He also claimed that a video told him that this was the way Moog did it.

Another poster then proceeded to post the schematics for the Slim Phatty, explaining how it was clear to see that the circuits were indeed digitally controlled.

I had a closer look at the schematics and discovered that the original poster was indeed right (though possibly not about exactly how it was done) and the one posting the schematics wrong - the Slim Phatty (and by extension Little Phatty) DO actually have the ability to switch between direct control and digital control. Have a look at this:


The filter pot. Its value is buffered by an opamp (U29), which is then both tapped directly (FILTER_CV) and sent to an ADC through AINO.2 for digital processing/storage.

Digital control: CV from the DAC is buffered by a sample and hold circuit and output as FILT_CUTOFF_BUF

A switch then selects between the CV tapped directly from the pot (FILTER_CV) and the digitally controlled voltage (FILT_CUTOFF_BUF). Notice how FILTER_CV is sent to multiple outputs, depending on what mode is currently selected for the pot.

The selected voltage is sent to the board connector as FILT_CUTOFF...

...and received on the voice bort as FILT_CUTOFF (pin 33)

There, it is mixed with CVs from other sources (modulation etc) into the filter cutoff CV FILT_CONTROL

Finally, FILT CONTROL controls the cutoff frequency of the ladder filter. Thus there is a completely analog signal path from pot to filter.

When I went back to post my findings on Reddit, the original poster had already done so. He pointed out that this is called RAC (tm) in the Slim Phatty manual - "Real Analog Control".

The discussion went on to saying that this must be a marketing trick more than having real value, and funnily enough saying that it had do be something only the phattys use because "the memorymoog and prophet 5 does not do it". I call bullshit on this.It may be true that it is only found on the phattys, but comparing it to 25 years older synths is no way of proving it...

Sunday, May 24, 2020

Noise tested


I tested the first board tonight, the triple noise. Two external parts are needed, a 2N3904 with the collector unconnected, the base connected to GND and the emitter connected to IN, and a 50k trimpot for adjusting the gain of the input.

It works perfectly. Rainy white, oceany pink and deep, rumbling red noise. Mmmm... I breadboarded this back in 2017 and had a lot of fun playing around with it with my then 3 year old daugter. "Daddy, can we go listen to the rain?"