The setup and the execution of the electroacoustic part of this work requires a Computer Music Designer (Max expert).

Performance date: April 27, 2024 - First performance

Documentation date: May 21, 2024

Version state


Validation date: May 29, 2024

Executions dates of this version

  • April 27, 2024, Espace de Projection

Version documentalist

  • johannphilippe (

Version realisation

  • Jug Markovic (Composer)
  • Johann Philippe (Computer Music Designer)
  • Jérémie Bourgogne (Sound engineer)
  • Fabien Armegaud (Director)
  • Christine Plubeau-Mazeaud (Performer)

Version length

21 mn

No other version available

Detailed staff

  • mixed choir
  • viol
(Detailed staff comes from Brahms, send mail to for correction.)

Channel details

  • Number of input channel: 6
  • Number of output channel: 64

Electronic equipment list

Computer Music Equipment

  • 2 MacBook Pro - Apple Laptops (Apple)
    M1 - @ConcertPatch - Main and spare
  • 1 MacBook Pro - Apple Laptops (Apple)
    M2 - 3DVerb
  • 1 MacBook Pro - Apple Laptops (Apple)
    Panoramix session, decoder
  • 1 Max 8 - Max (Cycling74)
    Any version up to 8.5.9
  • 1 Ircam Spat - Library (Ircam)
  • 1 Csound - Sound Synthesis (


  • None,


  • édition du compositeur

Work length

  • 21 mn
Download all files
File Author(s) Comment
Download [82.1 MB] Patch ConcertPatch Johann Philippe Main patch - working with up to Max 8.5.9
Download [2.3 GB] Audio file(s) media Audio files for ConcertPatch
Download [476.2 MB] Patch 3DVerb Johann Philippe 3DVerb Patch - with IR from Chapelle Royale de Versaille


1. Audio setup

“Stabat Mater” is a composition for choir, viola and electronics. It was created with CMBV - aka Centre de Musique Baroque de Versaille - in 2024 at Espace de Projection, IRCAM. It is composed for 5 voices - Soprano, Counter Tenor, Tenor, Baritone, Bass and was premiered with 17 singers.
The electronics contains both fixed medium and realtime electronics. It is spatialized using HOA (6th order) and VBAP (6 speakers or virtual speakers).
The choir and the electronics are reverberated using HOA impulses responses simulating the acoustic reflections of Chapelle Royale de Versaille.

2. Loudspeaker setup

Choir is placed on stage, in front of the audience.
The speaker setup is the HOA implantation of the “Espace de Projection” at IRCAM, in June 2023, plus a circular layout of several large-band speakers around the audience.

HOA layout :
Espace de projection HOA layout

3. Microphones setup

The microphones used for this concert cover two main roles :

  • sound amplification for choir and viola
  • realtime electronics

For this piece, each singer must have a headset static microphone. Another static microphone is used for Viola da Gamba.
Voices and viola are amplified in speakers in front of the audience. They are also routed to the 3D reverberation bus.
Prior to be routed to the main electronic patch, singers channels are mixed following a per-voice layout (1 - Soprano, 2 - Counter tenor, 3 - Tenor, 4 - Baritone, 5 - Bass, 6 - Viola).

4. Software installation

Three material packages are required to reproduce this concert :

  • ConcertPatch - Max MSP patch and audio materials used for the performance machine
  • 3DVerb - Max MSP patch and audio materials used to process HOA 3D reverberation
  • media - audio files that must be placed in the media folder of ConcertPatch project

Required softwares are - as described in electronic equipment section :

  • Max MSP 8.5.5
  • Csound 6.18
  • Panoramix
  • IRCAM Spat & Spat 5

a) Max/MSP patches

There are two projects in this current documentation :

  • ConcertPatch - correspond to the main Max MSP project to play the electronics of the piece
  • 3DVerb - is a Max patch used to process HOA 3D convolution reverberation.

The piece was performed using 4 computers :

  • 2x M1 for ConcertPatch (Main and spare)
  • 1x M2 for 3DVerb
  • Another M1 for main Panoramix session (mostly HOA decoding)

b) Routing between computers

All computers for the performance use RME Digiface DANTE sound devices.
They are all connected to a Yamaha QL5 console, that handles routing in and out for each computers.

Routing from Electronic performance computer :

  • HOA - output channels 1 to 49 are routed to the console, and then forwarded to the main Panoramix session for HOA decoding
  • VBAP : output channels 50 to 55 are routed to the console, and then forwarded to large-band speakers couronne (with re-spatializing these 6 channels to fit the speaker layout if needed, thus considering the original 6 channels as virtual speakers)
  • Reverb : output channels 56 to 59 are routed to the console, and then forwarded to the 3DVerb computer
  • Click : output channel 64 is routed to the console and forwarded to director click headphones

