Any comprehensive guides to setting up physical controls, CV inputs and outputs in c++ on Seed, and or good c++ synth project examples for beginners?

TL;DR
Looking for a comprehensive guide to setting up physical controls, CV inputs and outputs in c++ on Seed, and or good c++ synth project examples to learn from.

Hey ya’ll, I’ve been messing around with DIY analog synth circuits for a while now, and just started experimenting with c++ and a “Daisy Seed” to build into small custom projects and augment my analog projects. As a total code noob, it’s been quite the journey even just setting up a dev environment in VS code, let alone understanding the concepts of libraries, .json file, headers, and the language itself.

As a learning exercise I’d like to experiment with as many of the examples as possible but the examples for “Seed” are quite limited and the ones in DSP don’t have any explanation of how to add external pots, switches, or inputs and set them up with different parameters or rates etc.

I managed to get the Moogladder filter cutoff to be controlled with a knob using this from the osc
example osc = filter:

  //Convert floating point knob to midi (0-127)    
  //Then convert midi to freq. in Hz
  osc.SetFreq(mtof(hardware.adc.GetFloat(0) * 127));

int main(void)
{ 
   //Create an ADC configuration
   AdcChannelConfig adcConfig;
   //Add pin 21 as an analog input in this config. We'll use this to read the knob
   adcConfig.InitSingle(hardware.GetPin(21));

But why do I need to convert to midi? Can’t I just tap a control pin with a pot?

In contrast the SVF example for “Patch” is much more detailed in how it’s manipulating the filter parameters but all the names of things are “Patch” board. How hard is it to convert to “Seed” pinouts? Can I copy the code from the “Patch” example of svf and change the input pin?

My primary question is can someone point me to the best resource or explain how to convert the examples from “Patch” or “Pod” etc. to “Seed”? only in the software sense, I have a decent grasp on the HW requirements in doing so (buffers, appropriate power sources, signal lvl conditioning and so on, so i don’t fry the device.)

Or is there some sort of simple guide on how to add pots and switches to some of the DSP examples. Maybe a .cpp example of “SVF” on Seed with controls for cutoff, res, and a multi prong switch that changes the output to LP BP HP…

What about CV control, how is that accomplished on the platform via the pins? Maybe an example of a CV input on seed? I assume it’s 0-5v only or maybe 0-3.3v. What about CV control between to discreet digital elements of the design, like PWM on an oscillator via lfo?

Sorry if this is an obtuse multi pronged question but the “getting started guilds” kinda drop you off a cliff as a beginner after getting the board to blink or play a drum note and I’m looking for some good overall c++ Seed design references to study to get a better understanding of the basics.

Like a “Noise Toaster” from MFOS on Daisy Seed lol, (maybe i should try to do this…).

Cheers!

I’m interested in the CV output stuff - I assume its on pins D22,D23. I’m currently making a FX box - and plan to put CV output on there as well (for my DS-2 whenever that arrives :slight_smile: ). Should be simple enough to output to those pins, tho I have no idea how the voltage is mapped to pitch e.t.c.

2 Likes

Well, to get really accurate CV out I suppose you would feed a GPIO pin into a DAC like an MCP4725, not sure if there is one on seed, but I think there is one on Patch/Pod so you could look at the Patch schematics for how they are doing it there.

or you could use the pwm output on GPIO pins too for simple analog voltages but you’d want some protection circuits, again like on patch or pod / field etc.

no clue how to code any CV out type stuff.

i dare not comment further or else this will become a blind leading the blind situation lol. Maybe I should have just started with one of the pre built synth boards powered by daisy.

There’s a previous post on this here: DAC Output on Seed

Hope CV to pitch is the usual pow(2,1/12) kind of thing for notes e.t.c.

1 Like