Follow

Follow

WCCChallenge: Noise

SynthesizedNoise : An Illest x Metamere collab

Kofi / Illestpreacha
Â·Feb 12, 2023Â·

• SynthesizedNoisyBits

SynthesizedNoisyBits

For this week's Creative Code challenge by @sableRalph : Noise, Metamere and I decided to team up and use Foxdot for the challenge.

From Metamere:

This week, to do something a little different with the challenge topic of noise, I asked @illestpreacha to collab with me and introduce me to some of the generative music techniques he has been sharing so that we could make some noisy music together. Rather than going full-on noise music style, We kept it a bit milder, but maybe a lot odder.

We passed some python script back and forth to make some algorithmic music, did some jamming and tweaking, and came up with the attached script. It uses the FoxDot library to control a program called SuperCollider for the music synthesis. I used an AI for speech synthesis to read an old stream-of-consciousness poem of mine, and we merged that with the other audio.

Lots of effects were applied in sequence as stuff was passed back and forth, with much more on the second half, with Illest using Sonic Pi, while I used my old standby of Audacity. Finally, illest did video synthesis using Hydra to create the visuals. You can read more about the process here,

Poetry

For this week, poetry was done by Metamere

Foxdot-Python Code

``````from FoxDot import *

import random as rd
import time

# data science libraries

import numpy as np
import pandas as pd

# setting a dataframe with four columns and 20 rows and rconfirming the index
df_numbers = pd.DataFrame(np.random.randint(0, 15, size=(20, 4)), columns=list('ABCD'))
df_numbers = df_numbers.reset_index()

# turning the dataframes into arrays by columns

A_list = np.asarray(df_numbers['A'])
B_list = np.asarray(df_numbers['B'])
C_list = np.asarray(df_numbers['C'])
D_list = np.asarray(df_numbers['D'])

# minimalizing the function to do random ranges if needed
rd.rr = rd.randrange

Scale.default.set(Scale.melodicMinor)
Clock.bpm = 120

def f_range(x, t):  # t is for the timer that will set the sounds
t2 = 0
y = x
while x >= 0:
# countdown timer code
mins, secs = divmod(t2, 60)
timer = '{:02d}:{:02d}'.format(mins, secs)
time.sleep(1)

if t2 > 10:
t -= 1
p1 >> play("x-o{-[o--xx---x]o[-o]}", amp=0.6, pan=-0.25)
p2 >> play("-v-c", amp=[0.45, 1.25], pan=0.25, hpf=100)
if t2 > 20 and t % 3 == 0:
p3 >> play("x-o-", dur=max(0.05, sinvar([0.1 * A_list[x - 1], B_list[x - 1] * 2], 10)), amp=0.65, pan=-0.25)
p4 >> play("s~s~", dur=max(0.05, sinvar([0.2 * C_list[x - 1], D_list[x - 1] * 2], 5)), amp=1.5, pan=0.25)
s1 >> pluck((abs(20 - x * 2), abs(x - 4), 7),
dur=min(max(sinvar([0.4 * x, x * 2], 20), 0.05), 4), amp=0.7, pan=-0.25)
s2 >> pads(P[1:x:3, [1, 3, (5, 7)]] - int(x / 2),
dur=[.25, .75, 1.25 / ((x + 1) / 10), rest(.25)], sus=max(4, A_list[x - 1] / 3),
vib=x, amp=0.05, pan=0.25, drive=0.25, reverb=1, echo=.2, echotime=3)
s3 >> donk((3, abs(C_list[x - 1] - 4), 7), dur=max(0.05, sinvar([0.4 * B_list[x - 1], x * 2], 40)),
amp=0.6, lpf=400, pan=-0.25)
n1 >> noise(P[1:x:3, [1, 3, 5, 7]], dur=[1, 2, 1], sus=[0.5, 1, 2], amp=min(0.2 + t2 / 10 * 0.5, .65),
lpf=1000 * sinvar(0.4 * B_list[x - 1]), pan=0.25, glide=20 - x)
x -= 1
t2 += 2
print(timer + ' ' + str(x))
if x <= 0:
x = y
# p_all.stop()
time.sleep(1)  # pauses the loop for a 1 second

# using the dataframe loop to control the loop
f_range(len(df_numbers.index), 90)
``````

SonicPi Code - Sound Manipulation

``````
live_loop :phase1 do
with_fx :ping_pong, mix: 0.7 do
with_fx :ixi_techno do
sample "C:/Creatuve Code Challenges/Noise/5MInVersion..wav" , rate: [-0.5,0.5,-0.5,1,-1].choose
sleep [8,16,24].tick
end
end
end

live_loop :phase2 do
with_fx :ping_pong, mix: 0.7 do
with_fx :ixi_techno do
sample "C:/Creatuve Code Challenges/Noise/5MInVersion..wav", beat_stretch: [1,2,0.5,1].choose
sleep [24,48].tick
end
end
end

live_loop :phase3 do
with_fx :vowel, mix: 0.32 do
with_fx :gverb do
sample "C:/Creatuve Code Challenges/Noise/5MInVersion..wav", pitch_stretch: 8
sleep [72,144].tick
end
end
end

live_loop :normal do
with_fx :echo do
sample "C:/Creatuve Code Challenges/Noise/5MInVersion..wav"
end
sleep sample_duration "C:/Creatuve Code Challenges/Noise/5MInVersion..wav"
end
``````

SonicPi Code - Vocal

``````
live_loop :phase1 do
with_fx :flanger, mix: [0.1,0.3,0.4].choose do
with_fx :ping_pong, mix: 0.3 do
sample "C:/Creatuve Code Challenges/Noise/synthesized_audio_-_WaveWordflow.wav" , rate: [0.85,1,0.75].choose
sleep sample_duration "C:/Creatuve Code Challenges/Noise/synthesized_audio_-_WaveWordflow.wav"
end
end
end

live_loop :phase2 do
with_fx :echo, mix: [0.1,0.3,0.4].choose do
with_fx :ping_pong, mix: 0.1 do
sample "C:/Creatuve Code Challenges/Noise/synthesized_audio_-_WaveWordflow.wav" , rate: [1,0.85,1,0.75].choose
sleep (sample_duration "C:/Creatuve Code Challenges/Noise/synthesized_audio_-_WaveWordflow.wav") / 2
end
end
end
``````

Hydra Code

``````osc(5,0, () => (a.fft[0]*2))
.blend(noise(1,3.5,()=>(a.fft[1]*2)))
.blend(noise(()=>(a.fft[0]*2)/5,3,5)).out(o0)

osc(5,0, () => (a.fft[0]*2))