< Back to IRCAM Forum

Trying to load OM-Screamer (from OM 5.2)

Hi Everyone.
I’ve created this new topic to talk about my attempt to use the OM-Screamer library (from OM 5.2) in OM 7.2.
The library is loading normally now (thanks Karim’s help), but the functions is not working (I’m getting the error that the variable screamer-valuation is missing - image attached). Also there is no class associated with the library. If I’m not wrong, I believe it should have at least one class to evaluate the functions or something to open a new window , like in Cloud library, right? I really don’t know because I’ve never used OM 5.
Captura de Tela 2023-05-10 às 20.53.39

Is there any easy solution?
Thanks again!

Dear Paulo,

I think this is some unfinished code. The variable is undefined, you can just add in the screamboxes.lisp file the following:

Concerning the second question about classes, yes i beleive something is missing here a sort of engine to make this work. Must look into the old code perhaps. or try to get a working example somewhere.


Hi Karim,
I’ve made a small progress and the classes are there, but nothing happens with the functions yet.

I was looking into the OM 4.7.1 code (from here OpenMusic 5 download | SourceForge.net ) and there is several mentions to screamer. I’ve made a complilaion in one .txt file here:
OM4-CS.txt (18.1 KB)

Apparently it was part of a constraint solver project inside OM, with a second listener (only for screamer) and also a different patch definition (with question mark) for evaluation of patches with screamer functions (I’ve found some examples here: OMBacktrack tutorial ). The missing variable (screamer-valuation) was defined in the preferences panel by the user.
To make it work in OM 7.2, Is it possible to create this listener as a class and create an option to change the value of the variable (one value or all values), like in OMCS?
About the different patch with question mark I have no idea how to do it (and several other things…).
I tried to compile OM 4.7.1 in my emulator, but apparently it is not compatible with the version of MCL that I have installed (MCL 4.2).
Do you thing is it possible to find old versions of OM to see how it works? I can try to run them on my emulator too.

Dear Paulo,

Thank you for all this feedback.
Now concerning the creation of a listener dedicated to the screamer, maybe we don’t need a complete listener such as the one used by OM, since it is somehow complex. What we need to know is what the listener listen’s to and if it is interactive or not. We can build a dedicated output listener limited to the usage of the Screamer.
Concerning old versions of OM, can you tell me what versions you need? I will look into my archives if i find any. You will need also to run them on an old OS.


Hi Karim,
I agreed. Maybe a listener dedicated to Screamer is not necessary. I was thinking if it is not easier to create a “Screamer Patch” to put all screamer function inside it and them evaluate as a normal patch. It’s only an idea.
I’m doing some tests with screamer-valuation variable set to 2 (listener option). I’ve replaced the old om-make-text-edit-view and om-make instance 'scrolling-fred-view with om-make-dialog-item, but seems that is not correct:

When I try to evaluate the patch from outside, I get the screamer error that the function is not non-deterministic (I believe that why it’s needed a screamer patch):

About old OM versions, I’m thinking in OM 3 or 4 (I don’t know exactly what is the last stable version with the constraint solver project). I have here a MacOS 9.2 virtual machine with MCL 4.2 (the same I use to load PatchWork and OM 2.7) and a MacOSX 10.4 virtual machine with MCL 5.2, but I can build other systems if needed.

Many thanks!

Hi Karim,
One minor update.
I’ve found this function that draw the question mark on patches (from old OM4 - om-mcl folder):
(defmethod portable-draw-after-box ((self patchboxFrame))
(when (non-deter-patch? (reference (object self)))
#_Textsize 28)
(draw-char (- (round (w self) 2) 8) (+ (round (h self) 2) 6) #? ))))
This is combined with the other function “non-deter-patch?”:
;;T if patch use screamer functions
(defmethod non-deter-patch? ((self OMPatch))
(let ((record (s::get-function-record (intern (string (car (list! (code self)))) :om))))
(not (s::function-record-deterministic? record))))
I was checking and this function draw-after-box doesn’t exists anymore. Is there any possible substitution for it in LispWorks?