Caliper

caliper

Caliper is a tuner / frequency counter / volt/octave calibration assistant for Norns + Crow. :loud_sound: :on: :straight_ruler:

screenshot: tuned

There are other tuner scripts out there, but this one comes with a very accurate Tartini-based pitch detector, reference tone, and CV output for calibrating an oscillator or filter. I made this last night when I decided it was time to recalibrate allll my filter modules, and figured it might be of some use to others.

Feature requests / questions / bug reports welcome! I may add the ability to tune the reference frequency to specific 12TET notes eventually, but I’ve also got a more full-featured microtonal tuner & scale editor script in the works, so I wanted to keep this simple.

Requirements

Absolutely required: Norns, version 200328 or higher (Caliper uses the filters library)
Not super useful without: Crow, something to calibrate (oscillator or filter, probably)

Documentation

From the GitHub readme:

Plug in a Crow, patch output 1 to the 1v/oct input of the device you want to calibrate, and plug your test subject’s output into Norns’s audio input (probably through an attenuator).

If a fundamental frequency can be detected, it will be displayed on screen.

Turn E2 clockwise to hear a reference tone. Turn E1 to change the reference tone pitch to match the input frequency. Hold K1 for fine control.

Press K2 or K3 to add/subtract octaves at Crow’s output, or turn E3 to adjust output voltage to arbitrary values. Check the tuner display and cents offset. If subject’s tracking is too wide or narrow, adjust its trimmers accordingly, turn E1 to match pitches again, and repeat.

Hold K2 and K3 to reset Crow output voltage to zero.

Download

Available in the Maiden project manager.

v1.0.0 - https://github.com/synthetiv/caliper/archive/v1.0.0.zip

GitHub: https://github.com/synthetiv/caliper/

44 Likes

I had no idea how much I wanted something like this until now. Thank you so much for this!

3 Likes

Awesome! I had pondered on just such an idea recently. Will definitely use this.

1 Like

Waiting on delivery of my crow so sorry if this should be obvious, but will this work with just Crow and druid or is Norns needed to display the results?

Unfortunately Norns does most of the real work here – detecting the frequency of the incoming audio, generating the reference tone, allowing control over reference pitch and CV offset.

Crow can’t analyze or produce audio on its own, but you could definitely make, say, a Max patch that did the same things this Norns script does, and still use Crow for CV output.

That makes sense, thanks either way for realizing a useful tool.

AFAIK both these features are on the crow roadmap?


Just tried to install this via maiden, I get a error: missing caliper message… is there something else that needs to be installed too?

in matron:

# script run
loading engine: Caliper 
### SCRIPT ERROR: missing Caliper
>> reading PMAP /home/we/dust/data/caliper/caliper.pmap
m.read: /home/we/dust/data/caliper/caliper.pmap not read.

hmm… this could be my fault for naming the engine file something different from the engine class, or you may just need to reset Norns to load the new engine into Crone after installing the script. Can you try that and let me know how it goes? SYSTEM > RESET or ;restart in the Crone tab in Maiden should do the trick.

(I just checked, and the fact that the engine file was named Engine_ReferenceTuner.sc instead of Engine_Caliper.sc doesn’t seem to be a problem, but I also just renamed it on the master branch to keep things tidy)

Oh fuck yeah I just sold the disting. :cupid:

system > reset seemed to do the trick! I’ll be using this a lot. very handy.

freq reading seem quite jumpy - like always flickering +/- 4-5 cents?

1 Like

Some amount of fluctuation is probably unavoidable, but that sounds like a lot. What’s your sound source?

A few things to try if you aren’t already doing them:

  • Other waveforms, or filtering out higher harmonics: sine or near-sine waves seemed to work well when I first wrote this, unfiltered square or saw waves do seem to confuse it a bit
  • Frequency range: Tartini lacks confidence when it comes to bass frequencies, but around 70Hz through 1-2KHz should be OK
  • Don’t attenuate too much, you just want a reasonably hot signal without clipping
  • Play with the “in freq smoothing” param (it only goes from 0-6 with a default of 2, and 6 makes for a pretty slow response, but if you want, you could try editing the script in Maiden to increase the max on this line: https://github.com/synthetiv/caliper/blob/master/caliper.lua#L142)
  • For fine tuning, take the screen readout with a grain of salt and use your ears – listen for beats between the reference tone and your source, which will also tell you whether / how much your source is drifting
1 Like

sound source was a dixie sine wave > music thing modular start up > stereo 1/8" out to stereo 1/8" in on the norns shield. possibly a bit convoluted signal-wise.

I bet I’ll find a sweet spot with your suggestions, thanks.

breaking change fix for new norns version opened here @synthetivv

1 Like

holy wow, you made that easy! Thank you & merged.

v1.1.0 zip for anyone still updating things that way.