Category Archives: Research

How To Do An Electronic Ensemble Concert

An electronic ensemble concert presents uniquely electronic music performed by many musicians. Like all live music events, performers and audiences get experiences they can not get from recorded or streamed media in an electronic ensemble show. It takes work to organize such an event, but there are common routines. I have been directing the Electronic Music Ensemble of Wayne State (EMEWS) since 2017 and have presented more than 30 concerts with them. I share guidelines for planning, executing, and continuing electronic music ensemble concerts in this article. I also share a budget for starting an electronic ensemble.

My previous blog post, How to Play a Solo Set, outlines the four steps of planning and presenting a solo electronic music performance. 

  1. Decide pieces
  2. Decide the order
  3. Practice transitions 
  4. Practice sound check 

Doing an electronic ensemble concert has similar but different steps. 

  1. Learn the Context
  2. Decide pieces
  3. Rehearse
  4. Decide program order and technology

Preparing for an electronic ensemble concert requires more discipline than preparing for a solo performance because it involves more people, rehearsal time, and equipment. The director needs to make some decisions weeks, if not months, before the show. The first step in making the best decisions is learning the ensemble’s social context. 

Learn the Context

Unlike an orchestra or choir, an electronic ensemble does not have a set instrumentation or time-tested management protocols. The group can take many forms depending on the institutional structure, vision, and budget. The director should learn the pros and cons of the ensemble’s social context for effective and practical programming. I share the case of EMEWS for reference.

Institutional Structure

EMEWS is a semester-long class in a university with 12 registered students. This means that

  • I, as the director and teacher, use the facility and equipment provided by the music department. 
  • As a credited course, I expect new and returning performers every semester. 
  • The concert venue is already set. I will have the opportunity to program at least one concert per semester at a venue I am familiar with.
  • The semester concert should have a different repertoire than the one in the previous semester. 

Vision

My job is to set the direction of the musical style, convince the performers to get immersed in it, and present it to the audience. This means there is a stylistic preference over another for the season. For example, EMEWS has the capacity to play a standard orchestra repertoire using General MIDI, but I do not prefer that. I encourage EMEWS to play music that values the following:

  • Experiment: Try a new repertoire that cannot be presented on other instruments. EMEWS plays unconventional and challenging music that may fail—and that is OK, as many experiments tend to fail. 
  • Liveness: Music technology is more than a recording technology. EMEWS performers learn the here-and-nowness of live performances by playing electronic instruments together.
  • Education: Performers should learn new techniques, get opportunities to refine what they know already, and safely share the sound with their peers in EMEWS. Jamming along to the tunes they already know will hardly achieve the stated goal.
[EMEWS Concert FA2017 at Wayne State University (2017.11.16)]

Budget

The director should know the practical limits, such as performers’ skills and the repertoire’s technological feasibility. With EMEWS, I choose or create pieces that require a minimum number of gears. The extra budget I may get from grants is then used for off-campus concerts and gear purchases.

In sum, my suggestions for running an electronic ensemble are based on my experience in a university course. Not all electronic ensembles are in the same situation. The director should assess the ensemble’s institutional relationships, musical vision, and budget accordingly before working on a concert.   

Decide Pieces

The most challenging aspect of operating an electronic ensemble is building the repertoire. There is no Beethoven’s Fifth equivalent of an electronic ensemble work, yet. Any pieces presented at the concert will likely be new to the audience. It is a relatively uncharted field for composers to write new pieces. 

I aim to premiere one composition at every semiannual EMEWS concert. The rest of the repertoire comes from pieces written by other composers or group improvisations. Some of those pieces are arrangements of existing acoustic compositions

A typical EMEWS concert lasts one hour and features three to five pieces. However, the total duration may be shortened or extended at off-campus performances. For example, if invited to a music conference, EMEWS may play one piece, or they may perform a 1.5-hour show as a featured artist in a venue.

Rehearse

Electronic musicians may have less experience in ensemble performance, as many of them start their careers as solo DAW artists. It is important to teach the members that they must practice playing as a group by attending every rehearsal. Even the time spent on non-music-making routines in a rehearsal requires training and refinement.

[EMEWS rehearsal space (2022.11.30)]

