Tempered Pitch Ratios with Groove

Feb 22, 2011 at 6:39pm

Tempered Pitch Ratios with Groove

I would like to use groove as a real time sampler, kind of like the casio keyboards of old, where you can record a note and then get a couple of octaves of pitch appropriate equal tempered tuning from it. Obviously .5 playback speed is an octave down, and 2 times play back speed is an octave up. To make an equal tuning, is it as simple as dividing the distances by 12? from 1 to .5, and then from 1 to 2? I have the feeling I need some kind of equation with a log function or something. Would be great to use the kslider somehow with this as well… Any suggestions?

Thanks!

#55113
Feb 22, 2011 at 9:12pm

there’s probably a better way, but this is what you need:

– Pasted Max Patch, click to expand. –
#198364
Feb 22, 2011 at 9:21pm

not at Max here so I don’t see the patch, but the twelfth root of 2 is approx:

1.0594631

written as 2 ^ (1/12)

if you take A=440 for example, multiply 440 by the above number to get B flat…multiply that by the above number again to get B… etc. It’s just like compound interest.

so you can see that if you multiply any starting number by that number twelve times, you’ll get double the number = 12 steps = one octave.

#198365
Feb 22, 2011 at 11:24pm

Feel free to use the transratio abstraction which is somewhere in the examples folder.

#198366
Feb 23, 2011 at 7:30am

“To make an equal tuning, is it as simple as dividing the distances by 12?”

you dont even need to do that, because your input (midi notes 60, 61,62)
has that already, isnt it?

“from 1 to .5, and then from 1 to 2? I have the feeling I need some kind
of equation with a log function or something”

exactly, and what you need is [mtof] – converting note numbers to frequency
in hertz.

then you add an offset, which is your base note.

i have chosen middle C to be the base note, at which the playspeed is 1. :

[expr exp(0.057762265*($f1-60.))]

that will work with 12-tone temperament as well as with any other scale …
 
 
-110
 
 

#198367
Feb 23, 2011 at 9:36am

Much easier to use pow() inside [expr] because you don’t need to worry about an equation with all those extra decimal places. You can also change it to different ET scales, want 6 notes per octave? Or 15? Just change the value in the [expr].

– Pasted Max Patch, click to expand. –
#198368

You must be logged in to reply to this topic.