Merge branch 'master' of git.xpub.nl:/var/www/git.xpub.nl/repos/tgc3

master
kspreeuw 7 years ago
commit 9ad63d1ed1

BIN
.DS_Store vendored

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1,7 +1,16 @@
Author: Slavoj Žižek
Date: 1989
Title: The Sublime Object of Floppy
Author: Giulia de Giovanelli
Date: 2017
Title: Adopt A Walk
Description:
And so on, and so on, and so on.
By stealing the walk of another person do I become someone else?
This is an audio-guide of an experiment of gait analysis,
If you never heard about this term, gait analysis is the study of patterns of walk during ambulation used by new surveillance biometric technologies.
People are asked to walk following a series of spoken instructions. The walks are stored temporarily on a page where youre invited to “adopt a walk” of another person.
“Have you ever tried to look at the way a person walk as a way to identify her?
Surveillance technologies are using the homogenic perception of human being as a model for their mechanics.”
With this experiment youre invited to observe characteristic of walks your similar and adopt them. Try to imagine that in modifying your walk you could escape from detection of your identity.

@ -1,62 +0,0 @@
#!/usr/bin/env python
import cgi, jinja2, os, json, re
import cgitb; cgitb.enable()
from jinja2 import Template
# Directory => ITEMS list (all files with a timestamp name, grouped)
ff = os.listdir("clips")
tpat = re.compile(r"^(\d\d\d\d)-(\d\d)-(\d\d)-(\d\d)-(\d\d)-(\d\d)")
items = {}
for f in ff:
base, ext = os.path.splitext(f)
ext = ext[1:]
m = tpat.match(f)
if m:
t = m.group(0)
if t not in items:
items[t] = {}
items[t][ext] = f
items = [items[key] for key in sorted(items, reverse=True)]
for i in items[1:]:
for f in i.items():
print "deleting ", f
# dump the data (debugging)
# print "Content-type: text/plain"
# print ""
# print json.dumps(items, indent=2)
# Output template with items
print "Content-type: text/html"
print ""
print Template(u"""<html>
<head>
<title>ADOPT A WALK</title>
<style type="text/css">
div.movie {
border: 20px solid black;
display: inline-block;
}
div.movie img {
width: 400px;
}
</style>
</head>
<body>
<header>
<p>head<p>
<img src="../images/header.png" width="100%"/>
</header>
{% for i in items %}
<div class="movie"><a href="../clips/{{i.mp4}}"><img src="../clips/{{i.jpg}}" /></a> </div>
{% endfor %}
<div>
</div>
</body>
</html>""").render(items=items).encode("utf-8")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

@ -1,12 +0,0 @@
#N canvas 296 315 450 300 10;
#X obj 37 104 osc~ 440;
#X obj 37 146 dac~;
#X obj 161 74 loadbang;
#X msg 161 111 \; pd dsp 1;
#X obj 37 36 netreceive 3000;
#X obj 46 62 print;
#X connect 0 0 1 0;
#X connect 0 0 1 1;
#X connect 2 0 3 0;
#X connect 4 0 5 0;
#X connect 4 0 0 0;

@ -1,12 +1,7 @@
#!/usr/bin/env python
import os, random, time
while True:
freq = str(random.randint(0,10)*110)
print(freq)
os.system('echo "'+freq+';" | pdsend 3000')
time.sleep(0.25)
import subprocess
subprocess.call(["scripts/voiceguide.sh"], cwd="/media/floppy")

@ -0,0 +1,77 @@
#!/usr/bin/env python
import cgi, jinja2, os, json, re
import cgitb; cgitb.enable()
from jinja2 import Template
# Directory => ITEMS list (all files with a timestamp name, grouped)
try:
ff = os.listdir("/var/www/static/gait")
except OSError:
ff = []
tpat = re.compile(r"^(\d\d\d\d)-(\d\d)-(\d\d)-(\d\d)-(\d\d)-(\d\d)")
items = {}
for f in ff:
base, ext = os.path.splitext(f)
ext = ext[1:]
m = tpat.match(f)
if m:
t = m.group(0)
if t not in items:
items[t] = {}
items[t][ext] = f
items = [items[key] for key in sorted(items, reverse=True)]
for i in items[10:]:
for f in i.items():
print "deleting ", f
# 10 os.unlink(f)
# dump the data (debugging)
# print "Content-type: text/plain"
# print ""
# print json.dumps(items, indent=2)
# Output template with items
print "Content-type: text/html"
print ""
print Template(u"""<html>
<head>
<title>ADOPT A WALK</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="../styles/main.css">
</head>
<body>
<div id="wrappper">
<header>
<img src="../images/headertr3.png" width="100%"/>
</header>
<div class="firstline">
<p> Here you can find footage of your walks.</p>
</div>
<img src="../images/camera.png" />
<div class="secondline">
<p> Steal a walk from another person's video. Download it. </p>
</div>
<div class="thirdline">
<p> Promise me, you're gonna start using this walk for the rest of the day. </p>
</div>
<img src="../images/cover.png" />
<div class="movies">
{% for i in items %}
<a href="../clips/{{i.mp4}}"><img src="../clips/{{i.jpg}}" /></a>
<p>{{i.mp4}}</p>
{% endfor %}
</div>
</div>
</body>
</html>""").render(items=items).encode("utf-8")

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

@ -1 +1,8 @@
GREAT JOB!
<html>
<head>
<meta http-equiv="refresh" content="0;url=/cgi-bin/index.cgi" />
</head>
<body>
<a href="/cgi-bin/index.cgi">start</a>
</body>
</html>

@ -0,0 +1,104 @@
@font-face: {
font-family: "Sporting Grotesque";
src: url("/fonts/sporting_grotesque_normal.otf");
}
body {
background-image: url("../images/background.png");
background-repeat: repeat;
font-family: "Sporting Grotesque";
}
#wrapper {
max-width: 900px;
display: block;
margin: 0px auto;
padding:0px;
}
header img{
border: none;
}
div.movies img:nth-child(1) {
margin-top: 150px;
}
div.movies img {
display: block;
width: 632px;
height: auto;
margin: 25px auto;
box-shadow: 0px 0px 64px 13px rgba(255,255,255,1);
}
div.movies p {
color: white;
text-align: center;
font-family: "Sporting Grotesque";
}
div.firstline, div.secondline, div.thirdline {
max-width: 100%;
border: 10px solid white;
padding-top: 3px;
padding-bottom: 3px;
padding-left: 50px;
padding-right: 50px;
margin: 37px 15px 37px !important;
font-size: 200%;
color: white;
text-align: center;
text-shadow: 1px 1px 2px white;
line-height:110%;
margin: auto;
}
/*div.secondline {
width: 80%;
border: 10px solid white;
padding-top: 3px;
padding-bottom: 3px;
padding-left: 50px;
padding-right: 50px;
margin:25px;
font-size: 200%;
color: white;
text-align: center;
text-shadow: 1px 1px 2px white;
line-height:110%;
margin: auto;
margin-top:17px;
margin-bottom:17px;
}
div.thirdline {
width: 80%;
border: 10px solid white;
padding-top: 3px;
padding-bottom: 3px;
padding-left: 50px;
padding-right: 50px;
margin: 25px;
font-size: 200%;
color: white;
text-align: center;
text-shadow: 1px 1px 2px white;
line-height:110%;
margin: auto;
}*/
div.cover {
float: center;
margin: 20px;
}
img {
display: block;
margin: auto;
max-width: 900px;
border: 10px solid white;
}

