# jon

Members

16

## Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

1. ## resolved Filter for rotational permutations - Rotate-permute

While playing around with it, I found that this only works reliably when there are no duplicate items in the list to be permuted. So, it's neither perfect nor universally applicable, but as long as the caveat is understood it does the job. Cheers, Jon
2. ## resolved Filter for rotational permutations - Rotate-permute

Julio, The easiest procedure for eliminating the rotations is to perform the permutations on all but the first (or last) item in the list, and then append that item back to the front (or back) of the list. For example: (defun perms-no-rots (lst) (let ((perms (permute (cdr lst)))) (loop for x in perms collect (append (list (car lst)) x)))) I'm still a Lisp rookie, so there might be better, cleaner, more Lisp-y ways to do it, but it seems to work: (perms-no-rots '(1 2 3 4)) ==> ((1 2 3 4) (1 2 4 3) (1 3 2 4) (1 3 4 2) (1 4 2 3) (1 4 3 2)) (perms-no-rots '(1 2 3 4 5)) ==> ((1 2 3 4 5) (1 2 3 5 4) (1 2 4 3 5) (1 2 4 5 3) (1 2 5 3 4) (1 2 5 4 3) (1 3 2 4 5) (1 3 2 5 4) (1 3 4 2 5) (1 3 4 5 2) (1 3 5 2 4) (1 3 5 4 2) (1 4 2 3 5) (1 4 2 5 3) (1 4 3 2 5) (1 4 3 5 2) (1 4 5 2 3) (1 4 5 3 2) (1 5 2 3 4) (1 5 2 4 3) (1 5 3 2 4) (1 5 3 4 2) (1 5 4 2 3) (1 5 4 3 2)) Edit: Here's another version I came up with after sending the version above. It is maybe a little nicer to read since I replaced `(append (list....` with `(cons...` : (defun perms-no-rots (lst) (let ((perms (permute (cdr lst)))) (loop for x in perms collect (cons (car lst) x)))) Cheers, Jon
3. ## Symbolic folder path representation to current OM workspace

I'm pretty sure the `workspace-file` function does exactly what you want. (compile-score *last-score* :output :midi :file (workspace-file "v.mid") :if-exists :new-index)
4. ## tonality-map changed behavior

Thanks @Stephane Boussuge! That makes sense.
5. ## tonality-map changed behavior

The tonality-map function isn't working as expected on my Intel MacBook Pro (Monterey 12.6.6) in Opusmodus (v3.0.29006). I have an Opusmodus v2.2.26941M on an Intel iMac (Monterey 12.6.7) that I have tested and it yields something more like I'd expect. Did the default behavior of tonality-map change between versions? Below, I've included sample code along with the different output from the two different versions. Thanks, Jon ;;; code -- common between versions (setf progression (harmonic-progression '(1 6 4 2 5 1 2 4 5) '(c4 natural-minor) :size 7 :step 1 :base 1 )) (setf progression-list (mclist progression)) (setf accomp-shell '((q c3 p g3e4 c4e4 e3c4))) (setf accomp-phrase (gen-repeat 8 accomp-shell)) (setf accomp-map (tonality-map progression-list accomp-phrase)) ;; Opusmodus 3 output OM 2 > harmonic-progression (c4d4eb4f4g4gs4bb4 gs4bb4c5d5eb5f5g5 f4g4gs4bb4c5d5eb5 d4eb4f4g4gs4bb4c5 g4gs4bb4c5d5eb5f5 c4d4eb4f4g4gs4bb4 d4eb4f4g4gs4bb4c5 f4g4gs4bb4c5d5eb5 g4gs4bb4c5d5eb5f5) OM 3 > mclist ((c4d4eb4f4g4gs4bb4) (gs4bb4c5d5eb5f5g5) (f4g4gs4bb4c5d5eb5) (d4eb4f4g4gs4bb4c5) (g4gs4bb4c5d5eb5f5) (c4d4eb4f4g4gs4bb4) (d4eb4f4g4gs4bb4c5) (f4g4gs4bb4c5d5eb5) (g4gs4bb4c5d5eb5f5)) OM 4 > ((q c3 p g3e4 c4e4 e3c4)) OM 5 > gen-repeat ((q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4)) OM 6 > tonality-map ((q c4 p c4f4 c4f4 c4) (q gs4 p gs4 gs4 gs4) (q f4 p f4 f4 f4) (q d4 p d4f4 d4f4 d4) (q g4 p g4 g4 g4) (q c4 p c4eb4 c4eb4 c4) (q d4 p d4eb4 d4eb4 d4) (q f4 p f4 f4 f4)) ;; Opusmodus 2 output ? harmonic-progression (c4d4eb4f4g4gs4bb4 gs4bb4c5d5eb5f5g5 f4g4gs4bb4c5d5eb5 d4eb4f4g4gs4bb4c5 g4gs4bb4c5d5eb5f5 c4d4eb4f4g4gs4bb4 d4eb4f4g4gs4bb4c5 f4g4gs4bb4c5d5eb5 g4gs4bb4c5d5eb5f5) ? mclist ((c4d4eb4f4g4gs4bb4) (gs4bb4c5d5eb5f5g5) (f4g4gs4bb4c5d5eb5) (d4eb4f4g4gs4bb4c5) (g4gs4bb4c5d5eb5f5) (c4d4eb4f4g4gs4bb4) (d4eb4f4g4gs4bb4c5) (f4g4gs4bb4c5d5eb5) (g4gs4bb4c5d5eb5f5)) ? ((q c3 p g3e4 c4e4 e3c4)) ? gen-repeat ((q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4) (q c3 p g3e4 c4e4 e3c4)) ? tonality-map ((q c3 p g3f4 c4eb4 f3c4) (q gs3 p eb4c5 gs4c5 c4gs4) (q f3 p c4bb4 f4gs4 gs3f4) (q d3 p bb3f4 d4g4 g3d4) (q g3 p d4c5 g4bb4 bb3g4) (q c3 p g3eb4 c4f4 eb3c4) (q d3 p gs3f4 d4g4 g3d4) (q f3 p c4bb4 f4bb4 bb3f4)) ?
6. ## What is the SAPA book mentioned in gen-ar-time-series documentation?

