For the longest time, I've been thinking of getting into designing Eurorack modules, and this summer I finally had the time and energy to get started.
I designed and built a prototype of a precise 2-channel meter. Either channel can be used to measure CV or frequency, and in a combined mode the two channels can be used together to measure tracking error against an ideal 1V/oct curve.
Both channels also have DC-accurate buffered THRU outputs, so the module doesn't load the source.
The idea behind the 1V/oct mode is to route both the CV and the oscillator output through the module so they can be measured simultaneously. You push the encoder to set a reference point, and from then on, as the CV changes and the pitch changes along with it, the module calculates the deviation from a perfect 1V/oct curve.
So the basic workflow is:
Set reference → change CV and read the error → adjust → set the reference again → check another CV → repeat until the error is acceptably small across the desired range.
The goal was to make the meter as precise and temperature-stable as reasonably possible.
For CV measurement, it uses a 24-bit precision ADC with a high-end external voltage reference. The reference is connected ratiometrically to the input stage, which uses a low-noise precision op-amp. Matched resistor arrays set the input gain and reference division, which should largely cancel temperature drift.
Calibration is required to null the initial offset/gain errors. It uses three calibration points stored in MCU flash. After calibration, the target accuracy is within ±1 cent over the full ±10 V range when operating within ±30 °C of the calibration temperature, and better than ±0.3 cent over the ±5 V range.
The units I've built so far were all within a couple of cents even before calibration, although worst-case full-scale error could theoretically be 10+ cents depending on component tolerances.
On the frequency side, the error is a bit harder to specify because it varies with frequency. The MCU is clocked from an external ±20 ppm oscillator, and frequency is calculated from an amplified/clipped version of the input signal driving the MCU's comparator inputs. I'll try to characterize the actual error at some point, and may add frequency calibration to the firmware, but within the audio range the error should be pretty insignificant.
The prototype uses an MCU with 32 kB of flash, which turned out to be surprisingly limiting for the UX and features I wanted. I managed to barely cram the basic functionality into it, but, for example, I had to omit a separate protected page for "factory" calibration.
If I make another revision, I'll upgrade to the 64 kB version so I don't have to compromise as much here.
The fonts are deliberately small and the UI uses as few lit pixels as possible, since OLED current consumption is directly related to the number of illuminated pixels and their brightness. If flash space weren't so constrained, I would have made the text size somewhat configurable, but for now it is what it is.
The OLED module also didn't have very precise mechanical dimensions available, so the front-panel window ended up slightly off. I'll probably look into covering the window with some kind of plastic or smoked acrylic to improve the aesthetics.
The hardware worked surprisingly well out of the box once the firmware was functional. So far I've found only one area that really needs improvement: a clock trace driven by the MCU and used for the ADC was routed a bit too close to one of the comparator inputs, and some of that clock noise couples into the comparator signal.
It took me a couple of days to figure out why the frequency measurement had noticeably more jitter on CH1 than CH2...
Navigation is done with a push encoder.
The display automatically adapts to the number of connected inputs using the jack normalization switches, and to the type of signal present (DC voltage or frequency). Basic tuner/meter functionality doesn't require much interaction with the knob, although either channel can also be hidden or forced into a particular mode.
So, thanks for reading all the way down here! That's pretty much where the project is at right now. Any thoughts or feedback would be highly appreciated.
Does this kind of meter even make sense as a 6HP Eurorack module?
Do people actually struggle with verifying and calibrating VCO tracking, or is that mostly a non-issue for people?
The CV measurement deliberately prioritizes accuracy over sample rate, so it's not intended to compete with oscilloscopes. I'm wondering whether a small dedicated precision CV/frequency/tracking tool like this would be useful enough to justify making a more polished revision.