Hey mate! It looks super usefull, i’m going to try it out asap!
Do you think is possible to add a vca/mixer with an internal envelope mode?
The upper pots may be used for panning (EDIT: this have sense only if a smarter output handling is found. We need two outputs for the stereo image), the slieders may have two function depending on the led status:
defining the max amplitude of the VCA
defining an envelope segment (like in your 6 equal envelope mode)
the time/level cv in may be the input for our audio rate signal, the gate input may be the gate for our internally defined envelope.
The output may function like this: if no output jack in inserted the last output contains the mix of all vca.
if other jacks are connected the corresponding output is removed from the mix out.
It may be hard to code but it may be great. I don’t know it there are hardware limitations to this tho.
I was wondering: since i would like to learn dsp, do you think, as an hobby, this may be an hard project to do?
To be honest i don’t even know if a digital VCA with built in evelopes can be done or just traight up appealing.
The DSP is just a multiplication, and generating the envelope.
The difficulty is the hardware. On how many channels do you want to do that? If it’s just on two channels, you can repurpose any board with an audio codec (say Warps’). If you want to do that on six channels like you originally thought, you’d have to design your own board with a multichannel audio codec. This is more work! It might be simpler to use a quad analog VCA and only generate the CVs digitally (as is done on Frames or Streams).
Ok I suppose that it’s better to start with the simplest idea possible since I have to learn how to design a circuit or how to program a dsp (I have a good knowledge of signal processing theory and coding in general). So maybe a dual analog channel with digital envelopes may be a good point to start with. For a final project tho i think that 4 channels is the minimum.
Émilie, I was taking a look and studying the plaits schematichs to understand how to work with the inputs and outputs of a MC. I was looking at the CV offset achieved with this inverter integrator op amp configuration. I was wondering: i get that R30 and R27 are designed to transate the CV in such a way to have a range of volts varying from 0V to 3.3V, but are you assuing that the input voltage is in the [-5;5] range? what if someone puts a -10 or 10 VDC in the cv input? Does the voltage saturate to GND or Vd=3.3V? And how do you choose the capacitors value? In fact in the pic the two values are different and i can’t get why (i know that the cut frequency of thi low pass filter is 1/2piR*C ). Maybe you are sampling the two inputs at two different rates?.
Thank you for the clarification :D!
Just to be sure: since the op amp in in the inverting config, let’s say that we have -5V volt as input (let’s suppose, again, to accept Vin values in the [-5;5] range). It will be mapped at 3.3 V and 5V will be mapped at 0V. Will this be taken into account in the software, since we have to decode this voltage ([0;3,3V])in order to understand if we want a positive or negative modulation?
Yes of course, the raw value read by the ADC is multiplied by a (negative) scale and offset in software. These scale/offset values are determined during a calibration procedure (you need the calibration because the resistor don’t have the perfect, ideal value).
Before finding other solutions I need to know how you do this task now. I guess you are providing a fixed voltage to an input cv and, in the software, see how much it deviates from the ideal converted value? Do you do this for each of the inputs one by one?
EDIT: did you find the offset to be liner most of the time?
Since the error seems to be linear the math in the code works well and doesn’t require any polynomial curve fitting (which is cool and keeps the MC away from hard math). The only thing that may bother me is to apply the algorithm for each input (even if in the code you provided this procedure seems to happen only for the V/OCT input).
It may be cool to have a calibrated controllable voltage source to feed to all the cv inputs. Ofc the two voltage points we need to provide must be containted in the largest subset of voltages we are expecting from the imputs (if one imput can vary from [-5;5V] and another from [-1;10V] we can feed to both inuts a voltage between [-1;5V]). Once we have all the CV inputs connected an algorithm can be launched in order to save in memory the gain and offset parameters for each inputs. In order to compute the maths we need the “ideal” values we expect to read for each channel. It would be nice (but not necessary) to initialize them via txt file or something like that since the two points may vary from module to module. It would also be super cool to control the calibration points with the module itself, some power sources have serial communication (RS485/232 for example) but i don’t know if this is viable with an STM device. Sorry if all i wrote is an useless pony trip mess lol.
EDIT: I have just saw that you also calibrate the other ADC in a different loop but for this channels you only compute the offset. May I ask you why? Maybe you just want the V/OCT in to be more precise?
Would you sell modules that haven’t got through any test procedure at all? I won’t. So there are 2 to 10 minutes of test per module, more or less automated depending on how complex the module is, and how easy it is to automate (for digital modules it’s easier to automate everything).
I used 1V … 3V initially for the user calibration procedure since MIDI interfaces (or devices with CV output) which can output negative CVs were rarer. And found some devices with 0V as their minimal that didn’t always output a clean 0V.
I use a larger range at the factory when I am in control of the precision and range of the voltage source I use!