Merge branch 'master' of git.xpub.nl:/var/www/git.xpub.nl/repos/tgc3
commit
548e93d857
@ -1,20 +0,0 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script language="javascript" type="text/javascript" src="libraries/p5.min.js"></script>
|
|
||||||
<!-- uncomment lines below to include extra p5 libraries -->
|
|
||||||
<script language="javascript" src="libraries/p5.dom.min.js"></script>
|
|
||||||
<script language="javascript" src="libraries/p5.sound.min.js"></script>
|
|
||||||
<script language="javascript" type="text/javascript" src="sketch.js"></script>
|
|
||||||
<!-- this line removes any default padding and style. you might only need one of these values set. -->
|
|
||||||
<style> body {padding: 0; margin: 0;} </style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
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 one or more lines are too long
@ -1,267 +0,0 @@
|
|||||||
var carrier; // this is the carrierillator we will hear
|
|
||||||
var modulator; // this carrierillator will modulate the amplitude of the carrier
|
|
||||||
var fft; // we'll visualize the waveform
|
|
||||||
|
|
||||||
var opac;
|
|
||||||
var carrier;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function getRandomArbitrary(min, max) {
|
|
||||||
return Math.random() * (max - min) + min;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function setup() {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
createCanvas(innerWidth,innerHeight);
|
|
||||||
noFill();
|
|
||||||
|
|
||||||
|
|
||||||
//SETING FIRST OSCILLATOR: CARRIER
|
|
||||||
// EXPLANATION FROM WEBSITE: The carrier is typically set at an audible frequency (i.e. 440 Hz) and connected to master output by default. The carrier.amp is set to zero because we will have the modulator control its amplitude.
|
|
||||||
|
|
||||||
var randomnumb = getRandomArbitrary(0, 20);
|
|
||||||
|
|
||||||
console.log(randomnumb);
|
|
||||||
carrier = new p5.Oscillator(); // connects to master output by default
|
|
||||||
carrier.freq(200 + randomnumb); // it sets the frequency of the carrier. AN AUDIBLE ONE.
|
|
||||||
carrier.amp(1);
|
|
||||||
// carrier's amp is 0 by default, giving our modulator total control
|
|
||||||
|
|
||||||
carrier.start();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// create an fft to analyze the audio
|
|
||||||
//an FFT (fast Fourier transform) converts a signal from its original domain (often time or space) to a representation in the frequency domain and vice versa
|
|
||||||
|
|
||||||
fft = new p5.FFT();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function draw() {
|
|
||||||
|
|
||||||
|
|
||||||
//depen de la alçada, la nota TOCADA se sent mes for o menys (volum = amplitud)
|
|
||||||
if(mouseY <= height/2) {
|
|
||||||
|
|
||||||
var ampli = map(mouseY, 0, height, 0.01, 2.02);
|
|
||||||
|
|
||||||
|
|
||||||
}else{
|
|
||||||
|
|
||||||
|
|
||||||
var ampli = map(mouseY, height, 0, 0.01, 2.02);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// change carrierillator frequency based on mouseX
|
|
||||||
|
|
||||||
var modFreq = 0.1;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// si el mouseY és igual o el mateix que la meitat de l'altura, fes aixo. ((DEFINEIX LA AMPLITUD.))
|
|
||||||
if(mouseY <= height/2) {
|
|
||||||
|
|
||||||
var modAmp = map(mouseY, 0, height, 0.01, 2.02);
|
|
||||||
|
|
||||||
}else{
|
|
||||||
|
|
||||||
var modAmp = map(mouseY, height, 0, 0.01, 2.02);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
carrier.amp(modAmp, 0.01); // fade time of 0.1 for smooth fading
|
|
||||||
|
|
||||||
|
|
||||||
// analyze the waveform
|
|
||||||
waveform = fft.waveform();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// drawText(modFreq, modAmp);
|
|
||||||
|
|
||||||
if (mouseIsPressed || (touches && touches.length)){
|
|
||||||
|
|
||||||
opac = 100;
|
|
||||||
var mx = mouseX || (touches[0] && touches[0][0]);
|
|
||||||
if (mx > 0 && mx < width/20 ){
|
|
||||||
|
|
||||||
carrier.freq(220.0);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
|
|
||||||
|
|
||||||
}else if ( mx > width/20 && mx < 2*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(233.08);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
|
|
||||||
}else if (mx > 2*(width/20) && mx < 3*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(246.94);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 3*(width/20) && mx < 4*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(261.63);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}else if (mx > 4*(width/20) && mx < 5*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(277.18);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 5*(width/20) && mx < 6*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(293.66);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 6*(width/20) && mx < 7*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(311.13);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 7*(width/20) && mx < 8*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(329.63);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 8*(width/20) && mx < 9*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(349.23);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 9*(width/20) && mx < 10*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(369.99);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 10*(width/20) && mx < 11*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(392.0);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 11*(width/20) && mx < 12*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(415.3);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 12*(width/20) && mx < 13*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(440.0);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 13*(width/20) && mx < 14*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(466.16);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 14*(width/20) && mx < 15*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(493.88);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 15*(width/20) && mx < 16*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(523.25);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 16*(width/20) && mx < 17*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(554.37);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 17*(width/20) && mx < 18*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(587.33);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 18*(width/20) && mx < 19*(width/20)){
|
|
||||||
|
|
||||||
carrier.freq(622.25);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}else if (mx > 19*(width/20) && mx < width){
|
|
||||||
|
|
||||||
carrier.freq(659.26);
|
|
||||||
carrier.amp(ampli);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//draw a new line
|
|
||||||
stroke(0,0,0);
|
|
||||||
strokeWeight(0.5);
|
|
||||||
|
|
||||||
line(0, height/2,mx, mouseY);
|
|
||||||
line(mx, mouseY, width, height/2);
|
|
||||||
background(255, 255, 255,100);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}else{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// IF MOUSE IS NOT PRESSED
|
|
||||||
if(mouseY <= height/2) {
|
|
||||||
|
|
||||||
opac = map(mouseY, 0,height/2, 100, 0);
|
|
||||||
|
|
||||||
}else{
|
|
||||||
|
|
||||||
opac = map(mouseY, height, height/2, 100, 0);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
background(255,255,255,opac); // alpha
|
|
||||||
// draw the shape of the waveform
|
|
||||||
drawWaveform();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function drawWaveform() {
|
|
||||||
|
|
||||||
|
|
||||||
if(mouseIsPressed){
|
|
||||||
|
|
||||||
stroke(255,255,255);
|
|
||||||
strokeWeight(1);
|
|
||||||
|
|
||||||
line(0, height/2,mx, mouseY);
|
|
||||||
line(mx, mouseY, width, height/2);
|
|
||||||
background(0, 0, 0,100);
|
|
||||||
|
|
||||||
}else{
|
|
||||||
|
|
||||||
stroke(0,0,0,100);
|
|
||||||
strokeWeight(0.5);
|
|
||||||
beginShape();
|
|
||||||
for (var i = 0; i<waveform.length; i++){
|
|
||||||
var x = map(i, 0, (waveform.length)/8, 0, width);
|
|
||||||
var y = map((waveform[i])/8, -1, 1, -height/2, height/2);
|
|
||||||
vertex(x, y + height/2);
|
|
||||||
}
|
|
||||||
endShape();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,46 @@
|
|||||||
|
#! /usr/bin/env python
|
||||||
|
import re, subprocess, random, os
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
devnull = open(os.devnull, 'w')
|
||||||
|
|
||||||
|
# requires: espeak and aplay (alsa-utils) to be installed
|
||||||
|
|
||||||
|
dic={
|
||||||
|
"narrator": "en-us",
|
||||||
|
"Pilot": "m4",
|
||||||
|
"Sensor": "m7",
|
||||||
|
"MC": "m2",
|
||||||
|
"Jag25": "m6",
|
||||||
|
"Unknown": "f1",
|
||||||
|
"Bam Bam 41": "m3",
|
||||||
|
"Safety Observer":"f3"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
f=open("transcripts-drone-attack.txt","r")
|
||||||
|
txt=f.readlines()
|
||||||
|
p= re.compile(r"^(\d\d\:\d\d) \((.*?)\)\: (.*)") # regex for capturing groups: time, character, sentence
|
||||||
|
for line in txt:
|
||||||
|
if p.findall(line):
|
||||||
|
time,char,sentence = (p.findall(line))[0]
|
||||||
|
voice=dic[char]
|
||||||
|
# play time
|
||||||
|
subprocess.call(["espeak", time +" "+char, "-v", dic['narrator'], "-p", "20"], stdout=devnull, stderr=devnull) # narrator speaks: time and character
|
||||||
|
sleep(0.5) #short pause before sentence
|
||||||
|
if "*expletive*" in sentence: #"*expletive*" in sentence is True:
|
||||||
|
sentence_parts=re.split(r"(\*\w+\*)", sentence)
|
||||||
|
for part in sentence_parts:
|
||||||
|
if part == '*expletive*':
|
||||||
|
subprocess.call(["aplay", 'swear.wav'], stdout=devnull, stderr=devnull)
|
||||||
|
else:
|
||||||
|
subprocess.call(["espeak", part, "-v", voice], stdout=devnull, stderr=devnull) # character speaks: his
|
||||||
|
sleep(float(random.randint(1,10))/100)
|
||||||
|
else:
|
||||||
|
subprocess.call(["espeak", sentence, "-v", voice], stdout=devnull, stderr=devnull) # character speaks: his
|
||||||
|
|
||||||
|
#
|
||||||
|
else: # line w/out time or character (narrator)
|
||||||
|
subprocess.call(["espeak", line, "-v", dic['narrator'], "-p", "20"], stdout=devnull, stderr=devnull)
|
||||||
|
sleep(1) # make pause after each text line
|
||||||
|
|
@ -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", line]) # 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(.5) # make pause after each text line
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
#! /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
|
|
||||||
|
|
Loading…
Reference in New Issue