Posts Tagged ‘Generative’

Recording in Portland and Weymouth

As part of the development for Variable 4 Portland Bill, we’ve been working with musicians local to the Portland and Weymouth area, developing movements which reflect the area’s maritime and social heritage. We’ve been working in the studio of Simon Swarbrick, an astonishingly talented local violinist who also has an astonishingly nice self-constructed recording space.

IMG_6454

Pictured above is Simon performing some of the score fragments we’ve been devising for Variable 4. We have been experimenting with generating parts of the score based on algorithmic processes, to then be displayed on iPad and performed by musician. An an example, one such process takes the gradual directions in wind speed that have taken place in Portland over the past hundred years, and translates these compass directions into modular score parts. This can then be reassembled to produce musical movements portraying different eras of Portland’s weather history — or fed into the system to generate live patterns based on moment-to-moment wind speed detected by the weather station.

IMG_6432

IMG_6450

wind (2008), a sound sculpture that responds to wind patterns in the viewer’s visual field, by @damian0815 http://t.co/yYUsNMcV


weather station (norbert schnell & robin minard, 1995) uses climate sensors and 310 piezos for weather-reactive sonics http://t.co/bJlglbBr


Public beta release of Isobar, a Python library for algorithmic composition

Underlying Variable 4 is a suite of Python code, with components to deal with various different tasks – interfacing with the weather station, navigating the global score, broadcasting data, and so on. There’s one part in particular that we’ve found useful in general usage: the pattern generation code, which can be used to describe, manipulate and generate sequences of musical events.

We’ve finally cleaned this up for public release, and have christened it Isobar, from the notation used in meteorological pressure systems. In this context, it’s a way of notating music, in a concise and flexible manner.

Overview

Isobar is a pure Python library which makes it easy to express musical patterns, and output them through MIDI or (soon) OSC devices. It’s inspired by SuperCollider’s excellent pattern library, which allows patterns to be combined like building blocks to create easily extensible compositions.

To get it: download Isobar from GitHub.

Please note that this is a beta release, meaning that all features and syntax are subject to change.

Examples

To give a taste of Isobar’s approach and capabilities, let’s look at some example code

from isobar import *

seq = PSeq([ 0, 1, 2, 3 ])
seq = PStutter(seq, 2)
seq = seq + PSeq([ 0, 12 ])

for n in xrange(8):
print seq.next()

> 0
> 12
> 1
> 13
> 2

The above creates a simple looping sequence (PSeq) based on increasing integers (or, if used as MIDI outputs, chromatic notes). Each value is repeated once (PStutter), and alternating notes are transposed an octave up. This is then used to output a sequence of numbers.

Note that patterns can simply be added together to transpose values. Many other operators can be applied in similar ways: for example, doing seq * 2 will double every value of a pattern, using lazy evaluation for no additional processor usage.

from isobar import *
from isobar.io.midiout import *

scale = Scale([ 0, 2, 3, 7, 9, 11 ])
degree = PBrown(0, 2, -8, 8, repeats = False)

notes = PDegree(degree, scale) + 60

midi = MidiOut()
timeline = Timeline(160)
timeline.output(midi)

timeline.sched({ ‘note’: notes, ‘dur’: 0.25, ‘gate’: 0.9 })

timeline.run()

This example binds a pattern to a MIDI device, and uses a random walk (PBrown) to play values from a particular Scale. A Timeline object is used to schedule MIDI events at a given BPM, and plays them through the default MidiOut device.

By assigning this pattern to the ‘notes’ value, its output is used to generate a series of pitches. We could assign a separate pattern to the ‘amp’ value, to control the velocity of each note.

Many more examples are available in the isobar distribution on GitHub, with an up-to-date index of pattern objects in the README. We’ll be continuing to work on Isobar extensively over the next few months; see the TODO file for forthcoming developments.

Wind Knitting Factory

Here in our headquarters inside the Variable 4 windmill, we keep an ear to the ground for innovative and engaging weather-related artworks. We’re putting together a collection to publish shortly, but in the meantime, we couldn’t resist mentioning this piece. Merel Karhof’s Wind Knitting Factory is a mechanical device which harnesses wind power to produce a neverending scarf, which is occasionally harvested to produce wearable garments.

windknittingfactory_merelkarhof_copyright

scarves_wind knitting factory_merel karhof_copyright

In a charming touch, the product is linked to the process with a label indicating the date and time taken to knit each garment.

WKM

future city senario

The group’s blog includes a collection of images of urban windmills, and an adaptation of the idea into wearable brooches which convey the air movement created when the wearer moves around.

More:

Talk at dorkbotlondon, 11 May

dorkbot The international dorkbot events are the discerning dork’s destination of choice to hear of the latest tech hobbyism, electronic arts and DIY. We’ll be talking briefly about Variable 4 at this Tuesday’s dorkbotlondon #69, with as much of the weather station as we can carry (which may, admittedly, not be much).

Expect some discussion of algorithms, weather systems, collaborative practices, and unforeseen hardware hiccups.