mac online apple blackjack http://www.euro-online.org

css test

chickenheads

plain text

styled text



HSS8120 – insecurity generator

This self generative audio piece is an experiment in aesthetics. AlsaModularSynth is used to generate a constantly evolving sequence of random minor chords. Audio output is passed through a circuit made from temporary wiring, emergency lighting batteries and exposed speaker cones. The presentation is functional, the incessant burbling and near miss repetition hint at uncertainty and threat.

The work interrogates the near future and draws dark conclusions. Despite the fact that all this is true, the work is no more than an essay, playing with form in the hope that truth may emerge.

HSS8102 – manifesto

It is the nature of manifesto statements to present binary statements. There is an exactitude and certainty implied through the use of definitive language. In responding to the project brief the document presented for assessment takes the notion and pushes it to the extreme. Statements are translated to binary form and presented as a series of ‘1’ and ‘0’.

Under the title of ‘Nothing Matters’ a series of short statements are presented. Each statement suggests multiple meanings, subverting the form, shifting from didactic text to meditation. It can be said that meditation is the art of doing nothing, this then is art which strives to say everything through saying nothing.

in creating this work it was necessary to write a short script to translate ascii text to binary form. The script uses a single line of perl to make the translation


$ echo "ABC" | perl -lpe '$_=join " ", unpack"(B8)*"'
01000001 01000010 01000011

The process can be reversed using this matching perl one-liner.


$ echo 01000001 01000010 01000011 | perl -lape '$_=pack"(B8)*",@F'
ABC

HSS8102 – time for truth

In responding to the project brief for the January assessment, work has focused on the convergence of truth and time. Radio is no longer a linear shared experience. Digital devices allow asynchronous listening; buffering and other factors can delay signal reception for periods of anything up to 20 or 30 seconds. The verity of the Greenwich time signal has been eroded. In an era when we are increasingly aware of the blurring between fiction, speculation and truth, the placing of the time signal in advance of the news is not without significance. If the time signal itself cannot be trusted, haw can we trust anything which follows.

In troubleshooting any device or system it is important to consider events immediately preceding the breakdown. It is suggested that the same is true in the instance of our questioning the verity of news delivery.

As a mechanism to explore these ideas scripts have been written to generate local versions of a variety of time signals. In this first script tones are produced to match thaose of the familiar Greenwich time signal (GTS).


# ====================================
# GTS.sh
# Greenwich Time Signal (GTS)
# Mike Hirst
# Sat 17 Dec 2016 13:28:44 GMT
# ====================================

s="sox -n -p synth 0.1 sine 1k pad 0 0.9 gain -n -3"
l="sox -n -p synth 0.5 sine 1k pad 0 0.5 gain -n -3"
{
play "|$s" "|$s" "|$s" "|$s" "|$s" "|$l"
# sox "|$s" "|$s" "|$s" "|$s" "|$s" "|$l" GTS.wav
} &> /dev/null

This next script produces the tones used on China National Radio.


# ====================================
# CNR.sh
# China national radio time signal
# Mike Hirst
# Sun 18 Dec 2016 14:36:54 GMT
# ====================================

s="sox -n -p synth 0.25 sine 800 pad 0 0.75 gain -n -3"
l="sox -n -p synth 0.5 sine 1600 pad 0 0.5 gain -n -3"
{
play "|$s" "|$s" "|$s" "|$s" "|$s" "|$l"
# sox "|$s" "|$s" "|$s" "|$s" "|$s" "|$l" CNR.wav
} &> /dev/null

This final script recreates the tones used on NHK Television (Japan).


# ====================================
# NHK.sh
# NHK Television (Japan) time signal
# Mike Hirst
# Sun 18 Dec 2016 14:45:08 GMT
# ====================================

s="sox -n -p synth 0.25 sine 1k pad 0 0.75 gain -n -3"
l="sox -n -p synth 3 sine 1k pad 0 3 gain -n -3"
{
play "|$s" "|$s" "|$s" "|$l"
# sox "|$s" "|$s" "|$s" "|$l" NHK.wav
} &> /dev/null

The tones have been used to create a series of public experiments where loops of different lengths are broadcast using a short range FM transmitters. Other elements have been introduced including the 60Hz signal used to synchronize clocks and the telephone speaking clock service.

This work will be presented as part of the HSS8102 assessment on 20th Jan 2017 and also as part of a group exhibition at Hoults Yard, Walker Rd, Newcastle on 23rd February 2017.

HSS8102 – processing (objects and arrays)