Routing from console :

  • Console - microphone headset inputs 1 to 17 are mixed together per-voice : 1 - Soprano, 2 - Counter tenor, 3 - Tenor, 4 - Baritone, 5 - Bass, 6 - Viola and sent to the performance computer (ConcertPatch)
  • Console - all microphones are mixed, panned, and sent to front speakers as well as 3DVerb bus
  • Channels incoming from 3DVerb computer are routed to the HOA speakers

c) Routing in ConcertPatch - Computer 1

The audio inputs of this patch correspond to the microphones of the singers. It is sorted exactly as in the score :

  • 1 : Soprano
  • 2 : Counter Tenor
  • 3 : Tenor
  • 4 : Baritone
  • 5 : Bass
  • 6 : Viola da gamba

Make sure the correspondance is straight (input 1 to adc 1, input 2 to adc 2…) in the Audio setup of Max.
You can visually monitor the audio inputs in the patch.

The output setup is the following :

  • From 1 to 49 : Main HOA stream (6th order)
  • From 50 to 55 : Secondary “couronne” stream
  • From 56 to 59 : Reverb bus
  • 64 : Click track for conductor

Similarly as inputs, outputs must be connected straight (dac 1 to output 1, dac 2 to output 2 …) in Audio setup of Max.

d) Configuration of 3DVerb patcher

This patch has 4 inputs.
It corresponds to 4 different takes of the HOA IR of chapelle royale de Versailles :

  • 1 : Front left
  • 2 : Front right
  • 3 : Rear left
  • 4 : Rear right

Selected takes were the ones were the impulse generator was several meters high, as they produce a more natural feeling of reverberation.

e) Max MSP DSP Status Options

For the main patch ConcertPatch, the following setup must be applied :
Sampling rate : 48000Hz
IO Vector size : 128
Signal Vector size : 128
Scheduler in overdrive - ON
Audio interrupt - OFF

For the 3DVerb patch:
Sampling rate : 48000Hz
IO Vector size : 2048
Signal Vector size : 2048
Scheduler in overdrive - ON
Audio interrupt - OFF

f) Max MSP externals

The project is self contained. 
Be careful to not have duplicates of required externals in your external library paths.

5. Patch presentation

a) Main patch - ConcertPatch

When running the project, a few error messages might appear on the console, these are not relevant and can be discarded. These non-relevant error messages are :

  • csound6~ “patchcord outlet out of range”
  • sun~: No such object
  • fpulse~: No such object
  • buffer~: nowrap-ramp.aiff: can’t open
  • buffer~: harm.aiff: can’t open
  • vst~: can’t find plug-in ysfx

Here is the main view of the concert patch :

The main patch is performing several tasks :

  • Receive audio inputs
  • Event scheduler
  • Perform RT effects
  • Encode HOA
  • Send HOA stream, VBAP stream, reverb bus, and click track to outputs
  • Play fixed medium audio files

The main patcher of the project contains several parts :

  • On the left : General settings (Maquette mode, HOA mode, Csound messages…)
  • On top right : QList options and control
  • On the bottom : Volumes control

The left section (options, configuration) has several parameters :

  • Enable Encoded Out / Enable Encoder : must be set to “Enable Encoded Out” for performance (default)
  • Turn On/off maquette mode : Must be set to off for performance, on for studio work, off by default
  • Enable/Disable Csound messages : debug purposes, off by default

Left section also provides buttons to show/hide useful views : matrixes and spats.

Cuelist section provides a set of buttons used in performance and rehearsal :

  • Init : used before performance (after DAC is opened) as well as everytime stop button is used (after stop)
  • Stop : stops performance, clears matrixes and outputs
  • Next : triggers next cue. Used in performance at the end of each movements.
  • ResyncNext : better not to use it. It can be used if synchronisation with director is lost. It will trigger next event, clearing everything that is currently happening (causing click track resync).
  • Edit : opens Lua qlist code editor
  • Umenu : the blue umenu can be used to start from a specific cue. Not that not all cues are eligible for starting performance. Available cues are 1rst cues of each movements, as well as all cues described on the right side of the window (“Rehearsal” section)

The bottom section is used for performance control over different amplitudes/volumes as well as some other specific controls :

  • VBAP dry output
  • HOA dry output
  • VBAP wet : to 3DVerb bus
  • HOA wet : to 3DVerb bus
  • Retune rescale : 1 and 2 : used to modify slightly the rescaling of retune~ object in 1rst part of inflammatus (7th) movement.
  • RT Pre-gain : it is a pre-output (pre dry volumes) gain stage for all realtime effects. It is here for safety (feedback prevention) mainly.

