<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div dir="ltr">I haven’t carefully looked through all of what you guys have written yet, but now I think I get it! If you have set a pentatonic scale, for example, you would divide the incoming voltage equally in 5 within a 1 v range (for 1v/oct) regardless of the specified intervals. Then the outputting voltages conform to whatever scale you have selected. </div><div dir="ltr"><br></div><div dir="ltr">That makes great sense and don’t know why I didn’t think of it. </div><div dir="ltr"><br></div><div dir="ltr"><br></div><div dir="ltr"><br></div><div dir="ltr"><br></div><div dir="ltr"><br><blockquote type="cite">On Sep 20, 2021, at 4:43 PM, The SynthiMuse via Synth-diy <synth-diy@synth-diy.org> wrote:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><div dir="auto">It all looks really good Jean-Pierre, but it's too late in my day to get my head around it. :-)<div dir="auto"><br><div dir="auto">One key difference in my method is that I quantized my incoming control voltage to a midi number then did all my scale work and tables with just midi note numbers.</div><div dir="auto"><br></div><div dir="auto">If I have anything that I can add, I certainly will. </div><div dir="auto">I think you 'trump' me on scales: your unit has 25, the synthimuse only had 10 plus a user assigned one.</div><div dir="auto"><br></div><div dir="auto">Gerry</div><div dir="auto"><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 20 Sep 2021, 21:52 Jean-Pierre Desrochers, <<a href="mailto:jpdesroc@oricom.ca">jpdesroc@oricom.ca</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="FR-CA" link="blue" vlink="purple"><div class="m_5762898151481881281WordSection1"><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">The way I ‘vote’ the good quantized output vs the incoming ADC value is the following way:<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Each scales have a number of possible steps so I constructed a lookup table<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">of 25 elements (scales) with each a number of steps (thresholds). <u></u><u></u></span></p><p class="MsoNormal"><b><i><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#17375e">unsigned char const ADC_step_divisions[25] = {12,6,5,5,7, 7,3,3,3,3, 6,8,7,5,5, 7,7,7,7,7, 7,7,7,7,7};<u></u><u></u></span></i></b></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">So if I’m in the 2<sup>nd</sup>  scale I know I’ll have 6 steps to compared with the incoming ADC value<br>Here is part of my code:<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">for(x = 0; x < ADC_step_divisions[ScaleCounter]; x++) // ADC_step_divisions[] = 3,5,6,7,8 or 12<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">  {<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">   y = scale_ADC_threshold_values[ScaleCounter][x] + octave;            <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">   z = scale_ADC_threshold_values[ScaleCounter][x+1] + octave;<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">    <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">   if( (ADCValue >= (scale_ADC_threshold_values[ScaleCounter][x]) + octave ) &&<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">      (ADCValue < (scale_ADC_threshold_values[ScaleCounter][x+1] + octave) ) )<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">    .<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">    .<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">    . <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">This way I quickly know where the ADC input is located in the scale cells<br>then I can output the right quantized output.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">The selected output then is used to calculate the right MIDI note to send.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">JP<br><br><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">De :</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> The SynthiMuse [mailto:<a href="mailto:synthimuse@gmail.com" target="_blank" rel="noreferrer">synthimuse@gmail.com</a>] <br><b>Envoyé :</b> 20 septembre 2021 16:30<br><b>À :</b> Didier Leplae<br><b>Cc :</b> Jean-Pierre Desroc</span><span lang="FR" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">hers; synth-diy mailing list<br><b>Objet :</b> Re: [sdiy] Introducing my new M116 Multi-Scale Quantizer !<u></u><u></u></span></p><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">In the example of a pentatonic scale, the octave range would be divided in to 5 steps.<u></u><u></u></p><div><p class="MsoNormal">If the input value was exactly at the midway point, it would take the middle note of the scale.<u></u><u></u></p></div><div><p class="MsoNormal">If the input was half way between 2 notes, it would first look down one step to see if there was an allowable note. If no note was there,  it would look up one step. If no note was found it would look down two steps, if no note was found, it would look up two steps and so on. It would keep widening it's search up and down until it found a valid note to output.<u></u><u></u></p></div><div><p class="MsoNormal">In the synthimuse, I added a randomisation to the first step so it didn't always go the same way. Sometimes it would start looking down, other times it would start looking up.<u></u><u></u></p></div><div><p class="MsoNormal">The only thing I didn't like about this approach is that it can take an indeterminate number of steps to get a note. <u></u><u></u></p></div><div><p class="MsoNormal">For a 12 tone chromatic scale : 1 step<u></u><u></u></p></div><div><p class="MsoNormal">For a worst case 1 tone scale, it could take up to 11 steps.<u></u><u></u></p></div><div><p class="MsoNormal">The routine above was some of the cleverest in the design but I can't take credit for it. A colleague gave me the algorithm when I described the problem to him. :-)<u></u><u></u></p></div><div><p class="MsoNormal">Gerry<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div></div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">On Mon, 20 Sep 2021, 20:44 Didier Leplae, <<a href="mailto:didierleplae@yahoo.com" target="_blank" rel="noreferrer">didierleplae@yahoo.com</a>> wrote:<u></u><u></u></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><div><div><p class="MsoNormal">I’m not sure how successive approximation works. <u></u><u></u></p></div><div><p class="MsoNormal">But if you are hunting for the nearest note and some are further apart than others, won’t the result still be that some notes take longer to reach than others?<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><br><br><u></u><u></u></p><p class="MsoNormal" style="margin-bottom:12.0pt">On Sep 20, 2021, at 2:19 PM, The SynthiMuse <<a href="mailto:synthimuse@gmail.com" target="_blank" rel="noreferrer">synthimuse@gmail.com</a>> wrote:<u></u><u></u></p></div><blockquote style="margin-top:5.0pt;margin-bottom:5.0pt"><div><p class="MsoNormal"><span style="font-family:"Tahoma","sans-serif""></span><u></u><u></u></p><div><div><p class="MsoNormal">Hi Didier<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><p class="MsoNormal">I'm not sure how Jean-Pierre dealt with this issue but in the Synthimuse, I gave each note in the scale equal weight and 'hunted', by successive approximation to find the note that equated closest to the input value. <u></u><u></u></p><div><p class="MsoNormal">The SM had ( who knows, it may have again if I can get my finger out :-)  ) an analog input so it's similar to the situation that Jean-Pierre is dealing with.<u></u><u></u></p></div><div><p class="MsoNormal">Gerry<u></u><u></u></p></div></div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">On Mon, 20 Sep 2021, 19:45 Didier Leplae via Synth-diy, <<a href="mailto:synth-diy@synth-diy.org" target="_blank" rel="noreferrer">synth-diy@synth-diy.org</a>> wrote:<u></u><u></u></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><p class="MsoNormal">That’s really beautiful! I have a question for you.<br><br>I was working on a eurorack quantizer a while back but never finished. On mine, if I were doing like you are in the demo, feeding a slow triangle LFO into the quantizer, and having it set to a scale with some uneven intervals (for example any diatonic scale) then the time that each note holds is also uneven (proportional to the size of the interval. <br>I’m guessing you have programmed yours to compensate for this. Can you explain a bit about how that works? Also, how does this play out if you input a sequence with uneven durations for example?<br><br>> On Sep 20, 2021, at 8:54 AM, Jean-Pierre Desrochers <<a href="mailto:jpdesroc@oricom.ca" target="_blank" rel="noreferrer">jpdesroc@oricom.ca</a>> wrote:<br>> <br>> <span style="font-family:"Tahoma","sans-serif""></span>Thank you Roman !<br>> <br>> JP<br>> <br>> ******************************************************<br>> <br>> -----Message d'origine-----<br>> De : Roman Sowa [mailto:<a href="mailto:modular@go2.pl" target="_blank" rel="noreferrer">modular@go2.pl</a>] <br>> Envoyé : 20 septembre 2021 05:46<br>> À : Jean-Pierre Desrochers; <a href="mailto:synth-diy@synth-diy.org" target="_blank" rel="noreferrer">synth-diy@synth-diy.org</a><br>> Objet : Re: [sdiy] Introducing my new M116 Multi-Scale Quantizer !<br>> <br>> Always a pleasure to watch.<br>> Thanks for posting it.<br>> <br>> Roman<br>> <br>> W dniu 2021-09-17 o 20:55, Jean-Pierre Desrochers pisze:<br>>> Hi all !<br>>> <br>>> After around  4 months of work..<br>>> <br>>> Introducing my new *M116 Multi-Scale Quantizer* !<br>>> <br>>> It contains 25 selectable scales listed here:<br>>> <br>>> */Semi-Tones/*<br>>> <br>>> */Whole-Tones/*<br>>> <br>>> */Pentatonic major/*<br>>> <br>>> */Pentatonic minor/*<br>>> <br>>> */Heptatonic major/*<br>>> <br>>> */Heptatonic minor/*<br>>> <br>>> */Triad major/*<br>>> <br>>> */Triad augm./*<br>>> <br>>> */Triad minor/*<br>>> <br>>> */Triad dimin./*<br>>> <br>>> */Augmented/*<br>>> <br>>> */Diminished/*<br>>> <br>>> */Athar Kurd/*<br>>> <br>>> */Kumoi/*<br>>> <br>>> */Hon-Kumoi-Joshi/*<br>>> <br>>> */Egyptian/*<br>>> <br>>> */Nikriz/*<br>>> <br>>> */Persian/*<br>>> <br>>> */Hebrew/*<br>>> <br>>> */Dorian Mode/*<br>>> <br>>> */Phrygian Mode/*<br>>> <br>>> */Lydian Mode/*<br>>> <br>>> */Mixoydian Mode/*<br>>> <br>>> */Locrian Mode/*<br>>> <br>>> */Gypsy/*<br>>> <br>>> It also offers:<br>>> <br>>> 0 to +8.00vdc CV IN / OUT span<br>>> <br>>> Lag control on quantized output<br>>> <br>>> 12 transpose keys from G to F#<br>>> <br>>> Gate IN / OUT connectors<br>>> <br>>> MIDI output (16 channels)<br>>> <br>>> You can watch a Youtube demo HERE <br>>> <<a href="https://www.youtube.com/watch?v=UxPzGvb0HrQ" target="_blank" rel="noreferrer">https://www.youtube.com/watch?v=UxPzGvb0HrQ</a>>.<br>>> <br>>> <br>>> The fact that all generated quantized notes are ‘IN TUNE’<br>>> makes this module very ‘musical’..<br>>> <br>>> I’m very happy !!!<br>>> <br>>> Thanks for watching.<br>>> <br>>> JP<br>>> <br>>> <br>>> _______________________________________________<br>>> Synth-diy mailing list<br>>> <a href="mailto:Synth-diy@synth-diy.org" target="_blank" rel="noreferrer">Synth-diy@synth-diy.org</a><br>>> <a href="http://synth-diy.org/mailman/listinfo/synth-diy" target="_blank" rel="noreferrer">http://synth-diy.org/mailman/listinfo/synth-diy</a><br>>> Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" target="_blank" rel="noreferrer">marketplace@synth-diy.org</a><br>>> <br>> <br>> <br>> _______________________________________________<br>> Synth-diy mailing list<br>> <a href="mailto:Synth-diy@synth-diy.org" target="_blank" rel="noreferrer">Synth-diy@synth-diy.org</a><br>> <a href="http://synth-diy.org/mailman/listinfo/synth-diy" target="_blank" rel="noreferrer">http://synth-diy.org/mailman/listinfo/synth-diy</a><br>> Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" target="_blank" rel="noreferrer">marketplace@synth-diy.org</a><br><br><br>_______________________________________________<br>Synth-diy mailing list<br><a href="mailto:Synth-diy@synth-diy.org" target="_blank" rel="noreferrer">Synth-diy@synth-diy.org</a><br><a href="http://synth-diy.org/mailman/listinfo/synth-diy" target="_blank" rel="noreferrer">http://synth-diy.org/mailman/listinfo/synth-diy</a><br>Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" target="_blank" rel="noreferrer">marketplace@synth-diy.org</a><u></u><u></u></p></blockquote></div></div></blockquote></div></blockquote></div></div></div></blockquote></div>
<span>_______________________________________________</span><br><span>Synth-diy mailing list</span><br><span>Synth-diy@synth-diy.org</span><br><span>http://synth-diy.org/mailman/listinfo/synth-diy</span><br><span>Selling or trading? Use marketplace@synth-diy.org</span><br></div></blockquote></body></html>