#N canvas 0 57 1366 687 10; #X obj 40 29 wendy; #X obj 36 310 wendy 3 2; #X obj 108 310 wendy 3 2; #X obj 108 280 + 7; #X obj 184 311 wendy 3 2; #X obj 184 281 + 7; #X obj 109 426 *~ 0.3; #X obj 226 607 dac~; #X text 138 210 a ratio of 3:2 gives you a perfect fith. \; any pair of notes separated by 7 midi notes will produce a perfect fith.; #X obj 160 481 *~ 1; #X obj 187 516 +~; #X obj 216 425 t f f; #X obj 216 448 == 0; #X floatatom 36 216 5 0 0 0 - - -, f 5; #X obj 36 247 t f f; #X obj 281 387 tgl 15 0 empty empty compare! 17 7 0 10 -262144 -1 -1 1 1; #X obj 36 367 phasor~; #X obj 36 390 -~ 0.5; #X obj 108 369 phasor~; #X obj 108 392 -~ 0.5; #X obj 184 368 phasor~; #X obj 184 395 -~ 0.5; #X obj 226 583 *~ 0.3; #X obj 222 482 *~ 0; #N canvas 558 196 450 445 perfect_third 0; #X floatatom 48 54 5 0 0 0 - - -, f 5; #X msg 48 28 60; #X obj 48 85 t f f; #X obj 48 205 phasor~; #X obj 120 207 phasor~; #X obj 48 148 wendy 5 4; #X obj 120 148 wendy 5 4; #X obj 120 118 + 4; #X obj 121 264 -~ 1; #X obj 122 357 dac~; #X obj 122 333 *~ 0; #X obj 237 282 tgl 15 0 empty empty hear_it 17 7 0 10 -262144 -1 -1 0 1; #X connect 0 0 2 0; #X connect 1 0 0 0; #X connect 2 0 5 0; #X connect 2 1 7 0; #X connect 3 0 8 0; #X connect 4 0 8 0; #X connect 5 0 3 0; #X connect 6 0 4 0; #X connect 7 0 6 0; #X connect 8 0 10 0; #X connect 10 0 9 0; #X connect 10 0 9 1; #X connect 11 0 10 1; #X restore 458 316 pd perfect_third; #X obj 36 163 loadbang; #X msg 36 190 69; #X obj 226 554 *~ 0; #X obj 270 534 tgl 20 0 empty empty hear_it 17 7 0 10 -262144 -1 -1 0 1; #N canvas 284 105 450 300 69=440Hz 0; #X restore 360 355 pd 69=440Hz; #X text 38 58 [wendy] maps incoming notes onto scales constructed around equaly divided ratios that can be other than 2:1 (the octave) \, allowing for example pure fiths \, at the cost of an imperfect octave \, a cost which I'll gladly pay. As Wendy Carlos said: "That's one of the things you aren't suppose to do \, which is exactly why I did it!"; #X text 839 421 I took midi note 69 = 440Hz as a reference point. 69 will always produce 440Hz \, no matter what scale is used.; #X obj 889 538 wendy 4 3; #X obj 1082 537 wendy 233 125; #X obj 988 538 mtof; #X msg 956 489 69; #X floatatom 889 561 5 0 0 0 - - -, f 5; #X floatatom 988 561 5 0 0 0 - - -, f 5; #X floatatom 1082 560 5 0 0 0 - - -, f 5; #X obj 669 249 wendy 2 1 12; #X text 759 248 =; #X obj 788 248 mtof; #X floatatom 669 272 5 0 0 0 - - -, f 5; #X floatatom 788 271 5 0 0 0 - - -, f 5; #X floatatom 725 206 5 0 0 0 - - -, f 5; #X obj 671 342 wendy 2 1 19; #X obj 897 225 wendy 4 3 8; #X text 896 246 perfect fourth divided into 8 notes (Is this the devil??!!) ; #X text 642 57 Argument 1 and 2 together make up a ratio. They must be specified. A third argument can be provided \, that specifies the number by which the interval will be divided. If the third argument is not specified \, [wendy] will take the closest division from the 12 EDO scale; #N canvas 0 50 450 300 same 0; #X obj 57 50 t f f; #X obj 129 83 + 7; #X obj 204 83 + 7; #X obj 130 229 *~ 0.3; #X obj 57 113 mtof; #X obj 129 113 mtof; #X obj 204 113 mtof; #X obj 57 19 inlet; #X obj 130 252 outlet~; #X obj 57 140 phasor~; #X obj 57 163 -~ 0.5; #X obj 129 142 phasor~; #X obj 129 165 -~ 0.5; #X obj 204 138 phasor~; #X obj 204 165 -~ 0.5; #X connect 0 0 4 0; #X connect 0 1 1 0; #X connect 1 0 2 0; #X connect 1 0 5 0; #X connect 2 0 6 0; #X connect 3 0 8 0; #X connect 4 0 9 0; #X connect 5 0 11 0; #X connect 6 0 13 0; #X connect 7 0 0 0; #X connect 9 0 10 0; #X connect 10 0 3 0; #X connect 11 0 12 0; #X connect 12 0 3 0; #X connect 13 0 14 0; #X connect 14 0 3 0; #X restore 274 449 pd same in 12-EDO; #X text 1053 632 Allister Sinclair \, 2018; #X text 437 472 1:1 (unison) \, 2:1 (octave) \, 3:2 (perfect fifth) \, 4:3 (perfect fourth) \, 5:4 (major third) \, 6:5 (minor third); #X text 437 446 Some of the "purest" ratios:; #X text 434 575 1:1 16:15 9:8 5:4 4:3 45:32 3:2 8:5 5:3 9:5 15:8; #X text 435 609 which gives you a natural scale of 12 notes; #X text 758 342 19 EDO scale! (or 19-TET \, same thing); #X text 435 534 When I need the other intervals \, I like to refer to the Zarlino system (check "natural scales" on wikipedia):; #X connect 1 0 16 0; #X connect 2 0 18 0; #X connect 3 0 2 0; #X connect 3 0 5 0; #X connect 4 0 20 0; #X connect 5 0 4 0; #X connect 6 0 9 0; #X connect 9 0 10 0; #X connect 10 0 27 0; #X connect 11 0 12 0; #X connect 11 1 23 1; #X connect 12 0 9 1; #X connect 13 0 14 0; #X connect 13 0 49 0; #X connect 14 0 1 0; #X connect 14 1 3 0; #X connect 15 0 11 0; #X connect 16 0 17 0; #X connect 17 0 6 0; #X connect 18 0 19 0; #X connect 19 0 6 0; #X connect 20 0 21 0; #X connect 21 0 6 0; #X connect 22 0 7 0; #X connect 22 0 7 1; #X connect 23 0 10 1; #X connect 25 0 26 0; #X connect 26 0 13 0; #X connect 27 0 22 0; #X connect 28 0 27 1; #X connect 32 0 36 0; #X connect 33 0 38 0; #X connect 34 0 37 0; #X connect 35 0 32 0; #X connect 35 0 34 0; #X connect 35 0 33 0; #X connect 39 0 42 0; #X connect 41 0 43 0; #X connect 44 0 39 0; #X connect 44 0 41 0; #X connect 49 0 23 0;