The work described here relates to a coding workshop delivered by Tom Schofield. The sketches below show the use of class and array within the processing context.

In this first simple sketch random shapes are generated in a never ending barrage of colour and surprise.


void setup() {
size(255, 255);
frameRate(4);
}

void draw() {
int x = int(random(0, 255));
int y = int(random(0, 255));
int z = int(random(0, 255));
fill(x, y, z);
noStroke();
ellipse(x, y, z, z);
}

This code can be improved though using system variable frameCount and modulo operator to control speed.


void setup() {
size(255, 255);
}

void draw() {
if ( frameCount % 20 == 0 ) {
int x = int(random(0, 255));
int y = int(random(0, 255));
int z = int(random(0, 255));
fill(x, y, z);
noStroke();
ellipse(x, y, z, z);
}
}

In this next sketch the coloured circles are defined using the Ball class definition.


Ball coloured_ball;
int w;
int h;

void setup() {
size(720, 560);
w = width;
h = height;
background(255);
}

void draw() {
if (frameCount % 20 == 0) {
coloured_ball = new Ball(int(random(0, h)), color(int(random(0, 255)), int(random(0, 255)), int(random(0, 255))), int(random(0, w)), int(random(0, h)));
coloured_ball.display();
}
}

class Ball {
int d;
int h;
int x;
int y;
Ball (int diameter, color hex, int xpos, int ypos) {
d = diameter;
h = hex;
x = xpos;
y = ypos;
}
void display () {
noStroke();
fill(h);
ellipse(x, y, d, d);
}
}

In this final example an array is used to limit the number of circles shown.


/*
====================================
bubbles.pde
class/array example
Mike Hirst
2016-12-12
====================================
*/

Bubbles[] bubbles;

void setup() {
size(180, 180);
bubbles = new Bubbles[3];
for (int i = 0; i < 3; i++) {
bubbles[i] = new Bubbles();
}
}

void draw() {
background(255);
for (Bubbles bubble : bubbles) {
bubble.display();
}
}

class Bubbles {
int d;
int x;
int y;
color c;
Bubbles() {
d = int(random(0, 255));
x = int(random(0, 255));
y = int(random(0, 255));
c = color(int(random(0, 255)), int(random(0, 255)), int(random(0, 255)), d);
}
void display() {
noStroke();
fill(c);
ellipse(x, y, d, d);
d++;
if ( d > 255 ) {
d = int(random(0, 255));
x = int(random(0, 255));
y = int(random(0, 255));
c = color(int(random(0, 255)), int(random(0, 255)), int(random(0, 255)), d);
}
}
}

HSS8120 – scraping

Screenshot_2017-01-15_13-24-21

This work was completed in response to a coding workshop delivered by Tom Schofield on 12th Dec 2016. In this exercise the BeautifulSoup Python library is used to extract data relating to air pollution. Taking as it’s source the U.S. Department of State Air Quality Monitoring Program twitter feed information is gathered relating to pm2.5 particle pollution in the Chinese city of Beijing.

Data is filtered and formated then output as a timestampped csv file.


# ====================================
# beijingair.py
# scrape AQI twitter feed
# Mike Hirst
# Sun 15 Jan 2017 02:07:36 GMT
# ====================================

import datetime
import csv
import requests
from BeautifulSoup import BeautifulSoup

url = 'https://twitter.com/beijingair'
response = requests.get(url)
html = response.content

soup = BeautifulSoup(html)
timeline = soup.find('div', attrs={'id': 'timeline'})

data = []
for t in timeline.findAll('div', attrs={'class': 'js-tweet-text-container'}):
if " 24hr" not in t.p.string:
values = []
values = t.p.string.split('; ')
data.append(values)

timestamp = '{:%Y-%m-%dT%H_%M_%S}'.format(datetime.datetime.now())

file = open("beijingair"+timestamp+".csv","wb")
writer = csv.writer(file)
writer.writerows(data)

Sample output is included below:


