WCCC_Knotwork

WCCC_Knotwork

Knotted Code

KnottedTwirls

For this week's Creative Code challenge by @sableRaph:"Knot Work", KnottedTwirls is coded in LiveCodeLab & SonicPi,

Knotted Elements

  • Shapes are knotted within each other to make the structures seen on the screen

  • Follows the mathematical knots shape especially the knot for 7

-https://en.wikipedia.org/wiki/Knot_theory#/media/File:Knot_table.svg

Sound Design

For the 13th day of #MinaCoding2024 : "Fluid" , HoneyMerlot takes the Colorscape: [colorscape.illestpreacha.com/dipincode-soni..] of turning food into colour then into sound by turning the fluids of Honey & Merlot into a sonification. The sounds are supposed to take into the labour that is done to make these fluids.

Link to Audio: https://blog.illestpreacha.com/mina2024fluidhoney

Poem

Knotted Laces
Knot in Places
Knotting phases
That knot by pacing
And release by spacing

Video - https://youtu.be/m0Kzni_r8jU

Code

LiveCodeLab

turns = time % 7  + 4
detail = (time % 33 + 1) * 12
speed = 0.4

simpleGradient maroon,orange,yellow
scale 1 / ( time % 8 + 3)
rotate 15 - (time % 6) ,3 * (time % 4 + 1), 1

time % 5 + 2 times with i
    rotate Math.cbrt(time % 17), 
    time % 3 + 2 times with i
        move i , i , i * 2
            detail times with i
                rotate 0, 0, (2 * pi) / detail
                move tan(time), cos(time), sin(time)
                    rotate (turns * i * pi) / detail + (time * speed), 0, 0
                    if time % 30 < 10
                        animationStyle motionBlur 
                        fill red
                        stroke black
                            peg 0.25, Math.sqrt(Math.cbrt(0.25 * i)), 0.25
                    else if time % 30 > 20
                            rect 0.25, Math.sqrt(Math.cbrt(0.25 * i)), 0.25
                    else
                        fill red
                        stroke white
                        box 0.25, Math.sqrt(Math.cbrt(0.25 * i)), 0.25

SonicPi

#reading of the DipInCodeFirstService
#for csvs larger than 10 mbs use the for reach


require 'csv'

#naming the Dataset DipInCode and going to read the file
Dip = CSV.parse(File.read("C:/Colorscape/DipInCode/SonicPi_CodeBase/Model/DipInCode_FirstService.csv"), headers: true)

#Getting the Ingredients
Honey = Dip[3]
Merlot = Dip[24]

#Dip[foodname][column].to_f , need to.f as it is to float

if Time.now.to_i % 2 == 0


  with_fx :vowel do
    live_loop :Merlot1 do
      use_random_seed Time.now.to_i / 2
      use_bpm Merlot["Red"].to_f
      sample :sn_dub, rate: dice(Merlot["Yellow"].to_f/Merlot["Key"].to_f)  if spread(Merlot["Blue%"].to_f,Merlot["Green%"].to_f).tick
      sample :ambi_dark_woosh,rate: rrand(Merlot["y2"].to_f,Merlot["Red"].to_f/Merlot["Blue"].to_f)  if spread(Merlot["H-Lab1"].to_f,Merlot["CIE-L"].to_f).reverse.mirror
      sleep [Merlot["x2"].to_f,Merlot["Yellow"].to_f/Merlot["Mangeta"].to_f,Merlot["Saturation2"].to_f/Merlot["Lightness"].to_f].choose
    end
  end

  with_fx :ixi_techno do
    live_loop :Honey do
      use_random_seed Time.now.to_i
      use_bpm Honey["Red"].to_f
      with_fx :reverb do
        sample [:perc_bell,:elec_bell,:loop_electric].choose, rate: rrand(Honey["y2"].to_f,Merlot["Red"].to_f/Merlot["Blue"].to_f) if spread(Merlot["H-Lab1"].to_f,Merlot["CIE-L"].to_f).reverse.mirror
        sleep [Honey["Red%"].to_f,Honey["Green%"].to_f/Honey["Red%"].to_f].choose
      end
    end
  end
end

if Time.now.to_i % 3 == 0

  with_fx :gverb do
    live_loop :Merlot3 do
      use_random_seed Time.now.to_i / 4
      use_bpm Merlot["Green"].to_f
      sample :elec_blip, rate: dice(Merlot["Yellow"].to_f/Merlot["Key"].to_f)  if spread(Merlot["Blue%"].to_f,Merlot["Green%"].to_f).tick
      sample :ambi_dark_woosh,rate: rrand(Honey["y2"].to_f,Merlot["Red"].to_f/Merlot["Blue"].to_f)  if spread(Merlot["H-Lab1"].to_f,Merlot["CIE-L"].to_f).reverse.mirror
      sleep [Merlot["x2"].to_f,Merlot["Yellow"].to_f/Merlot["Mangeta"].to_f,Merlot["Saturation2"].to_f/Merlot["Lightness"].to_f].choose
    end
  end

  with_fx :distortion do
    live_loop :Honey2 do
      use_random_seed Time.now.to_i / 5
      use_bpm Honey["Red"].to_f
      with_fx :reverb do
        sample [:drum_bass_soft,:elec_chime,:glitch_robot,:perc_snap2,:perc_till].choose, rate: rrand(Honey["y2"].to_f,Merlot["Red"].to_f/Merlot["Blue"].to_f) if spread(Merlot["H-Lab1"].to_f,Merlot["CIE-L"].to_f).reverse.mirror
        sleep [Merlot["x2"].to_f,Merlot["Green%"].to_f/Merlot["Blue%"].to_f].choose
      end
    end
  end
end