Thanks @HenryT. Looks like some "light" reading for this summer. It's giving me flashbacks to the DSP course I audited in grad school. -Jon
7. ## What is the SAPA book mentioned in gen-ar-time-series documentation?

In the documentation for both the gen-ma-time-series and gen-ar-time-series functions, there are similar passages: What is the SAPA book referenced here? I can't seem to find the right google query to find it. Thanks, Jon

OK. Thanks for the response. Cheers, Jon

That was certainly not the series of responses I expected to elicit with my question. Having worked for software companies of various sizes (though none as small as I suspect Opusmodus to be) I am probably more tolerant than many when it comes to release delays or scheduling hiccups between announcements and license server deployments, etc. My perspective is also probably skewed by years working with and relying on arcane and expensive software by a one-man shop (SCORE, by Leland Smith). Finding ways to continue to run an MS-DOS program as each new iteration of Windows throws up new and exciting roadblocks is the SCORE-user's Intel vs M1. Regardless, my time spent working for software companies and graphic design teams has fostered an outlook where I prefer to have multiple versions available for use whenever possible to ease transition and cope with any compatibility issues (e.g., functions renamed or deprecated). So, I ask again, is it possible to have both v2.x and v3.x installed at the same time on a single machine so that they can be run at different times (not simultaneously)? Thank you, Jon

Greetings! Opusmodus notified me today that the new version was available. Congratulations on the release! Before I upgrade, I'm wondering if it is possible to have both 2.x and 3.x installed simultaneously. Not to run simultaneously, mind you, just to have both versions available. Thank you, Jon
11. ## Updated library of many custom Opusmodus functions

I'm a bit confused. This entire thread is about loading Torsten's libraries (fenv, cluster-engine, cluster-rules, tot). Regardless, I'll reach out to Torsten directly. Thanks, Jon
12. ## Updated library of many custom Opusmodus functions

