algorithmic wishes

harbi neck oar!
habit neat her!
hopple neap eyre!
hoppet neal ey!
hopper nawt err!
hopped nael eer!
hopi na aery!
hippus knowe ae!
hipple know yere!
hippic knez ye!
hippen knet yarr!
hipped knee yare!
hepper gnaw yair!
heppen nye ya!
hepar newel waer!
heaper nae oyer!
harper now eyer!
Hapi net eyah!
habu nep er!
hypo neo ea!
heaps nei ar!
happier nef yeah!
hippo nee wear!
Harpy neb hear!
hapu nea aer!
happen naw yer!
heapy newt yea!
hoppy news yar!
hippy knew ear!
happy new year!

 

searching the dictionary (part 2)

a new experiment with dictionaries. i wanted to find all single-word-anagrams in the english language. so i searched my database again.

i found some objet trouvé poems like:

actinomeris anisometric creationism miscreation reactionism romanticise

btw: instead of the unix word i tried WordNet as a word source this time. here’s the list from 147478 words = 657 anagrams (including only anagrams with more than 2 valid permutations):

aalst atlas salat
aarp apar para
abator rabato tabora
abed bade bead beda
abel able bale blae
abet bate beat beta
abm bam mba
aboard aborad abroad
abreact bearcat cabaret
abut tabu tuba
acer acre care race
acerb brace caber
achromatin machinator mantichora
acinar arnica carina
acres ceras scare
acrid dirac dirca
acrilan carinal carlina cranial
acrolein caroline lonicera
acth chat tach
actin antic tinca
actinomeris anisometric creationism miscreation reactionism romanticise
action atonic cation
acts cast scat
acyl clay lacy
aden dane dean
adhere header hedera
adorn donar nardo radon
adp pad pda
adrian andira radian
adroitly dilatory idolatry
advil valid vidal
aery eyra year
aesir aries arise raise
aether heater reheat
aft atf fat
afters faster strafe
agal alga gala
agni gain inga nagi
ago gao goa
agonal analog angola
agone genoa onega
agree eager eagre gerea ragee
agreed dragee geared
ahem haem hame
ahorse ashore hoarse shorea
aid dia ida
aids dais dias disa said sida
aigret gaiter triage
ailment aliment netmail
aimless melissa seismal
airman marian marina
akin inka kina
akron koran krona
ale ela lea
alectis castile elastic
alep leap pale peal plea
alert alter later ratel
alerting altering integral triangle
aletris listera realist saltire
alger elgar glare lager large regal
algin align ligan
algren angler erlang nergal
alien aline anile
aligned dealing leading
alir aril lair lari liar lira rail rial
aliterate elettaria retaliate
allergy gallery largely regally
almond dolman maldon
alms mals slam
along golan logan
aloud doula laudo
alp lap pal
alpine nepali penial pineal
alps salp slap
altair atrial lariat latria
altered related treadle
alvine valine veinal venial
amain anima mania
amass assam msasa
amble blame melba
ambler marble ramble
amd dam mad
amen mane mean name
amend mande medan
amine anime maine
amino amnio namoi naomi nomia omani
amir mari rima
amon moan mona noma oman
amor roam roma
amortise atomiser masorite
anas nasa sana
anasa asana sanaa
ancients insectan instance
andes sedan sedna snead
andrew wander warden
anemic cinema iceman
anestric canister cisterna
aneurism sumerian suriname
anew wane wean
ang nag nga
angel angle galen glean lange
angered derange enraged grandee grenade
angled dangle lagend
anguine guanine guinean
anil inla nail
animal lamina malian manila
animated diamante mantidae
ankus kansu kusan
anomic camion conima manioc
anser rnase snare
ante aten etna neat
anther tehran thenar
antimeson mesantoin minnesota
antsy nasty tansy
aorist artois rosita satori
apc cap cpa pac
ape epa pea
aper pare pear rape reap
apery payer peary repay
apocrine prionace procaine
apr arp par rap
apt atp pat tap
aram maar mara rama
arb bar bra
arced cadre cedar
arco cora orca
ardeb barde bared beard bread debar
are ear era
ares arse rase sear
argentic catering citrange
argon groan orang organ
argonon organon rangoon
argot gator groat
arhat athar haart
arid dari raid
arles laser selar
arm mar ram
armed derma dream
armet mater tamer trema
arno oran roan
arpent entrap parent trepan
arrest raster sartre starer
art rat tar
artisan sinatra tsarina
arts star tsar
artsd darts strad
arui raiu uria
ascent centas secant stance
ascertain cartesian sectarian
ascites cassite ectasis
ascot coast costa
ashy hays shay
asleep elapse please
asp pas psa sap spa
asper parse spare spear
aspheric parchesi seraphic
aspirant partisan spartina
aspire paries persia praise spirea
ass sas ssa
asserter reassert terrasse
asset seats tasse
astaire atresia setaria
aster rates stare tears teras
asterion notarise senorita
astilbe bestial stabile
astir sitar stair stria
ate eat eta tea
ateles teasel teasle
athos hosta shoat
atm mat tam
attune nutate tauten
auld dual laud luda
aves save vase
ayr ray rya
babbler blabber brabble
bad dab dba
bagel gable gleba
baker brake break
balas balsa basal sabal
bangor barong brogan
bard brad drab
bare bear brae
barely barley bleary
basel basle blase sable
bast bats stab
baste beast beats tabes
beamy maybe mbeya
beater berate rebate
bedlam beldam blamed
begin being binge
below bowel elbow
ben ebn nbe neb
berit biter ibert tiber tribe
bestir bister bistre
binder inbred rebind
bird drib ibrd
blair brail libra
blate bleat table
bleu blue lube
board broad dobra
boater borate rebato
boer bore ebro robe
bole lobe loeb
bone ebon nebo
boney boyne ebony
bowdler bowlder lowbred
brag garb grab
braise rabies serbia
braised seabird sidebar
braun unbar urban
brief fiber fibre
broca carob cobra
brule rubel ruble
brute buret rebut tuber
bse ebs sbe seb
btu but tub
burble lubber rubble
burma rumba umbra
bustle sublet subtle
cadent canted decant
calder cradle credal
caller cellar recall
camus musca sumac
candor conrad dacron
cane_sugar genus_arca sugar_cane
canetti nictate tetanic
canter cretan nectar recant trance
cantle cental lancet
cantor carnot carton contra craton
capelin panicle pelican
caper crape pacer perca recap
capitol coalpit optical topical
car_care car_race race_car
caret carte cater crate react trace
carol claro coral lorca
carom macro maroc
carotenoid coordinate decoration
carothers carthorse orchestra
carpel parcel placer
cartel claret rectal
carter crater tracer
carven cavern craven
casper escarp parsec scrape secpar
caterer retrace terrace
cather rachet thrace
cedrela cleared creedal declare
censer screen secern
centare crenate reenact
center centre recent tenrec
center_stage centre_stage secret_agent
cerate create ecarte
ceratin certain creatin
cereus ceruse recuse rescue secure
ceric cicer circe
cerous course crouse source
cession conessi oscines
chain chian china
change_state change_taste state_change
chaser eschar search
chaste sachet scathe
cheat teach theca
cheater hectare teacher
chore ocher ochre
chorea horace orache
citrine inciter neritic
citrus curtis rictus rustic
clade decal laced
client lectin lentic
clx cxl xcl
coder credo decor
cohan nacho ochna
concenter concentre connecter
conidium mucinoid oncidium
constrain nonracist transonic
copse pecos scope
corp crop porc
corset cortes escort scoter sector
cot oct otc
counter recount trounce
cpr crp prc
craps scarp scrap
crete erect terce
crocus roccus succor
croesus scouser sucrose
cruel lucre ulcer
cruet curet eruct truce
cruse curse sucre
cuneal launce unlace
dail dali dial laid
dale deal lade lead leda
dame edam emda made mead
damned demand madden
damon monad nomad
danger gander garden
daniel denali denial
dare dear read
darn nard rand
darnel lander lenard
darter retard trader
dearth hatred thread
decimal declaim medical
deer rede reed
defiler fiedler fielder
deli idle lied
delorme demerol modeler remodel
demo dome mode
denier edirne nereid
dentin indent intend tinned
depart parted petard
derision ironside resinoid
destain instead sainted stained
detail dilate tailed
devein endive veined
deviser devries diverse revised
diastole isolated sodalite
diet edit tide tied
dieting editing ignited
dim mdi mid
dimer mired rimed
dinar drain indra nadir ranid
diol idol lido
diopter dioptre peridot
dip idp pid
dire reid ride
diver drive verdi
dle eld led
doe edo ode oed
doer oder redo
dole lode oled
door odor rood
dorian inroad ordain
doubter obtrude outbred redoubt
dowry rowdy wordy
drape padre raped
drawer reward warder
drogue gourde rouged
drusen nursed sunder
dungaree underage ungeared
duramen maunder unarmed
earl lear rale real
early layer leary relay
earnest eastern nearest
earring garnier rearing
earth harte hater heart herat
earthen ethrane hearten teheran
earthly hartley lathery
east eats sate seat seta
easter reseat teaser teresa
echt etch tech
ect tce tec
edema meade medea
eft etf fet
elam lame male meal
elan lane lean lena
elastin salient saltine
elating gelatin genital
elation tineola toenail
elmont loment molten
elver lever revel
emg gem meg
emir meir mire rime
emit item mite time
enamor moaner monera
encase seance seneca
endow owned woden
enets sente steen teens tense
engram german manger
enki kine nike
enlarge general gleaner
enlist listen silent tinsel
enol leon lone noel
enosis noesis sonsie
enrol loner loren
ensile senile silene
entail lentia talien
enterics scienter secretin
entsi inset stein tsine
eon neo one
epi pei pie
epos esop peso pose
ergo goer gore ogre
eringo ignore origen region
eris rise sire
eroding gironde ignored negroid
eros rose sore
erse seer sere
eryngo geryon groyne
esp pes sep
esprit priest pteris sprite stripe
ester reset steer teres terse
estrous oestrus tussore
estrus russet tusser
ether there three
ethnos honest stheno
etropus petrous posture proteus spouter
evers serve sever verse
evil levi live veil vile
evilly lively vilely
evilness liveness vileness
fart frat raft
ferry freyr fryer
filar flair frail
file lief life
filer flier lifer rifle
filter lifter trifle
flatiron inflator tofranil
flow fowl wolf
fps psf spf
frantic infarct infract
gainer reagin regain regina
ganger grange nagger
gape page peag
gari ragi riga
garret garter grater
gas gsa sag
gaur guar ruga urga
genista ingesta seating teasing
geraint granite ingrate tangier tearing
germanist mastering streaming
germinal maligner malinger
gilder girdle glider ridgel
gilman lingam malign
gnu gun ngu
goner negro noreg norge
gory gyro orgy
hades sadhe shade
hale heal hela
haltere leather tarheel
hank kahn khan
hare hear hera rhea
harpia pariah raphia
hate heat thea
haul hula lahu
heaps pesah phase shape
helot hotel thole
herod hoder horde
heron horne rhone
hin inh nih
hmo mho ohm
hops posh shop soph
host shot tosh
hurt ruth urth
ikon kino oink
ilmen limen milne
ilo iol oil
ilx ixl lxi xli
inderal ireland lindera
indiscreet indiscrete iridescent
inert inter niter nitre trine
inger niger reign
ingrain ingrian raining
ingres resign signer singer
inkle klein kline liken
inner niner renin
ins isn sin
inst nist ntis snit
intrude untired untried
iop ipo poi
ipv ivp vip
iran rain rani
islam salim salmi simal
israel serail serial
jar jra raj
kale lake leak
keats skate skeat stake steak
keel klee leek
keep peek peke
kitsch schtik shtick
laird larid lidar
lameness maleness nameless
lament mantel mantle mental
lamp_oil oil_lamp oil_palm palm_oil
lapse lepas sepal
laredo loader ordeal reload
lascar rascal sacral scalar
last lats salt slat
lasting salting slating
late tael tale teal
latent latten talent
lates least slate stael stale steal stela tesla
latrine ratline reliant retinal trenail
lave vale veal vela
laver ravel velar
lego loge ogle
letters settler trestle
lien line nile
lima mail mali
limo milo moil
lino lion loin
lisper perlis pliers
list silt slit
liter litre tiler
litter littre tilter
loire oiler oriel
lonas salon solan
loop polo pool
loos oslo solo
looter retool rootle
lop plo pol
lope opel pole
lose sloe sole
lost lots slot
louse ousel seoul
louvar ovular valour
louver louvre velour
luster lustre result rustle sutler ulster
lwei weil wile
lxiv lxvi xliv xlvi
macaroni marciano marocain
madrona monarda roadman
magneto megaton montage
maiden median medina
maiger maigre mirage
mainer marine remain
manes manse means mensa names
manor norma roman
marines remains riesman seminar
mart mrta tram
martes master stream
masai saami samia
mason monas mosan soman
massine messina samisen
mate meat tame team
may mya yam
meet mete teem
merit miter mitre remit timer
mesa same seam
meter metre retem
metis smite times
miry rimy ymir
monograph nomograph phonogram
moor moro room
mope poem pome
muser remus serum sumer
must smut tums
nap npa pan
nape neap nepa pane pean
nave neva vane vena
nentsi sennit tennis
nepal panel penal plane
nerita retain retina
nerve never verne
nester resent sterne
nestor stoner tensor
neuter tenure tureen
norse senor snore
notropis positron sorption
now own won
nsu sun usn
nut tun utn
oberson osborne robeson
observe obverse verbose
onset seton stone
open peon pone
operant pronate protean
opt pot pto top
optic picot topic
ordinate rationed rodentia
oriental relation tirolean
orites sortie triose
ottar tarot troat
otter torte toter
outer outre route
overt trove voter
ovral valor volar
painter pertain repaint
parental paternal prenatal
paris parsi sapir
parley pearly player replay
parsee persea serape
part prat rapt tarp trap
parts sprat strap
pashto pathos potash
past spat taps
pastel septal staple
pasty patsy ptyas
pate peat tape
pater prate taper
patina pinata taipan
patras satrap sparta
pay pya yap
peirce pierce recipe
penis snipe spine
peri pier ripe
perish reship seriph
persist sprites stripes
persistent presentist prettiness
pest sept step
pester preset streep
petal plate pleat tepal
phrase seraph shaper sherpa
piaster piastre traipse
piles spiel spile
pilsen spinel spline
pinot pinto piton point
piste spite stipe
plaster psalter stapler
pointer protein pterion repoint
porte repot toper trope
porter pretor report
porto proto troop
poser prose spore
positional spoilation spoliation
post spot stop tops
potos stoop topos
proust sprout stupor
pterois reposit riposte
purse sprue super
pursy pyrus syrup
raetam ramate retama
raita riata taira tiara
rant tarn trna
rate tare tear tera
rattan tantra tartan
reit rite tier tire
resale reseal sealer
resew sewer weser
resift sifter strife
resin rinse risen serin siren
resort roster sorter
respect scepter sceptre specter spectre
resuspend suspender unpressed
retinue reunite uterine
retrain terrain trainer
retsina stainer stearin
riot tiro trio
roost roots torso
ruse suer sure user
saint satin stain
salve selva slave valse
salver serval slaver
sami siam sima
santee sateen senate
seated sedate teased
serow sower worse
sett stet test
setter street tester
setup stupe upset
sewed swede weeds
shaw shwa wash
shoot sooth sotho
shut thus tush
skater strake streak
sleet steel stele
spirt sprit strip
state taste testa
strew trews wrest
sway ways yaws
sweat tawse waste
tater tetra treat
tenno tenon tonne
tetri titer titre trite
throw worth wroth
tory troy tyro
tow two wto
vali vial vila
wake weak weka