@ -1,17 +0,0 @@
#! /usr/bin/env python
import subprocess
from time import sleep
# requires: espeak to be installed
waittimes = [1,2,1,4,1,4,1,4,1,4]
f=open("instructions.txt","r")
txt=f.readlines()
for i, line in enumerate(txt):
waittime = waittimes[i]
print i, waittime #, line,
subprocess.call(["espeak", line, "-v", "en"]) # character speaks: his/her line
sleep(waittime) # make pause after each text line

@ -0,0 +1,84 @@
#!/usr/bin/env python
from __future__ import print_function
import cv2, os, sys, time
import numpy as np
from argparse import ArgumentParser
from picamera.array import PiRGBArray
from picamera import PiCamera
p = ArgumentParser("")
p.add_argument("--video", type=int, default=0, help="video, default: 0")
p.add_argument("--output", default=None, help="path to save movie, default: None (show live)")
p.add_argument("--width", type=int, default=640, help="pre-detect resize width")
p.add_argument("--height", type=int, default=480, help="pre-detect resize height")
p.add_argument("--fourcc", default="XVID", help="MJPG,mp4v,XVID")
p.add_argument("--framerate", type=float, default=25, help="output frame rate")
p.add_argument("--show", default=False, action="store_true")
p.add_argument("--frames", type=int, default=100)
args = p.parse_args()
fourcc = None
cam = cv2.VideoCapture(args.video)
cam.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, args.width)
cam.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, args.height)
if args.output:
try:
fourcc = cv2.cv.CV_FOURCC(*args.fourcc)
except AttributeError:
fourcc = cv2.VideoWriter_fourcc(*args.fourcc)
out = cv2.VideoWriter()
out.open(args.output, fourcc, args.framerate, (args.width, args.height))
else:
out = None
print ("Starting camera", file=sys.stderr)
cam = PiCamera()
framesize = (160, 128)
cam.resolution = framesize
cam.framerate = 32
rawCapture = PiRGBArray(cam, size=framesize)
# allow the camera to warmup
time.sleep(0.25)
count = 0
try:
# while True:
# ret, frame = cam.read()
for frame in cam.capture_continuous(rawCapture, format="bgr", use_video_port=True):
# print "GRAB FRAME"
frame = frame.array
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
ret, t= cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
frame = cv2.cvtColor(t, cv2.COLOR_GRAY2BGR)
# flow = cv2.calcOpticalFlowFarneback(prevgray, gray, 0.5, 3, 15, 3, 5, 1.2, 0)
# prevgray = gray
# clear the stream in preparation for the next frame (important for picamera!)
rawCapture.truncate(0)
if out != None:
out.write(frame)
count += 1
if args.show:
cv2.imshow('display', frame)
if cv2.waitKey(5) & 0xFF == ord('q'):
break
if args.frames != None:
if (count >= args.frames):
break
except KeyboardInterrupt:
pass
print ("\nCleaning up... Wrote", count, "frames")
if out:
out.release()
if args.show:
cv2.destroyAllWindows()

@ -0,0 +1,73 @@
#!/usr/bin/env python
from __future__ import print_function
import cv2, os, sys, time
import numpy as np
from argparse import ArgumentParser
p = ArgumentParser("")
p.add_argument("--video", type=int, default=0, help="video, default: 0")
p.add_argument("--output", default=None, help="path to save movie, default: None (show live)")
p.add_argument("--width", type=int, default=640, help="pre-detect resize width")
p.add_argument("--height", type=int, default=480, help="pre-detect resize height")
p.add_argument("--fourcc", default="XVID", help="MJPG,mp4v,XVID")
p.add_argument("--framerate", type=float, default=25, help="output frame rate")
p.add_argument("--show", default=False, action="store_true")
p.add_argument("--frames", type=int, default=100)
args = p.parse_args()
fourcc = None
cam = cv2.VideoCapture(args.video)
cam.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, args.width)
cam.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, args.height)
if args.output:
try:
fourcc = cv2.cv.CV_FOURCC(*args.fourcc)
except AttributeError:
fourcc = cv2.VideoWriter_fourcc(*args.fourcc)
out = cv2.VideoWriter()
out.open(args.output, fourcc, args.framerate, (args.width, args.height))
else:
out = None
while True:
ret, prev = cam.read()
prevgray = cv2.cvtColor(prev, cv2.COLOR_BGR2GRAY)
if prevgray.shape == (args.height, args.width):
break
count = 0
try:
while True:
ret, frame = cam.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
ret, t= cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
frame = cv2.cvtColor(t, cv2.COLOR_GRAY2BGR)
# flow = cv2.calcOpticalFlowFarneback(prevgray, gray, 0.5, 3, 15, 3, 5, 1.2, 0)
# prevgray = gray
if out != None:
out.write(frame)
count += 1
if args.show:
cv2.imshow('display', frame)
if cv2.waitKey(5) & 0xFF == ord('q'):
break
if args.frames != None:
if (count >= args.frames):
break
except KeyboardInterrupt:
pass
print ("\nCleaning up... Wrote", count, "frames")
if out:
out.release()
if args.show:
cv2.destroyAllWindows()

@ -1,95 +1,56 @@
# ensure the record folder exists
mkdir -p /var/www/static/gait
espeak "Gait analysis number one." -v en
v=-v en-gb+f5 -s 150
espeak "Tetra Gamma Gait Analysis " -v en-gb +f5 -s 150
sleep 1
espeak "Please state your name:" -v en
espeak "Be ready for the security check." -v en-gb+f4 -s 150
sleep 1
espeak "Position yourself 2 to 3 meters away from the Tetra Gamma Circulaire." -v en
espeak "Please state your name:" -v en+f4 -s 150
sleep 1
espeak "Position yourself 2 to 3 meters away from me." -v en-gb+f4 -s 150
sleep 2
espeak "Walk towards the Tetra Gamma Circulaire in a straight line ." -v en
espeak "Walk towards me in a straight line ." -v en+f4 -s 150
sleep 0.2
play sweep_up.wav
mpv sweep_up.wav
basename=clips/$(date +%Y-%m-%d-%H-%M-%S)
basename=/var/www/static/gait/$(date +%Y-%m-%d-%H-%M-%S)
echo recording $basename.avi...
scripts/black2.py --output $basename.avi --frames 50 --framerate 4 --width 320 --height 240
python scripts/recordwalk.py --output $basename.avi --frames 50 --framerate 4 --width 320 --height 240
# convert to mp4
ffmpeg -i $basename.avi -y $basename.mp4
# make a thumnail image
ffmpeg -i $basename.avi -vframes 1 -ss 0.5 -y $basename.jpg
# rm $basename.avi
play sweep_up.wav
mpv sweep_up.wav
espeak "Position yourself one meter away to the left of the Tetra Gamma Circulaire." -v en
sleep 1
espeak "Walk from left to right in front of the Tetra Gamma Circulaire.
" -v en
espeak "Walk towards me on a zig zag line.
" -v en+f4 -s175
sleep 0.2
play sweep_up.wav
mpv sweep_up.wav
basename=clips/$(date +%Y-%m-%d-%H-%M-%S)
echo recording $basename.avi...
scripts/black2.py --output $basename.avi --frames 50 --framerate 4 --width 320 --height 240
python scripts/recordwalk.py --output $basename.avi --frames 50 --framerate 4 --width 320 --height 240
# convert to mp4
ffmpeg -i $basename.avi -y $basename.mp4
# make a thumnail image
ffmpeg -i $basename.avi -vframes 1 -ss 0.5 -y $basename.jpg
# rm $basename.avi
play sweep_up.wav
mpv sweep_up.wav
espeak "Turn your back to the Tetra Gamma Circulaire." -v en
sleep 1
espeak "Walk away from the Tetra Gamma Circulaire.
" -v en
sleep 0.2
play sweep_up.wav
basename=clips/$(date +%Y-%m-%d-%H-%M-%S)
echo recording $basename.avi...
scripts/black2.py --output $basename.avi --frames 50 --framerate 4 --width 320 --height 240
# convert to mp4
ffmpeg -i $basename.avi -y $basename.mp4
# make a thumnail image
ffmpeg -i $basename.avi -vframes 1 -ss 0.5 -y $basename.jpg
# rm $basename.avi
play sweep_up.wav
espeak "Position yourself 2 to 3 meters away from the Tetra Gamma Circulaire." -v en
espeak "Thank you for your cooperation" -v en+f4 -s175
sleep 1
espeak "Walk towards the Tetra Gamma Circulaire on a zig zag line.
" -v en
sleep 0.2
play sweep_up.wav
basename=clips/$(date +%Y-%m-%d-%H-%M-%S)
echo recording $basename.avi...
scripts/black2.py --output $basename.avi --frames 50 --framerate 4 --width 320 --height 240
# convert to mp4
ffmpeg -i $basename.avi -y $basename.mp4
# make a thumnail image
ffmpeg -i $basename.avi -vframes 1 -ss 0.5 -y $basename.jpg
# rm $basename.avi
mpv sweep_up.wav
play sweep_up.wav
# subprocess.call(["espeak", "Please state your name:", "-v", "en"])
# sleep(2)
# Position yourself 2 to 3 meters away from the Tetra Gamma Circulaire.
# Walk towards the Tetra Gamma Circulaire in a straight line .
# Position yourself one meter away to the left of the Tetra Gamma Circulaire.
# Walk from left to right in front of the Tetra Gamma Circulaire.
# Turn your back to the Tetra Gamma Circulaire.
# Walk away from the Tetra Gamma Circulaire.
# Position yourself 2 to 3 meters away from the Tetra Gamma Circulaire.
# Wal

