Skip to content
View in the app

A better way to browse. Learn more.

Opusmodus

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

JulioHerrlein

Members
  • Joined

  • Last visited

Everything posted by JulioHerrlein

  1. Dear Windows Users, After the Windows 11 26200.7840 Security Update (February 11th 2026), the virtual ports are not showing in windows, only the hardware ones. At first I though it was related to Opusmodus update, but it´s a windows update BUG. Here is the solution. Close all MIDI apps Open Windows Terminal as an Administrator (“run as administrator”) Type "net stop midisrv" After that completes, type "net start midisrv" Start up the app you want to use with MIDI Here is a video: Best, Julio
  2. Thanks, Jesper I did not remember that one. Mine have the advantage of having the embedded span, so we can have a more elegant code. Best, Julio
  3. Ciao, Opusmoders All previous rewrite functions used in conjunction for transformations. Ciao ! https://opusmodus.com/forums/topic/4097-rewrite-len-function/#comment-14209 (setf expressao-omn '((s eb4 d4 e a4 -s s eb4) (h eb4 a4 -s eb4 d4 -s) (e. d4 a4 eb4 d4) (-q e f4 s c5 qs fs4))) (rewrite-pit (rewrite-dyn (rewrite-len expressao-omn '(h -e s q -h q -q s s s)) '(pp< ff mf fff p < < fff ppp fff mf fff p)) '(c4 g5)) https://opusmodus.com/forums/topic/4097-rewrite-len-function/#comment-14209
  4. Last one... Time to go to bed in Brasil Function to rewrite lengths BEst, Julio (defun rewrite-len (expressao-omn new-lengths-list) "Substitui os comprimentos (lengths) de uma expressão OMN por uma lista fornecida, repetindo-a ciclicamente e mantendo a estrutura de sublistas original." (let* ((dis (disassemble-omn expressao-omn)) ;; Desmonta a expressão original [2] (old-pit (getf dis :pitch)) ;; Extrai as alturas [4] (old-vel (getf dis :velocity)) ;; Extrai as velocidades [4] (old-art (getf dis :articulation)) ;; Extrai as articulações [4] ;; 1. Mapeia a estrutura original (quantidade de eventos por sublista) ;; Captura o número de elementos rítmicos em cada compasso [3, 5] (structure (mapcar #'length (getf dis :length))) (total-events (apply #'+ structure)) ;; Soma total de eventos [6] ;; 2. Gera a sequência rítmica cíclica com base no total de eventos ;; gen-trim estende a lista do usuário para preencher todos os espaços [3, 7] (new-flat-lengths (gen-trim total-events new-lengths-list)) ;; 3. Re-organiza os novos ritmos na estrutura de sublistas original [3, 8] (new-structured-lengths (gen-divide structure new-flat-lengths))) ;; 4. Remonta o objeto OMN completo com os parâmetros preservados [3, 4] (make-omn :pitch old-pit :length new-structured-lengths :velocity old-vel :articulation old-art))) ;;USE (setf expressao-omn '((s eb4 d4 e a4 -s s eb4) (h eb4 a4 -s eb4 d4 -s) (e. d4 a4 eb4 d4) (-q e f4 s c5 qs fs4))) (omn-to-time-signature (rewrite-len expressao-omn '(h -e s q -h q -q s s s)) '(3 4)) ;;RESULT ((h eb4 mf -e s d4 a4 tie) (e. a4 -h s eb4 mf tie) (e. eb4 mf -q s a4 eb4 d4 e eb4 tie) (q. eb4 -e s d4 mf e. a4 tie) (s a4 -h e. f4 mf tie) (s f4 mf -q s c5 fs4))
  5. Hey, Opusmoders Here is one more function in the style of the previous one (rewrite-dyn). This time to rewrite pitches. (defun rewrite-pit (expressao-omn pitch-list) "Substitui as alturas de uma expressão OMN por uma lista customizada, fazendo a repetição cíclica se a lista for menor que o número de notas." (let* ((dis (disassemble-omn expressao-omn)) ;; Desmonta a expressão [3, 6] (pitches (getf dis :pitch)) ;; Extrai alturas atuais (lengths (getf dis :length)) ;; Extrai durações (inclui rests) [7] (velocities (getf dis :velocity)) ;; Extrai dinâmicas [8] (articulations (getf dis :articulation)) ;; Extrai articulações/ties [9, 10] ;; 1. Mapeia a quantidade de notas em cada sublista/compasso (counts (mapcar #'length pitches)) ;; [2, 5] ;; 2. Calcula o total de eventos de nota para o preenchimento (total-notes (apply #'+ (flatten counts))) ;; [2, 11] ;; 3. Gera a lista de novas alturas repetindo o padrão do usuário (flat-pitches (gen-trim total-notes pitch-list)) ;; [2, 4] ;; 4. Redistribui as alturas na estrutura de sublistas original (structured-pitches (gen-divide counts flat-pitches))) ;; [2, 5] ;; 5. Remonta o objeto OMN completo preservando os demais parâmetros (make-omn :pitch structured-pitches :length lengths :velocity velocities :articulation articulations))) ;; [2, 3] ;;USE (setf expressao-omn '((s eb4 d4 e a4 -s s eb4 tie) (h eb4 a4 -s eb4 d4 -s tie) (e. d4 a4 eb4 d4) (-q e f4 s c5 qs fs4))) Using both rewrite-dyn and rewrite-pit (rewrite-pit expressao-omn '(c4 e4 d4 c4 c4)) (rewrite-dyn (rewrite-pit expressao-omn '(c4 e4 d4 c4 c4)) '(ff > p p< ff> pp ff p p< ff p mf ppp p < ff)) Best !! Julio Herrlein
  6. Hello, Opusmoders This is a very cool and easy to use function to rewrite dynamics. Check it out. Hope you like it ! Best, Julio (defun rewrite-dyn (expressao-omn dynamic-list) "Substitui as dinâmicas de uma expressão OMN por uma lista customizada, fazendo a rotação cíclica se a lista for menor que o número de notas." (let* ((dis (disassemble-omn expressao-omn)) ; [2, 3] (pitches (getf dis :pitch)) (lengths (getf dis :length)) (articulations (getf dis :articulation)) ;; 1. Mapeia a estrutura de cada sublista (quantidade de notas por compasso) (counts (mapcar #'length pitches)) ; [6] ;; 2. Calcula o total de notas para gerar dinâmicas suficientes (total-notes (apply #'+ (flatten counts))) ; [7] ;; 3. Cria a lista plana de dinâmicas repetindo o padrão do usuário [4] (flat-vels (gen-trim total-notes dynamic-list)) ;; 4. Redistribui as dinâmicas na estrutura de sublistas original [5] (structured-vels (gen-divide counts flat-vels))) ;; 5. Remonta o objeto OMN completo com os novos parâmetros [3] (make-omn :pitch pitches :length lengths :velocity structured-vels :articulation articulations))) ;; USE ;; Exemplo 1: Dinâmicas simples (setf expressao-omn '((s eb4 d4 e a4 -s s eb4 tie) (h eb4 a4 -s eb4 d4 -s tie) (e. d4 a4 eb4 d4) (-q e f4 s c5 qs fs4))) (rewrite-dyn expressao-omn '(p mf ff)) ;; >> ((s eb4 p d4 mf e a4 ff -s eb4 p tie) (h eb4 mf a4 ff -s eb4 p d4 mf - d4 ff tie) (e. d4 p a4 mf eb4 ff d4 p) (-q e f4 mf s c5 ff qs fs4 p)) ;; Exemplo 2: Incluindo crescendos (rewrite-dyn expressao-omn '(ff > p p< ff> pp ff p p< ff p mf ppp p < ff)) ;; ((s eb4 ff d4 > e a4 p -s eb4 p< tie) (h eb4 ff> a4 pp -s eb4 ff d4 p - d4 p< tie) (e. d4 ff a4 p eb4 mf d4 ppp) (-q e f4 p s c5 < qs fs4 ff))
  7. Hello, Opusmoders Sometime ago I was here searching for a function to displace rhtyhms by a length amount, not just like a list rotation. Now I did this prototype. I think that this can be very useful, specially inside counterpoint dictums where patterns can be displaced ( I did not tried inside the counterpoint function but seems like it will work). Hope it can be useful to you too. All the best, Julio (defun shift-rhythm (rhythm shift-length &key span) ;"Moves rhythmic material by inserting a pause at the beginning. ;Use length-adjust to ensure the result fits within the span." (let* ((rhy (flatten rhythm)) ;;;; Ensures a linear list for processing ;; Adds the offset value as a negative pause at the beginning [5] (with-offset (append (list (- (abs shift-length))) rhy)) ;;Define the target span: either the requested one or the original rhythm. (target-span (or span (get-span rhythm)))) ;; The length-adjust function adjusts the total to the desired span [1]. ;; With :position 'e (default), it removes or adds from the end of the list [6]. (length-adjust target-span with-offset :omn t :type 'r))) ;;; USE ;Exemplo 1: Span de 4/4 (1/1) (setf ideia '(e c5 e d4 q f4 -h)) ;; Span original de 1/1 (shift-rhythm ideia 1/8 :span 3/4) ;; (-e e c5 d4 q f4 -e) (shift-rhythm ideia 3/8 :span 5/4) ;; (-q. e c5 d4 q f4 -q.) also with negative displacement (setf ideia '(-h e c5 e d4 q f4 -h)) (shift-rhythm ideia -1/8 :span 7/4) ;;(-e -h e c5 d4 q f4 -h -e) It could be perfected to deal with nested sublists and with different displacements for each sublist, like (setf ideia '((-h e c5 e d4 q f4 -h)(-h e c5 e d4 q f4 -h.)(-h e c5 e d4 q f4 -q)) (shift-rhythm ideia '((-1/8) (2/16) (3/8)) :span 7/4) etc
  8. Sorry to be insistent on the topic, I just want to help people that use windows machines.
  9. I did all this and get this on the listener I tried in the first time just deleting the filies you mentioned and got the same error the 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.lisp load-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.lisp Failed to compile C file "(E:\Opusmodus\clm\libclm\clm_cross_fade.c E:\Opusmodus\clm\libclm\libclm-o64.lib)" with error 2. >>>>>>>Output: C:\Users\Desk2025\AppData\Local\Temp\lwtemp_DESKTOP-MIMK850_1514818fyrXD.bat E:\Opusmodus\CLM\instruments>call "c:\Program Files\Microsoft Visual Studio\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 x64 Copyright (C) Microsoft Corporation. All rights reserved. clm_cross_fade.c Microsoft (R) Incremental Linker Version 14.50.35728.0 Copyright (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_fade1 E:\Opusmodus\clm\libclm\clm_cross_fade.lib : fatal error LNK1120: 1 unresolved externals
  10. Still trying with the latest version. Now my message reads like this: While loading file E:\Opusmodus\User Source\Extensions\Load CLM Instruments.lisp Failed to compile C file "(E:\Opusmodus\clm\libclm\clm_cross_fade.c E:\Opusmodus\clm\libclm\libclm-o64.lib)" with error 2. >>>>>>>Output: C:\Users\Desk2025\AppData\Local\Temp\lwtemp_DESKTOP-MIMK850_528834jfFWfB.bat E:\Opusmodus\CLM\instruments>call "c:\Program Files\Microsoft Visual Studio\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 x64 Copyright (C) Microsoft Corporation. All rights reserved. clm_cross_fade.c Microsoft (R) Incremental Linker Version 14.50.35728.0 Copyright (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_fade103 E:\Opusmodus\clm\libclm\clm_cross_fade.lib : fatal error LNK1120: 1 unresolved externals
  11. 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) like E:\Opusmodus The CLM new content was copied and also the Lisp file Getting 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-sound Error: 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
  12. Thanks a lot, Janusz This 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
  13. I reinstalled Opusmodus, copied the new CLM folder to home directory and now I get this at the startup While loading file E:\Opusmodus\User Source\Extensions\Load CLM Instruments.lisp trying to compile C file ("E:\\Opusmodus\\clm\\libclm\\clm_add_noise_filtered.c" "E:\\Opusmodus\\clm\\libclm\\libclm-o64.lib"): didn't find a compiler Please, someone can help ? (WINDOWS)
  14. Thanks, Janusz But 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-sound Error: 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).
  15. I´m geting this error. Please, what i´m doing wrong ? Looks like 2 blackslashes now While loading file E:\Opmo_win_work\opusmodus\Opusmodus\Opusmodus\User Source\Extensions\Load CLM Instruments.lisp trying 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 a compiler
  16. 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).
  17. 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 reversed THe function returns this: E:/Opmo_win_work/opusmodus/Opusmodus/Opusmodus/media/clm/ But the directory is with reversed backslashes, like this. MAC //// rigth-oriented backslashes WINDOWS \\\\\ left-oriented backslash E:\Opmo_win_work\opusmodus\Opusmodus\Opusmodus\CLM\instruments So, I have to edit every file path, but a can´t do it inside the functions... Best, Julio
  18. Thanks, Janusz Is it working also in Windows ? Best !
  19. I think we have to embed one into another imagining what needs to be processed first and find a suitable algo for it. Best
  20. Hello, Opusmoders I did (with a little help of Notebooklm) this cool function whose function is to concatenate 2 diferent lists with sublists, merging the first sublist of the list A with the first sublist of list B, with the options 1) to choose how many elements of each list to use; and 2) the possibility of not only mix different numbers of elements in each list but also the possibility to select the starting element of the list to pick elements. 3) The function also consider each list as a rotating element: for example, if 5 elements are required from the list (1 2 3), starting in the first element, the result will be (1 2 3 1 2), if the start is on the second element, the result will be (2 3 1 2 3) and so on. This is useful for me. Hope you like it. Best, Julio (defun get-rotated-elements (lst start count) "Extracts COUNT elements from LST starting at index START, wrapping around if needed." (let ((len (length lst))) (loop for i from 0 below count collect (nth (mod (+ start i) len) lst)))) (defun merge-rotated-sublists (list-a list-b counts-a counts-b starts-a starts-b) "Merges sublists from A and B based on specific counts and starting positions with rotation." (mapcar #'(lambda (sub-a sub-b n m s-a s-b) (append (get-rotated-elements sub-a s-a n) (get-rotated-elements sub-b s-b m))) list-a list-b counts-a counts-b starts-a starts-b)) Example of Usage (setf list-a '((1 2 3 4) (a b c) (q w e r t))) (setf list-b '((4 5 6 7) (d e f) (a s d f g))) (merge-rotated-sublists list-a list-b '(2 1 5) '(1 5 3) '(0 2 2) '(0 0 1)) ;; Result: ((1 2 4) (c d e f d e) (e r t q w s d f)) (merge-rotated-sublists list-a list-b '(2 7 1) '(4 3 7) '(0 0 0) '(1 1 0)) ;((1 2 5 6 7 4) (a b c a b c a e f d) (q a s d f g a s))
  21. Also (do-section '(0 1) '(ambitus '(c7 b7) x) '((c4 d4 e4 f4 g4 a4) (c4 d4 e4 f4 g4 a4))) (do-section '(0 1) '(chordize x) '((c4 d4 e4 f4 g4 a4) (c4 d4 e4 f4 g4 a4))) (maybe-section (lambda (x) (chordize x)) (maybe-section (lambda (x) (ambitus '(c7 c8) x)) '((c4 d4 e4 f4 g4 a4) (c4 d4 e4 f4 g4 a4) (c4 d4 e4 f4 g4 a4) (c4 d4 e4 f4 g4 a4)) '(1 2)) '(0 1 ) )
  22. Thanks, Stephane I was using the function sieve for that. (setf patt '(1 5)) (setf pitches (gen-sieve '(c4 e6) patt :type :pitch))
  23. Thank you. Everything is fine
  24. Sorry, but I don´t know what is the function and where to download it. Please, can you help ?
  25. Dear All, I received this error trying the last update. Best

Copyright © 2014-2026 Opusmodus™ Ltd. All rights reserved.
Product features, specifications, system requirements and availability are subject to change without notice.
Opusmodus, the Opusmodus logo, and other Opusmodus trademarks are either registered trademarks or trademarks of Opusmodus Ltd.
All other trademarks contained herein are the property of their respective owners.

Powered by Invision Community

Important Information

Terms of Use Privacy Policy

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.