the same with the unix word list after the break…

Continue reading

searching the dictionary (part 1)

i started some experiments with dictionaries.

first i tried to find all palindrome-words in the english language. i wrote a computer program that analyzes the unix-word-list (maybe not the best of all sources but it’s more like a proof of concept than a finished piece).

here are all palindrome-words that were found (including some anagram words as well). some are unexpected and some are a little bit crappy (as the unix-word list is not a real dictionary but rather a way to bullet-proof passwords).

aa
aba (anagrams: baa)
abba (anagrams: baba)
acca (anagrams: caca)
ada
adda (anagrams: adad dada)
adinida
affa
aga
aha
ajaja
aka
akka (anagrams: kaka)
ala (anagrams: aal)
alala
alula
ama (anagrams: aam)
amma (anagrams: maam)
ana (anagrams: naa)
anana
anna (anagrams: anan nana)
apa
ara
arara
asa (anagrams: saa)
ata (anagrams: taa)
atta
ava
awa
bab (anagrams: abb)
bib
bob
boob (anagrams: bobo)
bub
civic
dad (anagrams: add)
deed
deedeed
degged
did
dod (anagrams: odd)
dud
eke (anagrams: kee)
elle
eme
ere (anagrams: eer ree)
eve (anagrams: vee)
ewe (anagrams: wee)
eye (anagrams: yee)
gag
gig
gog
hah
hallah
huh
ihi
imi
immi (anagrams: mimi)
kakkak
kassak
kayak (anagrams: yakka)
kazak
keek
kelek
lemel
level
maam (anagrams: amma)
madam
malayalam
mam
mem (anagrams: emm)
mesem
mim
minim
mum
murdrum
nan (anagrams: ann)
non
noon
nun
ofo (anagrams: foo)
oho
oto (anagrams: too)
otto (anagrams: toot toto)
pap
peep
pep
pip
poop
pop
pup
radar
redder
refer (anagrams: freer)
repaper (anagrams: paperer perpera prepare)
retter (anagrams: terret)
rever (anagrams: verre)
reviver
rotator
rotor
samas (anagrams: amass assam massa)
senones (anagrams: oneness)
seres
siris
sis (anagrams: ssi)
sooloos
sus (anagrams: ssu)
tat
tebbet
tebet
teet (anagrams: tete)
tenet
terret (anagrams: retter)
tit
toot (anagrams: otto toto)
tot
tst
tut
tyt
ulu
ululu
umu
uru
utu
waw
wow
yaray
yoy

