Hi, I just ran across the teletype and am very interested except for one thing: voltage can only be specified in .01V steps.
This serious limits its utility for me: it really needs to have 1 millivolt resolution to be useful for microtonal work. No, I’m not inviting an argument about this–I have a few microtuning quantizer designs under my belt and know what I need/want.
So the question I have is: is this a hardware or firmware limitation? Which DAC(s) does this module use? Is there any intention or willingness to increase resolution? My apologies if the schematic/source/etc. answers these questions, I haven’t found them yet.
I love the nod to RPN calculators (XYZT registers), by the way.
Thanks in advance!
Signed 16 bit
So it’s like 1/60,000th of a volt I think
12bit DAC (AD5687) with a 10V range, so ~410 steps per octave which is ~2.4mV/step.
If you want to access that granularity you have to address the values directly (eg 1V = 410), whereas the
VV commands are just lookup tables with 1V & 0.01V accuracy. You could either hardcode your microtonal scales into new lookup tables, or enter them directly into the tracker mode. I’ve had some success doing the latter for just intoned scales, with satisfying (to my ears) results.
If you need greater accuracy I’m afraid TT might not be the solution.
Thanks, that’s very helpful!
Hmmm, the AD5687 is a 1LSB INL part, so it should actually nail those 2.4mV steps pretty well. That’s a resolution of about three cents or a thirtieth of a semitone. Close, very close. For notes in sequence, it’s probably close enough … but a three cent difference at 440Hz is close to a one beat per second warble and will be noticeable with two tones.
I tune my piano’s middle octave with a tuner more closely than that (12TET or sometimes something more interesting like Werck III), and it’s easy to tune the octaves so they are within a fraction of a cent of the reference octave. I don’t really understand the casual approach to pitch accuracy in these high end boutique instruments–they should be able to be tuned at least as well as my 105-year-old piano. :-/
I see it’s only about $3-4 more for the 16 bit AD5689
you could swap out the DACs for the 16 bit version. pretty minor code change as well!
Close enough for rock and roll though.
Which package does teletype use for the DAC? TSSOP might be OK, but that LFCSP looks really awful to hand solder. The code change should be very minor.
The funny thing is that distortion in rock’n’roll makes intonation even more important.
Totally hear you on the impact on long drawn out tones. On the positive side that 1beat/sec is worst case scenario, and with some smart code you could half it (jump to next step if greater than half a quantize point away).
I’m very curious which oscillators you’re using in euro that track well enough to support this kind of tuning though! Are you mostly using digital oscs? I’m guilty of using a 12bit ADC on Just Friends, and I suspect many others are too. Granted the averaging on most uC ADCs actually provides sub-LSB accuracy, particularly with some added smoothing on the digital side.
Would love to know any recommendations for gold-standard tracking oscs!
PS. It is the TSSOP package. Not too bad if you use a whole lot of flux.
Worst case is going to be 1LSB + on one DAC and one LSB - on the other for the same commanded value (i.e. about 6-7 cents total) unless you have some kind of calibration or closed loop control. We have to assume the chip will perform no better than the guaranteed specs unless we’re binning them ourselves.
My less-than-stellar Subcon reissue Model 15 and Model 37 will track without beating over an octave or two without any problems–actually they can track so closely that I get cancellation and phasing effects. But this isn’t unusual in my experience, even my Doepfer A-143-9 quadrature oscillators track pretty well. Maybe I have just been lucky, but I have had to calibrate the 1V/octave scaling on every oscillator I’ve owned.
“Granted the averaging on most uC ADCs actually provides sub-LSB accuracy …” … really? My direct experience is limited to the PWM outputs on AVRs (which you can get good 12 bit resolution out of with some stacking magic), but the settling times are awful: 3ms+ after smoothing. The rest of the standard DACs I’m aware of all have real world INL that’s waayyy too high unless you spend a bit and can deal with SMT parts–you have to spend a lot more for DIP parts you can breadboard with.
TSSOP … hmmm …
I would love to see some kind of scale definition functions in the teletype, though I would generalize such a thing so that it was a more general purpose array index with mapping thing. I do something like this in my quantizer firmware to process incoming voltage samples to scales–and the scales don’t have to be octave-based. I see some capability for this now in teletype, but it sure would be awesome to be able to have a bunch available simultaneously. Depending on the max number of notes in a scale (currently 43 for Harry Partch compatibility), I can get a hundred or two in an AVR’s firmware–I’d figger teletype has more room.
It’s on my todo list. In fact it’s probably the main reason I started my various rewrites of the teletype code, I find entering scales into patterns quite tedious. The syntax might end up being too esoteric for common use, so it’s possible I’ll just keep them in my own branch. I not sure if they’ll fit your use case though.
It’ll really be a set of inline array functions (for example)…
#4.L 3 7 9 10 T // would take the Tth item from the first 4 values looped (nice for arps)
#7.S 0 2 3 5 7 9 10 X // make a (western) scale from the first 7 values, take Xth value
#7.Q 0 2 3 5 7 9 10 Y // make a scale form the first 7 values, find the nearest to Y (i.e. quantise Y to the scale)
The common format being a
#, then the size of the array, then the function name. On technical level it will be a bit of a hack, essentially I’d create an op for each array size (e.g.
#2.L, etc) with some C macros to ease repetition.
I’m also planning on writing up a tutorial on how to write your own ops, most likely in the form of creating your own tables, the example will probably be a table of primes or the Fibonacci sequence.
Looks interesting, Sam!
The general algorithm I use for quantizing is something like:
- Calculate the scale span from the scale definition (usually an octave, but the code is agnostic on this point)
- Divide the incoming voltage by the scale span; multiply integer quotient by scale span to get offset
- Use Arduino map() or similar function to get a scale index (note value) from the remainder
- Add the offset and note value
- Write result to the DAC
There has to be some kind of anti-jitter code in there too: a simple array lookup doesn’t function very well if it is driven by external CV. It’s also very helpful to know if the note has changed or not.
I handle everything in cents internally, it’s much easier to enter e.g. Scala archive scales that way.
Something worth remembering is that teletype scripts only run in response to events, either the metronome, triggers, or manually via the keyboard. So you won’t be able to write a traditional quantiser that works continuously, instead you’d have to trigger a script that would then sample the
IN value. (You will also need to deal with the
IN value not being stable when the trigger fires…
DEL comes in handy here.)
indeed. teletype is more of a control environment and event system, not so much a processor.
Perhaps this is OT, but wondering if you’ve experimented with the ‘note windows’ for parts of a scale?
Say you have a seven note scale spanned over an octave, but in the scale you have 4 different tunings of a 3rd. In the standard divide input by total elements, then table lookup, this would emphasize the 3rd intervals as they take up most of the values.
One alternative would be to make ‘windows’ where the divisions between note changes occur halfway to the next note in the scale. This would have the inverse effect of emphasizing the notes which are most unique in the scale. I’m sure there’s many alternative approaches, but I’m certain this would make a quantizer feel entirely different – whether it’d be more musical requires investigation!
It’s my thread, so I declare it on topic.
Yes, I have thought about this quite a lot because it’s a strong element in some kinds of musical traditions: Indian, Middle Eastern, blues, etc.: those quarter tones (or smaller) aren’t full-fledged notes in the sense we’ve come to expect in the western 12TET tradition: they are ornamental in some cases, and part of a progression (I think!) in others.
Having been a woodwind, brass, and string player, I don’t think about synthesizers in a very piano-oriented way (though I also play piano): some of the conventions piano/keyboard players take as “the way music works” drive me insane.
One way around it is to define different modes with different emphasis, much the same way as we would use a minor, mixolydian, etc. in western scales. This requires some form of algorithmic or other control of scale/mode selection … and the code grows longer …
this is an interesting point to consider, i always thought of quantizers in terms of a simple lookup, but note emphasis also makes me think of whether there are some interesting results to be had from implementing a “smart” quantizer that does some analysis on the previous notes and uses it as an additional criteria for note selection (so, say, including certain notes only after a specific progression). is there anything of the sort?
and welcome to lines, john!
Hi, nice to see some familiar faces here.
I don’t know if any available quantizers will do e.g. melodic minor scales–I don’t think so. They are part of the road map for my own design.
Note weighting and some other things have great musical potential in generative music.
I really like this idea – If you play a chromatic passing tone, the quantizer heavily weights the next note to land back in the scale. It becomes a difficult proposition though as once you get to that kind of sophistication it makes me feel a need for harmonic leading to smartly shift scales.
Of course this shows my very western sense of harmony & jazz background, so perhaps there’s a way to abstract some of these ideas to make them more open-ended.
It’s a wonder these kinds of ideas haven’t been pursued more in the very mainstream world of pitch correction. Seems to me a smarter quantizer would facilitate much faster autotuning!
What do you guys think of the tip quantiser? They worked on that for years
Dogma, I publicly pouted in one of the Eurorack Facebook groups about how the Tiptop isn’t microtonal. It seems like a nice quantizer, but very conventional. I wouldn’t trade my Doepfer A-156 for it.
Galapagoose, there’s a whole world of musical traditions that get ignored in electronic instrument design. I don’t know if it’s because the gear gets built by engineers and not musicians, lack of imagination, or what, but it’s totally inexplicable to me. I think computers have stunted musical education for a lot of people: the omnipresent grids, 12TET scales and conventional modes, etc. have conditioned a generation of people to think this is how music is.
About half of my first album, which was made entirely wit my modular, incorporates microtonal scales (Indian, 19 tone, 24 tone, etc), and I make fairly “conventional” music.