Binary file not shown.

Binary file not shown.

@ -1,120 +1,74 @@
#N canvas 457 24 739 687 10;
#N canvas 398 23 553 723 10;
#X declare -lib OSC;
#X declare -lib net;
#X declare -lib unpackOSC;
#X text -22 232 #ikstem;
#X text 55 233 #gestemd;
#X obj -69 492 dac~;
#X obj -37 134 unpack s s s;
#X obj 441 -2 loadbang;
#X msg 441 31 \; pd dsp 1;
#X obj 191 64 udpreceive 127.0.0.1 4000;
#X text 160 318 comment;
#X obj 157 254 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
#X text 372 516 attack;
#X text 443 517 release;
#X obj 374 653 line~;
#X obj 176 638 *~;
#X obj 373 536 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 89 254 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
#X obj 447 539 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 45 133 tag \, hashtag \, time;
#X obj -3 162 select #ikstem #gestemd both;
#X obj 0 252 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#N canvas 692 710 276 254 ikstemenv 0;
#X obj 72 80 line~;
#X msg 81 45 0 50;
#X msg 72 -15 1 1;
#X text 99 -13 1 msec attack;
#X text 118 44 50 msec release;
#X obj 88 15 del 10;
#X obj 72 -44 inlet;
#X obj 25 170 outlet~;
#X obj 25 -45 inlet~;
#X obj 25 146 *~;
#X text 134 14 10 msec sustain;
#X connect 0 0 9 1;
#X connect 1 0 0 0;
#X connect 2 0 0 0;
#X connect 5 0 1 0;
#X connect 6 0 2 0;
#X connect 8 0 9 0;
#X connect 9 0 7 0;
#X restore -69 344 pd ikstemenv;
#X text -16 289 comment;
#N canvas 692 710 276 254 bothenv 0;
#X obj 72 80 line~;
#X obj 72 -44 inlet;
#X obj 25 170 outlet~;
#X obj 25 -45 inlet~;
#X obj 25 146 *~;
#X text 137 44 5 second release;
#X text 114 -14 500 msec attack;
#X msg 72 -15 1 50;
#X obj 88 15 del 100;
#X text 144 15 100 msec sustain;
#X msg 81 45 0 2000;
#X connect 0 0 4 1;
#X connect 1 0 7 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 7 0 0 0;
#X connect 8 0 10 0;
#X connect 10 0 0 0;
#X restore 100 344 pd bothenv;
#X obj 100 467 snapshot~;
#X obj 112 435 metro 100;
#X floatatom 100 493 0 0 0 0 - - -;
#N canvas 692 710 276 254 gestemdenv 0;
#X obj 72 80 line~;
#X text 99 -13 1 msec attack;
#X text 118 44 50 msec release;
#X obj 72 -44 inlet;
#X obj 25 170 outlet~;
#X obj 25 -45 inlet~;
#X obj 25 146 *~;
#X text 134 14 10 msec sustain;
#X msg 81 45 0 700;
#X obj 88 15 del 100;
#X msg 72 -15 1 10;
#X connect 0 0 6 1;
#X connect 3 0 10 0;
#X msg 383 564 stop;
#X text 70 455 #ikstem;
#X text 188 454 #gestemd;
#X obj 176 693 dac~;
#X obj 34 142 unpack s s s;
#X obj 19 243 print;
#X obj 133 345 select #ikstem both;
#X text 264 345 #gestemd;
#X obj 373 587 del 50;
#X msg 444 610 0 250;
#X msg 308 587 30 30;
#X obj 488 567 del 50;
#X msg 373 611 1 500;
#X obj 212 198 loadbang;
#X msg 211 244 \; pd dsp 1;
#X text 176 446 comment;
#X obj 118 585 *~ 10;
#X obj 34 48 udpreceive 127.0.0.1 4000;
#X obj 34 92 unpackOSC;
#X obj 364 23 import OSC;
#X obj 365 55 import net;
#X obj 149 148 print;
#X obj 182 539 osc~ 880;
#X msg 195 477 880;
#X obj 271 500 line~;
#X msg 266 434 1 10;
#X msg 318 494 0 30;
#X obj 318 451 b;
#X obj 318 473 delay 10;
#X msg 68 480 220;
#X text 16 34;
#X connect 3 0 9 0;
#X connect 3 0 9 1;
#X connect 4 0 16 0;
#X connect 4 0 14 0;
#X connect 4 0 17 0;
#X connect 5 0 15 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 8 0 0 0;
#X connect 9 0 8 0;
#X connect 10 0 0 0;
#X restore 14 344 pd gestemdenv;
#X obj 125 409 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text -69 250 triggers;
#X text 142 233 both;
#X text 146 410 monitor output on/off;
#X text 190 45 normally \, this should suffice:;
#X obj 101 286 osc~ 150;
#X obj -69 286 osc~ 7000;
#X obj 14 286 osc~ 500;
#X text 174 296 sinewaves envelopes (triggered by incoming OSC) double
click pd ..env objects to change envelopes;
#X obj -34 16 import net;
#X obj -38 -30 import unpackOSC;
#X obj 191 87 unpackOSC;
#X connect 3 1 11 0;
#X connect 4 0 5 0;
#X connect 6 0 31 0;
#X connect 8 0 15 1;
#X connect 9 0 19 1;
#X connect 11 0 12 0;
#X connect 11 1 9 0;
#X connect 11 2 8 0;
#X connect 12 0 13 1;
#X connect 13 0 2 0;
#X connect 13 0 2 1;
#X connect 15 0 16 0;
#X connect 6 0 14 0;
#X connect 10 1 12 0;
#X connect 12 0 35 0;
#X connect 12 0 31 0;
#X connect 12 1 29 0;
#X connect 12 1 31 0;
#X connect 14 0 18 0;
#X connect 15 0 2 0;
#X connect 15 0 2 1;
#X connect 16 0 18 0;
#X connect 17 0 16 0;
#X connect 19 0 2 0;
#X connect 19 0 2 1;
#X connect 20 0 17 0;
#X connect 25 0 15 0;
#X connect 26 0 13 0;
#X connect 27 0 19 0;
#X connect 31 0 3 0;
#X connect 16 0 2 0;
#X connect 17 0 15 0;
#X connect 18 0 2 0;
#X connect 19 0 20 0;
#X connect 23 0 24 0;
#X connect 24 0 10 0;
#X connect 24 0 27 0;
#X connect 28 0 22 0;
#X connect 28 0 3 0;
#X connect 29 0 28 0;
#X connect 30 0 3 1;
#X connect 31 0 30 0;
#X connect 31 0 33 0;
#X connect 32 0 30 0;
#X connect 33 0 34 0;
#X connect 34 0 32 0;
#X connect 35 0 28 0;

