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.

Function Examples

Functions, arguments, values and results

  1. Started by o_e,

    Hi, How do I point :methods and :global-methods to my own def-unfold-set instead of the default one? (counterpoint patterns '(((- 2 3 -)) ((4 * * 6)) ((1 - - 2)) ((5 6 1 2))) :index 'voice :global-polyphony '((1 p) (2 o) (10 o) (11 o)) :iterate t :global-methods '((fl) (cl) (hn) (vc))) Thanks!

  2. Started by o_e,

    Hi, When I write functions and make use of setf's, I get the brown colored warning: Undeclared free variable This becomes a problem, when I'd like to put the function into the extensions folder. How can I remedy this? Thanks!

  3. Started by JulioHerrlein,

    Dear All, The second half of trope 21 is showing a note repetition. (trope-hexachord 21) ((c4 b3 bb3 eb3g3a3) (d3fs3gs3 cs3f3 fs3)) The pitch-class fs3 appears twice, comprising a 5 note set (it should be an hexachord, a 6 note-set) (d3fs3gs3 cs3f3 fs3)) According to Sedivy (2011, pg 134) the trope 21 is shown below: In Sedivy´s book, this trope are shown starting in E, thus (pitch-transpose -8 (trope-hexachord 21)), thus ((e3 eb3 d3 g2b2cs3) (fs2bb2c3 f2a2 bb2)) There is a repetition of two Bb pitch classes in the second hexachord (pitch-transpose -8 (melodize (l…

  4. Dear Friends, Please check this replace-stream function !! This is what I was searching for and trying to achieve for a long time !! It really worth to upgrade. I have some questions regarding this new tool: Here is the code, similar to the documentation. First, we have the Bach Chorale. Second, there are some original material that looks like this: V1 plays only E and F pitch classes V2 plays only C and D pitch classes VLA plays only Bb and G# pitch classes CELLO plays only Bb and Eb pitch classes For easy understanding of the point When I do the replace-stream, I.E., using the new…

  5. Dear All, From the example below I suppose that choralis function applyes some voice-leading in the progression provided. Maybe to generate some more singable sequence ? (maybe not...) For example, here I provide my classic test-debuggin harmony: (setf chords2 (gen-trim 31 '(a3b3e4gs4 gs3eb4g4bb4 cs3a3b3e4 gs2f3bb3d4 gs2e3b3eb4 eb3b3cs4fs4 a2e3eb4b4 fs2cs3c4gs4 d3gs3b3g4 b3e4fs4a4 fs3cs4f4c5 b3cs4fs4bb4 g2d3cs4a4 g2fs3b3cs4 e2fs3g3d4 f2eb3bb3d4 b2g3a3d4 bb2gs3eb4g4 e3c4g4d5 cs3a3e4b4 gs3bb3eb4g4 fs3gs3cs4f4 fs2e3b3eb4 cs3a3b3e4 b2gs3cs4f4 eb3a3d4fs4 d3bb3f4c5 e3eb4gs4bb4 f3cs4gs4eb5 b2fs3f4cs5 eb3b3cs4fs4 eb3gs3b3g4 e3g3d4fs4 a2bb3eb4g4 d…

  6. Dear All, Sometimes you are working on a very cluttered file with many setf variables that you need to evalate before starting. Is there a way to put a shortcut inside and .opmo score to evaluate a set of code in a different .opmo score, without having to move to the other document to evaluate it ? Best, Julio

  7. Dear Friends, I think a good companion to the gen-divide option to count rests would be a function that counts the positive rhythm items (the positive value attacks, excluding the pauses). It would be great to calculate the size and to align rhythms and its groupings for later span processing of lists related to pitches (or any other use you might think). Is there already a function like this: GET-COUNT-ATTACKS (get-count-attacks '((1/8 7/8) (1/8 7/8) (1/4 1/12 1/12 1/12 3/16 5/16) (-3/8 1/8 1/4 -1/8 1/8))) would return: (2)(2)(7)(3) or maybe (2 2 7 3) in flatten version …

    • 2 replies
    • 1.2k views
  8. Dear All, How can I get controlled seeds in a expression like this? (let ((r-lis nil)) (dotimes (i 4) (push (rnd-unique 5 '(1 2 3 4 5)) r-lis)) r-lis) This will result four different seeds (one for each loop iteration), like this: rnd-unique :seed 361914 rnd-unique :seed 275956 rnd-unique :seed 883737 rnd-unique :seed 46981 ((3 1 4 5 2) (4 2 1 5 3) (2 5 4 1 3) (1 3 5 4 2)) And this will result the same seed for all four iterations: (let ((r-lis nil)) (dotimes (i 4) (push (rnd-unique 5 '(1 2 3 4 5):seed 1) r-lis)) r-lis) Like this: rn…

  9. Dear All, Is there a function for get all intervals of a row (or any list of integers or pitches) in relation to one note ? For example, given this 12 tone row: (a3 gs4 c4 d4 bb3 b3 fs4 f4 cs4 g4 ds4 e4) Get all intervals related to a4 ? The result should be: (-12 -1 -9 -7 -11 -10 -3 -4 -8 -2 -6 -5) This is for getting a resultant set of numbers related to a chromatic octave-module. Each order of the set result in a different set. Maybe can be a mapping function.

  10. Started by NagyMusic,

    Suppose a density is defined by measuring the amount of information. Why does the first list having three pitches result in lower density than the second list comprising two pitches? (density-analysis '((c4 d4 g4) (d4 a4))) => (0.2916667 0.5833334) Thank you!

  11. Dear friends, A cool idea to implement would be to have a gen-divide like function for dividing rhythm lists, filtering just the positive values, like this: (setf rhy '(q -q -e e e e q q -s s s s)) ;;;Standard gen divide (gen-divide 3 rhy) ;;result: (q -q -e) (e e e) (q q -s) (s s s) ;;; (gen-divide-attack 3 rhy) ;;;result (q -q -e e e) (e q q) (-s s s s) To me, would be very useful. All the best ! Julio

  12. Dear all Is there some way to make a processing of accidentals in the make-omn expression or even later, in the PS expression ? Something like: bar #1 all sharps bar#2 all flats etc. I noticed that after many sucessive list processing, my original notes were altered. Thanks ! Best ! Julio

  13. here is a short program (based on JOHNSON's writing... pascal-code found in www and modified) to generate TOM JOHNSON's series of numbers for "pascal's triangle ...". maybe interesting to play with the MODULO like JOHNSON did (mod 7)... try it! greetings andré ;;; SUB (defun pascal-next-row (a &key (johnson-modulo nil)) (loop :for q :in a :and p = 0 :then q :as s = (if (null johnson-modulo) (list (+ p q)) (list (mod (+ p q) johnson-modulo))) :nconc s :into a :finally (rplacd s (list 1)) (return a))) ;;; MAIN (defun pascal-tria…

  14. Started by o_e,

    Hi, What am I missing? (pitch-demix '(3 2) '(c3e4g5b6 d3f4a5c6 e3g4b5d6)) =>(e4 f4 g4) I would expect this: =>((e4 f4 g4)(g5 a5 b5)) thanks for an answer!

  15. Dear All, I found a very interesting way to use the span function to my purposes of controlling the harmonic rhythm of my composition. But I need some help. Here is one example: I set pitch lists for each voice of my quartet. Here is an example of how the material is organized for each voice. Each voice for each chord is broken in 16 repeated notes and another 16 notes with some custom made melodic material. The example below corresponds to TWO chords of the harmony. PITCH MATERIAL LISTS The first 16 notes are repeating and the next 16 notes are melodic figures of the same harmony. This is done for all t…

  16. Started by o_e,

    Hi, it says in the doc of vector-to-velocity that the default is float values, but when I evaluate (setf vel (vector-to-velocity 0.1 0.9 (gen-integer 1 16))) =>(pppp pppp ppp pp pp p mp mp mf mf f ff ff fff ffff ffff) I get symbols, when I use (setf vel (vector-to-velocity 0.1 0.9 (gen-integer 1 16):type :float)) =>(0.1 0.15 0.21 0.26 0.31 0.37 0.42 0.47 0.53 0.58 0.63 0.69 0.74 0.79 0.85 0.9) everything is fine, just want to mention it. best ole

  17. Started by JulioHerrlein,

    A faster way to pitch-demix. I found that this works faster than the pitch-demix function. Just to offer something... (setf chorale '(a3b3e4ab4 gs3ds4g4bb4 cs3a3b3e4)) (setf chordarray (build-array (sort-desc (melodize (mclist chorale))))) (setf size (get-count chorale)) (setf voice1 (get-array 0 0 size chordarray :direction 'down)) (setf voice2 (get-array 0 1 size chordarray :direction 'down)) (setf voice3 (get-array 0 2 size chordarray :direction 'down)) (setf voice4 (get-array 0 3 size chordarray :direction 'down)) (ps 'gm :sq (list (flatten (list '(q) voice1)) (flatten (list '(q) voice2)) (flatten (list '(q) voice…

  18. Dear Friends, I have this recurrent problem with lists... Please, help... ;;; I have this TWO lists (setf list1 '(v1rp0 v1rp1 v1rp2 v1rp3 v1rp4) (setf list2 '(melch1-0 melch1-1 melch1-2 melch1-3 melch1-4) ;;;AND ;;; I need a list like this (alternating the list) (v1rp0 melch1-0 v1rp1 melch1-1 v1rp2 melch1-2 v1rp3 melch1-3 v1rp4 melch1-4) How can I proceed ? Thanks a lot Best, Julio (a desperate quarantine composer) OBS. help in combining THREE lists are also greatly appreciated, as well as how to combine parts of the lists. Thank you... my brain is ruined for now (I´m doing so…

  19. Dear All, It´is possible to initialize sublists all at once as setf variables ? To transform a list like this: ((c4 ds4 e4)(c4 d4 f4)(c4 d4 g4)(cs4 d4 e4)), automatically into a list of setf materials, like v1 = (c4 d4 e4) v2 = (c4 d4 f4) v3 = (c4 d4 g4) v4 = (cs4 d4 e4) OBS.: v1 can be any letter, like p1, p2 or maybe mat1, mat2, etc... Thank you

  20. Dear All, I'm searching ways of making lists of lists. I tried all this because I was wanting to call materials from an array, like this: (setf mat1 '(c4 d4 ds7)) (setf mat2 '(d4 e4 c5)) (setf mat3 '(d4 eb4 cs5)) (setf mat4 '(d4 f4 c5)) (setf mat5 '(d4 g4 c5)) (setf mat6 '(d4 a4 c5)) (setf mat7 '(e4 a4 c5)) (setf mat8 '(f4 a4 c5)) (setf mat9 '(g4 a4 c5)) (setf mat10 '(a4 a4 c5)) (setf mat11 '(b4 a4 c5)) (setf array (build-array '((mat0 mat1 mat2 mat3) (mat4 mat5 mat6 mat7) (mat8 mat9 mat10 mat11)))) ;;;GET-ARRAY : (ROW COLUMN SIZE ARRAY &KEY DIRECTION (get-array 0 1 2 array :direction 'down) (setf listmat (get-array 0 1 2 array :directi…

  21. Started by o_e,

    Hi, I'am examing find-bar and I don't get the following: ;from the docs: (setf mat '((c4 db4 ab4 f4 g4 bb4) (a4 eb4 b4 e4 d4 gb4) (db4 ab4 f4 g4 bb4 a4) (eb4 b4 e4 d4 gb4 c4))) (find-bar 1 mat) => Error: The value (1) is not of the expected type number. > While executing: ccl::+-2-into, in process Listener-1(7). > Type cmd-. to abort, cmd-\ for a list of available restarts. > Type :? for other options. ;this works fine: (find-bar '(1) mat) =>((c4 db4 ab4 f4 g4 bb4)) ?? best ole

  22. Started by o_e,

    Hi, When I use omn-to-time-signature with (4 4), everything is fine: (setf test '(w fs5 q. e5 d5 q c5 e c5 h. b4 e a4 h a4 e q. gs4 q. gs4 e fs4 h e4 h e4 q. d4 e c4 h c4 e e fs5 q e5 e e5 q. d5 h c5)) (omn-to-time-signature test '(4 4)) =>((w fs5) (q. e5 d5 q c5) (e c5 h. b4 e a4) (h a4 e q. gs4) (q. gs4 e fs4 h e4) (h e4 q. d4 e c4) (h c4 e e fs5 q e5) (e e5 q. d5 h c5)) but when I use (5 4)or (3 4): (omn-to-time-signature test '(5 4)) => when called with arguments: > (nil) > While executing: #<ccl::standard-kernel-method no-applicable-method (t)>, in process Listener-3(38). &g…

  23. Started by o_e,

    Hi, The doc states: ;Note the handling of further nested sublists: (find-everyother 2 '(((1 2) (3 4) (5 6) (7 8)) ((1 2) (3 4) (5 6) (7 8) (9 10) (11)))) => (((1 2) (5 6)) ((1 2) (5 6) (9 10))) when I evaluate it I get: (find-everyother 2 '(((1 2) (3 4) (5 6) (7 8)) ((1 2) (3 4) (5 6) (7 8) (9 10) (11)))) =>((1 2 5 6) (1 2 5 6 9 10)) What am I missing or how can I achive the upper example? Thanks! ole

  24. Dear Friends, I´m seriously doing a composition for String Quartet now. I was procastinating it for more than one year, but now I´m really finding good results that could be part of a composition. The question is that I generate some VERY LONG (sometimes 200 bars) of material and, inside this stream I´d like to use ONE or TWO measures of this particular stream, and more 6 measures generated by other process, interpolate some Free material in between, and so on. In general, this is the expression I use to compile each voice of the quartet: vh1 (VL), vh2 (VL2), vh3 (VLA) and vh4 (Cello) (setf vh1 (make-omn :length rv1 …

  25. I can't seem to get do-timeline2 function to work. I include an abridged example below; happy to share more code details if necessary. I'd like to filter 64 measures of 4/4 as defined in the timeline. Would anyone be able to offer some feedback? I tried adjusting different 'list' levels, etc. but with no avail. Thank you! (setf chords1 '(e2b2g3d4 e2cs3a3e4 e2d3b3fs4)) (setf chords2 (pitch-transpose 3 chords1)) (setf chorale1-chords (span '(1 1 1 1 1 1 1 1) chords1)) (setf chorale2-chords (span '(1 1 1 1 1 1 1 1) chords2)) ;; OMNS (setf chorale1 (make-omn :length (length-span '(1 1 1 1 1 1 1 1) '(w) :omn t) …


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.