this is only the start as i am already working on finding some more interesting properties as well as finding better sources…

spellchecker poems

i wrote a program (in the programming language Haskell) that looks up 15 words similar (like a spelling correction program) to a start word. with each of the resulting words it makes another lookup so this results in 15×15 words that sound similar. it’s then spoken by a computer voice.

starting with the word plan:

plan plain plane plak plap plat play pali palm palp palt paly pelean plea pollan plain plan pali plaid plait pilin plane palli pallion plaice plak plap plat play pleion plane plan place plage plate plain palace palame palate palea paled paler palet pallone pelage plak plack plan plap plat play pali palm palp palt paly plea polack polk pulk plap palp plak plan plat play plop plup pali palm palt paly plea pulp pyla plat palt plait plate pleat ploat palet plak plan plap play plot palate pali palm play paly palay playa ply pally plak plan plap plat ploy pali palm palp palt pali palli Pali palm palp palt paly pili plaid plain plait puli pallid paulie paulin palm pali palp palt paly pilm palame plak plan plap plat play plim plum palar palp plap pali palm palt paly pulp plak plan plat play plop plup palar palas palt plat palet pali palm palp paly pelt plait plate polt palate pallet plak plan paly play palay pally parly ply pali palm palp palt pily playa poly puly parlay pelean plan plea palea pelon plead pleat pleon pellar pellas plain plane pollan peeled peeler plea palea plead pleat pleb pled plew pelean pelf pelt pelu plak plan plap plat pollan pollam pollen plan palla polar pollack pollage pollard pallae pallah pelean pellar pellas pillar