@ -17,8 +17,8 @@ msg.setAddress("/twitter-ikstem")
#msg.append('hello from python')
#client.send(msg)
#os.system('xzcat /media/floppy/twittersonification.csv.xz > /tmp/twittersonification.csv') #floppydisk
os.system('xzcat twittersonification.csv.xz > /tmp/twittersonification.csv') #lokaal
os.system('xzcat /media/floppy/twittersonification.csv.xz > /tmp/twittersonification.csv') #floppydisk
#os.system('xzcat twittersonification.csv.xz > /tmp/twittersonification.csv') #lokaal
@ -42,7 +42,7 @@ with open('/tmp/twittersonification.csv', 'rU') as csvfile:
if then:
ti = (now-then).total_seconds()
#print ti/100
sleep_time = ti/1000
sleep_time = ti/40
print ("5.msg stderr", file=sys.stderr)

Binary file not shown.

@ -0,0 +1,13 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
March 2017
Copyright (C) 2017 Nadine Rotem-Stibbe <nadine@rotem.eu>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.

@ -0,0 +1,10 @@
Author: Nadine Rotem-Stibbe
Date: 2017
Title: Drone Oddity #1
Description:
What you are hearing is a score made from the 'Watchlisting Guidance' table of contents using Pure Data.
This document was written by the National Counterterrorism Center (NCC).
You can access it here: https://theintercept.com/document/2014/07/23/march-2013-watchlisting-guidance/

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 931 KiB

After

Width:  |  Height:  |  Size: 266 KiB

File diff suppressed because one or more lines are too long

@ -0,0 +1,362 @@
Chapter 1
section 1
sub 1
foot 1
sub 2
foot 1
foot 2
sub 3
sub 4
section 2
sub 1
foot 1
sub 2
foot 1
foot 2
sub 3
foot 1
sub 4
sub 5
foot 1
foot 2
subsub 1
sub 6
sub 7
foot 1
sub 8
sub 9
sub 10
foot 1
subsub 1
subsub 2
subsubsub 1
subsubsub 2
subsubsub 3
sub 11
sub 12
sub 13
foot 1
foot 2
sub 14
foot 1
section 3
sub 1
foot 1
subsub 1
subsub 2
subsub 3
subsub 4
sub 2
section 4
sub 1
foot 1
sub 2
foot 1
sub 3
section 5
sub 1
subsub 1
subsub 2
foot 1
section 6
sub 1
sub 2
sub 3
sub 4
sub 5
foot 1
sub 6
foot 1
sub 7
sub 8
sub 9
foot 1
section 7
sub 1
sub 2
foot 1
sub 3
sub 4
section 8
sub 1
sub 2
sub 3
subsub 1
subsub 2
subsub 3
foot 1
sub 4
sub 5
foot 1
sub 6
subsub 1
subsub 2
subsub 3
subsub 4
foot 1
subsub 5
subsub 6
subsub 7
subsub 8
subsub 9
sub 7
sub 8
sub 9
section 9
sub 1
foot 1
sub 2
subsub 1
subsub 2
subsub 3
foot 1
subsub 4
sub 3
sub 4
sub 5
sub 6
subsub 1
subsub 2
sub 7
subsub 1
subsub 2
foot 1
subsubsub 1
foot 1
subsubsub 2
subsubsub 3
subsubsub 4
subsubsub 5
sub 8
sub 9
foot 1
sub 10
foot 1
subsub 1
foot 1
subsub 2
subsubsub 1
subsubsubsub 1
subsubsubsub 2
subsubsubsub 3
subsubsubsub 4
subsubsubsub 5
subsubsubsub 6
subsubsubsub 7
subsubsub 2
sub 11
sub 12
subsub 1
censored 2
subsub 2
subsub 3
subsub 4
sub 13
subsub 1
subsubsub 1
subsubsub 2
subsubsub 3
subsubsub 4
subsub 2
subsub 3
subsub 4
subsub 5
subsub 6
sub 14
sub 15
sub 16
section 10
sub 1
sub 2
sub 3
subsub 1
subsub 2
subsub 3
foot 1
sub 4
sub 5
section 11
sub 1
sub 2
foot 1
sub 3
sub 4
sub 5
section 12
sub 1
Chapter 2
section 1
sub 1
section 2
sub 1
subsub1
sub 2
sub 3
sub 4
subsub 1
subsub 2
subsubsub 1
subsubsub 2
subsubsub 3
subsubsub 4
foot 1
subsubsub 5
foot 1
subsubsub 6
subsub 3
foot 1
subsubsub 1
subsubsub 2
subsubsub 3
subsubsub 4
subsubsub 5
subsubsub 6
subsubsub 7
subsubsub 8
subsubsub 9
subsubsub 10
section 3
sub 1
sub 2
subsub 1
subsub 2
subsub 3
subsub 4
subsub 5
subsub 6
subsub 7
Chapter 3
section 1
sub 1
sub 2
section 2
sub 1
sub 2
sub 3
sub 4
sub 5
sub 6
sub 7
subsub 1
subsub 2
subsub 3
subsub 4
section 3
sub 1
subsub 1
subsub 2
sub 2
subsub 1
subsub 2
subsub 3
subsub 4
section 4
sub 1
subsub 1
sub 2
subsub 1
subsub 2
subsub 3
subsub 4
subsubsub 1
subsubsubsub 1
subsubsubsub 2
subsubsubsub 3
subsubsubsub 4
subsub 5
subsubsub 1
subsub 6
subsub 7
subsub 8
subsubsub 1
subsub 9
subsubsub 1
subsub 10
subsub 11
subsub 12
subsub 13
section 5
sub 1
subsub 1
subsubsub 1
subsubsubsub 1
subsubsubsub 2
subsubsub 2
subsubsub 3
subsub 2
subsub 3
subsub 4
subsub 5
subsub 6
subsubsub 1
subsubsub 2
subsubsub 3
subsubsub 4
subsubsub 5
subsub 7
section 6
sub 1
subsub 1
subsubsub 1
subsubsub 2
subsubsub 3
subsubsub 4
subsub 2
subsub 3
sub 2
subsub 1
sub 3
subsub 1
subsubsub 1
subsubsub 2
subsub 2
section 7
sub 1
subsub 1
subsub 2
subsub 3
subsub 4
subsub 5
subsub 6
subsub 7
subsub 8
subsub 9
subsub 10
subsub 11
subsub 12
subsub 13
subsub 15
subsub 16
subsub 17
subsub 18
subsub 19
subsub 20
subsub 21
subsub 22
subsub 23
subsub 24
subsub 25
subsub 26
subsub 27
subsub 28
subsub 29
subsub 30
subsub 31
subsub 32
subsub 33
subsub 34
subsub 35
subsub 36
subsub 37
subsub 38
subsub 39
subsub 40
subsub 41
subsub 42
subsub 43
subsub 44
subsub 45
subsub 46
Chapter 4