I allocate about seven rehearsals, each lasting 2.5 hours, for a concert. In the first weeks of the semester, the ensemble spends about 30 minutes setting up at the beginning and about 10 minutes clearing up at the end. Each member learns how to set up a computer, an amp (EMEWS has one amp per performer), and a MIDI controller (the rehearsal room hosts multiple keyboards and synthesizers). By the mid-semester, it takes about 10 minutes to set up and 5 minutes to strike. The last week of the semester is Spring Cleaning Day: all members tidy up the rehearsal room by untangling the cables, putting back the keyboard stands, throwing away the broken cables, etc. One of the goals in rehearsal should be improving the technical and technological sides of an electronic music performance.

Decide Program Order and Technology

The program order is finalized about a month before the concert. EMEWS presents a Fall or Spring concert during the 8th or 9th week of the semester and usually decides which pieces to include in the concert during the 5th week. The concert program needs to be practical—it must use already available gear, and the time for set changes between the pieces should be as short as possible. For that purpose, a list of questions on necessary technology helps me work on the logistics. 

Laptop ensemble or mixed-instrument? 

Laptop-only electronic ensemble pieces are easier to set up than those involving synthesizers and acoustic instruments. Program the most technologically complicated pieces (ones with many instruments, cables, speakers, and furniture) early in the program. Strike the gear as much as possible between the rest of the pieces for better visuals and performer mobility.

Amplified or unamplified?

More instruments to connect to a PA or house mixer means more power strips, audio cables, and set-up time. Make sure to do a final rehearsal with all the gear present at the same time. If there are enough performers, laptop-only compositions may not require additional amplification. Not being connected to an amp on the stage also allows the performers to move freely. An outdoor performance is also possible without extra set-up. 

[recording session of unamplified laptop ensemble piece (2019.04.03)]

Video projection or no video? 

A repertoire using a video projection needs attention in programming order. Extra set-up time or a stage crew may be needed to test and run the video pieces. If the projector’s fan noise is loud, it should be turned on right before the piece and turned off right after. 

On tour or on campus? 

An ensemble can go all-out in terms of gear for an on-campus show. As long as the performers do not mind the additional setup and strike time, they can use all the gear available. However, it is challenging to carry around big gear on tour. It is wise to minimize the risk and random factors in terms of gear when performing in an unknown venue. 

[EMEWS at the University of Richmond, VA, during the 2019 tour (2019.11.08)]

Startup Budget Consideration

If a reader is interested in starting an electronic ensemble, the first question would be how much it costs to start a group.  I recommend checking the availability of the following starter pack. 

  1. Laptop: One laptop per performer, either PC or Mac, is recommended. Do not worry about what DAW or plugins to purchase; there are free apps and free-to-run laptop ensemble repertoires. If a performer already has a laptop, they could use it as an ensemble instrument. There is no need to use a top-of-the-line computer. I use a $350 PC laptop.
  2. Rehearsal space: The ensemble should secure a room where they can meet regularly. A laptop purchase may be delayed if the ensemble can secure a computer lab. Be aware that there will be loud noises.
  3. Amps and cables: I prefer a cheap, portable amp per performer over one loud PA. A direct audio connection ($7 for 6ft) from the computer’s audio out to the amp’s input bypasses the need for audio interfaces. A mono output to an amp or selecting a channel from a stereo output is fine, in my opinion. EMEWS uses a dozen Roland Micro Cubes (used to be $150) that run on AA batteries. The ensemble sometimes uses a guitar strap on the amp to carry the amp during the performance.
  4. After the laptop, rehearsal space, and amps, buy the gear necessary for the specific repertoire. For the most versatile use, I recommend getting a small, cheap MIDI controller ($100).
[outdoor performance with portable amps and laptops (2022.06.18) ]

The above list also shows the purchasing order. If the budget is tight, secure the laptops first. Once the laptop and rehearsal space are available, the ensemble can begin to play. If the budget is bigger, get the amplification system and cables. Leave some money for perishables, such as batteries and extra cables. They will probably be on demand ten minutes before showtime!

SuperCollider Symposium 2025

Performing and Sharing Laptop Ensemble Repertoire

Joo Won Park

Repeat Performance

Plan, make, and present pieces suitable for multiple performances

  • Low technical barrier
  • Low cost
  • Interaction with the creator should not be required
  • Does not depend on the performer’s specific skills

