ctag-fh-kiel / ctag-tbd

CTAG TBD >>to be determined<< an extendible open source Eurorack sound module
Other
141 stars 43 forks source link

V/Oct option for samplers - clarification #18

Closed milkowski closed 3 years ago

milkowski commented 3 years ago

It would be great to have an option to switch between current pitch modulation and V/Oct pitch selection in MRompler and WTOsc samplers.

ctag-fh-kiel commented 3 years ago

You can assign CV to pitch for both plugins, is your request to make >the assignment controllable by cv or trig?<

milkowski commented 3 years ago

I'm assigning pitch control to CV, but I'm observing V/Oct voltage levels are not properly mapped to pitch changes: 1/12 V per halftone, 1V per octave (with most commonly C-2 on 0V level) - it is inherently exponential not linear scale http://bytenoise.co.uk/CV-gate. In fact I'm observing some kind of reverse pitch changes related to rising CV V/Oct signals from MIDI-to-CV conversion (I'm using Westlicht Performer for that purpose).

ctag-fh-kiel commented 3 years ago

Pitch CV for both plugins is 1V/Oct linear, it is converted to exponential within the plugins (line 105 RomplerVoice.cpp).

It seems you have a problem with your CV calibration. Check "configuration -> reboot and calibration" and follow the steps described there...

milkowski commented 3 years ago

Thanks for the insight, that may be the case. I'll check that.

milkowski commented 3 years ago

It was indeed calibration issue, but now everything works as expected when CV inputs are set to unipolar mode. When CV inputs are switched to bipolar the pitch becomes random even when the input CV value stays constant at 0V for example. Do the calibration must be done separately for unipolar and bipolar modes?

ctag-fh-kiel commented 3 years ago

Yes, calibration for uni and bipolar differ, all you have to do is thoroughly following the calibration instructions shown at reboot with calibration:

            <li>Single LED pulse</li>
            <ul>
                <li>Turn knobs all left</li>
                <li>Apply 0V to CV ins</li>
                <li>Press trig 0</li>
            </ul>
            <li>Double LED pulse</li>
            <ul>
                <li>Turn knobs mid position</li>
                <li>Apply 2.5V to CV ins</li>
                <li>Press trig 0</li>
            </ul>
            <li>Triple LED pulse</li>
            <ul>
                <li>Turn knobs all right</li>
                <li>Apply 5V to CV ins</li>
                <li>Press trig 0</li>
            </ul>
            <li>Four LED pulses</li>
            <ul>
                <li>Turn knobs all left</li>
                <li>Apply -5V to CV ins</li>
                <li>Press trig 0</li>
            </ul>
            <li>Five LED pulses</li>
            <ul>
                <li>Turn knobs mid position</li>
                <li>Apply 0V to CV ins</li>
                <li>Press trig 0</li>
            </ul>
            <li>Six LED pulses</li>
            <ul>
                <li>Turn knobs all right</li>
                <li>Apply 5V to CV ins</li>
                <li>Press trig 0</li>
            </ul>
milkowski commented 3 years ago

Are all gain knobs and the audio inputs also important and have mentioned voltages and positions applied or we calibrate only POT and CV inputs?

ctag-fh-kiel commented 3 years ago

No, only CV ins + POT gain knobs are all analog...

On Mon, Apr 19, 2021 at 8:00 PM Wojciech Miłkowski @.***> wrote:

Are all gain knobs and the audio inputs also important and have mentioned voltages and positions applied or we calibrate only POT and CV inputs?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ctag-fh-kiel/ctag-tbd/issues/18#issuecomment-822663591, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABZMGRX4TUYKGR4VJIJSHRLTJRVSLANCNFSM43DQDPWQ .

milkowski commented 3 years ago

I have no success with calibrating bipolar CV inputs. I tried official binaries v0.9.15. Unipolar pitch works as expected but bipolar, even after separate calibration is going crazy. If I switch back to unipolar after that even w/o recalibration then the pitch is working again as expected for voltages >=0. I'm not sure if there is something hardware related I have missed. There are some soldier joints for example on the PCB that are related to audio and codec routing, maybe I configured them wrong: currently I joined "3"-s on the left side and "1"-s on the right side of the front PCB side (as I discovered it allows audio path to work properly) and did not join anything else. I see there are also DC-couple related joints and one that seems to be related with different audio codec routing - maybe this is the main problem?

Visuelle-Musik commented 3 years ago