starting with “abc”:

abac aba aback abas arba yaba abaff abase abate abave abaze abbas abeam abear abu
aba abac abas arba yaba abu aby apa iba aback abaff abase abate abave abaze
abu abut yabu aba Abu aby about abuse abac abas abed abet abey abir able
aby abey aba abu abbey abyss yabby abac abas Abby abed abet abir able abut
aback abac aba abas abaff abase abate abave abaze apace arba yaba abbas abeam abear
abas aba abase abbas abac arba yaba aback abaff abate abave abaze abeam abear abu
abed abet abey abide abode able aba abbey abeam abear abele abord abu aby awber
abet abate abed abey abut able aba abbey abbot abeam abear abele abort about abu
abey abbey aby abed abet obey able aba abeam abear abele abu apery awber yabby
abir aba abear abhor abide aboil abord abort abu aby arbor awber obi ubi abac
able abele abed Abel abet abey yabble aba abase abate abave abaze abbey abide abode
abut about abu abet arbute yabu aba abate abbot abort Abu abuse aby apout apt
arba aba abac abas yaba abbas abu aby apa arbor erbia iba Urban urban yerba
iba aba abac abas Abba abu aby arba erbia Ibad Iban ibid ibis oban obi
yaba aba yabu yapa abac abas arba abu aby apa iba yabbi yabby yerba aback

