Microtonal synth or piano app

Evad Vel's icon

Hi everyone!

I've been trying to build a microtonal piano: The sixteenth-tone piano is pitched from key to key in 1/16 intervals. From the lowest to the highest tones, there is a span of exactly an octave on this piano.

So of course midi doesn't do this unless you do pitch bend.. which isn't great is you want to play more than 1 note.

the way I build this was to use a coll object with stores the frequencies and assign them to a midi value that a kslider outputs... it works and I was able to tweak the adsr to get an OK sound... the problem now is that I can't get around coll receiving only a message at a time and also giving the same output, 1 message. I need to have it be polyphonic but so far I haven't been able to find a way around this... btw I'm pretty new at max and would really appreciate all your help and comments!

Max Patch
Copy patch and select New From Clipboard in Max.

This is my patch so far:

Thanks!

joeman's icon

haven't looked at your patch but [poly] is one way

Max Gardener's icon

Yeah. poly~. Have you looked at "Polyphony Tutorial 1: Using the poly~ Object," by any chance. Might help....

Roman Thilenius's icon

for an equal tempered scale i would not use a transition table at all.

you can create this easily using a formula like this:

[expr ($f1-$f3)*(12./$f2)+$f3]
[mtof]

arguments:
divisions per octave (e.g. 16)
base key (e.g. 60.)

Evad Vel's icon

@Roman: how would you use this formula with a slider object?

Sorry if its too obvious but I just don't have the experience yet to integrate elaborate formulas into my patches.

Thanks!

Roman Thilenius's icon

not sure what you mean, do you have a slider with a range of 0-127 or something? then you would just connect it, so that the numbers get processed.

btw, when iwant to play obscure scales from a midi keyboard, i only use the white keys and put a towel on the black keys, so that i dont get disturbed by the octave paradigm.

i add some files, let me know if it now makes sense for you. the expression is a typical situation for making a subpatch out of it.

if you send note numbers into

[110.nnrescale 12 60]
[mtof]

you will get what you are used to, nothing is changed.

[110.nnrescale 19 60.5]
[mtof]

will convert incoming note numbers into a 19 tone tempered scale, pitchshifted for a halftone.

110.white2nn.zip
zip
110.nnrescale.zip
zip
Roman Thilenius's icon

as usual i did not read the question :) as for the polyphony, poly might be the easiest. otherwise you´d have to split note on and note off events from each other, then you can collect chords into lists (using tresh) and process them as such.