Greetings @torstenanders, I'm hoping you can help. Having used Cluster Engine in OpenMusic, I was eager to try it in Opusmodus. I was also interested in many of the functions in tot. When I try to load tot, however, it fails: ;Compiling "/Users/jon/common-lisp/cluster-engine/sources/iter.lisp"... ;Compiling "/Users/jon/common-lisp/cluster-engine/sources/package.lisp"... ;Compiling "/Users/jon/common-lisp/cluster-engine/sources/iter-forwind.lisp"... ;Compiler warnings for "home:common-lisp;cluster-engine;sources;iter-forwind.lisp.newest" : ; In an anonymous lambda form at position 146: Undeclared free variable &optional ; In an anonymous lambda form at position 156: Undeclared free variable by ; In an anonymous lambda form at position 461: Undeclared free variable v (2 references) ; In an anonymous lambda form at position 567: Undeclared free variable list (2 references) ; In an anonymous lambda form at position 929: Undeclared free variable var (2 references) ; In an anonymous lambda form at position 1024: Undeclared free variable in (6 references) ; In an anonymous lambda form at position 1050: Undeclared free variable previous (2 references) ; In an anonymous lambda form at position 1080: Undeclared free variable initially ; In an anonymous lambda form at position 1112: Undeclared free variable vars (4 references) ; In an anonymous lambda form at position 1258: Undeclared free variable on ; In an anonymous lambda form at position 1274: Undeclared free variable tail (8 references) ; In an anonymous lambda form at position 1295: Undeclared free variable = ; In an anonymous lambda form at position 1309: Undeclared free variable incr (8 references) ; In an anonymous lambda form at position 1309: Undeclared free variable tail-tail (2 references) ; In an anonymous lambda form at position 1346: Undeclared free variable source (3 references) ; In an anonymous lambda form at position 1364: Undeclared free variable ptail (5 references) ; Warning: Lisp compilation failed while compiling #<cl-source-file "cluster-engine" "sources/iter-forwind"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ; Warning: Lisp compilation had style-warnings while compiling #<cl-source-file "cluster-engine" "sources/iter-forwind"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ASDF could not load tot because Unbound variable: vars. > Error: Unbound variable: vars > While executing: #<Anonymous Function #x302003D5A50F>, in process Listener-1(7). > Type cmd-. to abort, cmd-\ for a list of available restarts. > Type :? for other options. 1 > If I checkout a sufficiently-old commit of cluster-engine, I can get past that error (commit 064ad4fd107f8d9a3dfcaf260524c2ab034c6d3f is the last one prior to the introduction of iter-forwind.lisp). However, it fails when it gets to tot/sources/tuning.lisp: ;Compiling "/Users/jon/common-lisp/tot/sources/tuning.lisp"... ASDF could not load tot because The function ratio-to-cent is predefined by Opusmodus.. > Error: The function ratio-to-cent is predefined by Opusmodus. Again, if I checkout commits from 2018 (for each repo) when this thread was started, I can load tot (and its dependencies) but some things are broken, most likely because Opusmodus has changed in the interim. Any thoughts on why CCL and/or Opusmodus hates the "vars" variable so much in iter-forwind.lisp? Can "ratio-to-cent" be commented out or renamed without wreaking havoc on the rest of tuning.lisp? Will all these issues be rendered moot with the switch to LispWorks in Opusmodus 3 or will the library require an overhaul to work in Opusmodus 3? Thank you, Jon Southwood
13. ## How to rewrite example from book that uses omn-dictum

Thank you @opmo. The second example is what matches the output in the book (where the rests are retained). I'll keep that in mind for future use. Incidentally, is there a forum for posting errata for the book? There's at least one example in the English version of the book where a function is using an Italian name, rather than the English name.
14. ## How to rewrite example from book that uses omn-dictum

Greetings, I've been working my way through the "Fundamentals of Composition with Opusmodus" book since my copy arrived on Monday. It's been a great help adjusting my brain from OpenMusic to Opusmodus. I'm currently working through section "2.4.2.5 Rhythm 5." In the code on page 92, there are a series of 8 lines that use "omn-dictum" to change all the pitches for each of the previously-generated rhythms to the correct general-midi pitches for the non-pitched percussion sounds (bass drum, bongos, congas, etc.). For example: (setf bass-drum (omn-dictum '(:all b1) rhythm1)) (setf low-wood-block (omn-dictum '(:all f5) rhythm2)) I found release notes indicating "dictum" had replaced omn-dictum, so I attempted to use "dictum" in its place. My attempted version of those same two lines: (setf bass-drum (dictum '(:apply b1) rhythm1)) (setf low-wood-block (dictum '(:apply f5) rhythm2)) results in all notes and rests being changed to b1 or f5, not just the notes/chords. Is the use of an all-encompassing ":range" the only way to target all of the pitches, separate from the rests? I was able to get it to work like this: (setf bass-drum (dictum '(:range (c3 c6) :apply b1) rhythm1)) (setf low-wood-block (dictum '(:range (c3 c6) :apply f5) rhythm2)) but I was hoping there would a way to either ignore rests or do something like "(:any :pitches)". Is there another way of targeting just any/all pitches? Thank you, Jon S
15. ## Pre-purchase questions

Hi. I've got a few questions before I buy the current version: Looking over the forum history, I see mention of a 4-month grace period for no-cost upgrades after purchase. Is this still the case? I see that a new version release is imminent. How imminent is the new version release? Can multiple versions coexist on a machine? If I were to buy 2.2 now, and 2.3 (or will it be 3.0?) is released, can both be run or does the newer version supersede the previous version and prevent it from launching? Thank you, Jon S
×
• #### Browser

• Video Gallery

• Lessons