01-15-2017 21:00,PM2.5,81.0,164,Unhealthy (at 24-hour exposure at this level)
01-15-2017 20:00,PM2.5,69.0,158,Unhealthy (at 24-hour exposure at this level)
01-15-2017 19:00,PM2.5,69.0,158,Unhealthy (at 24-hour exposure at this level)
01-15-2017 18:00,PM2.5,69.0,158,Unhealthy (at 24-hour exposure at this level)
01-15-2017 17:00,PM2.5,59.0,153,Unhealthy (at 24-hour exposure at this level)
01-15-2017 16:00,PM2.5,55.0,149,Unhealthy for Sensitive Groups (at 24-hour exposure at this level)
01-15-2017 15:00,PM2.5,47.0,129,Unhealthy for Sensitive Groups (at 24-hour exposure at this level)
01-15-2017 14:00,PM2.5,42.0,117,Unhealthy for Sensitive Groups (at 24-hour exposure at this level)
01-15-2017 13:00,PM2.5,34.0,97,Moderate (at 24-hour exposure at this level)
01-15-2017 12:00,PM2.5,32.0,93,Moderate (at 24-hour exposure at this level)
01-15-2017 11:00,PM2.5,27.0,82,Moderate (at 24-hour exposure at this level)
01-15-2017 10:00,PM2.5,33.0,95,Moderate (at 24-hour exposure at this level)
01-15-2017 09:00,PM2.5,23.0,74,Moderate (at 24-hour exposure at this level)
01-15-2017 08:00,PM2.5,35.0,99,Moderate (at 24-hour exposure at this level)
01-15-2017 07:00,PM2.5,51.0,139,Unhealthy for Sensitive Groups (at 24-hour exposure at this level)
01-15-2017 06:00,PM2.5,52.0,142,Unhealthy for Sensitive Groups (at 24-hour exposure at this level)
01-15-2017 05:00,PM2.5,50.0,137,Unhealthy for Sensitive Groups (at 24-hour exposure at this level)
01-15-2017 04:00,PM2.5,53.0,144,Unhealthy for Sensitive Groups (at 24-hour exposure at this level)
01-15-2017 03:00,PM2.5,37.0,105,Unhealthy for Sensitive Groups (at 24-hour exposure at this level)

This same code can be used to get data about other cities, including Chengdu and Zhujiang New Town, Guangzhou.

By way of comparison a bash script was written to achieve the same result. In this instance cURL is used to download raw html, which is filtered and formatted using sed.


# ====================================
# beijingair.sh
# scrape AQI twitter feed
# Mike Hirst
# Sun 15 Jan 2017 01:15:59 GMT
# ====================================

url='https://twitter.com/beijingair'
timestamp=$(date +%Y-%m-%dT%H_%M_%S)
csv="beijingair${timestamp}.csv"
{
curl ${url}|sed '/tweet-text\x22/!d;/24hr/d;s/ *\x3c[^\x3e]\+\x3e *//g;s/; /,/g' > ${csv}
} &> /dev/null

Execution times were compared and the bash script was consistently found to be significantly faster.

Schhh…

gated_oscillator

Nov 21st saw a visit to Culture Lab from Ann Rosén and Sten-Olof Hellström from the Stockholm-based Schhh… record label. A collaborative audio piece was developed using Schmitt NAND gates. The gated oscillators were manipulated using a range of different resistive materials, including graphite and knitted yarn.

audio art + language

chickenheads

Also generated through the collaborative instructioning project, this body of work focuses on the dissonance between audio art and language. Starting as a playful investigation using image manipulation and collage, the process resulted in a series which questions the language through which we articulate our understanding of audio art and music.

Though the works may appear frivolous, the intent is one of serious exploration. These works have resulted in a much greater project which has resulted in the design and building of a series of flexible half rack audio modules under the name ‘Passive Devices’. Full description of this will be included in a later posting.

magnitizdat

16.11.08 23.52

Magnitizdat refers the practice common in the former Soviet Union by which sound recordings were copied and shared through underground distribution networks. This practice was referenced in response to the instructioning project previously described.

A small box of assorted buttons and jewelery findings were used to create images which were interpreted using the Virtual ANS Spectral Synthesizer. In it’s original form the instrument, developed by Russian inventor Yevgeny Murzin uses photo-optic methods to control and generate audio tones. In this respect it is not unlike the methods developed by British sound artist Daphne Oram.

For this project a digital version of the original device was used. Audio generated was transferred to magnetic tape and returned in the same box that had contained the buttons and other items.

collaboration

Also begun in mid October, this project looked at collaborative practice. Working as a group of three students we derived a process of instruction and exchange. Each of the three participants wrote a set of instructions, which were exchanged and actioned. The instructions were designed to be open to interpretation. The process being more important than the results.

for my own part I developed a set of wooden sticks with numbers and letters. These could be used to define the starting point for creative investigation through mapping, music or visual design. Instructions were written to accompany the sticks, which became known as CAPsticks.

CAPsticks

In responding to instructions given I developed two significant starting points for future work. These will be described in the next two posts