Singaporean Crosswalk (2016)

Demo, information, and codes

  • Low technical barrier: No extension or extra installation, the patch starts in 1-3 steps
  • Low cost: no additional gear needed other than a latpo
  • Interaction with the creator should not be required: E Ensemble Performance Record
  • Does not depend on the performer’s specific skills

PS Quartets (2016, 2019)

PS Quartet No.1 demo, information, and codes

PS Quartet No. 2 demo, information, and codes

Benefits

  • Additional performance  gives more chances to find the work’s value
  • Refinement and inspirations
  • Career

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

Game Controller Comparison For SuperCollider

SuperCollider’s HID class lets users connect many types of game controllers without additional software installations. While establishing a connection between a human input device and SuperCollider is easy, decoding the mapping system requires time and effort. A user needs to press a button in the controller, monitor the ID number assigned to the specific button, and then document the result for further use. The good news is that once a user figures out and shares the mapping structure of a device, there is no need to repeat the discovery procedure until the next major OS update.

The chart below shows the control surface-to-SuperCollider mapping of four game controllers: DualShock 4 for PlayStation 4, DualSense for PlayStation 5, Logitech FS310, and Xbox Wireless Controller. It lists elements (ID numbers corresponding to a specific control surface in a device) and their value range for HIDFunc.element command. With the element numbers and ranges below, one can map the incoming data from a controller to various parameters available in SuperCollider.

Element Numbers and Range of Game Controllers

Sony DualShock (PS4)Sony DualSense (PS5)Logitech FA310 Mode DMicrosoft Xbox
BluetoothBluetoothUSBBluetooth
ID (1356, 2508)ID (1356, 3302)ID (1133,49686)ID (1118, 765)
Control Surface [sony | xbox]Element#, (value)Element#, (value)Element#, (value)Element#, (value)
Square | X0, (0 or 1)0, (0 or 1)0, (0 or 1)13, (0 or 1)
X | A1, (0 or 1)1, (0 or 1)1, (0 or 1)10, (0 or 1)
O | B2, (0 or 1)2, (0 or 1)2, (0 or 1)11, (0 or 1)
Triangle | Y3, (0 or 1)3, (0 or 1)3, (0 or 1)14, (0 or 1)
L1 | LB4, (0 or 1)4, (0 or 1)4, (0 or 1)16, (0 or 1)
R1 | RB5, (0 or 1)5, (0 or 1)5, (0 or 1)17, (0 or 1)
L2 | LT button6, (0 or 1)6, (0 or 1)6, (0 or 1)not found yet
R2 | RT button7, (0 or 1)7, (0 or 1)7, (0 or 1)not found yet
Share | Back8, (0 or 1)8, (0 or 1)8, (0 or 1)25, (0 or 1)
Options | Start9, (0 or 1)9, (0 or 1)9, (0 or 1)21, (0 or 1)
L3 | LSB button10, (0 or 1)10, (0 or 1)10, (0 or 1)not found yet
R3 | RSB button11, (0 or 1)11, (0 or 1)11, (0 or 1)not found yet
Logo12, (0 or 1)12, (0 or 1)not found yetnot found yet
Trackpad button13, (0 or 1)13, (0 or 1)N/AN/A
L3 | LSB x-axis14, (0 to 255)14, (0 to 255)13, (0 to 255)0, (0-65535)
L3 | LSB y-axis15, (0 to 255)15, (0 to 255)14, (0 to 255)1, (0-65535)
R3 | RSB x-axis16, (0 to 255)16, (0 to 255)15, (0 to 255)2, (0-65535)
R3 | RSB y-axis17, (0 to 255)17, (0 to 255)16, (0 to 255)3, (0-65535)
L2 | LT continuous19, (0 to 255)19, (0 to 255)not found yet26, (0-1023)
R2 | RT continuous20, (0 to 255)20, (0 to 255)not found yet27, (0-1023)
up18, (0)18, (0)17, (0)28, (1)
up+right18, (1)18, (1)17, (1)28, (2)
right18, (2)18, (2)17, (2)28, (3)
right+down18, (3)18, (3)17, (3)28, (4)
down18, (4)18, (4)17, (4)28, (5)
down+left18, (5)18, (5)17, (5)28, (6)
left18, (6)18, (6)17, (6)28, (7)
left+up18, (7)18, (7)17, (7)28, (8)
release18, (8)18, (8)17, (8)28, (0)

