WCCChallenge: IncompleteRelics

Search for a command to run...

No comments yet. Be the first to comment.
Tunnels Can Lead to A Place

What Tales will be sought?

Converging Entities

Slowly Drifting

Making Experiences through HydraVideoSynth & P5

For this week's Creative Code challenge by @sableRalph : Finished an Unfinished Piece, I decided to go back to my Rubberband Relics Piece, Where I sonified the " Incomplete Relics" in SonicPi from Code written in Python.
Incomplete
Doesn't mean it is over
For it could be as deep
as it can be on top and hover
Finishing the unfinished relics
Can make their eyes stop their blinks
And leave the brain the ability to think
It now has to render
With a quicker time than using Blender
making sure the vibes are tender
as these transactions can be sent back to sender
or the lender
Normal soundscape
Reverse soundscape
50% slow down on soundscape
50% slow down of reverse soundscape
IllestPreacha · IncompleteRelics
List of Possible Instructional Words
'''
List of instructions in the Rubberband TExt to for generative colorscape building for the relics
Green
Yellow
Red
Black
Purple
Orange
Brown
Neutral
Up
Down
Left
Right
Pin
PinConsistent
PinSwitch
Diagonal
PinnerChoice
Short
Long
Medium
Interior
Exterior
Double
Single
Triple
IF no color in line, then follow instructions and choose your own color scheme
if not alot of instructions, be flexible with pin and band execution
read line and flow as such
'''
In the Python Code, there is a random word generator that is embedded in a timer function. After a word is generated, it is sent to SonicPi to be sonified
#external code borrowed for timer: -https://www.geeksforgeeks.org/how-to-create-a-countdown-timer-using-python/
#Import random function , alongside osc functions
import random as rd
from pythonosc import osc_message_builder
from pythonosc import udp_client
# import the time module
import time
with open("RubberBand.txt", "r") as adj: #open and read the text file
IWT = adj.read() #give the file a variable name
IWTUsed = list(map(str,IWT.split())) #individuals words
# define the countdown func.
def countdown(t):
while t:
mins, secs = divmod(t, 60)
timer = '{:02d}:{:02d}'.format(mins, secs)
print(timer, end="\r")
time.sleep(1)
#Random Word Generator being sent to SonicPi
if t % 1 == 0:
sender = udp_client.SimpleUDPClient('127.0.0.1', 4560)
sender.send_message('/pattern1', [rd.choice(IWTUsed), 100, 8, 45])
sender.send_message('/pattern2', [rd.choice(IWTUsed), 100,rd.randint(5,12) , 45])
sender.send_message('/pattern3', [rd.choice(IWTUsed), 100, 8, rd.randint(40,60)])
t -= 1
# input time in seconds
t = input("Enter the time in seconds: ")
# function call
countdown(int(t))
In the code below, we categorized the list of words(seen above) into four arrays and then make sure, we account for each array combination to get sound.
Colors = ['Green','Yellow','Red','Black','Purple','Orange','Brown','Neutral']
Direction = ['Up','Down','Left','Right','Diagonal']
Placement = ['Short','Long','Medium','Interior','Exterior','Double','Single','Triple']
Pins = ['Pin','PinConsistent','PinSwitch','PinnerChoice','Interior','Exterior']
#setting the conditionals rules of what is recieved from the Python Code
live_loop :phase1 do
use_real_time
a, b, c, d = sync "/osc*/pattern1"
with_fx :flanger, mix: rrand(0.1,0.9) do
if Placement.include? a or Direction.include? a
sample :drum_cowbell , rate: 0.5, decay: dice(5) if spread(d,b).tick
end
if Pins.include? a or Colors.include? a
sample :drum_bass_soft , decay: dice(5) if spread(d,b).tick
end
end
end
live_loop :phase2 do
use_real_time
a, b, c, d = sync "/osc*/pattern2"
if Placement.include? a or Colors.include? a
sample :elec_blip , sustain: dice(4) if spread(c,d).tick
end
if Pins.include? a or Direction.include? a
sample :elec_bong, sustain: dice(4) if spread(c,d).tick
end
end
live_loop :phase3 do
use_real_time
a, b, c, d = sync "/osc*/pattern3"
if Colors.include? a or Pins.include? a
with_fx :echo, mix: 0.6, decay: 4 do
sample :tabla_ghe2, sustain: dice(4) if spread(c,d).tick
end
end
if Direction.include? a or Placement.include? a
with_fx :krush, mix: rrand(0.3,0.6) do
sample :tabla_ghe2 , sustain: dice(4), attack: dice(3) if spread(c,d).tick
end
end
end