BEAP v/oct output problem
Despite following the directions to the best of my understanding, I have not been able to calibrate the V/Oct output BEAP block. I have “1v/oct output” set to a DC-coupled soundcard output that feeds the v/oct input of an external oscillator. I have the external oscillator’s output coming back into my soundcard, and the return channel is assigned to “calibration input” in the BEAP block. I also have an input monitor so that I can hear the oscillator output. I see the calibration input light flashing in the BEAP block, so it seems to have signal.
When I click the calibrate button, I hear the external oscillator go through a series of pitch changes. BEAP does not appear to actually calibrate, though. The help file says that I should see line segments appearing, but I do not. After calibration (I’m assuming calibration is over when the pitch stops changing; there’s no visual feedback in the BEAP block), any BEAP CV signals connected to the output block have no impact on the external oscillator’s pitch. It’s like everything is multiplied by zero.
If I leave the default uncalibrated settings, or I draw line segments manually, then signals going to the 1v/oct output block at least change the output voltage. The lack of valid calibration data means nothing is close to v/oct tuning, though.
What am I doing wrong?
Software setup:
Max 7.0.4 32-bit running on Win7 Pro 64
BEAP:Output:Calibrated_64bit (the other version requires sigmund~, which seems to cause other problems in Windows: https://cycling74.com/forums/please-upload-sigmund-object-thanks/)
I’m guessing these are unrelated issues, but I’ve noticed that some *single* BEAP blocks take an entire core on this 2.93 GHz i7, and Max sometimes crashes when I delete BEAP blocks from a layout.
Thank you for reading.
I was able to dig deeper after learning that BEAP blocks are just bpatchers. Hooray for open source! The BEAP Calibrated_64 patch relies on an fzero~ block that isn’t working as expected. If I make a new patch with an fzero~ block and feed an analog oscillator signal to it, I see it loosely (lots of jumping around including octave errors) track the oscillator frequency. However, if I copy the fzero~ block settings from the BEAP v/oct output patch…
fzero~ @period 4096 @size 4096 @freqmin 0 @freqmax 2500
…the fzero~ block just constantly outputs zero. Even connecting a “cycle~ 1000” object as the source results in 0 out of the fzero~ block.
For an experiment, I removed the @freqmin and @freqmax settings. After that, I started to see 1000 out when using cycle~ 1000 as the input.
So, there seems to be something wrong with fzero~, especially as it is currently configured. Unfortunately, removing the freqmin and freqmax settings from the fzero~ block in the BEAP Calibrated_64 patch wasn’t enough. I at least see the fzero~ block detecting questionable pitches now, but no points are being added to the function block during the calibration process..
I have this same problem, did you ever find a solution to this?
I also had the same problem, any word on fixes?
The issue is with the pitch detection. sigmund~ worked pretty well back in the day, but it isn't a standard Max object. The calibrated 64bit module was an attempt at using fzero~ to do the same, but fzero~ just really isn't up to the task.
What I've been doing recently is using voltage readings or tuning by ear, so let me throw a hypothetical out there. What if your calibration procedure was this:
1) Plug your 1v/oct out from your audio interface and osc output in to your audio interface
2) Tune your osc to a C4 with a built in tuner on the beap module
3) Switch a tab to output 1v, and the module also plays a sine at the same frequency and you adjust a voltage scaling value until the two are in tune with each other.
4) Switch a tab to output 2v and fine tune the frequency a bit more.
At this point, you have a pretty good scaling value and you can work like normal. The voltage scaling value is saved in your snapshot, and you could probably just use that value any time you instantiate the module with that audio interface. Does this workflow sound too annoying?
whats about the 64 bit version of sigmund~ ? maybe this will fix our calibrate-problem. i can't try it because iam not so good in programming ... but maybey there is someone ...
http://vboehm.net/2015/06/a-64-bit-version-of-sigmund/
I was facing exactly the same problem trying to calibrate my oscillators to work with BEAP.
To solve this problem I started from the tools that Matthew developed some time ago , which are available at
https://github.com/stretta/Stretta-Control-Voltage-Tools-for-Live-9
and I recompiled the sigmund~ 64bit to work on Max 7 by patching its configuration file. Then I made some modifications to the Stretta CV Calibrator device patch to use sigmund~. What I got is that the M4L device sweeps the voltages out but the calibration graph looks quite messy.
Apparently the sigmund~ port on Max 7 works , I didn't see a huge use of Max API in the sigmund code (I guess because in the beginning sigmund was compiled on both PD and Max). However, I hadn't time to deeply figure out if some parts of the external should be changed, but I don't think so because the sigmund~ help patch worked as expected.
Probably it would make sense trying to use the sigmund~ external on Calibrate_64bit and see what it happens, I'm willing to share the compiled external to test this.
necro-bump
does Max or BEAP currently offer a 1v/oct calibrated output that works reliably out of the box? Can't get it to work in Max 8. Stuck using Reaktor, which works well, but I'd prefer to stay within Max if I can.
Thanks
Here is a quick back port from what I usually use in my maxforlive CV things. If you have something that can read out the maximum value in volts, like an otool scope, then you just generate a full scale signal to the scope, and type the number into the setup window.
thanks