WCCChallenge: Noise

WCCChallenge: Noise

SynthesizedNoise : An Illest x Metamere collab

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))
  .add(voronoi(1,3.5,()=>(a.fft[1]*2)))
.blend(noise(()=>(a.fft[0]*2)/5,3,5)).out(o1)

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

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