March 28Mar 28 New CLM Implementation For OpusmodusThis update introduces a rewritten CLM implementation for Opusmodus, including a newly compiled sound engine, many new instruments, updated documentation, and a new OMN wrapper system.The new OMN wrapper automatically makes any definstrument available for OMN-based use. In practice, this means that once an instrument is loaded, its -omn wrapper is generated automatically, so CLM instruments can be driven directly from OMN-form sequences.What Is New- rewritten CLM implementation- newly compiled CLM sound engine- many new and updated CLM instruments- automatic OMN wrapper generation for definstrument- new CLM documentation in the Assistant- new CLM examples using OMN wrappersNew Documentation FormatWith this CLM implementation we have also introduced a new Markdown-based documentation format for the CLM documentation.The new .md format makes the documentation easier to read, easier to maintain, and easier to extend. It is now used by the Opusmodus Assistant to display CLM function and instrument documentation with improved layout, tables, examples, and links.This also makes it easier to add new CLM instruments, generators, and supporting documents in a consistent format.InstallationTo use the new CLM implementation:1. Delete the old CLM directory from your ~/Opusmodus folder.2. Replace it with the new CLM directory supplied with this update.3. Open ~/Opusmodus/User Source/Extensions.4. Replace Load CLM Instruments.lisp with the updated version.5. In Load CLM Instruments.lisp, uncomment the instruments you want to compile and load.6. Start the Opusmodus application.First LaunchThe first time you launch Opusmodus after installing the new CLM, loading and compiling the instruments may take a little time. This is expected.After the first successful build, subsequent launches should take only a few seconds.Assistant RefreshAfter installing the update:1. Open the Opusmodus Assistant window.2. Choose Clear Recent.3. Close the Assistant window.4. Reopen the Assistant.After that refresh, the new documentation should appear correctly.Where To Find The DocumentationIn the Assistant:- In f(x) -> CLM, you will find the CLM instruments, each with a short description and examples.- In Assistant (D), you will find new documentation for defining instruments and for the newly added generators.- In CLM Examples, you will find score examples that use the OMN wrapper.FeedbackBecause this is a substantial new CLM implementation, you may still encounter occasional glitches, unexpected behaviour, or documentation errors.If you find a problem, please post the issue, error message, or example in the CLM section of our forum. Reports from real use are very helpful and will help us improve the implementation more quickly.Dowmload and replaceCLM.zipLoad CLM Instruments.lispBest wishes,Janusz
March 28Mar 28 At what level of the OM directory does the CLM dir need to be? I get an error of the dir not being found regardless of where I put it. I used to keep it at top level in OM dir - but I get an error now that it's looking for it in the /Media dir.AndrewBut the instruments do appear to have compiled - so perhaps the error was incorrect? See attached. I have a full folder of compiled instruments.
March 28Mar 28 There is one problem here:When I call this(with-sound (:channels 2)(badd 0 1.5 220 .2:partials '(1 1 .5 .3 2 .2 3 .1):ampfun '(0 0 1 1 2 0):degree 40:reverb .1))OM 2 >Error: The directory "clm" does not exist in #P"E:/Opmo_win_work/opusmodus/Opusmodus/Opusmodus/media/clm/".But I actually have the folder in the rigth place, as you can see:The problem is that in windows, the backslashes of the file system is reversedTHe function returns this:E:/Opmo_win_work/opusmodus/Opusmodus/Opusmodus/media/clm/But the directory is with reversed backslashes, like this.MAC //// rigth-oriented backslashesWINDOWS \\\\\ left-oriented backslashE:\Opmo_win_work\opusmodus\Opusmodus\Opusmodus\CLM\instrumentsSo, I have to edit every file path, but a can´t do it inside the functions...Best,Julio
March 28Mar 28 Author Opusmodus holder needs to be installed in the home directory.As for the CLM folder inside the Media folder, this folder is used for CLM audio and temporary files created when calling CLM instruments. This folder should be created automatically if it is not found. I will update the app to do that in the next update. To solve the problem create CLM folder in the ~/Opusmouds/Media directory by hand.Fixed in version 4.0.30979.
March 28Mar 28 Did some progress, but geting this now(with-sound (:channels 2) (badd 0 2.0 110 .3 :partials '(1 1 2 .5 3 .25 4 .12) :freqfun '(0 0 50 7 100 0) :power .5 :degree 20))Error: Undefined operator badd in form (badd 0 2.0 110 0.3 :partials (quote (1 1 2 0.5 3 0.25 4 0.12)) :freqfun (quote (0 0 50 7 100 0)) :power 0.5 :degree 20).
March 29Mar 29 This is now working perfectly for me. I still had to create a CLM folder manually in /Media - but once I'd done that, my compilation proceeded without complaint. The initial compilation was quick (about a minute or so on M5) and then subsequent start ups as usual - except that I get an error message on start up (it doesn't seem to have an effect though - as I have not had any problems using the CLM instruments as it just appears to be recognising the end of the load-instruments file, so it's more of an annoyance that needs dismissing on startup than anything functional. See attached.This is a very impressive new addition to OM. The integration of functions directly into the OM package is superb. The examples show off some excellent new approaches and the analysis functions looks great. There's an 'Xenakis Dynamic Stochastic Synthesis' function! Wow - this is great!From what I can tell, CLM output is rendered to a .wav output which is then saved in the CLM folder in the /Media directory - which is also a great feature - as this is so flexible for further processing and removes the 'how do I get this output somewhere else' problem.Thanks, JanuszAndrew
March 29Mar 29 Author Looks like you have not removed the comment end symbol in your file:|#(with-sound (:channels 2) (badd 0 2.0 110 .3 :partials '(1 1 2 .5 3 .25 4 .12) :freqfun '(0 0 50 7 100 0) :power .5 :degree 20))no error here.
March 29Mar 29 Exactly. Need to delete ALL commenting in the Load Instruments CLM file - including trailing comment marker. Now start up is clean.The new docs are also excellent. MD format works really well and looks great.
March 29Mar 29 I´m geting this error.Please, what i´m doing wrong ? Looks like 2 blackslashes nowWhile loading file E:\Opmo_win_work\opusmodus\Opusmodus\Opusmodus\User Source\Extensions\Load CLMInstruments.lisptrying to compile C file("E:\\Opmo_win_work\\opusmodus\\Opusmodus\\Opusmodus\\clm\\libclm\\clm_add_noise_filtered.c""E:\\Opmo_win_work\\opusmodus\\Opusmodus\\Opusmodus\\clm\\libclm\\libclm-o64.lib"): didn't find acompiler
March 29Mar 29 Author "E:\\Opmo_win_work\\opusmodus\\Opusmodus\\Opusmodus\\clm\\libclm\\clm_add_noise_filtered.c"this is correct.I think the problem you have is that the Opusmodus folder is not placed in the home directory (top).
March 29Mar 29 Thanks, JanuszBut all the other stuff works well. I´m using this structure of files for years... I´ll try to figure out.Best,Still geting this... I´ll try later. I do not use this very much, but I´d like to explore more.(with-sound (:channels 2)(badd 0 1.5 220 .2:partials '(1 1 .5 .3 2 .2 3 .1):ampfun '(0 0 1 1 2 0):degree 40:reverb .1))OM 1 > with-soundError: Undefined operator badd in form (badd 0 1.5 220 0.2 :partials (quote (1 1 0.5 0.3 2 0.2 3 0.1)) :ampfun (quote (0 0 1 1 2 0)) :degree 40 :reverb 0.1).
March 29Mar 29 Author This is not Opusmodus or CLM error it has something to do with your setup.The error tells you the instrument is not compiled. You need to follow exctly the instructions from above.
March 29Mar 29 What is the advantage of using this rather than Supercollider / cl-collider ( a very powerful tool ) for synthesis / sound design?
March 31Mar 31 On 3/29/2026 at 7:56 PM, eboats said:What is the advantage of using this rather than Supercollider / cl-collider ( a very powerful tool ) for synthesis / sound design?All processing including audio stays within Common Lisp, whereas cl-Collider renders audio via the Supercollider server over OSC. The connection to the server is the fragile element and often needs resetting, it can drop out during rendering, or fail silently. The SC server is a separate app, CLM is completely inside OM, and is also inside the OM package, so much neater as doesn't involve function prefixes. Both are great though: the UGens in SC very flexible, but CLM has long heritage with a 'Lispier' approach (as it's designed from the start as a Lisp music engine and not back engineered onto SC conventions as cl-Collider is) and it sounds first class, with origins at CCRMA Stanford. I also use CLM in an SBCL installation and it's rock solid. Ideal config: use both!
March 31Mar 31 I reinstalled Opusmodus, copied the new CLM folder to home directory and now I get this at the startupWhile loading file E:\Opusmodus\User Source\Extensions\Load CLM Instruments.lisptrying to compile C file ("E:\\Opusmodus\\clm\\libclm\\clm_add_noise_filtered.c""E:\\Opusmodus\\clm\\libclm\\libclm-o64.lib"): didn't find a compilerPlease, someone can help ? (WINDOWS)
April 1Apr 1 Author Looks like you need to install C compiler on your Windows.Windows C CompilerCLM instruments are not delivered as precompiled user instruments. To use CLM instruments on Windows, you need a working Windows C toolchain.The recommended setup is:Microsoft Visual C++ Build Toolsor a full Visual Studio installation with the C++ tools enabledAfter installation, make sure the compiler environment is available to Opusmodus. In practice, this usually means that the Visual Studio build tools are installed correctly and the standard Windows compiler setup has been initialized.I will add this into the README FISRST file.
April 1Apr 1 Thanks a lot, JanuszThis is an important update. Please, if possible, can you provide the exact links to this complementations ?Because there are many versions and updates in windows...Yes, important to add in the Readme files, specially for WIN users.Looking forward to use this. So cool !BEst,Julio
April 1Apr 1 Dear Janusz,Have you tried in a windows machine ?I installed the Full version of Visual Studio and reinstalled Opusmodus in the usual C: directory. It solved the startup error mentioned above, but...My workspace is in a different hard disk, to avoid loose my files in case of crashing the OS (but is in a top directory, withoud subfolders) likeE:\OpusmodusThe CLM new content was copied and also the Lisp fileGetting this...(with-sound (:channels 2)(badd 0 1.5 220 .2:partials '(1 1 .5 .3 2 .2 3 .1):ampfun '(0 0 1 1 2 0):degree 40:reverb .1))OM 8 > with-soundError: Undefined operator badd in form (badd 0 1.5 220 0.2 :partials (quote (1 1 0.5 0.3 2 0.2 3 0.1)) :ampfun (quote (0 0 1 1 2 0)) :degree 40 :reverb 0.1).Best ! Julio
April 9Apr 9 Still trying with the latest version.Now my message reads like this:While loading file E:\Opusmodus\User Source\Extensions\Load CLM Instruments.lispFailed to compile C file "(E:\Opusmodus\clm\libclm\clm_cross_fade.cE:\Opusmodus\clm\libclm\libclm-o64.lib)" with error 2.>>>>>>>Output:C:\Users\Desk2025\AppData\Local\Temp\lwtemp_DESKTOP-MIMK850_528834jfFWfB.batE:\Opusmodus\CLM\instruments>call "c:\Program Files\Microsoft VisualStudio\18\Community\VC\Auxiliary\Build\vcvars64.bat" ************************************************************************ Visual Studio 2026 Developer Command Prompt v18.4.3** Copyright (c) 2026 Microsoft Corporation**********************************************************************[vcvarsall.bat] Environment initialized for: 'x64'Microsoft (R) C/C++ Optimizing Compiler Version 19.50.35728 for x64Copyright (C) Microsoft Corporation. All rights reserved.clm_cross_fade.cMicrosoft (R) Incremental Linker Version 14.50.35728.0Copyright (C) Microsoft Corporation. All rights reserved./dll /implib:E:\Opusmodus\clm\libclm\clm_cross_fade.lib /out:E:\Opusmodus\clm\libclm\clm_cross_fade.dll /export:clm_cross_fade103 E:\Opusmodus\clm\libclm\clm_cross_fade.obj E:\Opusmodus\clm\libclm\libclm-o64.lib LINK : error LNK2001: unresolved external symbol clm_cross_fade103E:\Opusmodus\clm\libclm\clm_cross_fade.lib : fatal error LNK1120: 1 unresolved externals
April 9Apr 9 Author This does not look like a Visual Studio problem.The clm_cross_fade.c file compiles, but the linker cannot find the export symbol clm_cross_fade103. Most likely some older generated CLM files are still present and do not match the current compiled definition.Please try this:Close Opusmodus.Delete these files if they exist:E:\\Opusmodus\\clm\\libclm\\clm_cross_fade.cE:\\Opusmodus\\clm\\libclm\\clm_cross_fade.objE:\\Opusmodus\\clm\\libclm\\clm_cross_fade.libE:\\Opusmodus\\clm\\libclm\\clm_cross_fade.dllAlso delete the compiled fade file from the CLM compiled folder:E:\\Opusmodus\\clm\\bin\\fade.*or E:\\Opusmodus\\clm\\bin-src\\fade.*Start Opusmodus again and load Load CLM Instruments.lisp once more.This should force Opusmodus to rebuild the instrument from scratch.The best way would be to replaced the CLM folder in Opusmodus installer. The bin and the libclm folder must be empty of any files before staring the CLM instruments instalation.
April 9Apr 9 I did all this and get this on the listenerI tried in the first time just deleting the filies you mentioned and got the same errorthe second time I deleted the content of bin and libclm folders the opusmodus installer built/compiled the files again before restarting.I got this in the listener:OM 1 > ; Loading text file E:\Opusmodus\clm\CLM Startup Instruments.lispload-clm-ins, instruments: ("add-noise-filtered" "add" "addflt" "addsnd" "anoi" "arith" "arith1" "arith2" "autoc" "backandforth" "badd" "bandedwg" "bell" "bigbird" "bird" "bowl" "btest" "canter" "cellon" "circular-scanned" "cnv" "convolve" "cross-synthesis" "drone" "expandn" "expsrc" "fade" "fft" "filter-noise" "fltnoi" "fltsnd" "flute" "fm-bass" "fmex" "fmtest" "freeverb" "fullmix" "get-spectrum" "gen-control" "gen-delays" "gen-feedback" "gen-file-processing" "gen-filters" "gen-followers" "gen-formants" "gen-mixed-demo" "gen-modulation" "gen-noise" "gen-oscillators" "gen-random-modulation" "gen-reverb" "gen-spatial" "gen-spectral" "gen-utilities" "grani" "granular" "grapheq" "insect" "jcrev" "jcrevf" "jcvoi" "jlrev" "kiprev" "lbjPiano" "leslie" "maraca" "maxf" "mlbvoi" "move-sound" "noise" "nrev" "one-cut" "piano" "pluck" "pm-pulse" "pqw" "pqwvox" "prc95" "prc96" "pvoc" "resflt" "reson" "rev2" "ring-modulate" "rmsenv" "san" "scanned" "scentroid" "shepard" "singer" "sndwarp" "stochastic" "strad" "tb" "tnot" "track-rms" "trp" "ug" "ug1" "ug2" "ug3" "ug4" "ugex" "v" "vowel" "vox" "vslf" "vsum" "waveguide-flute" "wavetrain" "zd" "zipper"); Loading fasl file E:\Opusmodus\clm\bin\add-noise-filtered.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\add.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\addflt.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\addsnd.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\anoi.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\arith.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\arith1.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\arith2.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\autoc.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\backandforth.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\badd.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\bandedwg.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\bell.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\bigbird.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\bird.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\bowl.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\btest.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\canter.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\cellon.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\circular-scanned.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\cnv.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\convolve.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\cross-synthesis.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\drone.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\expandn.64ofasl; Loading fasl file E:\Opusmodus\clm\bin\expsrc.64ofasl;;; Compiling file E:\Opusmodus\clm\instruments\fade.ins ...;;; Safety = 3, Speed = 1, Space = 1, Float = 1, Interruptible = 1;;; Compilation speed = 1, Debug = 2, Fixnum safety = 3;;; Source level debugging is off;;; Source file recording is on;;; Cross referencing is off; (lispworks:top-level-form 0); (lispworks:top-level-form 1); Writing "E:\\Opusmodus\\clm\\libclm\\clm_cross_fade.c"; (lispworks:top-level-form 2); Compiling "E:\\Opusmodus\\clm\\libclm\\clm_cross_fade.c"; Created shared object file "E:\\Opusmodus\\clm\\libclm\\clm_cross_fade.dll" ; (lispworks:top-level-form 2); (lispworks:top-level-form 2); (harlequin-common-lisp:subfunction |clm_cross_fade3| (fli:define-foreign-function |clm_cross_fade3|)); (fli:define-foreign-function |clm_cross_fade3|); (fli:define-foreign-function |clm_cross_fade3|); (lispworks:top-level-form 2); cross-fade; cross-fade2; (lispworks:top-level-form 2); Writing "E:\\Opusmodus\\clm\\libclm\\clm_dissolve_fade.c"; (lispworks:top-level-form 3); Compiling "E:\\Opusmodus\\clm\\libclm\\clm_dissolve_fade.c"; Created shared object file "E:\\Opusmodus\\clm\\libclm\\clm_dissolve_fade.dll" ; (lispworks:top-level-form 3); (lispworks:top-level-form 3); (harlequin-common-lisp:subfunction |clm_dissolve_fade5| (fli:define-foreign-function |clm_dissolve_fade5|)); (fli:define-foreign-function |clm_dissolve_fade5|); (fli:define-foreign-function |clm_dissolve_fade5|); (lispworks:top-level-form 3); dissolve-fade; dissolve-fade4; (lispworks:top-level-form 3)Error: Failed to rename file E:\Opusmodus\clm\bin\t_fade.64ofasl: The process cannot access the file because it is being used by another process(32). 1 (continue) Try to rename #P"E:/Opusmodus/clm/bin/t_fade.64ofasl" to #P"E:/Opusmodus/clm/bin/fade.64ofasl" again. 2 Try compiling E:\Opusmodus\clm\instruments\fade.ins again. 3 Skip compiling E:\Opusmodus\clm\instruments\fade.ins. 4 (abort) Return to top loop level 0.Type :b for backtrace or :c <option number> to proceed.Type :bug-form "<subject>" for a bug report template or :? for other options.OM 2 : 1 > And this error message window (similar to the other i got before)While loading file E:\Opusmodus\User Source\Extensions\Load CLM Instruments.lispFailed to compile C file "(E:\Opusmodus\clm\libclm\clm_cross_fade.cE:\Opusmodus\clm\libclm\libclm-o64.lib)" with error 2.>>>>>>>Output:C:\Users\Desk2025\AppData\Local\Temp\lwtemp_DESKTOP-MIMK850_1514818fyrXD.batE:\Opusmodus\CLM\instruments>call "c:\Program Files\Microsoft VisualStudio\18\Community\VC\Auxiliary\Build\vcvars64.bat" ************************************************************************ Visual Studio 2026 Developer Command Prompt v18.4.3** Copyright (c) 2026 Microsoft Corporation**********************************************************************[vcvarsall.bat] Environment initialized for: 'x64'Microsoft (R) C/C++ Optimizing Compiler Version 19.50.35728 for x64Copyright (C) Microsoft Corporation. All rights reserved.clm_cross_fade.cMicrosoft (R) Incremental Linker Version 14.50.35728.0Copyright (C) Microsoft Corporation. All rights reserved./dll /implib:E:\Opusmodus\clm\libclm\clm_cross_fade.lib /out:E:\Opusmodus\clm\libclm\clm_cross_fade.dll /export:clm_cross_fade1 E:\Opusmodus\clm\libclm\clm_cross_fade.obj E:\Opusmodus\clm\libclm\libclm-o64.lib LINK : error LNK2001: unresolved external symbol clm_cross_fade1E:\Opusmodus\clm\libclm\clm_cross_fade.lib : fatal error LNK1120: 1 unresolved externals
Create an account or sign in to comment