Blog

The above image was made using ADASN (A Dark and Stormy Night), a simple stack based programming language. I designed the code of the programming language to be written as normal English. Every word of a sentence that has over 3 characters represents a number, 1 if it starts with a, 2 if it starts with b and etc. All the words in the sentence are then added up and if the resulting number corresponds to a command then the command is executed otherwise it is pushed onto the stack. Numbers 55 through to 86 represent commands. When the code is executed it generates a video where the code runs separately for each pixel every frame of the video.

The code tends to work best when written as a poem as it allows for more flexible sentence structure. The trick is to write code that not only describes how to make an image but what that image means.

Currently I have written a transpiler using JavaCC that converts the code into java and glsl, using processing to interface with opengl. This creates java source code that can then be compiled into a runnable jar file.

Commands

55 time - pushes the current running time to the stack

56 dup - duplicates the top of the stack

57 push - pushes the number number to the stack even if its a command

58 decimal - pops then pushes 1 / that numbers

59 <= - pops the top 2 from the stack then compares then and pushes 1 or 0

60 >= - pops the top 2 from the stack then compares then and pushes 1 or 0

61 < - pops the top 2 from the stack then compares then and pushes 1 or 0

62 > - pops the top 2 from the stack then compares then and pushes 1 or 0

63 = - pops the top 2 from the stack then compares then and pushes 1 or 0

64 != - pops the top 2 from the stack then compares then and pushes 1 or 0

65 + - pops the top 2 from the stack then pushes one plus the other

66 - - pops the top 2 from the stack then pushes one minus the other

67 * - pops the top 2 from the stack then pushes one times the other

68 / - pops the top 2 from the stack then pushes one divided by the other

69 % - pops the top 2 from the stack then pushes one modulus the other

70 x - pushes the x position of the current pixel

71 y - pushes the y position of the current pixel

72 r - pushed the red color value of the current pixel

73 g - pushed the green color value of the current pixel

74 b - pushed the blue color value of the current pixel

75 sR - pops then sets the current red color value to that number

76 sG - pops then sets the current green color value to that number

77 sB - pops then sets the current blue color value to that number

78 sin - pops then pushes the sin of that number

79 cos - pops then pushes the cos of that number

80 tan - pops then pushes the tan of that number

81 rand - pushes a random number

82 width - pushes the width of the video

83 height - pushes the height of the video

84 pop - pops the stack

85 length - pops the top 2 on the stack and pushes the length of them

86 atan - pops the top 2 on the stack and pushes the atan of them

Example

Bolbus.

Terrifically gigantic,floating a buv, up in the heavens,floating with love.

Rising at morn,falling at night,quivering a buv.

Rising at morn,falling at night,soaring a buv.

Watching from far above,shining down sun,moving the fun.

Beautiful.

Terrifically gigantic,floating above, up in the heavens,floating with love.

Rising at morn,falling at night,quivering a buv.

Rising at morn,falling at night,soaring above.

Watching from far above,shining down sun,moving the fun.

Terrifically gigantic,floating around all up a bove, up in the heavens,floating with love.

Around, all bashly above.

Terrifically gigantic,floating a buv, up in the heavens,floating with love.

Rising at morn,falling at night,quivering a buv.

Watching from far above,shining sun,moving the fun.

Rising at morn,falling at night,xhuming the sun.

(As you can see i did cheat a bit by changing the spelling of some words, xhuming instead of exhuming and a buv/a bove instead of above)