Category Archives: Compositions

JNNJ (2016) – for percussion duo and computer

Program Notes

JNNJ was commissioned and premiered by Hunter Brown and Louis Pino in 2016. The piece is inspired by the life and dynamics of my family. The title is a combination of the first letters of mom, dad, and two sons. 

Technical Needs

  • One computer with a DAW or Max. A Logic Pro X session is provided, but any DAW will work. The tape part can also be played with the provided Max patch. 
  • Stereo sound system 
  • Two headphones for click tracks 
  • An audio Interface with four separate outputs 
  • TapeL.aif should be routed to output 1, connected to the left speaker 
  • TapeR.aif should be routed to output 2, connected to the right speaker 
  • ClickTrackL.aif should be routed to output 3, connected to Perc1’s click track 
  • ClickTrackR.aif should be routed to output 4, connected to Perc2’s click track 

Performance Needs

  • Two percussionists with a snare drum and a large cymbal for each performer. 
  • Both performers use brushes for the entire piece. 
  • Perc1 stands close to the left speaker, and Perc2 stands close to the right speaker

Performance Instruction

  • Each performer gets his/her own click track. The click tracks run in various tempi and over the entire piece. Each performer should follow his/her own click track. 
  • Interpret the score like a jazz chart. Improvise in the notated style (funk and swing). 
  • Pay attention to the pitch of the click track to hear the section changes. 
  • Section-specific notes: 
    • S1: The tape part will fade in at around the 20-second mark.
    • S2: Perc1 transforms the rhythmic pattern to a swing (indicated as “target rhythm”) while slowing down. 
    • S3: Perc2 transforms the rhythmic pattern to a more energetic and busy funk rhythm while slowing down. Listen for the white noise cue for the next section. 
    • S4: Both Perc1 and Perc2 trade off solo while speeding up. The trade offs will gradually overlap with each other. Listen for the white noise cues to play uneven brush sweep on cymbals. 
    • S5: Both parts will get significantly faster. When the tempo becomes too fast, freely improvise with great energy. Increase the use of cymbals throughout the section. 
    • S6: Both Perc1 and Perc2 play energetic cymbal improvisation while slowing down. Accompany the tape part after the click track stops. At the end of the fixed part (7:00), create a quiet, windy sound by swinging the brush in the air.

Composing Click Track

A computer is excellent at doing precise tasks. It is a good tool for creating music that needs precise control. I can ask a computer to make a click track from 120BPM to 150BPM in 2 minutes, and it will do so without a hitch. In JNNJ, I used the precision of a computer to create a percussion duet featuring continuously changing tempo.

JNNJ requires each percussionist to follow their assigned click track. The tempi of the click tracks change constantly, asynchronously with each other. The performers are asked to follow the click track while improvising according to the score. To realize this idea, I made a click track with distinct features.

  • The click track gradually but precisely changes at a given duration. The performers listening to the click track should feel comfortable adjusting the tempo while reading the score.
  • To aurally cue the section changes, the pitch of the click changes in the click track. The notes are in harmony with the fixed media part.
  • The click tracks play unpitched count-in beats for the parts where a sudden or fast change is needed. 
  • The performers also read the click tracks in their score. The unstemmed quarter notes in the computer part indicate the pitch of the click tracks. Most of the fixed media part is described in words in the score.

The click tracks and fixed media parts are coded and rendered in SuperCollider. The audience does not get to hear it, but I think the most distinguishing feature of JNNJ is the click track. The fixed media part is simple in terms of timbre, so that the audience can focus on the duel of percussionists marching in different beats.

Refinement

The palindromic approach to tempo change (one part goes from X BPM to Y BPM while others go from Y BPM to X BPM at the same time) was previously explored in a fixed media piece called Cross Rhythms. Prior to that piece, I also explored palindromic timbre in a few other fixed media pieces. The third movement of Sound Mobile sounds exactly the same when played forward and backward.  Multiple and varied attempts at expressing an idea through sound are necessary for refining and redefining.

Save Point By the Lake (2024)

For laptop ensemble (2024)
Commissioned by Peabody Laptop Ensemble

Program Notes

In RPG games, we make sure to stop by the save point to rest and recover before entering the
boss stage. If the boss defeats us, we come back to the save point. From there on, we
restrategize, level up, or regain the courage to face the challenge. We need to have a save spot
in our lives as well. I invite performers and audiences to pause, listen to the quiet part, and rest
when experiencing Save Point By The Lake.

Download scores and SuperCollider files here