@ -0,0 +1,13 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
March 2017
Copyright (C) 2017 Nadine Rotem-Stibbe <nadine@rotem.eu>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.

@ -0,0 +1,11 @@
Author: Nadine Rotem-Stibbe
Date: 2017
Title: Drone Oddity #2
Description:
What you are listening to is the of­fi­cial U.S. mil­it­ary tran­script of the ra­dio trans­mis­sions and cock­pit con­ver­sa­tions that day, ob­tained by the Los Angeles Times through a Free­dom of In­form­a­tion Act re­quest.
On Feb. 21, 2010, a con­voy of vehicles car­ry­ing ci­vil­ians headed down a moun­tain in cent­ral Afgh­anistan. Amer­ic­an eyes were watch­ing. For more than four hours, the U.S. mil­it­ary — in­clud­ing a Pred­at­or drone crew in Nevada, video screen­ers in Flor­ida, an AC-130 air­plane crew in the sky and an Amer­ic­an spe­cial op­er­a­tions unit on the ground nearby — tracked the con­voy, try­ing to de­cide wheth­er it was friend or foe.
you can access the document here: http://documents.latimes.com/transcript-of-drone-attack

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

Before

Width:  |  Height:  |  Size: 970 B

After

Width:  |  Height:  |  Size: 970 B

@ -0,0 +1,44 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css">
<script src="jquery-3.2.0.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<title>Drone</title>
</head>
<body>
<header>
<div class="title">Drone Oddity <br>#2</div>
<p class="instructions">Please remove your shoes, put your head back and enjoy the conversations behind the piloted&nbsp;drones!</p>
</header>
<div class="transcript" id="transcroll">
<embed id="watchlist" scrolling="yes" src="transcripts-drone-attack.txt" height="500px"></embed>
</div><!-- /end transcript -->
<div><a href="http://www.warrug.com"></a>Buy war rugs here...</div>
<!-- <img src="img/drone1.svg" alt=""> -->
<img src="img/drone2.svg" alt="">
<!-- <img src="img/drone3.svg" alt=""> -->
<footer>
<div class="subtitle">
Transcripts of U.S. drone attack <br> from the <a href="http://documents.latimes.com/transcript-of-drone-attack/" target="_blank">LA Times</a>
</div>
<p>On Feb. 21, 2010, a con­voy of vehicles car­ry­ing ci­vil­ians headed down a moun­tain in cent­ral Afgh­anistan. Amer­ic­an eyes were watch­ing. For more than four hours, the U.S. mil­it­ary — in­clud­ing a Pred­at­or drone crew in Nevada, video screen­ers in Flor­ida, an AC-130 air­plane crew in the sky and an Amer­ic­an spe­cial op­er­a­tions unit on the ground nearby — tracked the con­voy, try­ing to de­cide wheth­er it was friend or foe.
This is the of­fi­cial U.S. mil­it­ary tran­script of the ra­dio trans­mis­sions and cock­pit con­ver­sa­tions that day, ob­tained by the Los Angeles Times through a Free­dom of In­form­a­tion Act re­quest.</p>
</footer>
<script type="text/javascript">
$('#transcroll,body,html').animate({ scrollTop: $('body').height() }, 500000);
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

@ -0,0 +1,146 @@
body{
background-image: url("img/carpet.jpg");
background-attachment: fixed;
background-position: center;
background-size: 100%;
font-family: 'Roboto Mono', monospace;
margin: 0 !important;
}
@font-face {
font-family: 'Roboto Mono', monospace;
src: url(RobotoMono-Regular.ttf);
}
header{
height: 400px;
background: black; /* For browsers that do not support gradients */
background: -webkit-linear-gradient(black, transparent); /* For Safari 5.1 to 6.0 */
background: -o-linear-gradient(black, transparent); /* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(black, transparent); /* For Firefox 3.6 to 15 */
background: linear-gradient(black, transparent); /* Standard syntax (must be last) */
margin:-10px;
padding-top: 60px;
}
.title {
padding-top: 40px;
text-align: center;
font-size: 70px;
color: white;
margin:auto;
font-weight: 700;;
padding: 6px;
}
.title a {
color:black;
text-decoration: underline;}
a{ text-decoration: none;}
.instructions{
text-align: center;
max-width: 39%;
line-height: 26px;
font-size: 20px;
padding: 10px;
margin: auto;
font-weight: 500;
color: white;
/*background-color: rgba(0,0,20,.85);*/}
.wrap{width: 100%;
}
.transcript{
width:40%;
margin:auto;
height:4050px;
overflow: hidden;
/*border: 4px solid;*/
}
.title-transcript{
margin-top: 0;
margin-bottom: 0;
padding: 35px;
color: white;
background-color: rgba(0,0,20,.9);
font-weight: 500;
font-size: 18px;
}
.title-transcript a{ text-decoration: none;
color: white; }
.transcript embed{
background-color: rgba(255,255,255,.9);
height:4050px;
width: 100%;
}
footer{
height:1000px;
background: black; /* For browsers that do not support gradients */
background: -webkit-linear-gradient(transparent, black); /* For Safari 5.1 to 6.0 */
background: -o-linear-gradient(transparent, black); /* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(transparent, black); /* For Firefox 3.6 to 15 */
background: linear-gradient(transparent, black); /* Standard syntax (must be last) */
margin:-10px;
padding: 20px;
}
footer p {
color: white;
max-width: 70%;
padding-top: 40px;
margin:auto;
line-height: 1.5em;
font-size: 26px;}
.subtitle{
margin-top: 270px;
text-align: center;
font-size: 46px;
color: white;
font-weight: 700;;
}
.subtitle a{
text-decoration: none;
color: white;
}
embed::-webkit-scrollbar-track
{
/*border: 1px solid black;
*/ background-color: #F5F5F5;
}
embed::-webkit-scrollbar
{
width: 3px;
background-color: #F5F5F5;
}
embed::-webkit-scrollbar-thumb
{
background-color: #000000;
}
/*////////mobile///////*/
@media screen and (max-width:767px) {
.title{font-size: 30 px;
max-width: 90%;}
.instructions{max-width: 90%;}
.transcript{
margin-top: 50px;
width:90%;
height: 6400px;
}
.transcript embed{height: 6400px;}
.header{margin-bottom: 20px;}
.footer{height: 600px;}
.subtitle{
margin-top: 270px;
font-size: 26px;}
footer p {max-width: 80%;
font-size: 15px;}
}/*end of 767*/

