< Back to IRCAM Forum

Tempo change and crescendo

Hi,
After installing the latest version of OM, I would like to try again to program 2 functions that I had already worked on in 2015 and in 2019:

  1. Change Tempo within the same voice to simulate rallentando or accelerando

  2. Create a crescendo or a decrescendo on a held note via a control change (The “05-continuous controller” tutorial using a maquette does not answer my needs)

Has anyone worked on these issues since? If not, could someone tell me which parts of the OM code to study to try to find solutions by myself? I remember that Jean Bresson had provided me with some precious leads in 2019 to intervene on the reading of MIDI events but I unfortunately can’t find this mail.

Many thanks in advance!
Philippe

Bonjour,
Après avoir installé la dernière version d’OM, j’aimerais à nouveau tenter de programmer 2 fonctions sur lesquelles je m’étais déjà penché en 2015 et en 2019 :

  1. Changer de Tempo au sein d’une même voix afin de simuler des rallentando ou des accelerando

  2. Créer un crescendo ou un decrescendo sur une note tenue via un control change (Le tutoriel “05-continuous controller” utilisant une maquette ne répond pas à mes besoin)

Quelqu’un aurait-il travaillé sur ces questions depuis ? A défaut, quelqu’un pourrait-il m’indiquer quelles parties du code OM étudier pour essayer de trouver des solutions par moi-même ? Je me souviens que Jean Bresson m’avait fourni quelques précieuses pistes en 2019 pour intervenir sur la lecture des événements MIDI mais je ne retrouve malheureusement pas ce mail.

Un grand merci d’avance !
Philippe

Dear Philippe,

Here are some answers om your two points:

1.Change Tempo within the same voice to simulate rallentando or accelerando

There is already tempo change implemented in OM. However, the rallentando/accelerando feature is broken. In fact it was never finished. It is in our priorities in the todo list, and will take some time to finish.

2.Create a crescendo or a decrescendo on a held note via a control change (The “05-continuous controller” tutorial using a maquette does not answer my needs)

This is not directly related to OM. It is a limitation in the MIDI protocol. If you need some cresc.decresc. in MIDI you will only get this using a continuous controller. However, i agree that using the maquette is rather awkward, while using Score editors is much more logical. This is possible using these editors in mode patch and using the new OMScoreTools library (see 02-bpf-dyn-to-score tutorial).

This mode is nearlly fully functional now in the upcoming 7.1 new OM version sioon to be released.

Best
K

Dear Karim,
I am glad that these MIDI event management issues are becoming a priority for future versions of OM. In the meantime, I found the email Jean had sent me in 2017, advising me to graft on the functions [ (defmethod PrepareToPlay ((player (eql :midi)) (self note) …) ] and (om-midi::make-midi-evt). I will study these options more carefully as well as the ones you just suggested for cresc.decresc.

As I beleave that the management of the MIDI events is of general interest, the ideal would be perhaps to implement directly in some objects of type “Score” (note, chords, voice, ?) 1 or 2 optional slots (KS and/or CC) making it possible to freely associate Keyswitches or Control Changes to them. I have already solved the Keyswiches management (and successfully tested on a big orchestra project) by using the decimal part of the “chan” slot of the “Voice” object to trigger the KS at will at any point.

However, I imagine that adding new slots to score objects is not an easy task !

In any case, thank you very much for your fast answer and have a nice day. Best regards,
Philippe

Dear Philippe,

Yes indeed, adding slots to a preexisting Class is not at all a good idea, since this can easily break compatibility and will require a lot of extra recoding. Moreover, mixing symbolic music concepts with MIDI ones is also awkward in my opinion. I understand one’s frustration not being able to simulate a full performance in MIDI.

Best
K