Save Point By The Lake was commissioned and premiered by Peabody Laptop Ensemble. The world premiere was on April 4th, 2025. The recording below is a demo version made by the composer. The premiere version should be available soon to listen.

Setup

  1. Download and install SuperCollider 
  2. Download and uncompress the performance files from www.joowonpark.net/savepointbythelake
  3. Put the SavePoint folder on the Desktop (important step)
  4. Open SavePointBytTheLake_OSX.scd or SavePointByTheLake_Windows.scd in SuperCollider
  5. In SuperCollider Menu, select Language -> Evaluate File 
  6. Follow the instructions in the score
  7. Hardware Setup
    1. Each performer needs a laptop
    2. If there are few performers, the audio output of the laptop should be connected to an amp or PA. If there are many performers, audio output from laptops’ built-in speakers may be loud enough
    3. Performers can fullscreen the GUI and increase the brightness for a visual effect
    4. A PC user may need to adjust the keyboard repeat rate if the CPU is overloading

Score Interpretation

  1. Divide the ensemble into two groups, P1 and P2. 
  2. Boxed words indicate specific buttons to press on the SuperCollider patch.
  3. The traditionally-notated part shows the rhythm and number of voicings. Play all quarter notes as staccato.  For example, in measure 2 above, press keys a, f, and j simultaneously on the downbeat. 
  4. [bracketted letters] indicate which keys to press, including the [space] bar. Note that low-case letters and upper-case letters make different sounds. 
  5. Improvise at slash notation. Perform according to the written instructions.

Seoseok Bell – Brief Analysis

Seokseok Bell is a track in Dot Zip, an album of 22 generative music. The album’s purpose is to demo a uniquely electronic sound rendered with codes. Each track has a downloadable SuperCollider code that a listener can render and modify.  Listen to SeoSeok Bell at Bandcamp and download the SuperCollider code from here

The following paragraphs analyze the form, code, and musical aspirations in making Seokseok Bell. It teaches how to start and progress a composition from a single synthesized sound. The learning is most effective if the reader has a SuperCollider installed on their computer. Please watch a tutorial video on how to run SuperCollider codes written for Dot Zip.   

Program

Seoseok (서석) is a small town in the mountainous region of Korea. The sound of the bell in a chapel in the town reminds me of peace and love. The piece recreates (or interprets) the bell sound using an additive synthesis-like process and then presents it in an ambient-like style. 

Form

Seoseok Bell creates a bell-like tone by adding multiple sine waves. The bell tones and a simple bass line then make a three-part contrapuntal music. The resulting music has many variations due to the randomization in overtone frequencies, note sequence, and rhythms. The SuperCollider code SeoSeokBell_DotZip.scd does this through the following steps.

  • Step 1: Make two sine waves detuned to each other with a randomized frequency difference, creating a single tone with a pulse.
  • Step 2: Create an overtone series. The notes in the overtone series are randomly detuned.
  • Step 3: Play the sound multiple times with short, randomized time intervals.
  • Step 4: Generate soprano and tenor parts by randomly choosing a note in a scale. At the same time, generate a bass part with simpler overtones in tune.

Code

SeoSeokBell_DotZip.scd has the following sections. Watch a tutorial video on how to use the code.

  • SynthDef(“SingleB”): synthesizes sound described in Step 1
  • ~bell: makes sound described in Step 2
  • ~shake: make sound described in Step 3
  • ~sop, ~tenor,  and ~bass: make sound described in Step 4 
  • SynthDef(“NiceB”): synthesizes bass tone described in Step4
  • SystemClock.sched: schedules start and stop time of ~sop, ~tenor, and ~bass

SynthDef(“SingleB”) and SynthDef(“NiceB”)

The two SynthDefs use simple waveform generators (SinOsc.ar and LFPulse.ar) as audio sources. SynthDef(“SingleB”) uses a percussive amplitude envelope with randomized attack and release times. The envelope also includes a transient generated with LFNoise2.ar. The  SynthDef(“NiceB”) has an envelope on the filter frequency of RLPF.ar

~bell

In ~bell function, SynthDef(“SingleB”) is duplicated using Routine. The below formulas determine the frequencies of the duplicated Synths.

pitch=(freq*(count))*rrand(0.99,1.01);
pitch2 =pitch*(interval.midiratio)*rrand(0.99,1.02)*rrand(0.99,1.02);

Where argument count is increasing by 1 at every iteration of a .do loop

Once defined, ~bell function generates a sound using the following arguments:

~bell.(fumdamental frequency, amplitude, duration, pan position, interval value of overtones)

~shake

~shake duplicates function ~bell with a Routine with randomized .wait, creating a slight delay between the instances of Synths. Once defined, the ~shake function generates a sound using the following artumdnts:

~shake.(fumdamental frequency, amplitude, duration, interval value of overtones, delay time)

~sop, ~tenor, and ~bass

The three functions ~sop, ~tenor, and ~bass are Routines that play ~shake or Synth(“NiceB”)  with frequencies picked from the array ~scale or ~scalebass. The global variables ~bpm and ~beat determine the wait time. The three Routines receive .play and .stop messages according to the timings set by SystemClock.sched.

Uniquely Electronic

In electronic music, a sound design process is often the starting point of a composition. Seoseok Bell began as an exercise inspired by the Risset Bell. I wanted to create a bell sound using additive synthesis. However, such an exercise should not end as a sound design only. The composer or researcher should present the findings in a musical context

More Analysis and Tutorials

Four Hit Combo (2024)

In Four Hit Combo, each laptop ensemble member uses four audio files to create twenty-six flavors. Musical patterns arise from repetitions (loops), and different combinations mark forms in music. The laptop ensemble members prepare their own samples before the performance, and they control loop start points and duration according to the score and the conductor’s cue. Because there are no specific audio files attached to the piece, each performance could give a unique sonic experience.

Instrument Needed

  1. Laptop: each performer needs a computer with SuperCollider installed
  2. Amp: connect the laptop to a sound reinforcement system. If the performance space is small, it is possible to use the laptop’s built-in speaker.

Pre-Performance Preparation

  1. Determine a conductor and at least three performers. If there are more than three performers, parts can be doubled
  2. Each performer prepares three audio files (wav, aif, or mp3). The first file should contain a voice. The second file should contain a pitched instrument sound. The third file should contain a percussion sound. All files should not be too short (less than a second) or too long (more than a minute). The [voice], [instrument], and [percussion] files should be different for all performers.
  3. While the voice, instrument, and percussion files are different for all performers, they should share one common sound file. This file will be used in the [finale].  
  4. The conductor prepares one audio about 10-30 seconds long. It could be any sound with noticeable changes. For example, a musical passage would work well, while an unchanged white noise would not. 
  5. Download FourHitCombo_Score.pdf, FourHitCombo_Performer.scd, and FourHitCombo_Conductor.scd from www.joowonpark.net/fourhitcombo
  6. Open the .scd files in SuperCollider. Follow the instructions on the.scd file to load the GUI screen.

Score Interpretation

  1. Proceed to the next measure only at the conductor’s cue. The conductor should give a cue to move on to the next measure every 10-20 seconds.
  2. In [voice], [instrument], [percussion], and [finale] rectangle, the performers drag-and-drop the audio file accordingly.
  3. In [random] square, performers press the random button in the GUI.
  4. In the square with a dot, quickly move the cursor in the 2D slider to the notated location.
  5. In the square with a dot and arrow, slowly move the cursor from the beginning point to the end point of the arrow. It is OK to finish moving the cursor before the conductor’s cue.
  6. In a measure with no symbol, leave the sound as is. Do not silence the sound.
  7. In measure 27, all performers freely improvise. Use any sounds except the commonly shared sound reserved for [finale]. 

Ambient in D Flat

Ambient in D Flat is a collection of short pieces for melodica and algorithmically generated computer sound. They all have the note Db as an essential part. Feel free to pick and choose which piece to perform or present. The last one in the collection, Fifth (for A Folk Song), is not an original composition- the performer is free to choose any folk song and play it in Gb major along with the computer part.

Setup

  • Download and install SuperCollider https://supercollider.github.io/downloads.html 
  • Download a zip file containing AmbientInDb_Mac.scd and AmbientInDb_PC.scd from https://joowonpark.net/ambientdb 
  • Open one of the downloaded SuperCollider files in SuperCollider. One is for OSX, and the other is for Windows.
  • In the SuperCollider menu, select Language-> Evaluate File. A window with performance instructions will appear.
  • Follow the instructions on the screen. Use the keyboard’s space bar and number keys to navigate. 

Performance

  • The middle C in the notation is the very first (the lowest) C in a melodica.
  • All pieces are in rubato. 
  • Feel free to improvise and elaborate on the written part.
  • Due to its algorithmic nature, the computer part does not have a set duration. It is OK if the performer finishes the melodica part earlier or later than the computer part.