Yarns oscillator level and analog sync

I had the idea to create hybrid digital-analog voices by hard-syncing my analog oscillators (Happy Nerding HM VCOs) to Yarns’ oscillator outputs. However, they won’t sync to it, and I noticed that the digital oscillators are noticeably quieter than the 10vpp outputs of the analog VCOs. What’s the output range on Yarns? (my guess is 5vpp, judging by the +5v reference in the BOM)

Yarns is designed to output CVs from -3V to +7V

The oscillator output is 5Vpp (it could go to 6Vpp, but after that the output would become asymmetric)

Thanks for the info! Is this the code that determines the audio output min/max?

oscillator_.Init(
  calibrated_dac_code_[3] - calibrated_dac_code_[8],
  calibrated_dac_code_[3])

Yes!

Unfortunately, I still haven’t gotten sync working even after boosting the output to the asymmetric 10Vpp:

oscillator_.Init(
  calibrated_dac_code_[0] - calibrated_dac_code_[10], // 10Vpp
  calibrated_dac_code_[5]); // +2V offset

I’m running out of ideas why. It definitely has some kind of effect on the analog HM VCO being synced, but it’s more like it just fuzzes it up – there’s nothing like pitch tracking.

Could be that the analog oscillator requires very hard edges, that Yarns doesn’t provide because of the 1-pole filter on its outputs, and the band-limiting algorithm itself generating the square signal.

Interesting, thanks! I found this post on the band-limiting; still digesting it: Sinc interpolation

Is the 1-pole filter implemented in hardware or software? I couldn’t find anything about it.

The 1-pole filter is the 18p cap around the output op-amp (the cutoff would be around 36k, so that’s probably not enough to damage the edges).

Yarns doesn’t use sinc interpolation, but polyblep - the edge of the square wave is not a sudden jump, but a branch of polynomial over 2 samples.

All good to know! At this point, I’m wondering if sync-compatibility might be best achieved by adding a new oscillator waveform for that specific purpose – a naive pulse wave that does a sudden jump with no attempt at anti-aliasing, since (I think?) only the fundamental frequency will matter for sync, not the higher harmonics.

It’s not possible.

A non-antialiased naive pulse will sound terrible and will exhibit “jitter” for any frequency that Is not an integer fraction of the main sample rate.

Any hope of using a counter/divider approach like described here? https://electricdruid.net/roland-juno-dcos/#clock

I guess the Yarns internal clock (48kHz) isn’t nearly fast enough to generate an accurate pitch with that method.

Won’t work :slight_smile: