|
Post by feijai on Nov 23, 2023 22:14:44 GMT
So it's one thing to use Grains as a trigger device; it's quite another to get it to track well as a synthesizer.
First off, all the analog inputs (notably 3 and A) don't go 0...1023 for 0-5V. Rather they reach 1023 rather earlier, and so GRAINS only has about a 3.7 octave range. :-(
Second, the tracking (the "stretch") changes as resistors attached to these inputs warm up. I think they're two specific resistors forming a voltage divider on the GRAINS. I have found that the range stretches from about 44 to about 46 or 47 it warms up, and I don't know if it's consistent. THAT is frustrating! It's as if you have to tune the pots in the back of your VCO every time the synth warms up.
Anyone have any idea how to deal with this? I can't tune on the fly because it involves a pow(..) to convert from V/Oct to frequency, and it's too expensive, so I have to use a PROGMEM table to store all the tunings. For the moment I've added a tuning.txt file along with Booker.ino to explain the situation.
|
|
|
Post by reductionist_earth_catalog on Nov 25, 2023 19:16:20 GMT
whew sounds complicated then. thanks for these in-depth investigations!
|
|
|
Post by feijai on Nov 26, 2023 10:41:26 GMT
whew sounds complicated then. thanks for these in-depth investigations! I'll get a better tracking approach soon, it's convoluted and inconvenient right now.
In short: due to the voltage divider, In1, In2, and In3 on the GRAINS track at about 1.3v/Oct. That's no big deal, easily dealt with in software. But the exact tracking value varies depending on the voltage of the regulator (your MASTER I/O), the current draw probably, and especially how warm the resistors are right now. THAT is frustrating. Basically the same situation as the tracking pot on the back of your 2Osc/d or VCO, only inconvenient.
So you need to let your GRAINS warm up a lot, perhaps tune the MASTER I/O to exactly 5V if you're anal retentive, and then set the correct tracking in the code. It'd be a single number except that I can't use pow() in the code, it's too slow. So I am relying on a lookup table of about 1500 floats, and you have to CUT AND PASTE the right table into the code, yuck.
At the very least I will get it set up with a #define so you can just say, oh, #define TRACKING_45_7 for a tracking value of 45.7, and it should load the right table for you.
Now all you have to do is tweak the tracking until you get the right value. I might make a little utility to do that but it's probably easiest to just download a tracking, remove the USB connection (that's important, it boosts the voltage), and see if it tracks right, and if not, repeat.
|
|
|
Post by pt3r on Nov 26, 2023 14:09:46 GMT
I'm sorry but, tracking issues on the AE modular? You can't be surprised, right? If you want everything squeekly clean, perfectly tuned, and always in time you are playing with the wrong tools.
|
|
|
Post by feijai on Nov 26, 2023 17:20:47 GMT
I'm sorry but, tracking issues on the AE modular? You can't be surprised, right? If you want everything squeekly clean, perfectly tuned, and always in time you are playing with the wrong tools. A man can dream.
Okay, I've revised my tracking method. Now you just have to identify a single number (like 47.3) that's appropriate for your GRAINS and insert it into all my grains projects. I've revised them all accordingly.
|
|