MJ and I had a great time playing around with sound together, and particularly the musicality and rhythm that can be derived from speech.

We used the loopy drum example as our starting point (it’s also got some Cellblock Tango vibes) and each recorded a short clip — me an English poem and she a piece of personal writing in Chinese — as well as a series of words that jumped out at us from that text or just felt fitting. We were struck by the tonal shifts in our respective languages; even just from looking at the sound files before importing them into p5, the waveforms are significantly different in terms of pattern and spread.

At first we tried adding tones with a couple of oscillator objects, but ultimately found that that was just too much going on — I’ve been thinking of your feedback from the other week about focusing a given piece. In order to add texture and (hopefully) avoid the WALL OF SOUND feeling, we used the pan() function to make the tracks pop more distinctively and feel like they’re coming from different places. The main text stays at 1, while the six sounds in the array are each assigned a random value between -1 and 1 each time the piece runs; we picked a seed that felt relatively balanced yet with a feeling of some surprise.

https://editor.p5js.org/alannabean/sketches/ABbwA5Qlm

Descriptive words: lulling, bouncy, spatial

//Text from Tin Bucket by Jenny George, January 2023
//and by MJ Zhou

let sounds = [];
let poem;

// Load all the sounds
function preload() {
  for (let s = 0; s < 6; s++) {
    sounds.push(loadSound('sound' + s + '.m4a'));
  }
  poem = loadSound('poem.m4a');
}

function setup() {
  createCanvas(windowWidth, windowHeight);
  //pan is fixed for main text
  poem.rate(0.95);
  poem.pan(1);
  poem.amp(10);
  poem.play();

  randomSeed(10);
}

function draw() {
  if(poem.isPlaying()){
  //pan is random for each phrase in the array
  let beat = 45;
  for (let s = 0; s < 6; s++) {
    if (frameCount % (beat * (s + 1)) == 1) {
      sounds[s].rate(0.95);
      sounds[s].pan(random(-1,1));
      sounds[s].amp(10);
      sounds[s].play();
      }
    }
  } 
}

“Using the random algorithm on different corpuses of text can give you information about the nature of that text.” - Mimi

The string is splitting on the line break when it comes to autopopulating an array;