@ -0,0 +1,184 @@
00:59 (Pilot): Can you zoom in a little bit man, let em take a look
00:59 (Sensor): at least 4 in the back of the pickup
00:59 (Pilot): what about the guy under the north arrow, does it look like he is hold'n something across his chest
00:59 (Sensor): yea it's kind of weird how they all have a cold spot on their chest
00:59 (Pilot): It's what they've been doing here lately, they wrap their *expletive* up in their man dresses so you can't PID it
00:45 (Pilot): Is that a *expletive* rifle?
00:45 (Sensor): Maybe just a warm spot from where he was sitting; can't really tell right now, but it does look like an object
00:45 (Pilot): I was hoping we could make a rifle out, never mind
1:05 (Sensor): that truck would make a beautiful target, ok that's a Chevy suburban
1:05 (Pilot): yeah,
1:05 (Sensor): yeah
1:07 (MC): screener said at least one child near SUV
1:07 (Sensor): bull *expletive* …where!?
1:07 (Sensor): send me a *expletive* still, I don't think they have kids out at this hour, I know they're shady but come on.
1:07 (Pilot): at least one child… Really? Listing the MAM, uh, that means he's guilty
1:07 (Sensor): well maybe a teenager but I haven't seen anything that looked that short, granted they're all grouped up here, but.
1:07 (MC): They're reviewing
1:07 (Pilot): Yeah review that *expletive* …why didn't he say possible child, why are they so quick to call *expletive* kids but not to call *expletive* a rifle
1:08 (MC): two children were at the rear of the SUV… I haven't seen two children
1:08 (Sensor): The SUV just started,
CLASSIFIED (info 2 lines)
01:47 (MC): Looks kinda like blankets, they were praying, they had like…
01:47 (Pilot): JAG25 KIRK97We get a good count, not yet?
01:47 (Sensor): They're praying, they are praying.
01:47 (Jag25): KIRK97 JAG25
01:48 (Pilot): JAG25 just want to confirm that you copied we have about 20 pax dismounted, they are
outside the trucks praying at this time and we're 3 ½ miles from the friendly location.
01:48 (Jag25): Roger good copy, from SOTF, we should have A10's and OH58's that are on standby…*garbled*
01:48 (Sensor): A10's as well, that's consistent with the vehicle capacity, 2425 people. This is definitely
it, this is their force. Praying? I mean seriously, that's what they do.
01:48 (MC): They're gonna do something nefarious.
01:50 (MC): Adolescent near the rear of the SUV.
01:50 (Sensor): Well, teenagers can fight.
01:50 (MC): Pick up a weapon and you're a combatant, it's how that works.
01:51 (Pilot): Will you tell the screener that we have passed that, so he doesn't freak out when the A10's strafe these guys or something. Just to keep him in the loop
01:51 (MC): Yeah, I let him know. Yeah, we get a good shot of that adolescent metadata off real quick, so I can tell…
01:51 (Sensor):He already got in the vehicle they said.
01:51 (MC): Yeah, as soon as they get out and we can see them again.
01:52 (Sensor): One guy still praying at the front of the truck.
01:52 (Pilot): JAG25 KIRK97 be advised, all pax are finishing up praying and rallying up near all 3 vehicles
at this time.
01:52 (Sensor): Oh sweet target. I'd try to go through the bed, put it right dead center of the bed.
01:53 (MC): Oh that'd be perfect.
02:41 (Sensor): Well sir, would you mind if I took a bathroom break real quick?
02:41 (Pilot): No, not at all, dude
CLASSIFIED
03:17 (Unknown): what's the master plan fellas?
03:17 (Pilot): I don't know, hope we get to shoot the truck with all the dudes in it
03:17 (Sensor): yea
03:48 (Jag25): Kirk97, Good copy. If they close distance with our location at Kohd base, and at Ground force commander's orders we may have them come up, action those targets, and let you use your hellfire for cleanup shot
03:49 (Pilot): Kirk97,Good copy on that, sounds good.
04:01 (Sensor): Sensor is in let the party begin.
04:01 (Pilot): What's up dude. Uh… We are just waiting man. Got one poppa sleeve on the left hand side set up to go off first cause that is all we got and their waiting for these guys to turn east and head towards the friendlies and their tracking these guys via ICOM chatter. It's basically it man.
04:01 (Sensor) :Tell you what they could have had a whole fleet of preds up here.
04:01 (Pilot): Oh dude.
04:01 (Sensor):
04:01 (Pilot): It would have been awesome.
04:02 (Sensor) : We were talking about it. I'm like, well, what if we just.
04:02 (Pilot) : Yeah.
04:02 (Sensor) :
04:02 (Pilot) : Dude that would be awesome.
04:02 (Sensor) :
CLASSIFIED
CLASSIFIED
CLASSIFIED
CLASSIFIED
CLASSIFIED
04:06 (Pilot) : As far as a weapons attack brief goes, man, we're probably going to be chasing dudes scrambling in the open, uh, when it goes down, don't worry about any guidance from me or from JAGUAR, just follow what makes the most sense to you. Stay with whoever you think gives us the best chance to shoot um at them. And I'm with you on that. So, I'll brief you up on the launch profile, we'll hit a weapons attack brief when we know what we're going to shoot.
CLASSIFIED
CLASSIFIED
04:07 (Sensor) : We're gonna look like we're gonna be looking at 421.
04:07 (Pilot) : Yeah
04:07 (Sensor) : For a hostile intent and... initial plan without seeing how they break up, follow the largest group.
04:07 (Pilot) : Yeah, sounds good. When it all comes down, if everybody is running in their separate direction, I don't care if you just follow one guy, you know like whatever you decide to do I'm with you on it.
04:08 (MC) : Yeah their trying to confirm which vehicle has the kids in it oh the adolescents in it. But JTAC already said that well they can grab a gun... so.
04:09 (Sensor) : Hey you know what? Those mujadeen 13 years old.
04:09 (Pilot) : Yeah, well that's what we were talking on this. I was talking to the JTAC he said the exact same thing man. Um they called them an adolescent. We called it you know... most likely double digits age range. And he was like that's old enough to be dangerous.
04:09 (Sensor) : Yep.
04:09 (Pilot) : Which is true.
04:09 (MC) : I mean he was helping them load stuff earlier. DGS called it out. Helping load things into a back of a truck. When we first got on station. That's when that AC130 was like please give me PID. I was like... we can't.
CLASSIFIED
04:11 (Bam Bam41): Kirk97, Bam Bam four one has you loud and clear
04:12 (Pilot): Ok, Bam Bam41, Kirk97 have you loud and clear as well. Understand you are tracking our three vehicles, do you need a talk on or do you have them?
04:12 (Bam Bam41): 41 has them just south side of the pass of the reported grid, white highland followed by two SUVs
04:12 (Pilot): Kirk97, that's a good copy. Those are your three vehicles be advised we have about twenty-one MAMs, about three rifles so far PIDed in the group and ah these are your three
04:13 (Pilot): It's a cool looking shot
04:13 (Sensor): Oh, awesome
04:13 (Bam Bam 41): (unintelligible) weapons and ICOM chatter with tactical maneuver. Break. Um, understand we are clear to engage.
04:13 (Pilot): Okay, he's clear to engage so he has Type Three. I'm going to spin our missiles up as well.
04:16 (Sensor): Roger. And, oh ... and there it goes! Have another guy ... did they get him too? Yep.
04:16 (Pilot): They took the first and uh the last out. They're going to come back around
04:17 (MC): Do we want to switch back to other frequency?
04:17 (Pilot): I tried, nobody was talking to me over there
04:17 (Sensor): Looks like they're surrendering. They're not running.
04:18 (Sensor): That guy's laid down? They're not running.
04:18 (Safety Observer): Dude, this is weird
04:18 (Sensor): They're just walking away
04:18 (Safety Observer): You want to see if there's anybody at the back?
04:18 (Unknown): Yeah (unintelligible) outline
04:18 (Safety Observer): By that third wreck
04:18 (Sensor): A couple - two or three
04:18 (Sensor): Yeah, they're just chilling
04:18 (Pilot): Zoom in on that for a second for me. The third one.
04:18 (Sensor): The third one?
04:18 (Pilot): Yeah. Did they blow that up? They did, right?
04:18 (Safety Observer): They did, yeah
04:18 (Sensor): No they didn't
04:18 (Pilot): They didn't
04:18 (Sensor): They didn't
04:18 (Sensor): No, they're just out there
04:18 (Pilot): Yeah, that thing looks destroyed, though, doesn't it?
04:18 (Safety Observer): Yeah, they hit it. There's some smoke
04:18 (Sensor): They hit it. You (unintelligible) ... These guys are just ... (rocket attack on middle vehicle)
04:18 (Unknown): Oh!
04:19 (Pilot): Holy *expletive*
04:22 (Sensor): PID weapons, I don't see any ...
04:22 (Saftey Observer): Got something shiny on the one at the right
04:22 (Sensor): Right
04:22 (Sensor): That's weird
04:22 (Pilot): Can't tell what the *expletive* they're doing
04:23 (Sensor): Probably wondering what happened
04:23 (Safety Observer): There's one more to the left of the screen
04:23 (Sensor): Yeah, I see them
04:23 (Safety Observer): Are they wearing burqas?
04:23 (Sensor): That's what it looks like
04:23 (Pilot): They were all PIDed as males, though. No females in the group
04:23 (Sensor): That guy looks like he's wearing jewelry and stuff like a girl, but he ain't ... if he's a girl, he's a big one
4:32 (Safety Observer): One of those guys up at the top left's moving.
04:32 (Sensor): Yeah, I see him. I thought I saw him moving earlier, but I don't know if he's...is he moving or is he twitching?
04:32 (Safety Observer): Eh, I think he moved. Not very much, but.
04:32 (Sensor): Can't, can't follow them both.
04:32 (MC): There's one guy sitting down.
04:32 (Sensor): What you playing with? (Talking to individual on ground.)
04:32 (MC): His bone.
04:33 (Safety Observer): Oh, shit. Yeah, you can see some blood right there, next to the...
04:33 (MC): Yeah, I seen that earlier.
04:36 (MC): Is that two? One guy's tending the other guy?
04:36 (Safety Observer): Looks like it.
04:36 (Sensor): Looks like it, yeah.
04:36 (MC): Self-Aid Buddy Care to the rescue.
04:36 (Safety Observer): I forget, how do you treat a sucking gut wound?
04:37 (Sensor): Don't push it back in. Wrap it in a towel. That'll work.
04:38 (Pilot): They're trying to *explicative* surrender, right? I think.
04:38 (Sensor): That's what it looks like to me. 04:38 MC: Yeah. I think that's what they're doing.
04:40 (Sensor): What are those? They were in the middle vehicle.
04:40 (MC): Women and children.
04:40 (Sensor): Looks like a kid.
04:40 (Safety Observer): Yeah. The one waving the flag.
04:42 (Safety Observer): I'd tell him they're waving their...
04:43 (Sensor): Yeah, at this point I wouldn't...I personally wouldn't be comfortable shooting at these people.
04:43 (MC): No.

