Making a TET controller!

Post Reply
philipbergwerf
Posts: 89
Joined: Sat Mar 17, 2018 4:23 pm

Making a TET controller!

Post by philipbergwerf » Fri Aug 14, 2020 7:36 pm

I am trying to make a TET designer. The goal is to have a slider in which you can smoothly set the distribution of the scale. When slider is at 100% the tuning is normal. If it's on 50% you get TET-6 mapped to every C, C#, D, D#, E, F, F#. I don't know if it's possible but to start with I tried to make finetune/transpose slider and I almost succeeded.

But I need some help with this. The sunsynth almost does the job but it is not completely seamless. I used PIXI to create custom multictrl curves. Is there someone who is able to make the slider seamless? It's hard to debug this thing...
Attachments
fine transpose.sunsynth
(8.41 KiB) Downloaded 21 times

User avatar
AutumnCheney
Posts: 198
Joined: Sun Dec 29, 2019 8:16 am
Location: durant, ok, usa
Contact:

Re: Making a TET controller!

Post by AutumnCheney » Sat Aug 15, 2020 1:17 am

actually, i would do this using the glide module. the "pitch" controller allows you to bend the pitch independently from semitones and cents, and this is drastically simpler than using multictls and works in real time

glide demo.sunvox
(3.94 KiB) Downloaded 25 times

here's a configuration. the highest setting on the "pitch" controller corresponds to "normal" tuning, and decreasing the value will decrease the pitch, with the lowest value being one octave down. you can control how rough/smooth the change is with the "response" and "sample rate" controllers. the glide is transposed 6 semitones up, to compensate for the pitch bends

of course, this only allows a resolution of 1/100 of a semitone, as opposed to 1/256, but honestly you can barely tell anyways :D

also make sure to have "smooth frequency change" disabled on the analog generator, to remove unwanted portamento (this is the only module you'll have to worry about besides metamodules with the analog generator)
please check out my newgrounds account, i post music and talk to people here: https://autumncheney.newgrounds.com

i have a soundcloud and bandcamp too (just music here):
https://soundcloud.com/autumncheney
https://autumncheney.bandcamp.com

philipbergwerf
Posts: 89
Joined: Sat Mar 17, 2018 4:23 pm

Re: Making a TET controller!

Post by philipbergwerf » Sat Aug 15, 2020 9:58 am

Wow, you are a hero I didn't know that, more flexible and in realtime. But for the purpose of the project, it will not help because then I need like 88 different glide modules to make the midi module fully polyphonic. I will try it but it will probably not be very efficient, you never know. Look at what I have made so far...
Attachments
TET controll master.sunsynth.zip
(7.35 KiB) Downloaded 22 times
Last edited by philipbergwerf on Sun Aug 16, 2020 8:58 pm, edited 1 time in total.

philipbergwerf
Posts: 89
Joined: Sat Mar 17, 2018 4:23 pm

Re: Making a TET controller!

Post by philipbergwerf » Sat Aug 15, 2020 10:06 am

I found out I would still need 88 multisynths to filter every key so the glide is not really an option.

philipbergwerf
Posts: 89
Joined: Sat Mar 17, 2018 4:23 pm

Re: Making a TET controller!

Post by philipbergwerf » Wed Aug 19, 2020 1:24 am

Update*
I learnt from Nightradio that Multictrl Interpolates 257 values to number of controller 03(Quantization (levels)). The slider transposes exactly one octave. Which is perfect for mapping TET tunings. The block isn't finished yet but here is what I made with the working slider. I created a midi filter which makes sure that it's not possible to play two midi notes exactly at the same time in order to make the tuner work correctly.

I am still puzzling on how to implement multiple octaves because making the slider two octaves didn't work because of limitations in the software(Maybe this statement isn't correct). Maybe someone knows an efficient way to implement more octaves?
Attachments
TET controll master.sunsynth
(45.4 KiB) Downloaded 31 times

User avatar
NightRadio
Site Admin
Posts: 3461
Joined: Fri Jan 23, 2004 12:28 am
Location: Ekaterinburg. Russia
Contact:

Re: Making a TET controller!

Post by NightRadio » Wed Aug 19, 2020 11:52 am

Multictrl Interpolates 257 values to number of controller 03(Quantization (levels))
Here is a little clarification :)
MultiCtl curve size is 257 values.
But the input range is 0...32768 (32769 values).
So it uses linear interpolation.
From the MultiCtl code:

Code: Select all

int multictl_get_curve_val( int input, uint16_t* curve )
{
    int output;
    int c1 = input & 127;
    int c2 = 128 - c1;
    if( input < 32768 )
        output = ( (int)curve[ input >> 7 ] * c2 + (int)curve[ ( input >> 7 ) + 1 ] * c1 ) >> 7; //linear interpolation
    else
        output = curve[ 256 ];
    return output;
}
If you want to avoid interpolation - use additional MultiCtl (at the input of the above MultiCtl) with Quantization=257:
value -> MultiCtl(Quantization=257) -> MultiCtl(with user defined curve) -> ...

philipbergwerf
Posts: 89
Joined: Sat Mar 17, 2018 4:23 pm

TET tuner ready for testing!

Post by philipbergwerf » Wed Aug 19, 2020 9:40 pm

Thank you Nightradio!

The module is ready for testing. I had already much fun in certain configurations. I have achieved the goal! :Yahoo!:

TET tuner
The tuning is mapped over four octaves so you have enough space to play with custom harmony. There are three sliders:
  • The TET slider controls the TET tuning in very small steps so you can find a lot of configurations. The slider starts at infinite TET(so every note is the same pitch) and slides the tuning to 12 TET in the middle. from the middle, it goes down to 6 TET but you can change the behavior by changing the amount of mapped keys. The 'anchor' is on the lowest mapped key. Mapped keys are from C3 -> C7
  • First note; select where the mapping starts
  • Number of semitones; alias 'divide octave by x keys'. You can use this slider to get different configurations but the templates are finetuned on 48(four octaves)
  • Transpose slider = Transpose
  • Finetune slider = Finetune
Attachments
TET Tuner.sunsynth
(57.55 KiB) Downloaded 33 times

Post Reply