starting with “fucker”:

faker fakery fager fakir fagger faky firker forker faucre fiacre facks faggery fikie fact fogger
faucre fiacre fager faker faucal fourche furca facade fact fagger fauchard figure fucate fucose furcate
firker forker faker fikie firkin forger forked fairgoer fakery fiacre fickle figure fager fakir feigher
forker firker forger forked faker forgery forgoer forky fogger Fokker forged forget fakery forche forgie
fudger fager fudgy fagger fidget fodgel fogger forger fugle fugue fugu faggery faker faucre feigher
fakery faker faky fager faggery fakir fagger firker forker faucre fegary fiacre ficary figgery fogey
fickle fiche fikie figgle fiacre fico firker facks fecal fichu fique fitchee focal fogle fugle
fourcher fourche fourchee forche fourchite forger forker fourchette faucre fetcher fitcher forchase forgoer futchel fiche
fucate furcate fact facade fucose furca faucal faucre feucht fiacre furcal fecal fiche focal fougade
fucose fucous fucus fucate fucoid faucre fico focus facks fiche fugle fugue furcate facade fickle
facks fact faky focus fucus faker fakir facade faucal faucre fecal fiacre fickle fico focal
fager fagger faker faggery fakery fogger forger fudger fagine fagot fairgoer fakir faucre feague fiacre
fakir faker fakery faky fager fikie facks fix fact fagger fagine faucre firca firker firkin
fetcher fetched fitcher fetch fitchery feigher fitched fitchee fitchet fitchew futchel fiche fitch fotch feucht
fiacre faucre ficary fiche fager faker figure firca fitcher facade fact fickle fico firker fucate