Link to Google Sheets version

Analysis of Element Numbers and Range

The number of available control surfaces, as well as their ranges, varies between the brands. However, all game controllers have three types of input methods. 

  • Button: sends 1 when pressed and 0 when released.
  • Directional Pad: assigns eight integers for eight directions and one integer for the release/unpressed state. The release state is mapped to value 8 in the Sony and Logitech controllers, while it is assigned to 0 in the Xbox controller.
  • Continuous Control: sends a range of numbers like a slider or a knob in a MIDI controller. All but the Xbox controller sends data ranging from 0-255. The Xbox controller has two types of ranges (0-65535 and 0-1023).

More expensive controllers have more features, such as motion sensors and microphone input, but the HID class does not detect them. The number of game controller features available for HID seems to depend on the hosting OS’s version. In 2018, HID received DualShock’s motion sensor and trackpad data when connected to a Macintosh with a USB cable (source). After a few OSX updates, I could not replicate the result in 2025. It is possible that additional input methods could be detected if an external app or extension is installed. I did not test the possibility as my goal is to avoid additional technical steps. 

Demo SuperCollider Patches

Readers can test, study, and modify the controller mapping structure with the .scd files provided in the link above. All four files, one for each model of the controller, have the same parts: 1. Controller initialization 2. Connection tester 3. Controller-to-sound example. The coding style is based on the example section of the HIDFunc manual.   

The Controller initialization section consists of arrays and functions that connect and monitor signals from the game controller. The most important commands in this section are HID.findAvailable, HID.open, and HIDFunc.element. These commands detect the available devices, connect the specific device with the device’s unique ID number, and determine what SuperCollider should do when a control surface is triggered. The rest are functions built to use those three commands efficiently. The users must evaluate the codes inside the first parenthesis labeled //1. Controller Initializations to make the second section of the codes work.

After the initialization, evaluate the codes inside the second parenthesis labeled //2. Test the Controller. It is important to evaluate one line of code at a time for better testing. When a ~whichsurface(element #) function is evaluated, an array containing an element number, control surface name, and value will appear on the post screen. For example, after establishing a connection with a DualSene controller using HID_DualSense_Demo.scd, evaluate the line ~whichsurface.(3). It will activate the triangle button of the controller. Pressing the triangle button will post [ 0, Triangle, 1 ], and releasing the button will post [ 3, Trianle, 0 ] on the Post window. Press command+period or select Menu-> Language-> Stop to stop receiving the messages from the controller. 

Note that arguments (|…args|) inside the HIDFunc element receive an array of numbers from the connected controller. The first number in the array, args[0], receives normalized data ranging from 0.0 to 1.0 as a float. The second number, args[1], receives raw data ranging from 0 to any number as an integer. The demo files use the integer, but users can use the float argument interchangeably. 

The last group of commands under //3. Audio Example maps the controller to a SynthDef’s parameter. The codes inside HIDFunc.element maps a button to change the volume of white noise and a continuous controller to change the panning. Modify the numbers inside the brackets [ ] at the end of the HIDFunc.element( ) to map different buttons and continuous controllers. Note that the method .linlin is used to map the range of 0 to 255 or 65535 to -1.0 to 1.0 in this example code.  

Summary and Application 

I share the mapping of four controllers so that others do not have to repeat the procedure and move faster to the creative phase. My previous sharing of the game controller mapping was in 2018, and it is available as a published document in The Journal Emille. The article is now outdated and only applicable to DualShock.  The current findings discussed here also have limitations: the mappings were tested in SuperCollider 13.0 running in Mac OSX Sequoia only. I was not successful in connecting the controllers to SuperCollider on Windows. I also did not figure out the mappings for Max or other programs.

Once connected via HID in SuperCollider, a game controller becomes an expressive instrument for laptop performance despite the above limitations. Performers can incorporate years, if not decades, of gaming muscle memories to play music. For demonstration, the links below are my two compositions for a game controller quartet. Interested music technologists can download SuperCollider patches and scores from the links below to play the music using the game controllers analyzed in this article. Previous experience in SuperCollider is not needed to play the piece.

PS Quartet No. 1

PS Quartet No. 2

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].