KITHARA(CMIX-1) MISC. REFERENCE MANUAL PAGES KITHARA(CMIX-1) NAME kithara-play a software version of Harry Partch's Kithara DESCRIPTION _k_i_t_h_a_r_a is a standalone Cmix-based program which simulates the Kitharas of Harry Partch. For more information, see Harry Partch, "Genesis of a Music". A kithara is made up of 12 hexads, each of which has 6 strings. These strings are tuned in just intonation, in practice, though you don't need to. It isn't too friendly about direct frequency specifica- tion or octave pitch class notation though - you must specify ratios or multipliers. Unlike most instruments, the kithara does not come pretuned. The operations you can do on a kithara are: basefreqset(freq) Set the base frequency for the instrument, the defini- tion of the ratio 1/1 in the middle register. The default is 220.0 Hz. tune(hexad, ratio1, register1, ratio2, register2, ratio3, ratio3, ratio4, register4, ratio5, register5, ratio6, ratio6) Tune one of the 12 hexads. The first arg is the hexad number, between 1 and 12. Then follow the ratio/register pairs. By convention, the ratios are whole number ratios such as 4/3, 40/27, etc. Also by convention, there are three registers, called .5 (low), 1 (middle), and 2 (high). The fact is that taken together they are simply a frequency multiplier against the base frequency - so what I express as 1/1, 2, you could express as 2, 1. Either would result in a pitch of 440.0 if the base pitch is 220.0. A word about the string order: they are numbered start- ing from the side furthest from you (you need to know what a hardware kithara looks like for that to make sense). In all sequences of numbers related to string order, the left-to- right list is analogous to the farthest to closest strings. You *must* tune your hexads before you play them! There is no default. But you needn't tune any hexad you won't be playing - and unlike the hardware version, you can retune in mid-composition without taking an hour intermis- sion! The next commands deal with actual playing. Actually, the most complicated one, pleck_glide, can do the work of all the others! But primarily to keep the interface easy, and Sun Release 4.1 Last change: 1 KITHARA(CMIX-1) MISC. REFERENCE MANUAL PAGES KITHARA(CMIX-1) secondarily for computational efficiency, we use 4 different calls, which correspond to the 4 major gestures. stroke(hexad, start, duration, squish, direction, amp) This is the simplest of the 4. You are selecting an open hexad and giving it a strum. p0 is the hexad you choose, from 1 to 12. p1 is the start time of the sound, p3 is the duration. p4, squish, is a measure of the hardness of the plucking device. I use 2: 0 to simulate the use of a pick, 4 to simulate the use of callosed fingertips. p5 is the direction of the strum: 0 means strum from the farthest to the closest string, 1 means the other way round. I use a pick struming toward myself (0, 0) and fingertip for an away stroke (4, 1). Each note is not plucked at the same time, theres a bit of delay between each. Direction lets us know which way to go. p5 is amp. This instrument has the guts of Charlie Sullivan's STRUM as it's basis. If you write integer samples, they tend to be at an amp of about 1, so make this number more like 10000. This holds for all the gestures. stroke_glide(hexad, start, duration, squish, direction, amp, startratio, endratio) The first 6 arguments hold the same meaning as in stroke(). But stroke_glide() has a pyrex rod inserted between the strings and the "fingerboard". You can therby create sliding tones, and essentially have a moving fret. Using a startration of 1/1 and an endratio of 1/1 would pro- duce the same sound as a stroke() on the open hexad. But a start ratio of 3/2 and an endratio of 6/5 would cause your 6 strings to start at 3/2 of the tune() of the strings and glide upward over dur to 6/5 of the tune() of the strings. pleck(hexad, start, duration, squish, direction, amp, str1, str2, str3, str4, str5, str6) pleck() lets you specify which strings to pluck, instead of plucking them all. A 1 means pluck it, a 0 means don't pluck it. Therefore, a pleck() with p6-p12 all set to 1 will be identical to a stroke on the hexad. To play only the farthest three strings, you would make p6-p12 be 1, 1, 1, 0, 0, 0. pleck_glide(hexad, start, duration, squish, direction, amp, startratio, endratio, str1, str2, str3, str4, str5, str6) Sun Release 4.1 Last change: 2 KITHARA(CMIX-1) MISC. REFERENCE MANUAL PAGES KITHARA(CMIX-1) pleck_glide() lets you specify which strings you pluck as well as a glide. The startratio is p6, endratio is p7, and the strings on off bits are p8-p14. EXAMPLE output("/tsnd/rlr/kithara", 0) sfclean(0) makegen(1, 7, 1024, 0.001, 1024, 1) /* Partch's Kithara I 1959 tuning */ tune( 1, 8/7, 2, 12/7, 1, 10/7, 1, 9/7, 1, 1/1, 1, 12/7, 1) tune( 2, 11/10, 2, 11/7, 1, 11/8, 1, 11/10, 1, 11/6, 1, 11/8, .5) tune( 3, 8/7, 2, 10/9, 2, 16/9, 2, 16/9, 2, 4/3, 1, 4/3, .5) tune( 4, 8/7, 2, 10/9, 2, 16/9, 2, 16/9, 2, 4/3, 1, 4/3, .5) tune( 5, 9/5, 2, 3/2, 1, 1/1, 1, 9/5, 1, 3/2, .5, 9/7, .5) tune( 6, 7/6, 2, 7/4, 2, 7/4, 2, 7/5, 1, 7/6, 1, 7/6, .5) tune( 7, 7/6, 2, 5/3, 1, 3/2, 1, 5/3, .5, 4/3, .5, 1/1, .5) tune( 8, 8/5, 1, 8/7, 1, 1/1, 1, 8/5, .5, 4/3, .5, 1/1, .5) tune( 9, 33/32, 2, 1/1, 2, 8/5, 1, 6/5, 1, 8/5, .5, 6/5, .5) tune(10, 1/1, 2, 5/3, 1, 10/9, 1, 1/1, 1, 5/3, .5, 10/7, .5) tune(11, 7/6, 2, 9/8, 2, 1/1, 2, 3/2, 1, 1/1, 1, 3/2, .5) tune(12, 6/5, 2, 12/7, 1, 3/2, 1, 6/5, 1, 1/1, 1, 12/7, 1) /* the 2 measures from Delusion reporduced on pg 352 of Genesis */ /* of a Music: the KI part */ /* first play it by struming all 6 strings of a hexad */ /* strum open hexad 5 at time 0 for 2 sec, use hard pick, toward player */ stroke(5, 0, 2, 0, 0, 10000) /* strum hexad 1 at time 2 for 2 sec, use finger, away from player */ /* move rod from 3/2 mark to 16/15 mark */ stroke_glide(1, 2, 2, 4, 1, 14000, 3/2, 16/15) /* strum open hexad 10 at time 4 for 2 sec, use finger, away from player */ stroke(10, 4, 2, 4, 1, 14000) /* strum hexad 6 at time 6 for 2 sec, use hard pick, toward player */ /* move rod from 4/3 mark to 5/4 mark */ stroke_glide(6, 6, 2, 0, 0, 10000, 4/3, 5/4) /* let's try plucking just a few of the strings */ /* strum open hexad 5 at time 0 for 2 sec, use hard pick, toward player */ /* only the top string is plucked */ pleck(5, 8, 2, 0, 0, 10000, 1,0,0,0,0,0) /* strum hexad 5 at time 2 for 2 sec, use finger, away from player */ /* move rod from 3/2 mark to 16/15 mark */ Sun Release 4.1 Last change: 3 KITHARA(CMIX-1) MISC. REFERENCE MANUAL PAGES KITHARA(CMIX-1) /* only the top string and bottom strings are plucked */ pleck_glide(5, 10, 2, 4, 1, 14000, 3/2, 16/15, 1,0,0,0,0,1) /* strum open hexad 5 at time 4 for 2 sec, use finger, away from player */ /* only the middle four strings are plucked */ pleck(5, 12, 2, 4, 1, 14000, 0,1,1,1,1,0) /* strum hexad 5 at time 6 for 2 sec, use hard pick, toward player */ /* move rod from 4/3 mark to 5/4 mark */ /* only the third string is plucked */ pleck_glide(5, 14, 2, 0, 0, 10000, 4/3, 5/4, 0,0,1,0,0,0) endnote(0)