On the one hand, I do projects like #muvco to learn new things. On the other hand, that means I spend a l o t of time on sidequests.

Finally learning #python #asyncio so my #multisynth[1] concept has a fighting chance to work right in #micropython (still not willing to go to C for this...)

[1]There's surely already a name for this pretty obvious #synth concept, but I haven't come across it yet. "chordal synth" might be more descriptive but also less accurate, at least how I'm doing it.

Was laying out the #kicad #schematic for #muvco and it started to seem too pedestrian.

Went back and realized I had been using the #pcm5102 wrong and it does indeed do exactly what I originally wanted.

Now making a waveform generator instead of using the dds #ad9833. Much more flexible in shape and can be semi-polysynth ("chordal #synth"?) #synthdiy

Can now generate a perfect 5th in 260us! In mostly-unoptimized #micropython! Just dyads still--need to generalize to larger chords + diff shapes.

Welp. I dunno.

Low pass filter didn't work. Not 100% clear why, but I guess click isn't so far above tri or square after all.

Can't set the amplitude from here.

Using reset or freq = 0 to mute didn't work. Not 100% clear why.

Trying to ramp the phase worked fine, but only at low modulation frequencies. The process is too slow at high ones.

Maybe I give up on FM. πŸ˜“ #synthdiy #muvco

Ugh, there's a problem with the through-zero linear fm "just flip the phase 180" idea for #muvco.

#AD9833 works with a phase accumulator. Meaning it just counts up in a ramp at a rate given by the freq. Then it adds the phase register.

When I flip to the other phase register, it's a discontinuous jump = an audio pop.

Can't count backwards. Don't know where I am in the phase (I think) so I can't just add 180 to that (the #math way)

Maybe just a low-pass #filter to drop the pop?

#synthdiy

Also, it's a combination #hardware #software project that involves a lot of the same concepts I do actually use every day at work (obvs, since I'll be an engineering user) but also at home on the #muvco (in a microscopically tiny way).

So it's just really fun that we are all playing together (except it's just me at home watching slides on Teams and typing chat comments to my work-spouse).

For some dimwitted reason I didn't put my FM controls on the newer #muvco prototype breadboards when I reworked the input/output chains.

I think I'm ready to implement through-zero linear FM, but I don't have a hardware interface to attach it to!

Gotta figure out another way to test. Or rebuild Yet Again?

And if I'm doing that, should I add an exponential FM switch? The software side would be trivial to handle and the hardware just takes an extra toggle. Maybe even just use a pushpot for lvl

I threw an FM knob on the #muvco just b/c I thought I oughtta. Getting to that part now, it looks like I'd prefer linear FM with "through-zero"

Conceptually, that's really simple to add purely in software with the #esp32 + #ad9833 b/c it has two phase registers. Init them to 0 and 180 and flip when the frequency sign toggles.

Hopefully takes just an hour or two today. Then I could hook the VCO into existing VCF/VCA #eurorack modules and retry Bach a little more musically.

OKILY DOKILY!

#midi is finally working well enough in the #micropython #synthdiy #muvco that I can tell how it sounds. And that sound is: Like a video game.

Which makes sense, since this is a bare squarewave (barewave) quantized to 1/16th notes and no variation in velocity.

I'm not making the #midi2cv module yet, so beautiful #music will have to wait. I can proceed on whatever-the-fuck I was doing before I started this #sidequest

https://diode.zone/w/mgUy2iet3UL3drs6V6tNkC

MUVCO Part 5

PeerTube

So the #midi sounds pretty good on the #muvco now. It sounds fine on either vco.

But if I play two *different* tracks (from the same song, I mean) I get a timing problem (haven't timed it, but less than a second). Playing the same track on both vcos simul sounds fine. (using #uasyncio #micropython)

Really seems like I must be parsing the midi consistently wrong, but I don't see how.

#python #programming #synthdiy

Spent most of the evening watching #Taskmaster clips and then only when I was supposed to be heading up to bed did I even begin to look at this problem (#adhd).

Obviously narrowing the problem down as far as possible I found it within about 10 seconds. I didn't have one of the output audio jacks grounded.

Tomorrow's task: Figure out how to do #thread s on #micropython on the #esp32 #microcontroller (#synthdiy #muvco). Or maybe some other easy way to play two tracks at once without a huge chain