now is it everything added?

master
Nadine Rotem-Stibbe 8 years ago
commit 831d753f69

2
.gitignore vendored

@ -47,7 +47,7 @@
!/etc/rc.local !/etc/rc.local
!/floppies/ !/floppies/
/floppies/*/ #/floppies/*/
!/usr/ !/usr/
/usr/* /usr/*

BIN
floppies/.DS_Store vendored

Binary file not shown.

Binary file not shown.

@ -1 +1,8 @@
FLOPPYLEFT - 2017 MOTIONS - 2017
Copyright <2017> <FRANCISCO GONZALEZ>
You may do anything with this work that copyright law would normally
restrict, so long as you retain the above notice(s) and this license
in all redistributed copies and derived works. There is no warranty.

@ -1,7 +1,27 @@
Author: Slavoj Žižek Author: Francisco González
Date: 1989 Date: 2017
Title: The Sublime Object of Floppy Title: Motions
Description: Description:
And so on, and so on, and so on. This experiment analyses and measures data from peoples motion and explores how we humans become an extension of technology, adapting ourselves to immaterial environments by seeking information-control, performing sounds.
CONCEPT
Technology is providing us new ways to shape our perception of space, while at the same time it is transforming our bodies into gadgets. This is not only changing our spatial awareness but its also extending our senses beyond given nature. Moreover, control systems that regulate and command specific behaviours can be very practical tools to improve physical functionalities or translate its data. For instance, this experiment employs “Optical Flow” sensor which detects motion from image objects between frames, and “Open Sound Control (OSC)” which enables to exchange and format data from different devices, for instance, from Python to Puredata. Although the unique possibilities to improving human physical or cognitive limitations by plugging a body to an electronic or mechanical device are yet very hypothetical and might extend beyond our imagination, nevertheless technology is continuously transforming the abstract or fictional conception of “cybernetics” to a more realistic evidence. The communication between both automated and living systems is continuously evolving, upgrading and rising up more sophisticated engineered tools that might enable us to increase our knowledge, morphing our perception through deeper experiences.
In this experiment, the potential for controlling data through motion on space while becoming independent of physicality, opens up new creative and pragmatic alternatives for facing both technological and communication constraints.
BODY
This body analyses human motion on space and detects it using “Opitcal Flow” in “Python”, using a series of predesigned multidirectional interpreters. These interpreters are made up of a series of points (intersections), forming a grid which intersects with movement. This is detected in form of numeric values, which are automatically transmitted and formatted to a graphic array in Puredata.
This array arrange these values and generates a polygonal waveform based on these received coordinates (which numbers ranges between "x", having values from 0 to 10, and "y" from -1 to 1). This activates an “oscillator” object which defines the frequency of the tone, together with “metro” object, which time spans its duration in miliseconds, consequently iterating the audio (re-writting it in the display).
The intersections and the graphic array (together with the entire Puredata patch) become an interactive notation system, while people become the instrument/tool that triggers it.
WORK PROGRESS
By exploring the connection between motion and sound, experiments have been performed through different software and tools, which has substantially strengthen the following additional material in this project. For instance, Kinect sensor and Synapse, which receives input data from Kinect and sends it out to Ableton or Max MSP, have been tested out. Similarly, motion detection was together explored with “color detection” in Puredata, which brought up more interesting alternatives. Sound recording and feedback loop was further tested with this method, though mechanically it was hardly accurate. Finally with “Optical Flow”, this work was reconfigured with a wider sense for interacting with data.

Binary file not shown.

@ -1,7 +1,16 @@
Author: Slavoj Žižek Author: Giulia de Giovanelli
Date: 1989 Date: 2017
Title: The Sublime Object of Floppy Title: Adopt A Walk
Description: 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.

@ -19,10 +19,10 @@ for f in ff:
items[t][ext] = f items[t][ext] = f
items = [items[key] for key in sorted(items, reverse=True)] items = [items[key] for key in sorted(items, reverse=True)]
for i in items[1:]: for i in items[10:]:
for f in i.items(): for f in i.items():
print "deleting ", f print "deleting ", f
# 10 os.unlink(f)
# dump the data (debugging) # dump the data (debugging)
# print "Content-type: text/plain" # print "Content-type: text/plain"
# print "" # print ""
@ -34,29 +34,40 @@ print ""
print Template(u"""<html> print Template(u"""<html>
<head> <head>
<title>ADOPT A WALK</title> <title>ADOPT A WALK</title>
<style type="text/css"> <link rel="stylesheet" type="text/css" href="../styles/main.css">
div.movie {
border: 20px solid black;
display: inline-block;
}
div.movie img {
width: 400px;
}
</style>
</head> </head>
<body> <body>
<header> <div id="wrappper">
<p>head<p>
<img src="../images/header.png" width="100%"/> <header>
</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" />
{% for i in items %}
<div class="movie"><a href="../clips/{{i.mp4}}"><img src="../clips/{{i.jpg}}" /></a> </div>
{% endfor %}
<div> <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> </div>
</body> </body>
</html>""").render(items=items).encode("utf-8") </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.

Before

Width:  |  Height:  |  Size: 499 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

@ -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,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,53 @@
v=-v en-gb+f5 -s 150
espeak "Tetra Gamma Gait Analysis " -v en-gb +f5 -s 150
sleep 1
espeak "Gait analysis number one." -v en espeak "Be ready for the security check." -v en-gb+f4 -s 150
sleep 1 sleep 1
espeak "Please state your name:" -v en espeak "Please state your name:" -v en+f4 -s 150
sleep 1 sleep 1
espeak "Position yourself 2 to 3 meters away from the Tetra Gamma Circulaire." -v en espeak "Position yourself 2 to 3 meters away from me." -v en-gb+f4 -s 150
sleep 2 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 sleep 0.2
play sweep_up.wav mpv sweep_up.wav
basename=clips/$(date +%Y-%m-%d-%H-%M-%S) basename=clips/$(date +%Y-%m-%d-%H-%M-%S)
echo recording $basename.avi... 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 # convert to mp4
ffmpeg -i $basename.avi -y $basename.mp4 ffmpeg -i $basename.avi -y $basename.mp4
# make a thumnail image # make a thumnail image
ffmpeg -i $basename.avi -vframes 1 -ss 0.5 -y $basename.jpg ffmpeg -i $basename.avi -vframes 1 -ss 0.5 -y $basename.jpg
# rm $basename.avi # 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. espeak "Walk towards me on a zig zag line.
" -v en " -v en+f4 -s175
sleep 0.2 sleep 0.2
play sweep_up.wav mpv sweep_up.wav
basename=clips/$(date +%Y-%m-%d-%H-%M-%S) basename=clips/$(date +%Y-%m-%d-%H-%M-%S)
echo recording $basename.avi... 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 # convert to mp4
ffmpeg -i $basename.avi -y $basename.mp4 ffmpeg -i $basename.avi -y $basename.mp4
# make a thumnail image # make a thumnail image
ffmpeg -i $basename.avi -vframes 1 -ss 0.5 -y $basename.jpg ffmpeg -i $basename.avi -vframes 1 -ss 0.5 -y $basename.jpg
# rm $basename.avi # 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 "Thank you for your cooperation" -v en+f4 -s175
espeak "Position yourself 2 to 3 meters away from the Tetra Gamma Circulaire." -v en
sleep 1 sleep 1
espeak "Walk towards the Tetra Gamma Circulaire on a zig zag line. mpv sweep_up.wav
" -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
# 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

@ -0,0 +1,104 @@
@font-face: {
font-family: "sporting_grotesque_gras-webfont";
src:"../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;
}

Binary file not shown.

@ -1,120 +1,60 @@
#N canvas 457 24 739 687 10; #N canvas 553 37 553 723 10;
#X declare -lib net;
#X declare -lib unpackOSC; #X declare -lib unpackOSC;
#X text -22 232 #ikstem; #X text 360 432 attack;
#X text 55 233 #gestemd; #X text 431 433 release;
#X obj -69 492 dac~; #X obj 362 569 line~;
#X obj -37 134 unpack s s s; #X obj 176 638 *~;
#X obj 441 -2 loadbang; #X obj 361 452 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
#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
-1; -1;
#X obj 89 254 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 #X obj 435 455 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1; -1;
#X text 45 133 tag \, hashtag \, time; #X msg 371 480 stop;
#X obj -3 162 select #ikstem #gestemd both; #X text 70 455 #ikstem;
#X obj 0 252 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 #X text 188 454 #gestemd;
-1; #X obj 176 693 dac~;
#N canvas 692 710 276 254 ikstemenv 0; #X obj 34 142 unpack s s s;
#X obj 72 80 line~; #X obj 19 243 print;
#X msg 81 45 0 50; #X obj 133 345 select #ikstem both;
#X msg 72 -15 1 1; #X text 264 345 #gestemd;
#X text 99 -13 1 msec attack; #X obj 175 539 osc~ 450;
#X text 118 44 50 msec release; #X obj 361 503 del 50;
#X obj 88 15 del 10; #X msg 432 526 0 250;
#X obj 72 -44 inlet; #X msg 296 503 30 30;
#X obj 25 170 outlet~; #X obj 476 483 del 50;
#X obj 25 -45 inlet~; #X msg 361 527 1 500;
#X obj 25 146 *~; #X msg 195 477 400;
#X text 134 14 10 msec sustain; #X msg 68 480 150;
#X connect 0 0 9 1; #X obj 212 198 loadbang;
#X connect 1 0 0 0; #X obj 364 23 import unpackOSC;
#X connect 2 0 0 0; #X msg 211 244 \; pd dsp 1;
#X connect 5 0 1 0; #X text 16 34 comment;
#X connect 6 0 2 0; #X text 176 446 comment;
#X connect 8 0 9 0; #X obj 174 596 *~ 10;
#X connect 9 0 7 0; #X obj 34 92 unpackOSC;
#X restore -69 344 pd ikstemenv; #X obj 34 48 udpreceive 127.0.0.1 4000;
#X text -16 289 comment; #X connect 2 0 3 0;
#N canvas 692 710 276 254 bothenv 0; #X connect 3 0 9 0;
#X obj 72 80 line~; #X connect 4 0 17 0;
#X obj 72 -44 inlet; #X connect 4 0 15 0;
#X obj 25 170 outlet~; #X connect 4 0 18 0;
#X obj 25 -45 inlet~; #X connect 5 0 16 0;
#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 connect 5 0 6 0; #X connect 5 0 6 0;
#X connect 6 0 4 0; #X connect 6 0 15 0;
#X connect 8 0 0 0; #X connect 10 1 11 0;
#X connect 9 0 8 0; #X connect 10 1 12 0;
#X connect 10 0 0 0; #X connect 10 2 11 0;
#X restore 14 344 pd gestemdenv; #X connect 12 0 21 0;
#X obj 125 409 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 #X connect 12 0 4 0;
1; #X connect 12 1 20 0;
#X text -69 250 triggers; #X connect 12 1 4 0;
#X text 142 233 both; #X connect 14 0 27 0;
#X text 146 410 monitor output on/off; #X connect 15 0 19 0;
#X text 190 45 normally \, this should suffice:; #X connect 16 0 2 0;
#X obj 101 286 osc~ 150; #X connect 17 0 2 0;
#X obj -69 286 osc~ 7000; #X connect 18 0 16 0;
#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 184 90 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 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 0;
#X connect 19 0 2 1; #X connect 20 0 14 0;
#X connect 20 0 17 0; #X connect 21 0 14 0;
#X connect 25 0 15 0; #X connect 27 0 3 0;
#X connect 26 0 13 0; #X connect 28 0 10 0;
#X connect 27 0 19 0; #X connect 29 0 28 0;
#X connect 31 0 3 0;

Binary file not shown.

@ -0,0 +1 @@
FLOPPYLEFT - 2017

@ -0,0 +1,7 @@
Author: Slavoj Žižek
Date: 1989
Title: The Sublime Object of Floppy
Description:
And so on, and so on, and so on.

File diff suppressed because it is too large Load Diff

@ -0,0 +1,79 @@
#!/usr/bin/env python
import OSC
import multiprocessing, time
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
pin_pairs = [[14,15], [23,24], [1,7]]
# OSC
client = OSC.OSCClient()
address = '127.0.0.1', 3000 # 57120==SC
client.connect( address ) # set the address for all following messages
oscOne = OSC.OSCMessage() # OSCresponder name: '/touch_one'
oscTwo = OSC.OSCMessage() # OSCresponder name: '/touch_two'
oscThree = OSC.OSCMessage() # OSCresponder name: '/touch_three'
oscOne.setAddress("/touch_one")
oscTwo.setAddress("/touch_two")
oscThree.setAddress("/touch_three")
print client
def osc_msg(pinpair, val):
pinindex = pin_pairs.index(pinpair)
if pinindex == 0:
oscOne.append( val )
print oscOne
client.send(oscOne)
oscOne.clearData()
elif pinindex == 1:
oscTwo.append( val )
print oscTwo
client.send(oscTwo)
oscTwo.clearData()
elif pinindex == 2:
oscThree.append( val )
print oscThree
client.send(oscThree)
oscThree.clearData()
def discharge(a_pin, b_pin):
GPIO.setup(a_pin, GPIO.IN)
GPIO.setup(b_pin, GPIO.OUT)
GPIO.output(b_pin, False)
time.sleep(0.005)
def charge_time(a_pin, b_pin):
GPIO.setup(b_pin, GPIO.IN)
GPIO.setup(a_pin, GPIO.OUT)
count = 0
GPIO.output(a_pin, True)
while not GPIO.input(b_pin):
count = count + 1
return count
def analog_read(pin_pair):
discharge(pin_pair[0],pin_pair[1])
return charge_time(pin_pair[0],pin_pair[1])
def worker(pair):
"""thread worker function"""
while True:
reading = analog_read( pair ) #print(analog_read())
osc_msg(pair, reading)
time.sleep(0.1)
return
if __name__ == '__main__':
jobs = []
for i in range(len(pin_pairs)):
p = multiprocessing.Process(target=worker, args=(pin_pairs[i],))
jobs.append(p)
p.start()

@ -0,0 +1,6 @@
@font-face { font-family: "Genome"; src: url(../fonts/Genome-Thin.otf);}
body { background: #1F1F1F; color: #EEE; font-family: Genome, sans-serif; font-weight: 100; color: #DDD; }
p { margin: 0 0 70px; }
#defaultCanvas0 { display: block !important; margin: 5em auto ; }
#header { margin: 30px 0px 0px; }
.text { display: block; margin: 0 50px; font-size: 3em; font-weight: 100 !important; }

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Euclid</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="js/p5.min.js"></script>
<script type="text/javascript" src="js/p5.svg.js"></script>
<script type="text/javascript" src="./js/euclidScore.js"></script>
</head>
<body>
<content class="text">
<object id="header" data="svgs/euclid.svg" type="image/svg+xml">
<h1>euclid</h1>
</object>
<p>To play, touch the metal contacts, connecting them. The more conductive you are, the more you will be able to affect the instrument.</p>
<p>The state of your composition is recorded, and displayed here as a downloadable score.</p>
<p>Never to be played, nor heard again.</p>
</content>
</body>
</html>

@ -0,0 +1,82 @@
// TODO: SAVE ON CLICK
var left, right, genLight, score
var el1 = [], el2 = [], scrVals = []
function preload() {
// left = loadSVG('../svgs/leftHand.svg')
// right = loadSVG('../svgs/rightHand.svg')
genLight = loadFont("fonts/Gen-Light.otf");
score = loadStrings('../score/score.txt')
for (var i = 0; i < 8; i++) {
el1.push( loadSVG('../svgs/el.' + int(random(1, 12)) + '.svg') )
el2.push( loadSVG('../svgs/el.' + int(random(1, 12)) + '.svg') )
}
}
function setup() {
createCanvas(800, 1200, SVG)
textFont(genLight)
// frameRate(1)
noLoop()
fill(220)
textSize(150)
textAlign('right')
}
function draw() {
background('#151515')
fill("#DDDDDD")
for (var i = 0; i < score.length; i++) {
var line = split(score[i].slice(0, -1), ' ')
text(line.join(" "), 90, 150 + (i*90), 710)
scrVals.push(line)
}
stroke('#FFCC00')
fill('#FFCC00')
// left.attribute('fill', 'none')
// right.attribute('fill', 'none')
// left.attribute('stroke', '#FFCC00')
// right.attribute('stroke', '#FFCC00')
// image(right, 0, 0, 600, 600)
for (var i = 0; i < el1.length; i++) {
var r = random(5)
var rVal = int(scrVals[int(random(scrVals.length))][int(random(7))])
var coin = int(random(2))
rVal = map(rVal, 0, 127, 0, width)
el1[i].attribute('fill', 'none')
el2[i].attribute('fill', 'none')
el1[i].attribute('stroke', '#FFCC00')
el2[i].attribute('stroke', '#FFCC00')
image(el1[i], 120 + rVal, (height/el1.length)*(i)+30, 75 + r, 75 + r)
image(el2[i], 15, (height/el1.length)*(i)+30, 75, 75)
if (coin) {
var coin2 = int(random(2))
if (coin2) {
ellipse(120 + rVal, (height/el1.length)*(i)+45, 30 + r, 30 + r)
} else {
ellipse(51, (height/el1.length)*(i)+55, 30, 30)
}
}
}
}
function saveMe() {
save()
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

@ -0,0 +1,7 @@
r4 16 7 0;
r4 18 6 0;
r3 18 7 0;
r2 9 2 0;
r1 7 8 0;
melody 51 43 34 26 37 43 33;
bass 73 75 74 86 87 70 86;

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34.92 38.25"><title>Artboard 12</title><polyline class="a" points="34.55 0.5 1.12 0.5 34.55 37.91"/></svg>

After

Width:  |  Height:  |  Size: 159 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 37.41 38.25"><title>Artboard 21 copy</title><line class="a" x1="37.41" y1="19.04" y2="19.04"/></svg>

After

Width:  |  Height:  |  Size: 153 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34.92 38.25"><title>Artboard 21</title><line class="a" x1="17.6" y1="0.33" x2="17.6" y2="37.75"/></svg>

After

Width:  |  Height:  |  Size: 156 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34.92 38.25"><title>Artboard 13</title><polyline class="a" points="0.37 0.5 33.8 0.5 0.37 37.91"/></svg>

After

Width:  |  Height:  |  Size: 157 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38.41 38.41"><title>Artboard 14</title><circle class="a" cx="19.21" cy="19.21" r="18.71"/></svg>

After

Width:  |  Height:  |  Size: 149 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34.92 38.25"><title>Artboard 15</title><polyline class="a" points="0.37 37.74 33.8 37.74 0.37 0.33"/></svg>

After

Width:  |  Height:  |  Size: 160 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34.92 38.25"><title>Artboard 16</title><polyline class="a" points="34.55 37.74 1.12 37.74 34.55 0.33"/></svg>

After

Width:  |  Height:  |  Size: 162 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38.25 34.92"><title>Artboard 17</title><polyline class="a" points="37.74 34.55 37.74 1.12 0.33 34.55"/></svg>

After

Width:  |  Height:  |  Size: 162 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38.25 34.92"><title>Artboard 18</title><polyline class="a" points="0.5 34.55 0.5 1.12 37.91 34.55"/></svg>

After

Width:  |  Height:  |  Size: 159 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38.25 34.92"><title>Artboard 19</title><polyline class="a" points="37.74 0.37 37.74 33.8 0.33 0.37"/></svg>

After

Width:  |  Height:  |  Size: 160 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38.25 34.92"><title>Artboard 20</title><polyline class="a" points="0.5 0.37 0.5 33.8 37.91 0.37"/></svg>

After

Width:  |  Height:  |  Size: 157 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 616.67 179" style="stroke: #FFCC00; fill: none; stroke-width: 2;"><title>Artboard 4 copy</title><polyline class="a" points="112 130 28 130 70 83 28 36 112 36"/><polyline class="a" points="373.11 130 289.11 130 373.11 36"/><line class="a" x1="487.78" y1="36" x2="487.78" y2="129.98"/><line class="a" x1="435.56" y1="36" x2="435.56" y2="129.98"/><line class="a" x1="127.44" y1="83" x2="221.44" y2="83"/><line class="a" x1="278.89" y1="36" x2="278.89" y2="130"/><circle class="a" cx="122.22" cy="83" r="47"/><circle class="a" cx="226.67" cy="83" r="47"/><circle class="a" cx="383.33" cy="83" r="47"/><circle class="a" cx="540" cy="83" r="47"/></svg>

After

Width:  |  Height:  |  Size: 699 B

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 317.7 395">
<g>
<path id="path3680" class="cls-1" d="M7.55,348.93,87.64,205.28l6.87-92.09,16.93-27.34"/>
<path id="path3684" class="cls-1" d="M101.39,143.43l15.12-86.6-4.12-41.24"/>
<path id="path3686" class="cls-1" d="M112.38,15.59h0l4.81-11.68,18.21,6.53,13.4,45.7-1.72,110,10.53,39.23-7.78,38.88"/><path id="path3688" class="cls-1" d="M148.81,56.14l41.52-34L248.65,1.7,260.31,7l-1,16L199.56,53.7l-37.42,54.92,3.59,7.7"/>
<path id="path3690" class="cls-1" d="M173.66,91.71l40.73-40.2,67.31-29.4,13.73,5.38-1.09,16L228.24,80.42l-37.91,57.35,2.38,13.48"/>
<path id="path3692" class="cls-1" d="M191.09,144.76l43.14-45.39L292,69.14l11,4.12-2.75,15.81L248,125.49,214.3,175l2.75,7.56,33.28-25,55.53-27.07,8.25,3.44.8,13.22-87.35,58.82-42.34,83.79-22.6,12.11-29.11,82.49"/>
<path id="path3694" class="cls-1" d="M163.11,301.9,147,295.23"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 940 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 329.88 393.19"><path id="path3680" class="cls-1" d="M221.35,98.42l9,18.18,14.15,94.49,78.65,109.19"/><path id="path3684" class="cls-1" d="M204.71,10.24,209,28l4.61,38.64,7.71,31.73"/><path id="path3686" class="cls-1" d="M179.41,227.45l-4.51-42.2,9.08-42,.21-59.83L178,39.52l1.94-28.59,13-8.49,11.77,7.79h0"/><path id="path3688" class="cls-1" d="M159.16,114.84l3.14-8.73L120.71,54.93,59.84,26.55l-1.56-16L69.74,4.79l59,18.24L181.7,65.8"/><path id="path3690" class="cls-1" d="M133.67,152.19,133,138.61,90.22,84.49,22.81,50l.42-14.8,12.51-4.74L108.85,60l51.55,51.37"/><path id="path3692" class="cls-1" d="M214.63,383.36l-42-84.64L150.5,288,99.76,211.59,71.33,188.53l-32.74-19.3-31.16-12L6.8,143.82l8.11-3.74,58.42,20.57,34.18,23.76,2.47-7.66-38.3-46.42L15.3,99.55,12,83.86l10.84-4.53,61.65,24.4,49,43.16"/><path id="path3694" class="cls-1" d="M181.23,294.79l-8.58,3.93"/></svg>

After

Width:  |  Height:  |  Size: 927 B

@ -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/

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

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 300 300" style="enable-background:new 0 0 300 300;" xml:space="preserve">
<g id="Layer_2">
</g>
<g id="Layer_1">
<g>
<rect x="141" y="230.2" width="11.1" height="3.3"/>
<path d="M193,106.1c0,0-28.4-8.5-35.3-10.5v21.2H193V106.1z"/>
<path d="M100.1,106.1v10.7h35V95.7C127.8,97.8,100.1,106.1,100.1,106.1z"/>
<path d="M146.4,58.7c-8,0-10,27.5-10.3,33.3h20.8C156.4,85.2,154.2,58.7,146.4,58.7z"/>
<g>
<polygon points="237.8,208.4 157.7,189 157.7,225 237.8,225 "/>
<polygon points="54.6,208.4 54.6,225 135.1,225 135.1,188.9 "/>
</g>
<rect x="144.5" y="186.9" width="4.7" height="42.3"/>
<path d="M136.3,93.2v137.4h20.5V93.2H136.3z M149.8,230.5H144v-44.3h5.7V230.5z"/>
</g>
</g>
</svg>

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

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 300 300" style="enable-background:new 0 0 300 300;" xml:space="preserve">
<path d="M162.3,117.2c0.5-4.4,1-9.4,1-17.2c0-7.1-2.4-10.6-4.4-12.4c-0.7-0.6-1.3-1-1.9-1.3v0.5v-0.5c-1.2-0.6-2.2-0.8-2.4-0.8
c-0.2,0-2.3,0.3-4.4,2.1c-2.9,2.5-4.4,6.8-4.4,12.3c0,7.7,0.5,12.7,1,17.1c0.4,3.6,0.7,6.8,0.7,10.7v6.3h14.1v-6.3
C161.6,123.9,161.9,120.8,162.3,117.2z"/>
<polygon points="147.4,146.8 147.7,146.8 147.7,164.2 147.4,164.1 147.4,173.8 161.6,173.8 161.6,164.1 160.8,164.2 160.8,146.8
161.6,146.9 161.6,134.8 147.4,134.8 "/>
<path d="M147.4,203.5c0,0.1,0.4,9.9,3.3,14.3h6.9c2.5-3.8,3.2-13.5,3.2-13.6l0.7-12.9v-16.8h-14.1V203.5z"/>
<polygon points="160.8,164.5 161.6,164.5 161.6,146.6 160.8,146.6 "/>
<polygon points="147.7,146.6 147.4,146.6 147.4,164.5 147.7,164.5 "/>
<path d="M283.6,155.8l-0.8,0v0C283.3,155.8,283.6,155.8,283.6,155.8z"/>
<g>
<path d="M162,146.6v17.8l120.8-4.7v-4c-10.5,1.1-119.7,5.2-120.5,4.2l120.5-4.2v-7.1L162,146.6z"/>
</g>
<path d="M25.3,155.8c0,0,0.1,0,0.4,0v0L25.3,155.8z"/>
<path d="M147,146.6l-121.3,2.1l0,6.7l120.9,4.2c-1,0.8-113.4-3.5-120.9-3.7v4l121.3,4.7L147,146.6z"/>
</svg>

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" MAINPY="${FLOPPY}/main.py"
PYRUN="python ${MAINPY}" PYRUN="python ${MAINPY}"
MAINPD="${FLOPPY}/main.pd" 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 _ _ _ _ stdbuf -oL -- udevadm monitor --udev -p ${FD} | while read -r -- STATE _ _ _ _
do do

Loading…
Cancel
Save