finally a german spellchecker poem starting with the word “igel”:

arge arg arger Orgie Auge Egge ergo Aargau ergehe erwäge Aargauer ach Agar Arche Aug
Auge Aug Augur arge Egge AG Agar Agio Acker AEG Akku AKW AOK Arche arg
Egge Ego arge Auge Ecke Eike EC EG arg arger Aug Eck Ecu Edgar EKG
IG AG EG IQ AEG EKG EWG IHK IRC IRQ EC OK EuGH Igor Ikea
Igor Ego Agar Agio ergo IG IQ Yoga Yogi York Arcor arger Augur Edgar erkor
Ikea ecke Ecke Eike IG IQ okay Acker Erker IHK IRC IRQ ocker Akku Eck
IQ IRQ IG IHK IRC AG EC EG OK Igor Ikea ach AEG AKW AOK
Ego Agio EC Echo EG Egge ergo Igor Eck Ecu EKG EWG Yoga Yogi AEG
IHK IG IQ OK AOK IRC IRQ AKW EKG UKW AG EC EG Igor Ikea
IRC IRQ EC IG IQ IHK AG EG Igor Ikea OK ach AEG AKW AOK
IRQ IQ IRC IG IHK AG EC EG Igor Ikea OK ach AEG AKW AOK
arg arge arger ergo Aargau ach Agar Aug Ego erwog Orgie Yak AG auch Auge
arger arge arg Aargauer Erker Orgie Aargau Agar Auge Egge ergehe ergo ewiger Igor Yorker
Aug Auge Augur AG AEG Agar Agio Akku AKW AOK arg Ecu Ego arge auch
ewige ewig ewiger erwäge eiche erwirke erwog Orgie arge Auge ecke Egge Eike ergieße ergo

you can find more spellchecker poems on my soundcloud

a global visuage

our anthology of visual poetry edited by Günter Vallaster and Jörg Piringer featuring contributions by 85 international authors is now published!
With contributions by Fernando Aguiar, Reed Altemus, Josef Bauer, Derek Beaulieu, Katja Beran, Armando Bertollo, Simon Biggs, Sergej Birjukov, Friedrich W. Block, Mila Blont, Philippe Boisnard, Brandstifter, J. R. Carpenter, John Cayley, Gerhild Ebel, elffriede.i.a., Bartolome Ferrando, Heike Fiedler, Luc Fierens, Christian Futscher, Hortense Gauthier, Harald Gsaller, Rozalie Hirs, Max Höfler, Jochen Höller, Christine Huber, Peter Huckauf, Dirk HuelsTrunk, Zuzana Husárová, Geof Huth, Gerhard Jaschke, Jhave, Ragnhildur Jóhanns, Cecilie Bjørgås Jordheim, Eduardo Kac, Michael Kargl, Christian Katt, Angelika Kaufmann, Ilse Kilic, Anatol Knotek, Boris Konstriktor, Márton Koppány, Sergej Kovalskij, Erika Kronabitter, Jason Lewis, Frank Milautzcki, Nick Montfort, Gertrude Moser-Wagner, Marcus Neustetter, Leszek Onak, Ottar Ormstad, Loss Pequeño Glazier, jörg piringer, Renate Pittroff, Łukasz Podgórni, Hannah Rath, a rawlings, Cia Rinne, Roza Rueb, Natascha Schalina/Andrej Stroganow, Valeri Scherstjanoi, Uwe Schloen, Helmut Schranz, Angelika Schröder, Veronika Schubert, Hannah Sideris, Hartmut Sörgel, Dieter Sperl, Petra Johanna Sturm, Daniel Temkin, Christoph Theiler, Eugenio Tisselli, Liesl Ujvary, united queendoms, Lawrence Upton, Günter Vallaster, Ted Warnell, Helen White, Fritz Widhalm, Daniel Wisser, Andrea Zámbori, Eric Zboya and Ottfried Zielke.

20121018-001853.jpg

(= raum für notizen 7).

100 Pages – 21,0 x 14,8 cm

ISBN 978-3-901015-54-0

