All Projects → ef1j → Art1

ef1j / Art1

Licence: MIT license
Art1 by Richard Williams, 1968

Programming Languages

fortran
972 projects
python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to Art1

Tart
Tart - draw ASCII art in the terminal with your mouse!
Stars: ✭ 296 (+1133.33%)
Mutual labels:  art, ascii-art
durdraw
Animated Unicode, ANSI and ASCII Art Editor for Linux/Unix/macOS
Stars: ✭ 55 (+129.17%)
Mutual labels:  art, ascii-art
Art
🎨 ASCII art library for Python
Stars: ✭ 1,026 (+4175%)
Mutual labels:  art, ascii-art
hasciicam
(h)ascii for the masses! html refreshed ascii video cam
Stars: ✭ 63 (+162.5%)
Mutual labels:  art, ascii-art
Moebius
Modern ANSI & ASCII Art Editor
Stars: ✭ 138 (+475%)
Mutual labels:  art, ascii-art
Androidmethodhook
android art hook like Sophix
Stars: ✭ 235 (+879.17%)
Mutual labels:  art
ascii-map
How to create an ASCII map
Stars: ✭ 18 (-25%)
Mutual labels:  ascii-art
React Native Art Doc
📒 Unofficial documentation for react-native ART module.
Stars: ✭ 229 (+854.17%)
Mutual labels:  art
Ascii py
Make some ascii arts
Stars: ✭ 211 (+779.17%)
Mutual labels:  art
ascii.js
A web-font-based rendering engine for displaying DOS/Amiga ASCII artwork on the web as text
Stars: ✭ 25 (+4.17%)
Mutual labels:  ascii-art
Picture-To-Ascii
Converts a picture to Ascii.
Stars: ✭ 18 (-25%)
Mutual labels:  ascii-art
asciiZOOM
This alternative to Zoom offers a secure, end-to-end encrypted way to video chat from the safety of your terminal.
Stars: ✭ 28 (+16.67%)
Mutual labels:  ascii-art
Circle Evolution
Evolutionary Art Using Circles in Python
Stars: ✭ 237 (+887.5%)
Mutual labels:  art
gapdecoder
Google Arts And Culture Downloader. Python script to download high-resolution images from google arts & culture.
Stars: ✭ 78 (+225%)
Mutual labels:  art
Graphite
Open source 2D node-based raster/vector graphics editor (Photoshop + Illustrator + Houdini = Graphite)
Stars: ✭ 223 (+829.17%)
Mutual labels:  art
tallboy
Declarative API for drawing unicode/ascii character tables in crystal lang
Stars: ✭ 49 (+104.17%)
Mutual labels:  ascii-art
Nonflowers
Procedurally generated paintings of nonexistent flowers.
Stars: ✭ 208 (+766.67%)
Mutual labels:  art
P5.js
p5.js is a client-side JS platform that empowers artists, designers, students, and anyone to learn to code and express themselves creatively on the web. It is based on the core principles of Processing. http://twitter.com/p5xjs —
Stars: ✭ 16,542 (+68825%)
Mutual labels:  art
alfred-figlet
🔠 Alfred 3 workflow to asciify plain text using figlet.js
Stars: ✭ 16 (-33.33%)
Mutual labels:  ascii-art
Shan Shui Inf
Procedurally generated Chinese landscape painting.
Stars: ✭ 3,168 (+13100%)
Mutual labels:  art

Art1

Art1 is a program that was written by Richard Williams in 1968. Its purpose was to give non-progammers access to an IBM System/360 Model 40 computer at the University of New Mexico in order to explore artistic and aesthetic uses of the machine. Williams, an engineer at Sandia Laboratories and later a faculty member of Electrical Engineering at UNM, collaborated with artists Charles Mattox, Frederick Hammersley, Kathernine Nash, and others in the UNM art department. This early period of computer art is described in Patrick Frank's recent book, "Sharing Code: Art1, Frederick Hammersley and the Dawn of Computer Art." [1] Art1 was disseminated to other institutions, especially through the efforts of Kathernine Nash, including to her home institution, the University of Minnesota, and the Computer Arts Society in the UK. Williams' description of Art1 appears in Jasia Reichardt's 1971 book, "The Computer in Art." [2]

Williams wrote Art1 in Fortran IV. The program provided six elementary "drawing" routines for lines, open and closed rectangles, ellipses, triangles, and exponential curves, set in a composition space of two 50 by 105 character arrays (AR1 and AR2). A seventh routine mirrors the top left quadrant of a composition to the other three quadrants. A running Art1 program received input from the user as a set of punch cards. The program's output, which included runtime information and the drawing, was printed on an IBM 1403 line printer. Because Art1 works are composed of printed characters, they are an early example of "ASCII art", albeit within a more abstract composition space.