Hi Wojciech Miłkowski, tbh, I am neither familiar with your sequencer / CV-interface nor with the hardware-details of the TBD, but maybe I still have a helpful thought: Normally all CV for pitch should be positive, because it normally represents pitch via V/Oktave logic, as you also mentioned further up already. So I guess that the negative CVs from your sequencer/CV-interface are meant as modulation-output, for instance to [partly] close a filter (lower the cutoff), dicrease LFO speed or whatever. Or as an offset, to lower or increase a pitch that is already set, if the receiving module can handle it that way? But to my current understanding of the TBD (software-wise) CV input is supposed to be positive (or 0) and bipolar values only make sense for audio-input in that context. all the best, Mathias (Brüssel)

milkowski commented 3 years ago

@Visuelle-Musik CV signals usually are unipolar but there is no standard they need to be. Triggers are unipolar, but not CV, otherwise i.e. LFOs need do be unipolar as well. V/Oct in general can be negative and in most implementations it is, because 0V represents C-2 note, not C-0. Also since TBD has max 5V input it cannot represent more than 5 octaves in unipolar case. Here is sample voltage table: http://bytenoise.co.uk/Appendix%3A_pitches Also the pitch input on the web interface is explicitly bipolar, so there is no point in restricting it to unipolar on CV inputs. Anyway, even if the bipolar case is unsupported I think the pitch should be at least deterministic, and currently it behaves like random with every trigger. I'm using https://westlicht.github.io/performer/ as a sequencer, and measured its output voltages, they follow the mentioned C-2 on 0V pattern. I suspect I might soldier few configuration joints other way the current software expects, but I did not find any information how it should be done except some schematic and source code digging. The codec initialization is a messy part included from some chainese public domain (?) code which did not explain anything to me.

Visuelle-Musik commented 3 years ago

@milkowski I am using a simple MIDI-to-CV interface which only can generate voltages from 0 to 5V and so far worked perfectly alright with the TBD. I did comparisons with the Pitch, both by ear compared to MIDI instruments in my DAW and using a Chromatic Tuner, everything worked fine so far. I understand what you say about negative voltages, but sorry I can't test it in my environment.

ctag-fh-kiel commented 3 years ago

@milkowski, this is specific for Rompler, correct? I will check the next coming days...

milkowski commented 3 years ago

@ctag-fh-kiel False alarm! Sorry for that. I repeat the calibration sequence again today to be sure I can reproduce it on other units (currently I have built 6 with 2 more to come) and to my surprise this time everything worked as expected even on the one I tried before. :O I suspect faulty cable, probably -5V, that made bipolar calibration wrong. Both Rompler and WTOsc are working as expected with bipolar CVs now!

I noticed however that even with the bipolar mode the pitch is still within 5V range from -1V to 4V and I cannot try to map 8 octaves within full -5V to 5V range. Is this limitation by design or it can be extended?

The last question I want to be sure those units I'm assembling are properly soldiered and configured. Can you confirm that the soldier joints in red squares are properly placed on the front and back of the PCB? Especially the back PCB joint seems to be related to different codec output configuration and I'm not sure if it should be open (like it is now) or closed. IMG_20210429_200137__01

ctag-fh-kiel commented 3 years ago

Hi Wojciech, congrats on your great soldering skills, that was a lot of work :) There is a mistake with your solder jumpers, you have to short all of them to 2-3 (on your picture on the right you shortened two 1-2). The left side of the picture is correct, all open.

I have checked now both with Rompler and WTOsc:

So my best guess is that your voltage source for calibration and/or play mode doesn't correctly apply -5V. Did you check with a multimeter?

Cheers :)

milkowski commented 3 years ago

@ctag-fh-kiel I checked all voltages with multimeter before the procedure, but not at the current calibration measurement - that is where evil may lurk, especially, since connected cable will obviously have different load impedance and it affects measured voltages in some way. Anyway I guess I still have some weird cable problems. Thanks for all clarifications! I think this issue can now be considered closed. I confirm if I finally successfully calibrate bipolar CVs on my units.

milkowski commented 3 years ago

I finally discovered my stupid mistake I was doing during calibration. I used to change polarity to -5V just by reverse +5V rail and that is not working as expected rendering effective 0V output after connection. Eurorack signals are symmetric related to mass and to have proper -5V you need to use the rail with negative polarity and then everything works as expected.

It seems also that the calibration procedure properly calibrate CV for unipolar and bipolar case at once, and there is no need for recalibration after switching between these modes. There are 6 steps: 3 for unipolar case (0V - +2.5V - +5V) and 3 for bipolar (-5V - 0V - +5V). I'm not sure if I'm correct here, but at least it works for me in this case.