I wanted to blend old and new Japan via some connecting thread through the composition project. I decided to settle on the koto, a Japanese string instrument, for my principal sound. I got a YouTube video and trimmed it to a singular note in Audacity, then imported it into TidalCycles.

When making the melody for the first act, I tried to incorporate a lot of trills and filler notes as is common in many koto songs by breaking up each note into 16th notes and offsetting high and low pitch sounds. For the visuals, I decided to settle on developing a geometric pattern that felt Japanese as the music progressed. I did this by creating thin rectangles, rotating them, and adding a mask using a rectangle that expanded outwards, revealing pieces of the pattern at a time.

shape(2,0.01,0).rotate(Math.PI/2).repeat(VERT_REP).mask(shape(2,()=>show_1,0).scrollY(0.5))

For the transition, I added the typical Japanese train announcement that signified the shifting of time period, but I didn’t get the transition down as smoothly as I hoped. My initial idea was to add train doors closing and for the whole scene to shift, but I couldn’t get the visuals to work as I wanted to. Looking back, I would add the sound of a train moving and the visuals shifting to create the next scene.

For the second scene, I wanted to show the new era of Japan, aka walking around Shibuya woozy and boozy as hell. I got a video of someone walking through Tokyo, and slapped on color filters as well as distortion. I tried to get hands to better replicate the first person perspective, but I the static png didn’t end up being very good.

src(s0)
  .color(()=>colors[curr_val][0], ()=>colors[curr_val][1], 5)
  .scale(1.05)
  .modulateRotate(osc(1,0.5,0).kaleid(50).scale(0.5),()=>begin_rotate?0.1:0.05,0)
  .modulatePixelate(noise(0.02), ()=>begin_bug?7500:10000000)
  .add(
    src(s1) // za hando
    .rotate(() => (Math.sin(time/2.5)*0.1)%360)
    .scale(()=> 1 + 0.05 * (Math.sin(time/4) + 1.5))
  )
  .modulateScale(osc(4,-0.15,0).kaleid(50),()=>brightness*4) // za warudo
  .blend(src(o2).add(src(s3)).modulatePixelate(noise(0.03), 2000), ()=>brightness)
  .blend(solid([0,0,0]), ()=>(1-total_brightness))
  .out()


I controlled for the modulation amounts via MIDI and added the JoJo time stop sound effect to alleviate and reintroduce tension. I also made the sound slow down and reverse when stopping the music.

  d2 $ qtrigger $ seqP [
    (15, 16, secondMelody 1 0 1),
    (15, 16, secondMelody 2 0 1),
    (15, 16, bass 0 0.5),
    (15, 16, alarm 0),
    (15, 16, announcement 0)
  ] # speed (smooth "1 -1");
  d3 $ qtrigger $ seqP [
    (15, 16, s "custom:8" # gain 1.75 # cut 1), -- stop time
    (18, 19, s "custom:9" # gain 0.75 # lpf 5000 # gain 2 # room 0.1 # cut 1 # speed 0.75) -- start time
  ];
  d4 $ qtrigger $ seqP [
    (18, 23, secondMelody 1 1 1),
    (18, 23, secondMelody 4 1 1),
    (18, 23, bass 1 1),
    (18, 23, alarm 1),
    (18, 23, announcement 1)
  ] # speed (slow 6 $ smooth "-1 1 1 1 1 1");

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>