@ -0,0 +1,13 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
March 2017
Copyright (C) 2017 Nadine Rotem-Stibbe <nadine@rotem.eu>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.

@ -0,0 +1,12 @@
Author: Nadine Rotem-Stibbe
Date: 2017
Title: Drone Oddity #3
Description:
What you are hearing are the details of attacks by NATO forces/predators in Afghanistan
The data is collected and researched by a team from 'The Bureau of Investigative Journalism'.
The Bureau has notably undercounted US air strikes in Afghanistan because most air attacks go unreported in open sources including news media.
you can access the document here: https://www.documentcloud.org/documents/1010104-tbij-fata-doc-redacted1.html

@ -0,0 +1,212 @@
number 1.
date: thirteenth of January 2006.
location: Damadola Bajaur Agency.
dead: 16.
injured: 0.
local: 16.
non-local: 0.
remarks: 5 children, 5 women, 6 men, all civilians.
number 2.
date: 30th of October 2006.
location: Attack on a seminary at village Chinagai.
dead: 81.
injured: 0.
local: 81.
non-local: 0.
remarks: 80 children, 1 man, all civilian.
number 3.
date: 29th of January 2008.
location: Attack on Village Khushal, Tehsil Mirali.
dead: 12.
injured: 2.
local: 12.
non-local: 0.
remarks: Civilian.
number 4.
date: 28th of February 2008.
location: Attack on Kalosha/Azam Warsak, South.
dead: 10.
injured: 6.
local: 4.
non-local: 6.
remarks: none.
number 5.
date: 16th of March 2008.
location: Attack on Village Doag Wana proper, South Waz. Agency.
dead: 18.
injured: 7.
local: 0.
non-local: 18.
remarks: 0.
number 6.
date: 14th May 2008.
location: Attack on a Madrassa at Damadola,Bajaur Agency
dead: 18
injured: 18
local: 18
non-local: 0
remarks: Civilian
number 7.
date: 11th of June 2008.
location: Attack on ANA at Gorraparai FC Post in Mohmand Agency. Nato Aircraft attacked the same post causing killing/injuries to LEAs and civillians.
dead: 18.
injured: 18.
local: 18.
non-local: 0.
remarks: Civilian.
number 8.
date: 15th of June 2008.
location: Firing of 03 missiles at Nawaz Kot Makeen 01 01 01 civilian
area Makeen SWA.
dead: 1.
injured: 0.
local: 0.
non-local: 1.
remarks: civilian.
number 9.
date: 28th of July 2008.
location: Attack on Village Azam Warsak, South. Waz: Agency 7.
dead: 7.
injured: 0.
local: 0.
non-local: 7.
remarks: none.
number 10.
date: 12th of August 2008.
location: Attack on Village Azam Warsak, South.
dead: 12.
injured: 0.
local: 12.
non-local: 0.
remarks: none.
number 11.
date: 20th of August 2008.
location: Attack on Zeri Noor Colony, SWA.
dead: 6.
injured: 0.
local: 0.
non-local: 6.
remarks: none.
number 12.
date: 31th of August 2008.
location: Attack on village Tapai, Dawar, NWAs Agency.
dead: 11.
injured: 1.
local: 0.
non-local: 11.
remarks: 3 female, 4 children, non local 1 wife + 1 daughter of Ihsanullha local died.
number 13.
date: 30th of August 2008.
location: Missile Attack at the house of CLASSIFIED at Karez Kot Gangi Kshel Tehsil Datta Khel Miranshah.
dead: 18.
injured: 18.
local: 18.
non-local: 0.
remarks: Civilian.
number 14.
date: 2nd of September 2008.
location: Dropping of four bombs by
forces on Baghar area of Tehsil Birmal
Wana, S.Waz: Agency
dead: 1.
injured: 1.
local: 1.
non-local: 0.
remarks: none.
number 15.
date: 3rd of September 2008.
location: Attack by Foces at_4-houses in
village Jalol Khel Toji Khel Angoor _Adda
Tehsil Birmal Wana
dead: 18.
injured: 3.
local: 18.
non-local: 0.
remarks: none.
number 16.
date: 3rd of September 2008.
location: Attack by Foces at_4-houses in
village Jalol Khel Toji Khel Angoor _Adda
Tehsil Birmal Wana
dead: 5.
injured: 4.
local: 5.
non-local: 0.
remarks: civilian.
number 17.
date: 8th of September 2008.
location: 5 Missile fired by Drones on the
Madrassa of Jalalud Din Haqqani at
Danday Darpa Khel, Tehsil Miranshah
NWA
dead: 5.
injured: 4.
local: 5.
non-local: 0.
remarks: 8 female, 5 children, 7 male, all civilian.
number 18.
No information provided
number 19.
No information provided
number 62.
date: 9th of May 2009.
location: US Drone fired four missiles and hit the house of CLASSIFIED Miami Kabul Khel, DreNashtar Tehsil Shawal on the boundary of North and South Waziristan Agencies.
dead: 5.
injured: 0.
local: 5.
non-local: 0.
remarks: none.
number 65.
date: 19th of June 2009.
location: Five Missiles were fires from Drone at Markaz of Gangi Khel Taliban commander.
dead: 18.
injured: 0.
local: 8.
non-local: 10.
remarks: reportedly among the dead 1 non local 2 afghanis 4 arabs 3 Turkamans are included.
number 101.
date: 15th of January 2010.
location: At 21.00 hours, a residential
compound was targeted with four
guided missiles from US Drone at
Nishpa Mir _Khunai area of Tehsil
Ladha, S.W.Agency.
dead: unknown.
injured: unknown.
local: unknown.
non-local: unknown.
remarks: Details are awaited.
The list continues.
Current Statistics from Drone Strikes in Afghanistan.
1,508 MINIMUM CONFIRMED STRIKES.
2,536 upto 3,268 TOTAL KILLED.
142 200 CIVILIANS KILLED.
24 upto 49 CHILDREN KILLED.
The figures above are running totals of US actions and resulting deaths since the Bureau began recording data.
Most Recent Strike: 20th of March 2017

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1,46 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css">
<script src="jquery-3.2.0.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<title>Drone</title>
</head>
<body>
<header>
<div class="title">Drone Oddity <br>#3</div>
<p class="instructions">Please remove your shoes, put your head back and enjoy the sound of death&nbsp;figures!</p>
</header>
<div class="transcript" id="transcroll">
<embed id="watchlist" scrolling="yes" src="detail_of_attack.txt" height="500px"></embed>
</div><!-- /end transcript -->
<div><a href="http://www.warrug.com"></a>Buy war rugs here...</div>
<!-- <img src="img/drone1.svg" alt="">
<img src="img/drone2.svg" alt=""> -->
<img src="img/drone3.svg" alt="">
<footer>
<div class="subtitle">
<a href="https://www.documentcloud.org/documents/1010104-tbij-fata-doc-redacted1.html" target="_blank">Detail of attacks</a> by NATO forces/predators in Afghanistan
</div>
<p>
The data is collected and researched by a team from 'The Bureau of Investigative Journalism'.
The Bureau has notably undercounted US air strikes in Afghanistan because most air attacks go unreported in open sources including news media.
</p>
</footer>
<!--
<script type="text/javascript">
$('#transcroll,body,html').animate({ scrollTop: $('body').height() }, 400000);
</script>
-->
</body>
</html>

