image-et-son / p600fw

GliGli based Prophet 600 firmware upgrade
10 stars 4 forks source link

Proposal: OSC B fine-tune resolution enhancement for nicer, slower detuning #85

Closed el-folie closed 2 years ago

el-folie commented 2 years ago

I just came across this thing that always made me wonder, now I think I got it.

P600 with Z80: detuning 0 is not possible probably due to low resolution. BUT the smallest increment of detune leads to a veeeery nice slow detuning with almost cancelling out and octave doubling.

P600 with Gligli: the smallest detuning is 0 and leads to jittery/jumpy almost phase lock effects. And the smallest increment of detune leads to a faster than Z80 detune, with the slower speeds missing between 1, -1 and 0 of detune compared to Z80.

So my proposal is to up the resolution on the fine-tune knob around the middle position to get those veery nice, slow sweet sounding detunings like on Z80.

The audio files show the difference between Z80 and gligli detuning at 0. Desktop.zip

matrix12x commented 2 years ago

Almost like a expo response starting from the middle? That sounds like a great idea.

image-et-son commented 2 years ago

OK, BTW: the readout accuracy of the fine tune button is 8 bits (compare this to 12 bits for freq A and B). Also, the detection threshold for pot movements is even only 6 bits. So you may get a different result when turning away from zero and then moving back there compared to when you try to move away slightly from zero. I see what I can do.

matrix12x commented 2 years ago

The fine tune knob resolution does not seem to be a hardware limitation...

image-et-son commented 2 years ago

No, it's a deliberate choice in the software. I think that it is the detect threshold that is creating this difficulty to fine tune.

el-folie commented 2 years ago

Ah, I see - so if the detect threshold is too big the finer values can´t be reached... And if the threshold is too small the pot might become jumpy. Digital control seems to be an art in itself.

image-et-son commented 2 years ago

Yes, but on my P600 I did a noise measurement and found NO fluctuation down to >12 bits. Might be different on other P600s. I have a different strategy: I have implemented a dynamic pots focus mode in alpha 11. The focus remains active for 10 cycles when a pot is touched. I could reduce the threshold to a minimum once a pot is in focus. I'll send you a trial version.

el-folie commented 2 years ago

That sounds like a great idea!

I thought about a bread and butter solution, like to make the detectable increments smaller in their effective value around the middle position. Your idea is the professional way of course. ;-)

image-et-son commented 2 years ago

Yes, I think in addition, a scaling for the dial could be useful. I think that rescaling of Mod Wheel, LFO Frequency and LFO Amount was both necessary and useful. Vibrato amount is still too hard and we could scale OSC B fine tune in the middle too.

el-folie commented 2 years ago

You are absolutely right on everything...

el-folie commented 2 years ago

It´s a bit better than before, because now values around 0 are selectable, but still the smallest selectable values lead to faster detuning than on Z80. And the detuning only goes up or down in phase, a zero phase lock can hardly be reached.

So I guess you´re right about an additional range scaling around zero to have ultra precise small increments selectable only for detuning.

I also wonder how Sequential may have done it. One thing that I can only assume but feel it´s somehow there, is that they included some kind of drift table that takes time into account and also the octaves, because when fine-tuning in on a very slow detuning this detuning is almost (just almost - not really) equally slow on the whole keyboard range and stays intact over time longer than on GliGli.

About dynamic pot focus (if already there): Could it be that this is the reason that on faster movements the highest/lowest values of a knob are not reachable, only after turning the knob back and forth 2-3 times?

image-et-son commented 2 years ago

Hm, scaling around zero is possible. But the stability topic? I don't know. It would require using the tuning procedure continuously, e.g. using feedback from the circuits to see if they are really in tune with each other? That's a whole different story compared to what's implemented now.

Ae you sure, that the topic of having to move the knobs up to 10 does not always directly hit 99 is something new? I would have assumed that I have improved the situation. If not, I would need to know about it, because it must be the unintentional side effect of something else.

el-folie commented 2 years ago

Just tested 12 and 11.1 back to back and yes - not reaching 0 or 99 value on fast knob movements is definitely new. On 11.1 it´s still perfect.

el-folie commented 2 years ago

You are right about questionable precision. I should go through the scaling procedure first and then see if it´s any different or better. Will do that tomorrow and report back.

image-et-son commented 2 years ago

Just tested 12 and 11.1 back to back and yes - not reaching 0 or 99 value on fast knob movements is definitely new. On 11.1 it´s still perfect.

Thanks for testing this. I will, find the cause and solve it.

image-et-son commented 2 years ago

