[icm final] Chinese poetry machine

Exploring Chinese poetry as a system, Chinese Poetry Machine is a visualization and sonification of poetry rhymes and rhythms.

With Kevin He, Vivien Kong.

click photo to view interaction

I’ve been thinking a lot about ancient Chinese poetry lately, and how it was crucial to forming my cultural identity growing up. I had a one of my city’s best Chinese literature teachers in high school, a smiley, Confucius-loving, old-fashioned man in his 60s, who was very caring and knowledgeable, but always jokingly criticized me for being too “westernized”. To him, the understanding of “Chinese traditions” is specifically related to a Chinese context and experience. I kept looking back into those historical texts I learned and recited, wondering about the specificity of my literary culture (at the same time angry at cultural appropriation, it’s very complicated).

After discussing with Vivien & Kevin, we realized this is something all of us shared: a state of in-between among two cultures, and a curiosity to carry through, bridge and translate the similarities and differences of our bilingual experiences. Finding some sort of system to poetry that transcends language barrier seems like a challenging — but exciting — place to start.

made designs to figure out best way to present poetry…

This specific text I selected is called 声律启蒙 / “sound meters in poetry”, written by Qing dynasty educator Che Wanyu as a textbook for young children to learn rhymes and rhythms in couplets and poetry, which were crucial parts of Chinese literature at the time. It used common characters, words, and idioms, finding pairs that match in character number, meaning, sounds, and tones, arranging into lines that rhyme. When reading out loud, there is this very specific rhythm due to the matching characters, and tonality that flows based on rhymes and tones.

In order to recreate that feeling of reading poetry out load, I first altered the 16 step sequencer I made for the last assignment into a much longer one: still 16 steps, but 7 lines in total now. It was still just a matter of two nested for loops. In addition to using frameCount to move the highlighted block (the “beat”), I also found the last grid to stop the loop.

// go through each grid
let o = frameCount % 8
    if (o === 0){
      beatx = beatx + 1;
      // find the end of poem, no repeat
      if ( beatx === 16 ) {
        if ( beaty === 6 ){
          noLoop();
          }
        beatx = 0;
        beaty += 1;
        }
      playSynth();
     }

version one code is here

Next, we wanted to implement the variety of sound in tones. In modern standard Mandarin there are 4 tones, but it’s different than the 4 tones in the past — Vivien is from a Cantonese-speaking area, and confirmed that poetry in Tang & Song Dynasty sounds more similar to Cantonese than Mandarin.

In order to deviate from that confusion, an easier way is to use a specific tonal system for poetry, 平 (ping) and 仄 (ze), which is related to the 4 tones but not completely. Generally speaking, ping are flatter, brighter, more consistent sounds, and the ze often change tonality and tend to sound a bit lower. The harmony of ping and ze is crucial in poetry writing.

Kevin & Vivien helped with identifying and defining arrays for ping sounds, ze sounds, symbols (the black circles represent…kind of an equal sign), rhymes (all also in ping sounds) and blank spots. There could’ve definitely been better ways to find them than hand picking array positions…

We assigned different colors to those arrays, as well as different sounds. We gave a brighter monoSynth note (E4) to the ping sounds, and a lower monoSynth note (G3) to the ze sounds, and a polySynth that is a boring C major chord for the rhymes. We also almost forgot to leave the blank spaces silent!

Ideally I’d like the sounds to be more dynamic and interesting, but polySynths don’t seem to work well with the fast speed of new notes triggered. I tried ADSR but it didn’t sound great either. Another bug we’ve yet to fix is that it refuses to start from the very top grid. It seem to be already on the first grid when started, and just skips over to the second.

Here‘s the final sketch!

Leave a Reply

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