€ 16,-

link to the book

thinking about structure (part 2)

following the ideas of the last posting i wrote a new program that added timespans to the generative “narrative” structure.

the proportions of the durations are generate by a randomly shuffled fibonacci sequence (only the first 5 elements of the sequence). the fibonacci sequence is a sequence generated by adding the preceding two numbers together: a(n) = a(n-2) + a(n-1)
an example sequence (with start values 1 and 1) will look like this:
1 1 2 3 5 8 13 21 34 55 89 144 …

here are 6 generated structures:

the length of the arches in black determine the duration of the structural elements (in blue) that are similar to the ones i showed in the previous posting.

if you want you can have a look at the program written in Haskell (a functional programming language i am currently learning…):

-- structures

module Main where

import System.Environment
import System.IO
import Control.Applicative
import Data.AffineSpace
import System.Random
import Data.List
import Data.Array.IO
import Control.Monad

import Wumpus.Basic.Kernel
import Wumpus.Core
import Wumpus.Core.Colour
import Wumpus.Core.Geometry

maxwidth = 1200.0

maxheight = 600.0

xinset = 10
yinset = xinset

ymiddle :: Double
ymiddle = maxheight / 2

yelementBottom :: Double
yelementBottom = ymiddle-120

yelementTop :: Double
yelementTop = yelementBottom+100

elementHeight :: Double
elementHeight = 100

offsYElementTop :: Double
offsYElementTop = elementHeight

startPoint = (P2 0 ymiddle)
endPoint = (P2 maxwidth ymiddle)

type Element = ([Primitive], DPoint2, DPoint2)
type ElementFunc = DPoint2 -> DPoint2 -> Element

primitives :: Element -> [Primitive]
primitives (calls, p1, p2) = calls

start :: Element -> DPoint2
start (calls, p1, p2) = p1

end :: Element -> DPoint2
end (calls, p1, p2) = p2

add :: DPoint2 -> DPoint2 -> DPoint2
add p1 p2 =
(P2 ((point_x p1)+(point_x p2)) ((point_y p1)+(point_y p2)))

-- | Randomly shuffle a list
-- /O(N)/
shuffle :: [a] -> IO [a]
shuffle xs = do
ar do
j vi vj [a] -> IO (IOArray Int a)
newArray n xs = newListArray (1,n) xs

fibs :: [Double]
fibs = 1 : 1 : zipWith (+) fibs (tail fibs)

rollDice :: IO Int
rollDice = getStdRandom (randomR (2,5))

randomlist :: Int -> Int -> StdGen -> [Double]
randomlist n dr = take n . drop dr . unfoldr (Just . random)

main =
do
-- random operations
seed dr theSequence elems [(DPoint2 -> DPoint2 -> Element)] -> Picture
pic s funcs = bracket `picOver` (diagram s funcs)

diagram :: [Double] -> [(DPoint2 -> DPoint2 -> Element)] -> Picture
diagram s funcs =
archesPic `picOver` sequencePic
where
archesPic = frame (drawArches s (point_x startPoint) (point_x endPoint))
sequencePic = translate 0 (- (point_x (snd drawn))) (frame (fst drawn))
drawn = (drawSequence s funcs (point_x startPoint) (point_x endPoint))

-- draw the bow and line
bracket :: Picture
bracket = frame [
mkline startPoint endPoint,
ostroke red custom_stroke_attr $ drawCurve startPoint endPoint
]