Hammersley in particular systematically explored the Art1 program. His extensive archives [3] document a meticulous study during the period spanning late 1968 through early 1971. Hammersley's use of overprint and especially simple overlapping shapes produced many sublime pieces. In David Pagel's review of a 2013 restrospective, he writes, "Hammersley's drawings show an inventive mind having a blast as it turns simple grids of letters, numerals and punctuation marks into eccentric compositions that are a pleasure to look at -- as fresh with insight and surprising delight as the moment they were made." [4]

Using an available listing of the original Fortran code, the Art1 program can be compiled with a modern Fortran compiler. Instead of reading a stack of punch cards, the program reads a simple text file redirected to the standard input; art1 < fort.25 in a Unix environment, for instance. The structure of the input is described in Williams' instructions, which can be found in the docs directory. Sample "card stacks" for generating a few of Hammersley's works are located under cards. Each line in the *.25 file represents one IBM 80-column punch card. The output of Art1 is sent to the standard output with Fortran carriage control characters, +, 0, and 1, to denote carriage return, line feed, and form feed. The BSD Unix command asa can be used to convert this to use more common ASCII control characters.

Art1 makes use of overstriking, the ability to print characters on top of each other by issuing a carriage return without a line feed. Text output in a terminal will separate lines that would be overprinted in a printer, or only render the second line. Since most of us don't have an IBM 1403 line printer handy, the Python script ibm1403fort.py will process the text from Art1 and generate images. The script uses high resolution scans of glyphs from an Olivetti Te-318 teleprinter. (In the future, I hope to use scans of the the 1403's character set for a more faithful reproduction.) Four separate sets of the characters in the directory provide some variation that is typical of mechanical printing. The final images are 600dpi and would normally have been printed on 14-7/8" by 11" white tractor feed paper.

COMMANDS / WORKFLOW

Required tools:

  • A Fortran compiler. GNU Fortran works fine.
  • A line printer, teleprinter, daisy wheel printer, or...
  • Python 3.6 or higher and the Pillow image library, or...
  • Use enscript and ghostscript to generate postscript and PDF files.

Process:

  1. Compile art1.f.
  2. Create a fort.25 input file. See Williams' instructions and examples.
  3. Run the executable with the input file: art1 < fort.25
  4. Send to your hardcopy printer (convert Fortran carriage control characters with a command like asa).
  5. Or, generate images of the output: python3 ibm1408fort.py output.txt or create postscript output with enscript. [5]
  6. Rock computer art like it's 1969.

Some issues:

The legacy art1.f program does not initialize the AR1 and AR2 arrays. This can lead to unprintable characters and misprints when the initializing card commands skip columns (on a modern computer, at least.) A modified version of the Art1 program art21.f includes code to initialize each array to space characters. It involves some FORTRAN variable type gymnastics.

The "exponential" code contains several bugs in the archival listing: the lines between statement 708 up to 712 are never executed. Changing S.0320 in the original listing from IF(AKSIG) 704, 724, 706 to IF(AKSIG) 704, 724, 710 seems to fix the issue. [6] This correction is included in art1.f and art21.f in the main directory.

ACKNOWLEDGMENTS

Thanks to Patrick Frank for providing a copy of Richard Williams' mimeographed instructions and to Paul Rickards for pointing out the proper use of STDIN. I gratefully acknowledge Richard Williams' family for their permission to make his code and instructions available and the Archive of American Art for their scans of Frederick Hammersley papers, including those of his original punch cards, Art1 output, and printed works.

REFERENCES

  1. Patrick Frank, Sharing Code: Art1, Frederick Hammersley, and the Dawn of Computer Art (Santa Fe, New Mexico: Museum of New Mexico Press, 2020).
  2. Jasia Reichardt, The Computer in Art. (New York: Von Nostrand Reinhold Publishing, 1971).
  3. Frederick Hammersley papers, circa 1960-2009, bulk 1940-2009. Archives of American Art, Smithsonian Institution.
  4. David Pagel, Taking on the computer age. Los Angeles Times, February 8, 2013.
  5. This works reasonably well: art21 < fort.25 | asa | enscript -c -B -M Art1 -f Courier12/11 -o - | ps2pdf - output.pdf with the line Media: Art1 1044 792 30 40 1014 752 in an ~/.enscriptrc file.
  6. Marco Verpelli, personal communication.

OTHER RESOURCES

Art1 output

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].