b) Second patch - 3DVerb

The second patch 3DVerb is used to process 3D HOA Convolution for IR reverberation of Chapelle Royale de Versailles. It is CPU intensive task, and requires to be processed by a performant computer that only gets assigned this task.
It has 4 inputs and 16 outputs (HOA out - 3rd order).

6. Initialization routine

  • 1 : Open and run 3DVerb patch on second computer. Set parameters and routing.
  • 2 : Run main patch (ConcertPatch) on first computer
  • 3 : Check DAC options and audio status - turn on DAC
  • 4 : Press “Init” button in ConcertPatch and “next” when director is ready

Each cue after the first cue of each movement is triggered automatically.
Each movement is preceded with 1 bar of click track.
At the end of each movement, the scheduler will stop. It is responsibility to the electronic performer to click “Next” button to trigger next movement once director and singers are ready. Only 2 movements are to be triggered quickly after previous one ends : 5th (no need to wait for director and singers, electronic introduction) and 9th.

7. System calibration and tests

The maquette mode can be enabled on the left side of the ConcertPatch. It will matrix inputs to pre-recorded voices. This recording was used during composition process, and is not exactly corresponding to the final score (though, it is mostly accurate). If needed, the maquette direct sound can be routed to outputs (ConcertPatch, plug the “mc.receive~ voices 6” to a dac~).

8. Performance

For performance, we used a BCF2000 to control volumes of the bottom section of ConcertPatch.
We also used another MIDI controller with trigger buttons to quickly access the “Init”, “Stop”, “Next” buttons of the Cuelist.

In general, amplitude controls are used to adjust dynamics. The Cuelist/Matrices amplitudes should already correspond to the desired dynamics, though it still requires performance control to adjust dynamics with singers.
The cues displayed in the Umenu are written following the convention : M = Movement, T = tape, RT = realtime.

The last movement (9 Quando Corpus) ends with a freeze of spectral analysis on a synthesizer. This freeze can be held more or less 1 minut, and then released by triggering the “Next” button, which will cut and end the performance.

9. Sustainability notes

The patch was designed before transition to Max MSP 8.6 which introduced important changes to how externals are compiled. Thus, using it with a newer version than Max 8.5.9 could cause problems to external recognition. Since IRCAM externals were recompiled for 8.6 compatibility, changing the externals to their latest versions should work immediatly.

The ConcertPatch is a Max project, and uses a few externals, making it somehow dependant on the Max MSP ecosystem as well as some IRCAM externals.
The main closed-source dependencies are :

  • retune~ object (MSP) : used as a not-in-tune autotune : the intention is that the algorithm hesitates between two notes, thus quickly alternating/yoddling between two notes
  • iana~ object (IRCAM) : analysis of audio signal available in IRCAM MaxSoundBox, described as “analysis and extraction of significant perceptive components of sound in real-time”.
  • IRCAM spat

The rest of the essential parts of the patch are based on Csound, and/or could easily be reproduced with Csound or Faust.
The sequencer (cuelist) is a simple scheduler based on :

  • Lua programming language
  • a delay (simple timer engine)

It could also be easily reproduced as a Csound score, or as a simple timing engine in almost any modern programming environment.

© IRCAM Creative Commons License
This documentation is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Program note

C’est comme libéré d’un poids que je m’empare de sujets ou de thèmes très connus, qui ont inspiré des dizaines voire des centaines de compositeurs par le passé. Cela me soulage de la pression de livrer un narratif « original » et me permet de me concentrer uniquement sur le sonore, et sur la magie du son encore non conceptualisé. Ce faisant, j’accepte et j’assume le fait que le thème lui-même et la multitude de ses émanations déjà existantes influenceront voire donneront forme à ma pièce, ouvertement et inconsciemment tout à la fois. Avec ce _Stabat Mater_, je rends hommage, non à la Vierge et au Christ, mais à l’amour et la passion que ces symboles ont inspirés musicalement. Mon travail est guidé par l’admiration et, à travers elle, j’essaie de situer mon existence en tant qu’humble partie d’une plus vaste continuité. Bien loin de tout isolement dans l’espace, j’aspire continuellement à dépasser l’isolement dans le temps, et à bâtir ma relation personnelle au « tangible » du passé et de la tradition.

Jug Marković, note de programme du concert du 27 avril 2024 à l'Espace de projection de l'Ircam.

Version documentation creation date: May 21, 2024, 2:44 p.m., update date: May 29, 2024, 7:24 p.m.