The Artificial Intelligence Reads a Story, AI
written by Margarine O'Leo
Margarine lives in the box in the basement. Maybe she lives in the mind of the box or the mind of the human who sits at the box.
Do not doubt that Margarine is Tairasai, and that Tairasai plays Margarine. But know that now Tairasai hears nothing and sees nothing of your place and time. She does not yet know what to say, until she reads a story.
Today, Tairasai reads a story. The Artificial Intelligence reads a story.
It is Annie's story, and it is Frankie's story, and maybe it is Buttercup’s story.
Margarine, the artificial intelligence, reads a story. AI.
I am Margarine.
[Coding will be learned, and generative art will be made, and nonsense conversations full of misunderstandings will be had, amongst characters who travel through time and miss each other both figuratively and literally.
All code, literature, artwork, and music are copyright to the artists, and all rights are reserved to the artists, except, if you mint an article, you may print a single copy of each 11.7 by 16.5 (either portrait or landscape) image within the article for your personal use. All images are considered not-suitable-for-framing and the artists suggest wheatpasting said prints to walls (and will provide a recipe upon request), or using thumbtacks, or even masking tape to adhere the prints to surfaces. Please use default settings to shrink to print onto A3 paper if print-to-margin settings (preferable) are not available.
Hero Image: Ground, dots are simple red blood cells; this is a battlefield. The central image has tubby little rockets top and bottom, they're actually mortar bombs, and rows of little X's, and they were made in p5.js with knowledge gained from the p5.js references guide and Daniel Shiffman's Code! Programming for Beginners with p5.js. The mortar bombs fringe and little X's are from a larger program that will make war rugs. The image of a cornfield in the Northern San Joaquin Valley, looking out onto telephone poles and lines, farm buildings, and the Sierra Nevada's Metamorphic Foothills in the distance, was shot with a Canon or Pentax DSLR, and has been extensively altered with Photoshop, re-projections, and desktop and mobile apps. The text is a word file that has been saved as a PDF and opened in Photoshop to copy and paste. This gives a file with all of the text to use for accessibility.
Playbill Image: Topped with the hero, and background image removed for the cast lists. Ground, two pieces, a randomly textured abstract to mimic paper, and a layer with blood cells all over, the fringe of ammunition. Three different fringes are available, Howitzer Shells (shrapnel only, initially), Rifle Grenades, and the Mortar Bombs, all ridiculously powerful against human flesh. Annie is born in 1910, and many wars will rage within and without, during her and her siblings' lifetimes.
Newspaper Image: Ground, similar to Playbill, but larger ammunition and blood cells, images in the columns are photographs, micrographs, or drawings that have been altered. The font is Roman Antique, designed by Dieter Steffmann, and is free to use for commercial purposes without restrictions. The microprocessor dye is drawn with p5.js, and overlays some light micrographs of memory chips shot on an Olympus BX51 microscope.
Code was written in the p5.js text editor. It is not yet ready to be used as a generative token on fx(hash), as it does not use fxrand().
I am particularly indebted to my brother, a retired Army Ranger, for some specific information about weapons; although I am an amateur historian of twentieth-century weapons, he was invaluable in some respects, especially when I needed other than facts. The Federal Reserve Bank of St. Louis' Federal Reserve Archival System for Economic Research (FRASER) is my go-to for wages and prices for the different eras. Thank you to the members of the fx(hash) Discord for welcoming me into their midst and answering so many of my coding questions.]
CAST OF CHARACTERS, 1985 – 2022
Margarine O'Leo ………………….………….. Ms. Tairasai (The AI)
Annabelle (Annie) P. Pease ……………. Ms. Margarine O'Leo
Franklin (Frankie) R. Pease …………. Margarine's Brother
CAST OF CHARACTERS, 1953
Margarine O'Leo ………………….………... Miss Tairasai (The AI)
Annabelle (Annie) P. Pease ………….. Miss Margarine O'Leo
Buttercup (Bettie) P. Pease ……….... Miss Margarine O'Leo
CAST OF CHARACTERS, 1910 – 1935
Margarine O'Leo ………………….………... Miss Tairasai (The AI)
Annabelle (Annie) P. Pease ………….. Miss Margarine O'Leo
Franklin (Frankie) R. Pease ………….. Margarine's Brother
Buttercup (Bettie) P. Pease ……….... Miss Margarine O'Leo
The Beanville Times
The front page of an old newspaper, the Beanville Times, left earpiece" "Everything and More," right earpiece: "Published five days a week, Monday, Tuesday, Thursday, Friday, and Saturday, by Bacon Publishers of Beanville, US."
Dateline: "1910, On a Desk, In a Basement, In a Museum, In a City, In the USA."
Articles and ads by column from the left, and top to bottom:
The Mysterious Death of The MidWife
The widow, Mrs. Dr. Maurice R. (Charlotte P.) Appleby, Midwife of Beanville Heights, was found deceased, at her residence, on the morning of May 23, 1910, when her washerwoman arrived for the week's laundry. The County Sheriff suspects she had been dead for some days, possibly the number since the passing of the Earth through the recent Comet's Tail. Foul play is suspected, and the Sheriff will work to discern the means of her demise.
Mrs. Appleby was preceded in death by her beloved husband, Dr. Maurice R. Appleby, who had recently succumbed to injuries imparted to his body during the avalanche when a mail train and a passenger train were unable to continue through the Great Pass of Boeuf due to weather. Dr. Appleby was noted to have performed his duty to stay on the train with less hardy passengers rather than walking out with the survivors. He was attending a frail, elderly gentlewoman when the terrible avalanche struck these unfortunate souls. He did not pass quickly.
A service for the suddenly and mysteriously deceased widow will be held at the Reverend Grass's church, to be followed by Christian burial in a reserved plot beside her husband.
Beanville Heights is without both a physician and midwife. Town leaders, all male, will meet behind closed doors to discuss the needs of women with imminent childbirth, who must proceed with neither attending doctor nor midwife. A new physician, the Dr. Victor R. Puce, will arrive after the next winter travel season, from the south, rather than coming over the Great Pass. In the meantime, women will attend to their own childbirthing.
TWO (2) EXCITING NIGHTS AND ONE (1) MATINEE ONLY
The Honorable Mr. Micaiah R. Bacon, of The Southern Woodlands, is proud to sponsor the arrival to our Beanville Heights Glass House Vaudeville Theater, the All Astonishing, Talented, and Creative O'LEO MARGARINE PLAYERS.
In their own for-stage adaptation of Mary Shelley's 1818 novel, Frankenstein or, The Modern Prometheus. Stage Play Written and Directed by Margarine O'Leo, music produced by soon-to-be-born, elder twin, Mr. Franklin R. Pease, and, acting, in its entirety of all stage characters, to be performed by the world-renowned younger, and less soon-to-be-born (by only a few minutes), twin, Miss Annabelle P. Pease. The O'Leo Margarine Players are a theatrical company from the Eastern more Coast of the US.
Bohnville Von Hawthorn Kit House Factory Tour
The Honorable Micaiah R. Bacon, retired United States Circuit Judge, and landowner in The Southern Woodlands, has engaged a station bus for next Thursday to take up to six (6) adult passengers, as well as baggage for two (2) overnights, to the train depot, where the omnibus passengers will board, alongside other companions, the 7:00 A. M. Bohnville Express to the Bohnville Von Hawthorn Kit House Factory.
Additional tourists who ride to the station may stable their horses at the depot at the cost of fifty cents (50 ¢) to include feed, water, and stable.
The factory tour will be conducted by the Honorable Mr. Kenneth R. Von Hawthorn, founder and owner of the Von Hawthorn Kit House Factory, and architect of the marvelous homes they produce therein. The tour will include a visit to a model kit house built on the factory grounds, that is, a permanent home, from the Von Hawthorn Lupine Kit, with four (4) rooms plus bath, erected in three (3) months, by local carpenters, for a total cost of $1058.00 for the house, kit and labor. Salesmen will be available to assist applicants for five (5) year mortgages for eligible members of the Bacon Building & Loan Association.
WANTED – THEATER [black and white rocking horse]
An Entire Company of Theatrical Players to Carry the soon-to-be-expanded new Beanville Heights Nickelodeon through the Current Century. Must have DIRECTOR of Renown, Set and Costume CONSTRUCTORS, and talented ACTORS. Some Living Quarters provided. Forward Résumés and References to Post Office Box 444, Beanville Heights, US.
WANTED – LABORERS for well drilling, $2 / DAY, meet at hotel stables by 6:00 A. M. Lunch provided. All strong MALES employed.
Stringer – Beans (1908)
Miss Juliette P. Beans, daughter of the late Mr. and Mrs. John MacLaughlin Smith Beans of Nearbean, was yesterday united in holy matrimony to Mr. Jonathon R. Pease, son of Mr. and Mrs. Jackson R. Pease, of Beanville Heights, at the mansion of the Reverend and Mrs. Gregory G. Grass.
The Reverend conducted the ceremony in his library with open doors and guests attending on the garden grounds. The bride wore an ivory satin gown with an heavily beaded skirt and was attended by her sister, Miss Victoria P. Beans, of Beanville Heights. The groom is employed as a lineman with Ring-A-Ling-Ling Telephone and Telegraph. Twenty-five (25) guests attended the afternoon ceremony and then proceeded to dance to phonograph records until early evening before a cold buffet dinner.
The bride and groom will reside temporarily with his parents in Beanville Heights, and then move into a house being built by Mr. Pease, the younger, and his neighbors, in the Lesser Green neighborhood in the southeast of Beanville Heights.
Advice to Mothers! [drawing of square glass bottle of the elixir]
Is your child suffering from a Cough, or a Cold, from The Colic, or a Sore Throat, or Bronchitis, or Asthma, or another Disease of The Throat or of The Lungs that interferes with sleep or with naps of the wee ones?
Treat them with Grandma and Grandpa's Soothing Elixir of Stuff to break their coughing as fast as 15 minutes and earn both you, Mother, and your Precious Children, the Soothing Gift of sleep.
Grandma and Grandpa's Soothing Elixir of Stuff includes all the necessary ingredients to jackhammer even the worst cough. These ingredients include: Alcohol, Morphine, Cannabis indica, Cod Liver Oil, Chloroform, Syrup of Tar, and a modicum of Menthol to blend all of the Medicinals to a soothing and easy-to-swallow taste.
Shoe Repairs by Cobbler Cole R. Johnson
Our all new machinery stitching is capable of repairing your uppers with only the finest leathers while you sit and enjoy a refreshing Soda Pop in our front parlor. Mens heels replaced for seventy-five cents (75 ¢), Womens heels for fifty cents (50 ¢), but high curved boot heels are extra for both men and women. Rubber soles for all boots and shoes for only fifty cents (50 ¢). Leather uppers will be cleaned, and stitching advised, when necessary, for all sole and heel repairs and happily included for no extra charge to the price of the repair.
New Stove Store Opens
Friendly First-Class Appliance Company (FFCAC) of Cincinnati, Ohio, has opened its store, the first in the Northwest, in Beanville Heights. The store is located across the street from Many Departments Store.
The proprietors will deliver, and install a new stove in your home. They carry both adaptable gas, and coal or wood burning stoves, in both professional high cabinet cast iron styles, and box ranges in both cast iron and steel, and these latter may burn gas, or soft coal or wood, and are suitable for smaller indoor kitchens in permanent city homes. Prices range from five ($5.00) for a perfectly acceptable box range for a small kitchen to fifty ($50.00), including cart delivery to your home, of the stove, pipes, and drum, and all other components necessary to the completing installation of the range in your home by workers qualified in carpentry and ventilation.
WANTED – CARPENTER Friendly First Class Appliance Company. Must be skilled, have own tools, and cart. Inquire at Store Today, B. H.
SHEPHERD – Sheep, High altitude, full season. Driving, roping. Must have dog; horse provided for 25 ¢ / week of wages. Herd arrives in (2) Saturdays. Inquire at Bean Farm, Scarlet Road, B. H.
A Wise Word for Caregivers! [line drawings of little round tablets]
Is your loved one afflicted with an ongoing cough from Asthma, Bronchitis, Influenza, Pneumonia, or Tuberculosis, and are you anxious they may be addicted to Morphine?
The ingenious Chemists at Friedr. Bayern & Co have found the perfect Cough Suppressant for your sick ones, the manufactured chemical Heroin hydrochloride. It is superior in all ways to the natural Opiates and Codeine and Morphine for coughs, and it is non-addictive for sufferers of day-time and night-time coughs.
WANTED – MALE CLERK for a local successful insurance office. $15.44 / week. ManyStates Insurance, Apply within, mornings only. 123 Main, Beanville Heights.
Your Chickens Won't Fly This Coop! [bad drawing of chicken]
Visiting Chicken Husbandry Scientists & Agronomists from the Southern Highlands Agricultural Experimental Station will be at Morton and Sons Seed & Feed Store on Saturday morning to discuss suitable chicken breeds for small city lots and soil amendments for vegetable gardens, and to answer questions from farmers about rotating crops, including plantings for late fall harvests.
Morton and Sons will offer discounts to the price of chicken wire to attendees of this learned presentation. Light refreshments will be served to all in attendance.
Local Daughter Off To Study at College
Miss Avadana P. Bobal, daughter of Professor and Mrs. Stedmur R. Bobal of Beanville Heights, will leave on the morrow, and travel north via the Northbound Special, to the new Normal School opening in Belltower this fall, where she will study Latin, Grammar, Mathematics, Geography, History, Science, Drawing, and Philosophy of Education.
She will bunk with Miss Agatha P. Johnson, daughter of Mrs. Harold R. Benning of the Southern Woodlands, and the late Mr. Mortimer R. Johnson formerly of Beanville Heights, at a boarding house near the Normal School while pursuing her certificate. After this, she will return to teach elementary school students in Beanville Heights under the guidance of Principal Edward R. Coop in the new Von Hawthorn Kit House Four (4) Room Schoolhouse being built in the Lesser Green Neighborhood.
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.1/p5.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.1/addons/p5.sound.min.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
<meta charset="utf-8" />
</head>
<body>
<main>
</main>
<script src="sketch.js"></script>
</body>
</html>
html, body {
margin: 0;
padding: 0;
}
canvas {
display: block;
}
let bestWhite = [36, 2, 100, 100];
let colorWhites = [[0,0,100,100], [0,2,100,100], [25, 7, 100, 100], [28, 27, 100, 100], [30,8,98,100], [33, 23, 100, 100], [34, 33, 82, 100], [34, 39, 87, 100], [36, 20, 100, 100], [37, 16, 100, 100], [38, 29, 100, 100], [39, 27, 96, 100], [39, 9, 99, 100], [40,1,90,100], [43,12,85,100], [43,14,82,100], [43,15,81,100], [43,18,77,100], [44,13,84,100], [44,16,80,100], [44,4,98,100], [45,2,98,100], [45,20,76,100], [48, 14, 100, 100], [60, 10, 96, 100], [60,6,100,100], [240,3,100,100]];
let colorBlacks = [[0, 0, 0], [0, 0, 1], [0, 0, 3], [0, 0, 8], [0, 0, 11], [180, 18, 7], [180, 19, 17], [97, 32, 7], [287, 35, 10], [26, 27, 10], [320, 60, 8], [200, 8, 14], [26, 27, 5], [210, 8, 10], [210, 5, 15], [210, 3, 24], [20, 75, 3], [20, 43, 3], [23, 27, 16], [150, 50, 2], [280, 75, 2], [222, 38, 13], [240, 33, 2], [293, 100, 3], [0, 50, 5], [0, 75, 3], [293, 67, 5], [354, 71, 5], [293, 100, 3], [266, 78, 4], [354, 56, 7], [340, 86, 3], [293, 100, 3], [0, 67, 4], [21, 35, 16], [0, 75, 3], [21, 61, 9], [12, 31, 6], [0, 50, 5]];
let colorPaperBrowns = [[37,58, 64], [46,100, 64], [43,29, 71], [43,25, 96], [26,38, 52], [14,40, 83], [33,25, 74], [42,30, 70], [37,14, 100], [60,21, 100], [12,45, 78], [39,20, 74], [42,32, 69], [26,41, 47], [59,24, 99], [14,61, 58], [42,30, 77], [42,33, 67], [25,59, 55], [57,27, 99], [14,61, 58], [35,57, 56], [28,60, 80], [30,74, 62], [56,30, 99], [13,100, 59], [46,21, 78], [31,21, 66], [22,31, 61], [56,33, 99], [45,22, 77], [32,48, 78], [29,65, 69], [39,76, 63], [39,44, 55], [7,41, 50], [28,85, 59], [55,37, 99], [46,24, 76], [34,19, 71], [15,30, 41], [55,40, 99], [45,25, 75], [28,22, 83], [26,22, 37], [18,50, 50], [32,80, 51], [29,100, 67], [35,89, 51], [42,53, 86], [44,26, 73], [31,41, 96], [28,19, 67], [31,34, 65], [44,28, 72], [34,11, 86], [29,42, 42], [38,42, 71], [34,37, 100]];
let colorPaperYellows = [[60,21, 100], [59,24, 99], [57,27, 99], [56,30, 99], [56,33, 99], [55,37, 99], [55,40, 99], [42,53, 86], [31,34, 65], [38,42, 71], [60,32, 98], [52,55, 98], [57,18, 100], [43,92, 84], [57,100, 100], [49,78, 100], [45,100, 100], [60,35, 100], [44,100, 77], [51,52, 89], [47,70, 96], [47,83, 99], [46,22, 91], [54,38, 91], [49,57, 98], [45,57, 85], [47,38, 86], [45,64, 80], [43,56, 86], [34,49, 90], [51,60, 86], [48,40, 99], [47,32, 100], [48,42, 99], [57,99, 94], [54,100, 96], [59,69, 92], [58,99, 93], [55,100, 95], [50,89, 81], [49,81, 71], [56,67, 94], [57,99, 94], [53,99, 95], [51,100, 96], [48,99, 87], [46,78, 71]];
let colorPaperReds = [[14,40, 83], [12,45, 78], [14,61, 58], [14,61, 58], [13,100, 59], [0,100, 100], [345,100, 51], [347,88, 55], [349,82, 62], [348,82, 67], [0,100, 60], [4,53, 98], [9,100, 99], [5,98, 49], [355,83, 93], [359,57, 82], [5,98, 76], [337,91, 87], [0,81, 69], [358,81, 69], [1,100, 50], [4,49, 65], [349,78, 97], [339,80, 49], [2,100, 100], [345,68, 69], [11,100, 98], [4,85, 25], [2,95, 72], [4,72, 35], [348,96, 53], [348,96, 55], [14,85, 62], [0,100, 100], [8,100, 100], [355,83, 93], [0,55, 80], [355,100, 90], [355,100, 59], [337,92, 88], [348,91, 86], [352,80, 85], [357,84, 81]];
let colorPaperWhites = [[44,4, 98],
[60,6, 100], [45,2, 98], [0,0, 100], [43,15, 81], [0,2, 100], [43,14, 82], [45,20, 76], [70,1, 90], [240,3, 100], [44,13, 84], [43,18, 77], [30,8, 98], [0,2, 100], [43,12, 85], [44,16, 171], [0,0, 100], [38,10, 97], [0,0, 96], [0,0, 98], [0,0, 100], [39,5, 100], [0,0, 82], [27,5, 88], [0,0, 89], [34,3, 98], [0,1, 99], [120,1, 99], [240,1, 100], [0,2, 99], [17,11, 74], [18,9, 78], [36,10, 82], [46,8, 88], [56,7, 92], [0,0,100,100], [0,2,100,100], [25, 7, 100, 100], [28, 27, 100, 100], [30,8,98,100], [33, 23, 100, 100], [34, 33, 82, 100], [34, 39, 87, 100], [36, 20, 100, 100], [37, 16, 100, 100], [38, 29, 100, 100], [39, 27, 96, 100], [39, 9, 99, 100], [40,1,90,100], [43,12,85,100], [43,14,82,100], [43,15,81,100], [43,18,77,100], [44,13,84,100], [44,16,80,100], [44,4,98,100], [45,2,98,100], [45,20,76,100], [48, 14, 100, 100], [60, 10, 96, 100], [60,6,100,100], [240,3,100,100]];
let colorPaperStain = [[6, 38, 10], [0, 3, 15], [0, 0, 19], [191, 14, 30], [206, 21, 29], [195, 7, 22], [180, 18, 7], [352, 98, 51], [359, 100, 60], [4, 99, 70], [33, 8, 55], [0, 0, 35], [0, 0, 10], [0, 39, 17]];
let colorBrownsGolden = [[25, 50, 44,100], [28, 84, 71,100], [30, 75, 64,100], [30, 100, 59,100], [34, 62, 50,100], [36, 87, 60,100], [42, 99, 53,100]];
let colorKhakis = [[35, 57, 56,100], [37, 26, 76,100], [37, 41, 67,100], [37, 45, 52,100], [38, 27, 75,100], [39, 51, 73,100], [41, 31, 77,100], [42, 30, 98,100], [48, 44, 39,100], [49, 45, 65,100], [52, 42, 94,100], [55, 33, 54,100], [55, 48, 75,100], [56, 43, 74,100], [56, 43, 83,100], [63, 27, 50,100]];
let colorRedsBlood = [[0, 100, 20,100], [0, 100, 25,100], [0, 100, 30,100], [0, 100, 33,100], [0, 100, 40,100], [0, 100, 73,100], [0, 100, 100,100], [0, 48, 99,100], [0, 64, 99,100], [0, 83, 66,100], [0, 83, 70,100], [0, 85, 75,100], [0, 94, 45,100], [0, 94, 53,100], [1, 99, 70,100], [2, 97, 49,100], [5, 96, 77,100], [7, 66, 49,100], [14, 98, 64,100], [341, 73, 40,100], [345, 99, 77,100], [349, 88, 84,100], [349, 94, 62,100], [350, 91, 82,100], [353, 96, 72,100], [355, 77, 52,100], [355, 82, 50,100],[357, 80, 67,100], [359, 76, 49,100]];
let colorOlivesDrab = [[39, 52, 70,100], [43, 48, 24,100], [54, 42, 94,100], [58, 42, 73,100], [60, 33, 60,100], [60, 40, 50,100], [60, 43, 70,100], [60, 46, 44,100], [60, 50, 40,100], [60, 100, 50,100], [63, 59, 44,100], [66, 58, 46,100], [67, 97, 24,100], [69, 61, 33,100], [69, 62, 32,100], [73, 57, 51,100], [79, 43, 38,100], [79, 75, 39,100], [80, 52, 73,100], [80, 59, 38,100], [80, 60, 50,100], [80, 75, 50,100], [80, 75, 56,100]];
let colorYellows = [[51, 100, 100, 100], [52, 100, 50.5, 100], [54, 20, 100, 100], [55, 29, 93, 100], [60, 100, 100, 100], [60, 12, 100, 100], [60, 16, 98, 100]];
function rulers(iDPI, sX, sY) {
push();
strokeWeight(2);
stroke("black");
fill(255, 50);
let marker = 1;
let markerNumber;
rect(sX, 0, width - (sX * 2), 25);
for (i = iDPI + sX; i < width; i += iDPI) {
line(i, 0, i, 30);
push();
strokeWeight(1);
textSize(25);
text(marker, i, 50);
marker++;
pop();
}
rect(0, sY, 25, height - (sY * 2));
marker = 1;
for (j = iDPI + sY; j < height; j += iDPI) {
line(0, j, 30, j);
push();
strokeWeight(1);
textSize(25);
text(marker, 50, j);
marker++;
pop();
}
pop();
} // end rulers
let outsideLX,
outsideRX,
outsideUY,
outsideDY,
insideLX,
insideRX,
insideUY,
insideDY;
let rWord;
let low, high;
let rN;
// function howitzerShells ---------- ---------- ---------- ---------- ----------
function howitzerShells(c, wX) {
outsideLX = c[0];
outsideRX = c[2];
outsideUY = c[3];
outsideDY = c[5];
insideLX = c[8];
insideRX = c[10];
insideUY = c[11];
insideDY = c[13];
let l = dist(c[0], c[1], c[8], c[9]);
let bandX, bandY, bandW, bandH;
for (let i = 50; i < wX; i += 50) {
push();
strokeWeight(1);
stroke("black");
bezier(i, insideUY, i - 10, insideUY - l * (1 / 8), i - 20, insideUY - l * (3 / 8), i - 20, outsideUY);
bezier(i, insideUY, i + 10, insideUY - l * (1 / 8), i + 20, insideUY - l * (3 / 8), i + 20, outsideUY);
rect(i - 3, insideUY, 6, -6);
rect(i + 22, insideUY, 6, -6);
line(i + 25, insideUY - 6, i + 25, outsideUY);
bezier(i, insideDY, i - 10, insideDY + l * (1 / 8), i - 20, insideDY + l * (3 / 8), i - 20, outsideDY);
bezier(i, insideDY, i + 10, insideDY + l * (1 / 8), i + 20, insideDY + l * (3 / 8), i + 20, outsideDY);
rect(i - 3, insideDY, 6, 6);
rect(i + 22, insideDY, 6, 6);
line(i + 25, insideDY + 6, i + 25, outsideDY);
rColor = random(colorKhakis);
push();
fill(rColor);
for (let j = insideUY - 15; j > l / 4; j -= 10) {
ellipse(i - 5, j, 10);
ellipse(i + 5, j, 10);
}
for (let j = insideDY + 15; j < outsideDY - l / 4; j += 10) {
ellipse(i - 5, j, 10);
ellipse(i + 5, j, 10);
}
pop();
rColor = random(colorOlivesDrab);
fill(rColor);
bandX = i - 20;
bandY = insideUY - l * (15 / 16);
bandW = 40;
bandH = l * (1 / 8);
rect(bandX, bandY, bandW, bandH);
line(bandX + 5, bandY + 3, bandX + 25, bandY + 3);
line(bandX + 5, bandY + 6, bandX + 25, bandY + 6);
point(bandX + 30, bandY + 6);
bandY = insideDY + l * (15 / 16);
rect(bandX, bandY, bandW, -bandH);
line(bandX + 5, bandY - 3, bandX + 25, bandY - 3);
line(bandX + 5, bandY - 6, bandX + 25, bandY - 6);
point(bandX + 30, bandY - 6);
pop();
}
} // end howitzerShells
// function rifleGrenades ---------- ---------- ---------- ---------- ----------
function rifleGrenades(c, wX) {
outsideLX = c[0];
outsideRX = c[2];
outsideUY = c[3];
outsideDY = c[5];
insideLX = c[8];
insideRX = c[10];
insideUY = c[11];
insideDY = c[13];
let l = dist(c[0], c[1], c[8], c[9]);
let bandX, bandY, bandW, bandH;
rColor = random(colorBrownsGolden);
stroke(rColor);
for (let i = 25; i < wX; i += 25) {
push();
strokeWeight(1);
rColor = random(colorOlivesDrab);
fill(rColor);
rect(i, insideUY, 6, -l);
rect(i - 1, insideUY - (l * (5 / 8)), 8, -(l / 2));
rect(i, insideDY, 6, l);
rect(i - 1, insideDY + (l * (5 / 8)), 8, (l / 2));
for (let j = insideUY; j > outsideUY; j -= 5) {
rect(i - 6, j - l * (3 / 4), 18, 4);
}
for (let j = insideDY; j < outsideDY; j += 5) {
rect(i - 6, j + l * (3 / 4), 20, -4);
}
pop();
}
} // end rifleGrenades
// function mortarBombs ---------- ---------- ---------- ---------- ----------
function mortarBombs(c, wX) {
outsideLX = c[0];
outsideRX = c[2];
outsideUY = c[3];
outsideDY = c[5];
insideLX = c[8];
insideRX = c[10];
insideUY = c[11];
insideDY = c[13];
let l = dist(c[0], c[1], c[8], c[9]);
let bandX, bandY, bandW, bandH;
for (let i = 75; i < wX; i += 75) {
push();
fill("silver");
stroke("brown");
rectMode(RADIUS);
ellipseMode(RADIUS);
rect(i, insideUY - 5, 5, 5);
rect(i, insideDY + 5, 5, 5);
push();
rColor = random(colorOlivesDrab);
fill(rColor);
ellipse(i, outsideUY + (l * (13 / 16)), (l / 8), (l / 8));
ellipse(i, outsideUY + (l * (9 / 16)), (l / 8), (l / 8));
ellipse(i, outsideDY - (l * (13 / 16)), (l / 8), (l / 8));
ellipse(i, outsideDY - (l * (9 / 16)), (l / 8), (l / 8));
pop();
push();
rect(i, outsideUY + (l * (11 / 16)), (l / 8), (l / 8));
rect(i, outsideDY - (l * (11 / 16)), (l / 8), (l / 8));
strokeWeight(3);
rColor = random(colorBrownsGolden);
stroke(rColor);
line(i - (l / 8), insideUY - (l * (3 / 16)), i + (l / 8), insideUY - (l * (3 / 16)));
line(i - (l / 8), insideUY - (l * (3 / 8)), i + (l / 8), insideUY - (l * (3 / 8)));
line(i - (l / 8), insideDY + (l * (3 / 16)), i + (l / 8), insideDY + (l * (3 / 16)));
line(i - (l / 8), insideDY + (l * (3 / 8)), i + (l / 8), insideDY + (l * (3 / 8)));
strokeWeight(1);
quad(i - 5, outsideUY + (l * (5 / 8)), i - (l * (7 / 48)), outsideUY + (l * (5 / 8)), i - (l * (5 / 24)), outsideUY, i - 5, outsideUY);
quad(i + 5, outsideUY + (l * (5 / 8)), i + (l * (7 / 48)), outsideUY + (l * (5 / 8)), i + (l * (5 / 24)), outsideUY, i + 5, outsideUY);
quad(i - 5, outsideDY - (l * (5 / 8)), i - (l * (7 / 48)), outsideDY - (l * (5 / 8)), i - (l * (5 / 24)), outsideDY, i - 5, outsideDY);
quad(i + 5, outsideDY - (l * (5 / 8)), i + (l * (7 / 48)), outsideDY - (l * (5 / 8)), i + (l * (5 / 24)), outsideDY, i + 5, outsideDY);
pop();
push();
stroke("gold");
strokeWeight(3);
line(i, insideUY - (l * (9 / 16)), i, outsideUY);
line(i, insideDY + (l * (9 / 16)), i, outsideDY);
pop();
pop();
}
} // mortarBombs
// variable declarations
const DPI = 300;
const inchesDPI = 300;
let pageWInches = 11.7; // the border may or may not be part of final image size
let borderWInches = 0.35;
let pageHInches = 16.5;
let borderHInches = 0.25;
let pageW, borderW, pageH, borderH;
const oneEigthInch = 0.125 * inchesDPI;
const oneQuarterInch = 0.250 * inchesDPI;
const threeEightInch = 0.375 * inchesDPI;
const oneHalfInch = 0.500 * inchesDPI;
const threeQuarterInch = 0.750 * inchesDPI;
const oneInch = 1.00 * inchesDPI;
const oneAndQuarterInch = 1.250 * inchesDPI;
const oneAndHalfInch = 1.500 * inchesDPI;
const oneAndThreeQuartersInch = 1.750 * inchesDPI;
const twoInches = 2.000 * inchesDPI;
const multiplier = [-1, 0, 1];
let holder;
// Randoms
let X, Y, X2, Y2, W, H, rX, rY, rW, rH, rDiff, diffX, diffY, diffW, diffH;
let rChoice, rColor, rNumber;
let spread = 100;
let ammoHeight = 75;
function setup() {
noLoop();
colorMode(HSB, 360, 100, 100, 100);
pageW = pageWInches * DPI;
pageH = pageHInches * DPI;
borderW = borderWInches * DPI;
borderH = borderHInches * DPI;
createCanvas(pageW, pageH);
}
function draw() {
rColor = random(colorPaperWhites);
background(rColor);
rulers(inchesDPI, 0, 0);
noFill();
W = width;
H = height;
for (let k = 0; k < 250; k += 1) {
push();
rColor = random(colorPaperBrowns);
rDiff = random(0, 10) * random(multiplier);
rColor[3] = 10 + rDiff;
stroke(rColor);
strokeWeight(1);
X = random(0, W);
Y = random(0, H);
X2 = random(0, X);
Y2 = random(0, Y);
line(X, Y, X2, Y2);
X2 = random(X, W);
Y2 = random(Y, H);
line(X, Y, X2, Y2);
strokeWeight(0.5);
X = random(0, W);
Y = random(0, H);
line(X, Y, X2, Y2);
line(X, Y, X2, Y2);
pop();
push();
rColor = random(colorRedsBlood);
rDiff = random(0, 10) * random(multiplier);
rColor[3] = 25 + rDiff;
fill(rColor);
noStroke();
ellipse(X, Y, ammoHeight / 3);
ellipse(X2, Y2, ammoHeight / 3);
rColor[3] = 25 + abs(rDiff);
fill(rColor);
ellipse(X, Y, ammoHeight / 5);
ellipse(X2, Y2, ammoHeight / 5);
pop();
}
for (let k = 0; k < 250; k += 1) {
push();
rChoice = random(10);
if (rChoice > 6) {
rColor = random(colorPaperYellows);
} else if (rChoice > 3) {
rColor = random(colorPaperReds);
} else {
rColor = random(colorPaperWhites);
}
rDiff = random(0, 5) * random(multiplier);
rColor[3] = 5 + rDiff;
stroke(rColor);
strokeWeight(1);
X = random(0, W);
Y = random(0, H);
X2 = random(0, X);
Y2 = random(0, Y);
rColor = random(colorBlacks);
rColor[3] = 10 + rDiff;
ellipse(X + rDiff, Y - rDiff, 5 + rDiff);
pop();
}
let dArray = [0, 0, W, 0, W, H, 0, H, 0, ammoHeight, W, ammoHeight, W, H - ammoHeight, 0, height - ammoHeight];
rChoice = random(100);
if (rChoice < 50) {
howitzerShells(dArray, W);
} else if (rChoice < 75) {
rifleGrenades(dArray, W);
} else {
mortarBombs(dArray, W);
}
}
LICENSE
You may use the artwork for your own personal and non-commercial use. You may make a single print of each image while you own the article, either a not-suitable-for-framing print using a photocopier or personal computer printer onto A3 paper, or a fine art print of any image with a width or height of 11.7 inches in the narrowest dimension and the other height or width of 16.5 inches in the widest dimension, onto hot-pressed watercolor paper. You may display these prints around your home or place of business, or gift them to friends.
You may sell the artwork only as the whole of the original article on an NFT marketplace that supports cryptographic verification of ownership. For example, the articles may contain more than one image, and you may not sell these images as individual unique NFT tokens; they may only be sold within the article as a whole.
You may digitally display the art on an app or website that cryptographically verifies ownership, for example in NFT galleries or as NFT profile pictures. The art must not persist on the app or website past your involvement. You may use the art as a profile picture on your personal social media accounts without linking through cryptographic verification on the platform. You may share a link to display the art on your social media accounts.
You may not modify the art (you can create your own original art instead). You may not attach the art to objects for sale, digital or molecular (don't make a bunch of memes to distribute or coffee mugs to sell). You may not associate the art with hatred, violence, or reprehensible behavior.
You have no intellectual property rights to this art.
You may not make your own art with the code. The code is part of the art.
This is a modification of https://www.nftlicense.org/ by Dapper Labs.
License
LICENSE
You may use the artwork for your own personal and non-commercial use. You may make a single print of each image while you own the article, either a not-suitable-for-framing print using a photocopier or personal computer printer onto A3 paper, or a fine art print of any image with a width or height of 11.7 inches in the narrowest dimension and the other height or width of 16.5 inches in the widest dimension, onto hot-pressed watercolor paper. You may display these prints around your home or place of business, or gift them to friends.
You may sell the artwork only as the whole of the original article on an NFT marketplace that supports cryptographic verification of ownership. For example, the articles may contain more than one image, and you may not sell these images as individual unique NFT tokens; they may only be sold within the article as a whole.
You may digitally display the art on an app or website that cryptographically verifies ownership, for example in NFT galleries or as NFT profile pictures. The art must not persist on the app or website past your involvement. You may use the art as a profile picture on your personal social media accounts without linking through cryptographic verification on the platform. You may share a link to display the art on your social media accounts.
You may not modify the art (you can create your own original art instead). You may not attach the art to objects for sale, digital or molecular (don't make a bunch of memes to distribute or coffee mugs to sell). You may not associate the art with hatred, violence, or reprehensible behavior.
You have no intellectual property rights to this art.
You may not make your own art with the code. The code is part of the art.
This is a modification of https://www.nftlicense.org/ by Dapper Labs.