For point of not reaching top values I branched off an bug issue. In this issue we'll continue the topic of scaling of the fine tuning.

image-et-son commented 2 years ago

I am looking into this at the moment. The way GliGli implemented this he introduced a middle "deadband" of +/- 2048 (out of 65536 total range). So +/- away from the middle (about 65536/2) nothing happens and the remainder of the range is rescaled. I think this is very important for filter envelope and poly-mod envelope, where you want a reliable setting of zero. In the case of fine tuning it is probably counterproductive, especially, if you need very small tuning away from zero. Maybe I just try removing the deadband from the fine tune.

el-folie commented 2 years ago

Sounds absolutely logical. Looking forward to trying it out.

matrix12x commented 2 years ago

I agree, it makes sense to remove from fine tune

el-folie commented 2 years ago

The deadband removal is another fantastic step on alpha 13: Finally the dead slow osc detunings are possible again. I got totally lost playing with the oscillators running smooth and slowly in and out of phase, sounds terrific on washy poly chord sounds or piercing narrow PW sounds for example. As I did the scaling procedure yesterday all oscillators were almost perfectly in tune and phased equally nice and slow at the same value of the fine-tune knob.

If fine-tune can be made more controllable by stretching out the scaling around zero is hard to say, but maybe really worth a try. I´d even consider to mod the analog board for multi-turn trimmers for more precision, if a finer scale around zero would still yield usable results.

matrix12x commented 2 years ago

Alpha 13 Fine tune sounds really nice.

@el-folie I was also thinking about multi turn trimmers to replace the horrible jumpy scaling pots. in the end mine are almost all the way to one end of the 5K scaling pot's range.

image-et-son commented 2 years ago

So are you two in favour of widening the "slowband" and/or flatten it? Or is it ok as it is? BTW: I often use cross-modulation with non-octave differences between A and B where you regularly end up quite far away from 0 fine tune to get harmonic tuning. I have come to "like" the PW bleed bug of of the hardware to do the last touch using the OSC B PW pot.

el-folie commented 2 years ago

I´m absolutely in favour of an experimental "slowband" around zero.

If it doesn´t work out - no problem as we´ll still have the original slow phasing from Z80.

matrix12x commented 2 years ago

You can prob widen it a little. However, for me it is ok as is.

image-et-son commented 2 years ago

Made it twice as wide and half as "high", so softer by a factor of 4. Note that it is piecewise linear, so outside the central "slow band" it has the full action needed to reach full detune on either side.

el-folie commented 2 years ago

Is this already in 13.1?

el-folie commented 2 years ago

Okay, need to test/compare it. ;-)

image-et-son commented 2 years ago

I find that my perfect tune is quite off the middle - now even more, naturally.

el-folie commented 2 years ago

alpha13: perfect tune at values 6-8 to the right alpha13.1: about 12-15 to the right

The funny thing is though, that the point where the phases are congruent and drift off to one or the other direction is not easier to control on 13.1. A tiny teeny notch on the knob is enough to make the detuning too fast again. Is this a matter of value resolution (that I maybe wrongly assumed) of the knob itself or does the P600 hardware/pitch cv at the oscillators simply react that way even when the cv alteration is tiny teeny small? Because it sounds as if the hardware reacts almost a bit like a switch when changing detune/phase direction. Or does this maybe only happen because "perfect tune" lies at the border of the widened zero "slowband" and so the finer detune precision is outside of the more precise knob area? Anyhow, most interesting!

image-et-son commented 2 years ago

Value: about the same for me.

I think you're right: the tune point is at the edge of the "slow band". Needs another iteration.

image-et-son commented 2 years ago

OK, now I have made it a bit steeper and I have shifted the middle. Hope you like it. I managed to tune it to >30 seconds phasing period. But it is no so stable that it would always stay that tuned...

Note: that is 13.2

el-folie commented 2 years ago

Wow, it sounds great, and it´s easy to tweak now too for the perfect in-tune spot. What an unbelievable difference to the original state with the deadband, which effectively has been exchanged for a whole new function in its place.

And I thought that the hardware was holding itself back, but no, just a matter of fine enough cv control. I´m glad that we discussed this "issue" and that you found a solution for it, detune sounds abolutely delicious now!

matrix12x commented 2 years ago

This plays soooo nice!!!!!

image-et-son commented 2 years ago

Great - just hope that the centre shift does it for everyone. Let's go with this one for now.

el-folie commented 2 years ago

Yes, also while warming up the "perfect-tune" point wanders a lot, by like 10-15 increments. So users should be advised to first let their P600s warm up for an hour or so before making judgement of their P600´s center position for fine-tune.