drawArches :: [Double] -> Double -> Double -> [Primitive]
drawArches s startx endx =
[mkarch (P2 (startx + (xp * xfact)) ymiddle) (P2 (startx + ((xp+l) * xfact)) ymiddle) | (xp, l) [ElementFunc] -> Double -> Double -> ([Primitive], DPoint2)
drawSequence s funcs startx endx =
(graph, totalEndPoint)
where
totalSum = sum s
fullSeq = startSeq s
bothSeq = zip fullSeq s
bothAndFuncSeq = zip (zip fullSeq s) funcs
xfact = 1 / totalSum * (endx-startx)
startXs = [(startx + (xp * xfact)) | (xp, l) [Double]
startSeq s =
0 : zipWith (+) s (startSeq s)

-- draw and connect the funcs
drawFuncsSequence :: [ElementFunc] -> [Double] -> Double -> ([Primitive], DPoint2)
drawFuncsSequence [] _ _ = ([], (P2 0 0))
drawFuncsSequence funcs startXs ypos =
((primitives element) ++ (fst (drawFuncsSequence (tail funcs) (tail startXs) (point_y (end element)))), (end element))
where
f = head funcs
p1 = (P2 (head startXs) ypos)
p2 = (P2 (head (tail startXs)) (ypos+offsYElementTop))
element = (drawElement f p1 p2)

-- draw an element
drawElement :: (DPoint2 -> DPoint2 -> Element) -> DPoint2 -> DPoint2 -> Element
drawElement f p1 p2 =
f p1 p2

-- elements start here

elementRamp :: DPoint2 -> DPoint2 -> Element
elementRamp p1 p2 =
([element_stroke $ absPrimPath p1 [absLineTo p2]], p1, p2)

elementCurve :: DPoint2 -> DPoint2 -> Element
elementCurve p1 p2 =
([element_stroke $ absPrimPath p1 [absCurveTo p1a p1b p2]], p1, p2)
where
p1b = (P2 ((point_x p1)+((point_x p2)-(point_x p1))/2) (point_y p2))
p1a = (P2 (point_x p1) ((point_y p2)+((point_y p1)- (point_y p2))/2))

elementSteps :: DPoint2 -> DPoint2 -> Element
elementSteps p1 p2 =
([element_stroke $ absPrimPath p1 [absLineTo p1a, absLineTo p1b, absLineTo p1c, absLineTo p1d, absLineTo p1e, absLineTo p2]], p1, p2)
where
p1a = (P2 (posx 0) (posy 1))
p1b = (P2 (posx 1) (posy 1))
p1c = (P2 (posx 1) (posy 2))
p1d = (P2 (posx 2) (posy 2))
p1e = (P2 (posx 2) (posy 3))
posx n = (point_x p1) + ((point_x p2) - (point_x p1)) / 3 * n
posy n = (point_y p1) - ((point_y p1) - (point_y p2)) / 3 * n

elementV :: DPoint2 -> DPoint2 -> Element
elementV p1 p2 =
([element_stroke $ absPrimPath pStart [absLineTo pBottom, absLineTo pEnd]], pStart, pEnd)
where
pStart = p1
pEnd = (P2 (point_x p2) (point_y p1))
pBottom = (P2 ((point_x pStart)+((point_x pEnd)-(point_x pStart))/2) ((point_y pStart)-elementHeight))

elementU :: DPoint2 -> DPoint2 -> Element
elementU p1 p2 =
([element_stroke $ absPrimPath pStart [absCurveTo p1a p1b pEnd]], pStart, pEnd)
where
p1a = (P2 (point_x p1) ((point_y pStart)-elementHeight))
p1b = (P2 (point_x p2) ((point_y pStart)-elementHeight))
pStart = p1
pEnd = (P2 (point_x p2) (point_y p1))

elementStraight :: DPoint2 -> DPoint2 -> Element
elementStraight p1 p2 =
([element_stroke $ absPrimPath pStart [absLineTo pEnd]], pStart, pEnd)
where
y = (point_y p1) --(point_y p2)+((point_y p1)-(point_y p2))/2
pStart = (P2 (point_x p1) y)
pEnd = (P2 (point_x p2) y)

-- drawing functions

mkline :: DPoint2 -> DPoint2 -> Primitive
mkline p1 p2 = ostroke black default_stroke_attr $ absPrimPath p1 [absLineTo p2]

mkarch :: DPoint2 -> DPoint2 -> Primitive
mkarch p1 p2 = ostroke black custom_stroke_attr $ drawCurve p1 p2

drawCurve :: DPoint2 -> DPoint2 -> PrimPath
drawCurve p1 p2 = absPrimPath p1 [absCurveTo (P2 (point_x p1) yc) (P2 (point_x p2) yc) p2]
where
radius = ((point_x p2) - (point_x p1)) / 2
yc = ((point_y p1) + radius)

custom_stroke_attr :: StrokeAttr
custom_stroke_attr = default_stroke_attr { line_width = 6 }

element_stroke_attr :: StrokeAttr
element_stroke_attr = default_stroke_attr { line_width = 4 }

element_stroke :: (PrimPath -> Primitive)
element_stroke =
ostroke element_color element_stroke_attr

element_color :: RGBi
element_color = RGBi 0 0 255

burlywood :: RGBi
burlywood = RGBi 222 184 135

the program generates an SVG-file that can be viewed in the browser.

thinking about structure

inspired by the conversations at the Performance Writing Weekend 2012 in Bristol, i started thinking about a way to automatically generate abstract narrative structures.

i came up with a set of building blocks and wrote a small program to combine them into a set of three images.

here are some examples how these structures could look like:

where to go from here?