File diff suppressed because one or more lines are too long

@ -0,0 +1,149 @@
body{
background-image: url("img/carpet.jpg");
background-attachment: fixed;
background-position: center;
background-size: 100%;
font-family: 'Roboto Mono', monospace;
margin: 0 !important;
}
@font-face {
font-family: 'Roboto Mono', monospace;
src: url(RobotoMono-Regular.ttf);
}
header{
height: 400px;
background: black; /* For browsers that do not support gradients */
background: -webkit-linear-gradient(black, transparent); /* For Safari 5.1 to 6.0 */
background: -o-linear-gradient(black, transparent); /* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(black, transparent); /* For Firefox 3.6 to 15 */
background: linear-gradient(black, transparent); /* Standard syntax (must be last) */
margin:-10px;
padding-top: 60px;
}
.title {
padding-top: 40px;
text-align: center;
font-size: 70px;
color: white;
margin:auto;
font-weight: 500;;
padding: 6px;
}
.title a {
color:black;
text-decoration: underline;}
a{ text-decoration: none;}
.instructions{
text-align: center;
max-width: 39%;
line-height: 26px;
font-size: 20px;
padding: 10px;
margin: auto;
font-weight: 500;
color: white;
/*background-color: rgba(0,0,20,.85);*/}
.wrap{width: 100%;
}
.transcript{
width:40%;
margin:auto;
height:3400px;
overflow: hidden;
/*border: 4px solid;*/
}
.title-transcript{
margin-top: 0;
margin-bottom: 0;
padding: 35px;
color: white;
background-color: rgba(0,0,20,.9);
font-weight: 500;
font-size: 18px;
}
.title-transcript a{ text-decoration: none;
color: white; }
.transcript embed{
background-color: rgba(255,255,255,.9);
height:3400px;
width: 100%;
}
footer{
height: 500px;
background: black; /* For browsers that do not support gradients */
background: -webkit-linear-gradient(transparent, black); /* For Safari 5.1 to 6.0 */
background: -o-linear-gradient(transparent, black); /* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(transparent, black); /* For Firefox 3.6 to 15 */
background: linear-gradient(transparent, black); /* Standard syntax (must be last) */
margin:-10px;
padding: 20px;
}
footer p {
color: white;
max-width: 70%;
padding-top: 40px;
margin:auto;
line-height: 1.5em;
font-size: 26px;}
.subtitle{
margin-top: 250px;
max-width: 80%;
margin:auto;
text-align: center;
font-size: 46px;
color: white;
font-weight: 700;;
}
.subtitle a{
text-decoration: none;
color: white;
}
embed::-webkit-scrollbar-track
{
/*border: 1px solid black;
*/ background-color: #F5F5F5;
}
embed::-webkit-scrollbar
{
width: 3px;
background-color: #F5F5F5;
}
embed::-webkit-scrollbar-thumb
{
background-color: #000000;
}
/*////////mobile///////*/
@media screen and (max-width:767px) {
.title{font-size: 30 px;
max-width: 90%;}
.instructions{max-width: 90%;}
.transcript{
margin-top: 50px;
width:90%;
height: 3900px;
}
.transcript embed{height: 3900px;}
.header{margin-bottom: 20px;}
.footer{height: 600px;}
.subtitle{
margin-top: 40px;
font-size: 26px;}
footer p {max-width: 80%;
font-size: 15px;}
}/*end of 767*/

@ -0,0 +1,35 @@
#! /usr/bin/env python
import re, subprocess, random
from time import sleep
# requires: espeak to be installed
dic={
"narrator": "en-us",
}
f=open("detail_of_attack.txt","r")
txt=f.readlines()
for line in txt:
print line
# play time
subprocess.call(["espeak", "-v", dic['narrator'], "-p", "20"]) # narrator speaks: time and character
sleep(0.5) #short pause before sentence
print sentence
if "*CLASSIFIED*" in sentence: #"*expletive*" in sentence is True:
sentence_parts=re.split(r"(\*\w+\*)", sentence)
print sentence_parts
for part in sentence_parts:
if part == '*CLASSIFIED*':
print 'EXPLETIVE', part
subprocess.call(["aplay", 'swear.wav'])
else:
print 'SPEECH', part
subprocess.call(["espeak", part, "-v", voice]) # character speaks: his
sleep(float(random.randint(1,10))/100)
else: # line w/out time or character (narrator)
print "NARRATOR"
subprocess.call(["espeak", line, "-v", dic['narrator'], "-p", "20"])
sleep(1) # make pause after each text line

@ -6,7 +6,7 @@ FLOPPY="/media/floppy"
MAINPY="${FLOPPY}/main.py"
PYRUN="python ${MAINPY}"
MAINPD="${FLOPPY}/main.pd"
PDRUN="pd -lib import -path /usr/local/lib/pd-externals/net/ -path /usr/local/lib/pd-externals/osc/ -oss -r 48000 -rt -nogui ${MAINPD}"
PDRUN="pd -lib import -path /usr/local/lib/pd-externals/net/ -path /usr/local/lib/pd-externals/osc/ -lib osc -lib udpreceive -oss -r 48000 -rt -nogui ${MAINPD}"
stdbuf -oL -- udevadm monitor --udev -p ${FD} | while read -r -- STATE _ _ _ _
do

Loading…
Cancel
Save