Contemporary multimedia computing relies heavily on the float representation of value. To approximate “gray” values, early computer scientists specified this type, that consists of an exponent and a mantissa. Thus computing the orbits of our planets (which are not Pythagorean) becomes a simple task of float math. However, it takes about 10-60 more time to work with float than with int. With the extra timespace gained by using JUST INTS, I can do more sonic computing; it is optimization for complexity’s sake. A radical would say, “programmers who use floats are just trying to do less work!”
Important to note: Pythagoras thought the planets orbited at integer (1,2,3,4) relationships to each other, but in reality it is much more complicated; they are actually always changing, and at any moment, they are best approximated with gray values, for they are “analog”. This is where the float type shines, for simulating the real world and its hyper-chaotic systems; it is a simulacrum type. There is a relationship between “analog” and “simulacrum” here. We can make ints work as a “simulacrum of an analog”, and chaos is thus always possible through modulation.
But what of Pythagoras’ ideal integer relationships? His musical mono-chord allowed him to describe rational relationships between tones, consisting of a numerator and a denominator. He found that without decimal places, any tone could be described as a number over another number, somewhat akin to the Ancient Egyptian method of fractional arithmetic. This system of integer fractions is now called “Just Intonation”, and it was most famously championed by the radical musical instrument builder, Harry Partch.
The goal of this progam, JUSTINTS, is to forsake the float data type, the traditional 20th century choice (fetish?) for signal processing, to create an alternative system which only uses the primordial integer type, in pairings of numerators and denominators, fused with an oscillator structure optimized for this alternative system. Thus the name JUSTINTS refers to the system of “Just Intonation” which this models, as well as the internal data architecture of “just ints”
one imagines the engineers at the Microsoft studio, whose code is secret and obfuscated, * designing a spreadsheet that uses ints for efficiency, it is so fast, this LOTUS, that fingers of accountants click out their numbers musically.
*although it is historically known that Gates, Jim Manzi, and Daniel Bricklin had talent in Spreadsheets, written in ASSEMBLY, whilst the Macintosh camp always targeted artistes, musicians, and media people, anyone who needed GRAY hues and tones. http://dssresources.com/history/sshistory.html
when i was at Oberlin, I avoided programming anything big, because I thought I had no methodology. After years of analog circuit design, I realize, now, there is no methodology; it’s all pragmatic, methodology is a null pointer.
this program was inspired by the ice cream truck. you see, the primitive sound chips on the primarily middle-eastern owned businesses make a crude approximation of American folk tunes. it is because they are dividing a computer clock to make utonal scales, which often sound like they contain odd Arab intervals such as the “Wosta of Zalzal”.
desc of t’progam
a program for Just Intonation, written with only the primitive C++ type, “int”. actually there is one occurrence of the devil, float, but only used when the program starts up to calculate the “queenal modulations”. this program has 65536 notes, organized in a grid called “the quid” and a web of tunings called “the quadrangularis”.
it is about how to use squish actions to move through a space that has been unsquishable- the idea of discrete units of pythagorean vibration. i have been thinking about floats. the traditional architecture of computer oscillators involves floats, a sort of simulacrum of gray-space (analog), to keep track of phase. how would you make an oscillator without a float phase accumulator? if you are working in Just Intonation, it is simple: the denominator defines the bounds of the oscillator, and the numerator defines the speed of the oscillator as in the following 2 diagrams:
DENOMINATORS TIMES 2: the large triangle waves are twice as “deep” as the small ones, so they have a frequency twice as low- this is utonality, or modulation of the denominator. this is the relation ship of 1/1 to ½, an octave. of course the big waves are twice as loud too, but we can cancel this out, either by using square waves or dividing the triangle by the denominator before outputting it.
NUMERATORS TIMES 2: in this diagram, the bounds of the waveforms are the same, but the faster waves are made that way by having faster rise and fall times, because their numerators are twice magnitude in this case. this is the relationship of 1/1 to 2/1, also an octave
now, our limit for this program is 256, so we have all the ratios that can be made out all the numbers between 1 and 255, such as 7, 13 and not to mention the higher primes.
one main feature of just intonation is that you can hear the “primal depth” of tonal relationships. threes and fives sound quite consonant, but beyond that, we get into finer and finer microtonal variations, and this is what makes up the queenal movement. Queenal movement is not treating the numerator and denominator separately, but going through all our ratios in terms of their actual place on the gradient from low to high in frequency. so you can have all kinds of ratios right next to each other if you move along this gradient.
several important things are done at startup of the program. all the ratios using 1-255 in the numerator and denominator are sorted based on their “technical value” which is in fact a float
this “quadrangularis” is what helps us to zip through ratios in a “queenal way”. also done at startup is calculating the prime multiples that make up each number and thus, that make up each ratio. these primes are gonna be important to limit movement through the quadrangularis based on the largest prime factor. this is to allow highly consonant movement based on threes to alternate with highly microtonal movement of the higher primes.
this feature is controlled by the chinkwonkinator, which is controlled by the radiochinkwonk, the woven antenna on the back of the chub. touch more wire, and the prime limit goes down towards two (modulation by octaves). touch less, the prime limit goes up to infinitesimally small ratio changes.
having already mentioned queenal movement, what is kingal movement? it is directly changing either the numerators or denominators of each ratio, to create notably harmonic or anti-harmonic movements. we should talk hear a little bit about what is harmonic and anti-harmonic. harmonic movement is in the numerator, the top of each ratio, what Harry Partch called otonal. it is inherent in most physical resonant bodies, as waveforms can fit double or triple or so-on inside the tube or the string. anti-harmonic is the newer sound, it is utonal, or dealing with the denominator, the bottom. it is what makes up the minor, or sad sounds. it is inherent in electronic oscillator systems, where it is known as the “sync-modulation-waveform”. it is the mirror opposite of the harmonic series.
kingal movement is so named because the king can go in and harmonicize or anti-harmonicize any ratio, whereas the queen does not deal with such dogma, rather she deals with a more intuitive system of subtle, perceived changes along a gradient and not in the dualist-abstract theory of the king.
these movements are used in two ways- to statically tune each ratio, and in a system of auto-modulation called the “Royal Minister”. in static tuning mode, kingal modulation needs four barres (up the nume, down the nume, up the deno, down the deno), and queenal modulation needs two barres (forth and hence), so queenal modulation can work on two ratios while kingal works on only one. in “royal minister” mode, all the barres can modulate each other, in both kingal and queenal ways, so this is where the sound can get quite complex.
and what of the base pitch? how to set 1/1? this is also an integer value, and it is set with the chinkwonkanater. when the program starts, you can move the base pitch up and down widely, but pressing the chinkwonk keys- XCVBNM,./ - you can fine tune your base pitch to any place, high or low. thus this should be done first if you are playing with a band.
where floats meet synapses:
mantissa and power,
squishing a hotdog,
a sophisticated illusion
1 dollar icecream, squish’d
25 cent sprinks, my friend.
vis a vis Microsoft, and
discrete slots, spreadsheets.
praying mantis planet
integers are for cool places,
like “ice cream trux”
squish to INT relationship
hysteresis/borders is the denominator
current is the numerator
1. download jusints from http://www.shbobo.net first make sure your plug chub is plugged into an available USB port. then click on justints.exe (windows) or the justints application in the folder build>release (mac)
2. when you first open the program you’ll see four sets of grey boxes and a white spirograph. each barre controls one note, whose value is set by the corresponding num and denom boxes. press a barre and see the grey boxes light up. these grey boxes will actually contain the modulations for the barre. the first thing we’re going to do though is set the overall pitch and the individual barre tunings, then we can add some mods.
3. the easiest way to set the base pitch is with the row of keys xcvbnm, you will hear it change as you do (pressing a barre while you do so helps to hear it). x makes the antenna affect pitches widely, and a period symbol ‘.’, conversely will lock the pitch down to a specific note. the keys in between, cvbnm, are a gradient between widest and smallest change. try working back and forth between ‘x’ and ‘.’ while bending pitches with the antenna until you get the exact pitch you want. this is how to tune the 1/1, or fundamental, frequency.
4. the big white spirograph is the chinkwonkator, it is controlled by the antenna on the back of your chub. you’ll notice if you touch more wire the pitch goes down, release and it goes back up. so its like a pitch bend. the chinkwonkator has another function but we’ll cover that in a minute. you can freeze/unfreeze the chinkwonk value by pressing the z key or tighten up its range using the xcvbnm,. keys. the shape of the chinkwonkanator is indicative of the current prime limit, i.e. a triangle is 3, a pentagon is 5, etc.
5. now let’s tune the individual barres. there are two static tuning modes kingal and queenal, we’ll do kingal first. press the button associated with the first barre and you should see a yellow&red square symbol, this tells you you’re in kingal mode. in kingal mode you tune one barre at a time, squishing the numerator and denominator of your just intoned ratio directly until you get the tuning you want. you can finetune this process with the row of keys asdfghjkl (I fiind ‘g’ is a nice value to start with). the amount of red in the boxes indicates how fine you are being (austria/switzerland is ultra-fine). kingal tuning goes like this:
barre 1: num up
barre 2: num down
barre 3: denom up
barre 4: denom down
you’ll see and hear the ratios change as you do this, you can use the colors to help coordinate tuning across barres (for example, same denom and different nums). so go ahead and tune your barres kingally and see how that sounds.
6. the second way to tune is queenal, this works two barres at a time so to enter hold one button and press another - you should see two symbols now. in queenal mode you do not act on the numerators and denominators directly but rather squish through the pitch values of all possible integer ratios <256. these values (65,332 of them!) are held in a doubly linked list sorted at program start called the quadrangularis - in queenal mode you are squishing up and down the quadrangularis. the size of the steps are determined by the prime factors in the ratios (symbolized by the runes) or more specifically by the largest prime factor in a given ratio. that brings us to the second function of the chinkwonkanator which is to set a limit on the largest prime used, thus limiting movement through the quadrangularis. you set this prime limit by taring the antenna. the reason this is important is that it can allow you to move consonantly (i.e. by 3’s or 5’s) or ultra-microtonally. queenal tuning can be really subtle but in this subtlety lies much sonic richness(difference tones, for example).
7. now let’s put on some modulations. first we’ll do some FM mods, royal moutarde style. press the Q key and you’ll a set of darker grey boxes within the grey boxes. these are for the royal moutarde’s modulations. each barre is symbolized by the color of its background stripe - red, white, yellow, or black. clicking in the mod box will set a symbol to indicate which barre will FM the current barre. the square symbol in the corner is reserved for a barre’s own color, this is self-modulation. the ‘L’ shaped symbols indicate modulation by the other barres, starting with the next adjacent barre to the right and then the next after that,etc. use the mod boxes as follow:
- upper right boxes: FM with press
- lower left: FM with release
- top pair: FM’ing the num
- bottom pair: FM’ing the denom
finally you can control the intensity of the modulation with the keys wertyuiop
royal minister mode - the last topic we’re going to cover here is the system of auto-modulation known as the royal minister. to activate, press the 1 key. you should see blue flags. same deal here as with royal moutarde, barres are symbolized by colors and click in the boxes to set the mods. the difference here is that instead of FM, you are now modulating another barre’s tuning either kingally or queenally through the gesture of your squish. it breaks down like this:
upper left boxes: queenal modulation (lines)
lower right: kingal modulation (squares)
top pair: mod the num (kingal) or move up quadrangularis (queenal)
bottom pair: mod the denom or move down quadrangularis
again, the central position is self modulation, then the remaining positions indicate modulation by the other barres starting with the next adjacent one. and don’t forget, you can limit the intensity of your royal minsitration via the asdfghjkl keys!
this feature open up lots of creative possibilities, for example:
a few tips related to virtual chubs:
- modulations are also applied to the active row or all-at-once depending on which mode you are in (controlled by ‘/’). so you can adjust things like modulation depth or switching on the royal minister either globally or locally, as desired.
here is a summary of key strokes that you will want to remember:
z: freeze chinkwonkanator
xcvbnm,. sets chinkwonk range (x is wide, . is tightest)
asdfghjkl sets tuning range (a is wide, l is fine)
wertyuiop sets modulation depth (w is heavy, p is light)
q: turns on/off FM modulation (royal moutarde)
1: turns on/off auto-modulation (royal minister)
; toggle from squarewave to sine wave
. toggle from sine wave to sawtooth wave
[return]: creates a virtual chub
[delete]: deletes a virtual chub
[space]: one-at-a-time mode (advances to next row)
/: all-at-once mode
here is a visual dictionary of symbols used:
barre is in tuning mode
chinkwonkanantor displays prime limit (note shape, triangles for 3, pentagons for 5 etc)
rune (primes in note ratio)
royal moutarde modulation
royal minister mod (queenal)
royal minister mod (kingal)
fine tuning (num)
fine tuning (denom)