Firstly, am a new user and am enjoying this app, the possibilities...
I'd like to try and understand what's going on in the quantizer. There was a discussion in a previous thread but the example was given inside an old patch which can't be opened.
The patch takes in notes, assigns division of the scale and with a bit of tinkering with a switch it's entered in to the function: p-floor(p)-.5+(1-on) and then through a system of note selection, then through a function: p - offset.
What's going on with these equations p-floor(p) and p - offset. I don't see frequency equations here that I've been reading up on, where would I be able to put in ratios and how can I increase or decrease the number of notes in the scale? Any help appreciated...
Things to understand: 1) What type of input the scale quantizer responds to 2) What the expressions translate to in common parlance 3) How they those expressions transform inexact values into precise pitches 4) Making your own scale.
1) The scale quantizer patch responds to "o" or 1/oct type of input, which is like volt/octave in the CV realm in that it converts the exponential hz value of sounds into a linear value that is easier to do math with and visualize.
2) There are certain preset functions that you can use in the expression node to manipulate the input in various ways. floor(x) will round x down to the nearest integer, so "p-floor(p)" will give you the part after the decimal point (eg 1.2345 -> .2345). The P is the pitch of that note in the keyboard, c# for example, so the expression gives you the difference between the incoming pitch and c#. Let's call that the offset from c#.
The bit of the expression that is ".5-(1-on)" is there to either add .5 or 1.5 depending whether or not that note is part of the scale you are making with the quantizer. If you have that note disabled, then the .5-(1-on) will make sure that note does not play.
The tree of expressions "abs (a) < abs(b)? a:b" basically equates to the sentence: If the absolute value of a is less than the absolute value of b then use a, otherwise use b.
3) The pitch enters the quantizer, the difference/offset between that pitch and all of the notes is calculated. Then the tree of If/then/else expressions is used to to find the smallest offset, the closest note to the incoming pitch, and then the offset is trimmed off. The pitch has been quantized into a note.
4) You will have to change the distribution of the pitches being quantized to make your own scale. So instead of dividing the octave by twelve you would divide by the number of notes you want in your octave, like 15 or 6 or whatever you like. You would also have to edit the logic tree and add/subtract some more knobs.
edit: there is a module that converts "o" into Hz. I put a screen cap there for your convenience.
Thanks Robert, superb! Will have a session on this. Am picking up on the signal 0 standard 1vDC too and it being in the linear domain for manipulation. Thanks for the insight and sharing the knowledge. I'll go, experiment and will be back with a postworthy creation, hopefully, sometime soon.
Been tinkering, came up with a 53 even tempered one for now. Am looking at getting ratios in there, with a bit of help from scala, am still reading up on it all.
I'm not sure if the the "abs tree" in the quantizer is ok but it seems to work. At the end of the abs tree is a pitch correction, as reference hz is usually tuned to A, in this case a microtuned A which puts the C slighty out. I wanted to experiment with this in C where I'm used to visualizing modes etc. A key shift might be useful for keeping in tune with other normally tuned instruments for key changes with this method but I'm too much of a noob for that at the mo. Just observing that the quantizer sometimes goes ballistic when fed a "0 - 1" lfo, it shoots up an octave.