Zade Tuaima
Zade
Tuaima
➔
In April 2023, I was invited to curate the Bristol Boilerroom at SWX. We brought with us a host of up-and-coming talent, including Bristol locals Lily Huu and PHIA500, Eastern Margins' JD X and The Kaleidoscope veteran, Phasmid. This was combined with the brief of 'DIY', where I worked to create a stack of 8 custom CRT oscilloscopes along with a circuit bent video processor, providing visuals all in synchronisation with the DJ's. The project allowed me to use skills and technologies including:
The circuit bent video processor was built by short circuiting the circuit board, creating new electrical pathways that resulted in the processor creating glitchy iridescent visuals. Many of these visuals may be rather tame, like a blur or slight colour change, but combined they can create vibrant colours and stable distortions which result in something quite beautiful. A vacrol, a simple combination of an LDR and LED, was also placed in the circuit so the visuals could be controlled via an audio input to make the visuals audio reactive, one for both low and high frequencies as seen below.
The modified CRT TV's were made by modifying the signals being fed into the cathode ray tube. Where the tube would usually receive encoded video signals for horizontal and vertical scans to produce an image, it is instead highjacked, so the horizontal scan lines are cut and the vertical input now has an amplified audio signal being fed into it, allowing the tube to paint a transverse wave onto the screen resulting in the wave you see. A small magnet is also placed on the tube to disperse the electrons as they hit the phosphor coated screen, resulting in a wave which is split into it's RGB components. A small digital amplifier is used to amplify the audio, with easy access inputs placed into the back of the TV's.
Altogether the project was a success, with no technical difficulties during the night as a result of extensive testing of the equipment and thorough logistical planning beforehand, staying within budget despite the complexity of the equipment needed. Audience behaviour was also considered, with cabling being hidden to prevent it from being damaged and raising the TV's so they could be seen in a room filled with 600 people.
The Kaleidoscope 2021 was the second edition of our festival, bringing our iconic maze layout to the forefront of the event. Working in a team of 3 as the Site Manager, we filled with 2 stages and 6 different art areas curated by ourselves and friends, the 2 day event hosted live musicians, workshops, talks and the freshest DJ's from the UK's electronic music scene.
Built over a week, we constructed the maze with 300 fencing panels adorned with artwork ready for the 400 person crowd, battling rain and hail to make the event a success. Working on a budget and with limited professional experience I had to learn a multitude of new skills, including:
The event was a massive learning experience, dealing with a variety of issues including power limitations and poor medical staff. This taught us so much going forward with other events, but also showed that doing an event of this scale is possible. Whilst things did go wrong we were always able to resolve them in a timely manner and without indicating to the attendees that something was going wrong.
The third edition of our intimate 500 capacity festival in the heart of the Wiltshire countryside. Our biggest lineup yet, featuring DJs from across the spectrum of the electronic music scene, including Dr Banana, LUXE, Riz La Teef, Papa Nugs, Napes, DJ Love and Sophia Violet. Our two main stages were hand built, with one being converted from a disused school bus. We also invited our good friends at Aurora Sound to host their own stage spotlighting their network of female, non-binary and LGBTQ+ talent.
Hosted on the same site, I built upon the skills I had learnt the previous year leading the team as the festival director prioritising stage/set design and an increased focus on workshops and talent as well as adding a third day. The build this time took 2 weeks and only involved a core team of 3, managing a team of 20 friends lending their expertise from erecting safe structures to sound checks and proper audio setup. Whilst this was the 3rd year, the scale of the event was much larger and with my new role this meant longer hours and more work due to applying for a festival license that we previously did not need. This led to new roles and responsibilities including:
The workload meant 20+ hour days during the event, however we managed to succeed in ensuring the festival ran smoothly with no incidences of power shutting off or people getting injured. The final night brought a torrential thunderstorm, something which we had not anticipated with the weather forecasting. This led to the site being partially flooded and meant we had to think on our feet to waterproof sections we did not anticipate would need waterproofing, eventually managing to ensure all the sound equipment was watertight through tarps, tents and elevating amplifiers. Whilst it proved extremely stressful achieving this, it meant a very memorable night for the attendees, providing a background of techno and lightning to end the 3 days.
Alter festival was created by myself out of a desire to craft an experience that provides an escape from the alienation + rampant individualism of modern society, through fostering a sense of community via workshops, yoga classes, supper clubs, pub quizzes and much more. We curated the lineup to better represent the wider electronic music community, with female, POC and LGBTQ+ Dj's at the forefront of our programme.
The theme surrounding the event was based around synesthesia where we tried to link different senses and forge relationships between them. This was to be done though interactive installation pieces around the event and creative set design, from planning a stage modelled around a Tesco to an oscilloscope arcade machine that plays musical waveforms instead of games.
Unfortunately due to current climate of starting an independent festival in 2024, from operational costs to the cost of living crisis warranting last minute ticket sales, we had to cancel a month before the event. However heartbreaking this was, I still wanted to share the thought process, designs and prototypes created in preparation.
The 'Synth box' was conceptualised to allow attendees to visualise live waveforms as a way to experience music/sound through a visual medium. The design is based around an arcade machine, except instead of games you play a modified CRT TV turned into an oscilloscope controlled by a synthesiser. The synthesiser (schematic below) is made up of an LFO, envelope and filter based on the Arduino mozzi library. Audio signals are sent from the Arduino, through an amplifier and into the TV where the original encoded video X/Y inputs have been modified to take audio signals producing a transverse wave on the TV, like the one seen in my boilerroom project.
#include <MIDI.h>
#include <MozziGuts.h>
#include <Oscil.h>
#include <mozzi_midi.h>
#include <ADSR.h>
#include <LowPassFilter.h>
#include <AutoMap.h>
#include <tables/saw2048_int8.h>
#include <tables/square_no_alias_2048_int8.h>
#include <tables/cos2048_int8.h>
#include <StateVariable.h>
#include <mozzi_rand.h>
Oscil<COS2048_NUM_CELLS, CONTROL_RATE> kFilterMod(COS2048_DATA);
StateVariable <NOTCH> svf;
#define LFOratePot A1
AutoMap LFOratePotMap(0, 1023, 40, 750);
#define LFOresPot A0
AutoMap LFOresPotMap(0, 1023, 40, 180);
LowPassFilter lpf;
MIDI_CREATE_DEFAULT_INSTANCE();
#define WAVE_SWITCH 2
#define LFO_ON_OFF_SWITCH 3
#define atkPot A5
AutoMap atkPotMap(0, 1023, 0, 3000);
#define dkyPot A4
AutoMap dkyPotMap(0, 1023, 0, 3000);
#define cutoffPot A2
AutoMap cutOffPotMap(0, 1023, 20, 250);
#define resPot A3
AutoMap resFreqPotMap(0, 1023, 40, 210);
#define CONTROL_RATE 128
Oscil<SAW2048_NUM_CELLS, AUDIO_RATE> oscil1;
Oscil<SQUARE_NO_ALIAS_2048_NUM_CELLS, AUDIO_RATE> oscil2;
ADSR<CONTROL_RATE, AUDIO_RATE> envelope;
#define LED 13
void HandleNoteOn(byte channel, byte note, byte velocity) {
oscil1.setFreq(mtof(float(note)));
envelope.noteOn();
digitalWrite(LED,HIGH);
}
void HandleNoteOff(byte channel, byte note, byte velocity) {
envelope.noteOff();
digitalWrite(LED,LOW);
}
void setup() {
pinMode(LED, OUTPUT);
MIDI.setHandleNoteOn(HandleNoteOn);
MIDI.setHandleNoteOff(HandleNoteOff);
MIDI.begin(MIDI_CHANNEL_OMNI);
envelope.setADLevels(255, 64);
oscil1.setFreq(440);
kFilterMod.setFreq(1.3f);
pinMode(WAVE_SWITCH, INPUT_PULLUP);
pinMode(LFO_ON_OFF_SWITCH, INPUT_PULLUP);
startMozzi(CONTROL_RATE);
}
void updateControl(){
MIDI.read();
envelope.setTimes(
atkPotMap(mozziAnalogRead(atkPot)),
60000,
60000,
dkyPotMap(mozziAnalogRead(dkyPot))
);
envelope.update();
lpf.setResonance(resFreqPotMap(mozziAnalogRead(resPot)));
lpf.setCutoffFreq(cutOffPotMap(mozziAnalogRead(cutoffPot)));
int LFOrateVal = LFOratePotMap(mozziAnalogRead(LFOratePot));
int LFOresVal = LFOresPotMap(mozziAnalogRead(LFOresPot));
if (digitalRead(LFO_ON_OFF_SWITCH) == HIGH) {
if (rand(CONTROL_RATE / 2) == 0) {
kFilterMod.setFreq(LFOrateVal / 64);
}
svf.setCentreFreq(2200 + kFilterMod.next() * 12);
svf.setResonance(LFOresVal);
} else {
svf.setCentreFreq(0);
svf.setResonance(200);
}
oscil1.setTable(digitalRead(WAVE_SWITCH) == HIGH ? SAW2048_DATA : SQUARE_NO_ALIAS_2048_DATA);
}
int updateAudio() {
int asig = (envelope.next() * oscil1.next()) >> 10;
int asigSVF = svf.next(asig);
int asigLPF = lpf.next(asigSVF);
return asigLPF;
}
void loop() {
audioHook();
}
The DJ pressure board was a concept for an alternative way of playing with music loops through group interaction, rather than through a singular person on DJ decks. 8 different pressure plates are set up through an Arduino, and then sent to a raspberry pi with a python script that plays 8 predetermined loops of layers of a song, where if all 8 pressure plates are activated it plays the entire song in full.
import pygame
import sys
pygame.init()
pygame.mixer.init(frequency=44100, size=-16, channels=2, buffer=512)
loop1 = pygame.mixer.Sound('/python/breaks2.ogg')
loop2 = pygame.mixer.Sound('/python/wobble1.ogg')
loop3 = pygame.mixer.Sound('/python/wobble2.ogg')
loop4 = pygame.mixer.Sound('/python/vocal.ogg')
loop5 = pygame.mixer.Sound('/python/percussion.ogg')
loop6 = pygame.mixer.Sound('/python/hihats.ogg')
loop7 = pygame.mixer.Sound('/python/breaks3.ogg')
loop8 = pygame.mixer.Sound('/python/melody.ogg')
channels = [pygame.mixer.Channel(i) for i in range(6)]
loops = [loop1, loop2, loop3, loop4, loop5, loop6, loop7, loop8]
for channel, loop in zip(channels, loops):
channel.play(loop, loops=-1)
channel.set_volume(0)
def toggle_mute(channel):
if channel.get_volume() > 0:
channel.set_volume(0)
else:
channel.set_volume(1)
def main():
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if pygame.K_1 <= event.key <= pygame.K_6:
toggle_mute(channels[event.key - pygame.K_1])
elif event.key == pygame.K_q:
running = False
pygame.quit()
sys.exit()
if __name__ == "__main__":
main()
Controlled with a MIDI keyboard, the Luminator allowed the attendee to visualise what they were playing through uplighters placed at the bottom of a dozen trees within a forest, fed through a pre-set synthesiser. Whenever the attendee hit a key or chord, a corresponding uplighter(s) would activate illuminating the surroundings with an array of colours.
Touch designer was also utilised to produce powerful visualisations that were to be found projected throughout the site. Glitch style visuals were made from a combination of feedback, displacement, transform and noise modules, with audio reactivity being achieved by isolating low and high frequencies through math and filter modules, then feeding that data into various noise modules. The person capture visualisation was created by combining chroma, edge, blur and level modules, with those being adjusted depending on the background and lighting levels.