NaPoWriMo+GenMo2025_Haiga3

Table of contents

DotsFlippage

For the 12th Poem of NaPoWriMo/ NaPoGenMo 2025, DotsFlippage is layered by TixyLand & SonicPi code. The output is inspired by the Haiga, which are illustrations accompanied by Haiku poems.

Poem

Dots Flopping Flipping
Bursting with Hope, But the Truth
Is in the Blinking

Video

Code

TixyLand

pow((y/i+t)|(x/y)*i,sin(x))&hypot((sin(t)/i,cos(y/x)*t))

SonicPi

#remixed another beat , adding more elements through the rotations arrays and adding more synths and sounds
use_bpm 20
n = ring(:b3,:c4,:c5,:c6)

#my arrays of effects, synths, samples
Effects_Swap1 = [:ixitechno, :reverb, :panslicer]
FlavourRotation = [:Pretty_bell,:prophet,:piano,:dpulse]
PercRotation = [:bd_pure, :perc_snap, :bd_haus]
bdRotation = [:bd_haus, :bd_fat, :bd_gas, :bd_808]
DrumHardRotation = [:drum_heavy_kick,:drum_snare_hard,:drum_tom_hi_hard]

#counters
w = 0
x = 0

#liveloop commences
live_loop :bassflow do
  with_fx :flanger, mix: rrand_i(0.1,0.9) do
    with_fx :gverb, mix: [0.1,0.2,0.3,0.2,0.1].tick do
      use_random_seed (Time.now.to_i) / 3
      use_bpm 120 / (dice(4)+1)
      if one_in(2)
        sample :drum_bass_hard
        sleep 0.5
      else
        sample :drum_bass_soft
        sleep [0.25,1].choose
      end
    end
  end
end


live_loop :IslandFlavour do

  use_random_seed Time.now.to_i

  with_fx Effects_Swap1[rand(3)] do

    use_bpm 120 / (dice(4)+1)
    use_synth FlavourRotation[rand(4)]
    x += 1
    if (w % 4 == 0)
      play n.tick, on: spread(5,12).look, release: (1.0/24), pan: rrand(-0.8,0.8)
      sleep [(1.0/24),0.5,0.75].choose
    else
      play n.tick, on: spread(11,24).look, release: (1.0/24), pan: rrand(-0.8,0.8)
      sleep [(1.0/24),0.75].choose
    end
    # end
  end
end


live_loop :PercFlavour do

  use_random_seed Math.cbrt(Time.now.to_i)

  x += 1
  if (x % 4 == 0)
    sample PercRotation[rand(3)] if spread(5,12).tick
    sleep [(1.0/24),0.35].choose
  else
    sample PercRotation[rand(3)] if spread(5,8).tick
    sleep [(1.0/24),0.75,0.35].choose
  end
end




live_loop :flow do
  with_fx :ping_pong do
    sample bdRotation[rand(4)]if spread(7,24).tick
      sleep [(1.0/24),0.5,1].choose
    end
  end



  live_loop :startingline do
    sample bdRotation[rand(2)], rate: 1
    sleep 0.5
    4.times do
      sample DrumHardRotation[rand(4)]
      sample [:drum_bass_hard,:elec_blip,:glitch_robot2,:guit_em9].choose, rate: dice(6) * -1
      sample [:drum_bass_soft,:elec_chime,:glitch_robot,:perc_snap2,:perc_till].choose, rate: dice(6) * -1
      sleep [(1.0/24),0.75,1.25].choose
    end
  end
0
Subscribe to my newsletter

Read articles from Kofi / Illestpreacha directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Kofi / Illestpreacha
Kofi / Illestpreacha