Strange step between B3 and Bb3 in OSC sync mode in a certain case
Hello,
first off, the compliments: hats off, what a fantastic accomplishment, big congrats!
I'm playing around with the OS X version of NanoStudio (evaluating an iOS purchase), and found the following strange behaviour:
Create the following patch:
- Start with preset B34.Whistle'n (a very basic patch)
- Oscilator page: switch to Sync mode, set Osc A Waveform to EP3 and Transpose 0. Set Osc B to Transpose 7.
Play the notes C4 - B3 - Bb3 - A3. Between B3 and Bb3 there is a sudden change in tone character, it becomes much brighter.
Since this is a very basic patch, I don't understand where this strange step comes from. I checked every setting, nook and cranny, and found no way to get rid of this strange step.
Is this the correct behaviour? Does it also happen in the iOS version? Or is it even - gasp - a bug? :-)
Thanks for any hints!
Bauik
Interesting, thanks for answering!
I read somewhere that you use 2 differently optimized codebases (on for older and one for newer iPhones). Does this only occur on older iPhones or on all of them?
There are three sets of routines - one for older phones with VFP, one for newer phones (>3G) using NEON and then a fairly unoptimized one for PC and Mac (this still runs 100x faster than the phone!).
They all use the same set of wavetables though so they'll all get this issue. I'm inclined to leave it for now because in the majority of cases it's not noticeable, but I've added it to the list because it's not right.
Yeah, don't worry on this one, it's not a big problem. Thanks for answering! :-)

Congratulations, you're the first to notice!
In order to get so many polyphonic synths running together even on old hardware, NanoStudio takes a few shortcuts. One of them is to use a series of anti-aliased wavetables for each frequency range, with a point (rather than interpolated) sample lookup.
I suspect you're seeing a 'step' between the two wavetables, which is normally tiny but the sync mod can bring out really badly if the sync happens to fall on a high point for one table and a low point for another. With more subtle tweaking of the wavetable it might be possible to minimise this.