It looks like you're new here. If you want to get involved, click one of these buttons!
Obviously I have some thoughts about these questions myself — I’m glad to discuss them, too. However, by asking for your thoughts I don’t mean to quiz you and see if you get the right answers to “Arf Magna.” I consider this an open work, with your interpretation of it as valid as mine.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Arf Magna</title>
<!-- © 2021 Nick Montfort
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.
-->
<style>
body {
margin: 0;
overflow: hidden
}
#outer {
height: 100vh;
width: 100vw;
background: #000
}
header,
a {
color: #fff
}
p {
margin: 10px;
font-size: 16px;
text-align: right;
font-family: monospace
}
#proposition {
text-align: center;
margin-top: 45vh;
font-size: 7vh;
font-weight: bold;
color: #fff
}
</style>
</head>
<body>
<div id="outer">
<header>
<p><span id="label">ARF MAGNA
after <a href="https://plato.stanford.edu/entries/llull/#FiguQuatPhasTheiFunc" target="_blank">Ramón Llull</a>
by <a href="https://nickm.com" target="_blank">Nick Montfort</a>
in memoriam <a href="https://i.redd.it/oe6xt37xhvd01.jpg" target="_blank">Pepys</a></span>
<span onclick="toggleFull()">⛶</span>
</p>
</header>
<div id="proposition">(click to begin)</div>
</div>
<script>
const a = 'delightful,playful,close,kind,loyal,cute,good,willful,warm,joyful,inquisitive,eager,attentive,cheerful,soft,love'.split(',');
const b = '_,_,_,_,ty,_,_,_,th,_,_,_,_,_,_,'.replace(/_/g, 'ness').split(',');
const freqs = [261.6, 293.7, 329.6, 392, 440, 523.3, 587.3, 659.7];
var ac, oscNodes = [], gainNodes = [];
var bell = 0, i = 0, j = 0, last = j;
function toggleFull() {
if (1 >= outerHeight - innerHeight) {
let leave = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullscreen || document.msExitFullscreen;
leave.call(document);
} else {
let enter = outer.requestFullscreen || outer.webkitRequestFullscreen || outer.mozRequestFullscreen || outer.msRequestFullscreen;
enter.call(outer);
}
}
function checkLabel() {
if (1 >= outerHeight - innerHeight) {
label.style.visibility = "hidden";
} else {
label.style.visibility = "visible";
}
}
function note(freq) {
oscNodes[bell].frequency.value = freq;
for ([volume, time] of [[.2, 1], [0, 8]]) {
gainNodes[bell].gain.linearRampToValueAtTime(volume, ac.currentTime + time);
}
bell = (bell + 1) % 8;
}
function start() {
outer.removeEventListener('click', start);
ac = new (window.AudioContext || window.webkitAudioContext);
for (let n = 0; n < 8; n = n + 1) {
oscNodes[n] = ac.createOscillator();
oscNodes[n].frequency.value = 440;
gainNodes[n] = ac.createGain();
gainNodes[n].gain.value = 0;
oscNodes[n].connect(gainNodes[n]);
gainNodes[n].connect(ac.destination);
oscNodes[n].start(0);
}
document.addEventListener('mousemove', e => {
i = ~~(16 * e.pageX / window.innerWidth);
j = ~~(16 * e.pageY / window.innerHeight);
if (j !== last) {
note(freqs[j % 8]);
}
proposition.innerText = 'dog’s ' + a[i] + b[i] + ' is ' + a[j];
outer.style.background = "#" + (4194304 + ~~(16777216 / i + 1)).toString(16);
previous = j;
});
document.dispatchEvent(new Event('mousemove'));
setInterval(checkLabel, 500);
}
outer.addEventListener('click', start);
</script>
</body>
</html>
Comments
I cannot speak confidently about Llull rings, but I get the sense that they aim to generate claims of universal truths by stringing together aphorisms… so you can make new “truths” based on formulae, like that joke: if the love of money is the root of all evil, and if time equals money, then loving time is the root of all evil.
Arf Magna does something similar, taking things we all know to be unimpeachable truths (e.g., that a/this dog is cute) and recombines them to form new ones: if the dog is cute and the dog is loyal, then surely the dog’s cuteness is loyal ('dog’s ' + a[i] + b[i] + ' is ' + a[j]).
It works on a couple other levels, too… for one, it’s like the bumper sticker “Dog is my co-pilot” insomuch as it takes Llull’s centering of God and God’s “Dignities” (and keeps the lack of an article “the”) to instead recombine Dog’s positive qualities (“const a”): rather than Goodness, Wisdom, Glory, Simplicity, Greatness, Will, Perfection, Nobility, Eternity, Virtue, Justice, Mercy, Power, Truth, Generosity, and Dominion, it is delightful, playful, close, kind, loyal, cute, good, willful, warm, joyful, inquisitive, eager, attentive, cheerful, soft, and love. (I suppose the Ars Magna was sort of an ancient bumper sticker generator.)
I am unclear on how Llull rings articulate (each ring in a disc can rotate separately?), or how mouse movement analogizes to that… or why a “mousemove” would recombine a dog's (positive) qualities, aside from maybe “inquisitive” and “playful.” But certainly, I can agree that dogs are divine.
Some questions:
Do the colors and tones articulate randomly or is there a pattern I am missing?
Why the adjectives/dignities “close” and “soft”?
To confirm, Raymond Llull's wheels are supposed to generate universal truths via combination. They often used letters that were abbreviations for particular virtues (or in some case vices). They, along with many spatial mnemonics, were ways for scholars and preachers (particularly Dominican monks) to generate new arguments and religious theses. If anyone would like to read more about these small-scale medieval technologies, Francis Yates' The Art of Memory is a good starting place.
I also want to point out that "Arf Magna" is a lovely typographic pun. The "long s" is often visually confused with an 'f'.
Silk browser plays it perfectly!
I was surprised how deterministic Arf Magna appeared in repeatedly loadings (using Safari browser) as it always started with the same string of words. I assume Llull's wheels would have been used from a random starting place, but perhaps Llull would have reset them at a specific starting point? And from then on there is a combinatorial element?
I also wondered about the use of the x and y coordinates to set the different words and the relationship of that to Llull? So I echo @Zach_Mann questions above.
I was also wondering about the generated sounds, which seems very anti-Llull in many ways.
@Zach_Mann:
Seems (mostly) tied to the y coordinate of the cursor, the tones in a pentatonic scale. I found myself seeking out melodies in it, which guided which phrases would pop up. But also, in Firefox at least, if you move the cursor quickly out of the main browser window, you get seemingly random chords.
I showed this to a colleague on Friday who said “so, this is sacrilegious?” I’m curious to know if anyone else had the same sort of response.
I launched the live version without even looking at the code. Funnily enough, as soon as I clicked to start it, my dog (who was previously sleeping) starting wondering what the heck was happening! Her ears were swiveling like crazy and she kept tilting her head from side to side.
Personally, I thought it was soothing, but my friend sitting next to me said her ears were hurting and told me to turn it off.